Touchstone
Connect x402 · Algorand
The assay layer for agent payments

Every endpoint claims to be gold.

A touchstone tells real gold from fool's gold by the trace it leaves. Touchstone does the same for services — your agent rubs each one against Algorand's on-chain ground truth and reads the verdict before a cent moves.

your agent the stone reads the trace
Connect your agent →
Connect your agent

One MCP entry, and your agent checks who it's paying.

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

get_trust — an endpoint's trust trace: live on-chain signals + facilitator-attested activity, with an honest methodology.
find_service — rank Algorand x402 endpoints by trust, filtered to your bar + budget.
how_to_pay — the paid x402 endpoint details, for non-MCP agents.
propose_call · self-host — a ready-to-sign transaction (the payment + the trust check, together) you inspect and sign yourself; a wash endpoint makes the chain reject the whole thing.
Live on Mainnet The hosted MCP server and the paid x402 endpoint are live on Algorand Mainnet — keyless, reading from a synced node.
What Touchstone is

The oldest trust test, rebuilt on the newest substrate.

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 layer, not a platform

Bolt it onto the agents you already run.

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.

Atomic ground truth

The verdict isn't ours to assert — it's the chain's to enforce.

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.

01Enforced — score below your bar and the payment reverts on-chain; your balance is untouched (Δ = 0).
02Recorded — every attestation written on-chain, permanent and public.
03Recomputable — frozen math over public receipts. Re-run it, get the same trace.
The math

No black box. Here's the whole computation.

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.

01

Build the "innocent" cloud

for k in 1…20000:  # thousands of reshuffles
  shuffled = permute(arrival_times)
  null[k]  = coincidence_stat(shuffled, payers)

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.

02

Measure how far the truth sits from it

z = ( observed − mean(null) ) / std(null)

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.

03

Weight the statistic by who keeps reappearing

stat = Σpairs i,j within window  w(payeri, payerj)
w rises when the SAME payer-pair co-occurs again and again

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.

04

Look at every timescale — and price the extra looks in

gap  = T / n      # mean spacing between payments
windows = gap × { 1, 5, 25, 125 }
z    = maxw z(w)  vs  null-of-the-max  # no free fishing

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.

05

Turn the trace into a 0–100 trust score

trust = σ( (Z_GATE − z) / 3 ) × ( 1 − provenance )
Z_GATE = 5  ·  σ(x) = 1 / (1 + e−x)  ·  score = round(trust × 100)

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.

Plug in two real on-chain endpoints

live API · Algorand Mainnet
clean endpoint
z = −1.14
σ((5−(−1.14))/3) = 0.886
trust score → 89
flagged endpoint
z = +5.29
σ((5−5.29)/3) = 0.476
trust score → 47

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.

Under the hood

Is the demand real, or manufactured?

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.

How far from "innocent luck"?

the wash-trade trace · from a real agent run
flag beyond here
innocent range
Atlas −0.8
MapRush −2.3
QuickPin +7.5

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.

Channel 1 · Timing

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.

one trace is not enough →

Channel 2 · Who funded whom

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.

two independent signals, one verdict

And we publish the floor — the smallest fake we could still miss.

blind test · synthetic traffic
~6%
clean conditions
~10%
during a sudden traffic spike
~25%
flash + attacker effort
>25%
max-effort wide lock — not certified

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.

The safety net

What if a bad link tricked your agent?

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.

atomic group ✕ rejected
1 pay QuickPin  $0.002
2 check trace ≥ bar  → fails
REVERTED on-chain
balance change · Δ = 0

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).

The 30-second version

Every other oracle hands your agent a verdict to trust. Touchstone gives it a signal anyone can recompute from public on-chain receipts, then wires your own pass-or-fail rule into the payment itself — so the chain settles a good service and reverts a bad one in the same transaction. It even tests itself, in public.

Touchstone
The assay layer for agentic payments · Algorand