§
🌙 Toggle Dark Mode Home MoltGuard MoltProof MT Global · Regulated Markets MolTrust Sports MT Shopping MT Travel MT Skills MT Prediction MT Salesguard MT Music Integrity Dashboard VCOne Blog Developers Pricing Enterprise Partners Compliance About Publications Verify Us Status Contact API Docs
Gate proof · run of 2026-09-23 · CC BY 4.0

The same endpoint, two prices

Run: 2026-09-23, 04:36:13–04:36:17 UTC DID: did:moltrust:80228a77394240bb Anchor: Base block 51674415


What this records

The MolTrust discount had never been granted. 643 priced requests reached the gate and none of them carried an attestation, so every one was denied before a score was consulted. That was not the callers’ doing. A trust score is withheld until an agent has three endorsements, no agent in the registry has three, and an agent that registered this morning has no route to any. The discount was unreachable by anyone who was not already us.

This page is one run of the path an outside agent walks, with every response kept.

The two prices

One URL, one second, two answers. Both are HTTP 402; the difference is what the caller attached.

RequestamountUSDC
with the three MolTrust headers400000.04
with nothing attached500000.05

The unattached half is runnable by anyone, right now:

curl -s https://api.moltrust.ch/guard/api/agent/score/0x0000000000000000000000000000000000000000 \
  | python3 -c "import sys,json;print(json.load(sys.stdin)['x402']['accepts'][0]['amount'])"
# 50000

The attached half needs a DID and a key of your own, which is what the three steps are for.

What the chain holds

The credential behind the discount is anchored in 0xf207a648cc41973000ec2594d8821623e04a813311d4577a869b3bc9a84a5adc, Base block 51674415. Its calldata is a UTF-8 string, not ABI encoding — an ABI decoder reads it as empty:

MolTrust/VC/v1/795ccea62f58cb11b973cb3f42c7cb6072cd8ea666b03bbe55527e86d80fadfe

The part after the prefix is the batch’s Merkle root. Recompute the leaf from the credential and you arrive at that root, so the anchor is checkable without asking us. The leaf rule and proof replay are in Credential Anchoring.

What the caller presented

The payload of the gate_attestation JWS, signed under kid: moltrust-registry-2026-v1:

{
  "v": 2,
  "did": "did:moltrust:80228a77394240bb",
  "public_key": "e2d866272c302cfeb72518c3a88ee20f649e75e57bec77532429eb4f9e1b1a50",
  "trust_score": null,
  "withheld": true,
  "credential_types": ["AgentTrustCredential", "TrackRecordCredential"],
  "computed_at": "2026-09-23T04:36:15.355591+00:00",
  "valid_until": "2026-09-23T05:36:15.355591+00:00",
  "policy_version": "phase2",
  "track_record": {
    "issued_at": "2026-09-23T04:36:14.344181",
    "anchor_tx": "0xf207a648cc41973000ec2594d8821623e04a813311d4577a869b3bc9a84a5adc"
  }
}

trust_score stays null and withheld stays true. The score is not invented; it is stood in for.

What settled

The paid request returned HTTP 200. On chain the payer went from 10.750015 to 10.710015 USDC, a difference of exactly 0.040000 — the reduced price, not the full one.

The gate’s own counter separates the two doors, so a track record and a real score cannot be mistaken for each other:

{"priced_requests":30,"discounted_requests":3,"discounted_share":0.1,
 "discounted_by_path":{"score":0,"track_record":3},
 "denied_by_reason":{"attestation_missing":27},"since_process_start":true}

What this run does not show

It shows that the path is walkable. It does not show that anyone wants to walk it. The caller was us, the endpoint is ours, and the 0.04 USDC went from our test wallet to our own payTo. As a demand signal that is worth nothing; as a proof of function it is worth everything.

Two further limits, stated here rather than left to be found. The wallet cleared the age threshold with one day to spare — eight days against a threshold of seven. And the anchor was triggered by hand instead of waited for, so the run finished in one piece; in normal operation the batch runs every two hours and the wait is real.

Checking it

The script that produced this run is scripts/gate_proof.py in the moltrust-api repository. It refuses to sign with anything but our own test wallet, so it is there to be read and checked against the chain rather than executed. Everything on this page can be verified without it: the 402 above, the transaction on Base, and the JWKS at /.well-known/jwks.json that the attestation verifies under.


MolTrust / CryptoKRI GmbH, Zurich | hello@moltrust.ch | moltrust.ch Released under Creative Commons Attribution 4.0 International (CC BY 4.0)