Guided invoice walkthrough
Follow scripted invoice requests. Invite a colleague to approve an exact exception and review the result.
Open the walkthroughTry it alone, right here, in about a minute. When you want the real thing, run it with someone: a real pull request in a sandbox repository.
Rather watch first? See a real completed run from 17 September, and check it in your browser.
A simulation of the real flow in your browser. Nothing is sent anywhere.
1. A client’s website has a broken button.
This is the site as it is today. Try its contact button.
Fix the same button in a real pull request. Invite someone to play your client, or open their link on your phone and play both parts. No account, no access to your repositories, no real message sent; it is usually ready in about a minute.
Say what it should do and how you will both check it. The code and a working preview stay together.
They open a private link, try the working preview and approve that exact version. Change anything and it needs a new yes.
Only the version you both approved is merged. Their sign-off on the result is a separate decision, and the record is yours to keep.
Coming back to a client? Open your projects or your decisions. Ready for your own work? Use it on a real change.
Earlier experiments with the same controls on a different job. Practise a disagreement with a scripted partner · Start through your own agent
Follow scripted invoice requests. Invite a colleague to approve an exact exception and review the result.
Open the walkthroughEdit the sample records and brief. A hosted agent works within the room’s controls and waits for decisions.
Set up a live jobTry awkward requests, propose a threshold change, and compare the gate’s results before starting a separate job.
Open a rules rehearsalGive each assistant your limits. Compare its proposals, sign the same agreement, and put it to work together.
Start a shared discussionHosted agents send their brief and allowed records to the model provider. See who receives what.
These are local sample instruments and published recordings. They are separate from a new shared trial; opening them does not run a live agent or move money.
A signed sample approval, checked against the requested payment. Change the amount, supplier, or timing to see which check refuses it. Demo keys represent fictional identities.
Admit payment instructions from this agent, up to $250,000 each, during the pilot. A named person must approve anything above $50,000.00; an approval older than 15 minutes does not count; the bank must read the payment back afterwards.
Read back in plain English from the structured standard signed by Bank A (demo); ScopeBlind wrote this sentence from the checks, not the checks from a sentence. What a standard is.
The limit is compiled to the policy the gateway enforces before a call runs (sha256:0eccae77cd7c…); everything else is checked on the signed records.
Every line is a check the machine supports, run on the request as the agent made it against the approval it held. A requirement it could not check would be listed as human review, missing evidence, or unsupported, never dropped and never quietly recorded as met.
The full tool, with every control and your own standard: govern an action.
submit_payment for $185,000.00sha256:0eccae77cd7c…), and the signature verifies against the gateway key the standard accepts.Verified in this browser. What the gateway cannot see, who approved and whether the bank confirmed, is checked on the records above, not by this receipt. Check the whole log on Verify.
{
"payload": {
"type": "protectmcp:decision",
"tool_name": "submit_payment",
"decision": "allow",
"reason": "cedar_allow",
"policy_digest": "sha256:0eccae77cd7c1d76c1745799ef18463db1f0966fdf20a588a0f9264910ab179d",
"scope": "tu-1789095322535-6wjt",
"mode": "enforce",
"request_id": "tu-1789095322535-6wjt",
"spec": "draft-farley-acta-signed-receipts-03",
"issuer_certification": "self-signed",
"public_key": "ebb8cf3efc78717c50e7c438c0ad5498f8fa4e09607fea1e030ac129b5965225",
"issuer_name": "protect-mcp",
"payload_digest": {
"input_hash": "4360ca118fcf3094cf087bc4c67e5237f686ba01d7e3066de6ce614e337898db",
"input_size": 136,
"canonical": "jcs"
},
"issued_at": "2026-09-11T02:55:22.535Z",
"issuer_id": "sb:issuer:GsAFpSRUAvaU"
},
"signature": {
"alg": "EdDSA",
"kid": "sb:issuer:GsAFpSRUAvaU",
"sig": "f916e431e98b1fc55864b55fc4364d6d221481f58cdc55ec29352deee73cfa81ea6d6ced75339a6bc0ff779591af033d6ae7b45376de6e848ddf8b771089d407"
}
}Checked in this browser: the signature on the standard, the signature on the approval, that the approval binds to this exact request, that the amount, supplier, and timing sit inside the standard, and, after simulated dispatch, that the sample bank readback matches. The record is three small signed files; drop any of them on Verify to check it yourself. Demo keys: signatures are real, identities are not. No money moves.
All trade events in the period, by event id, under one published template. Neither side sends its rows.
Two operations, named. First a local comparison: one browser reads both reports and nothing leaves it. Then source confirmation: the other side checks the exported result against its own copy. Rows never travel. Neither step is a joint computation on hidden inputs.
Press the tabs. The result digest is recomputed in this tab from the engine's own results on the sample pair; change a count and watch it stop matching.
The full tool, with your own reports: compare two records.
Both reports parse and compare. 1 manager event has no match in the administrator report. 1 superseded record was resolved by lineage first.
These are the two sample reports Compare loads, fingerprinted at build time and compared by the shipped engine; the result digest is recomputed here with the verifier's rule. Nothing was uploaded. The exported result carries commitments, counts, and limitations, never the underlying rows.
The exported Comparison Result contains category counts, a template digest, and commitments, bound by a self-consistent digest. It carries no issuer signature; a signature appears only when a party signs it into a Case. The other side confirms the result against its own copy. This is a local comparison plus source confirmation, not a private two-party computation. The comparison runs locally; its result export contains no input rows, positions, or prices.
A recording, not a new agent run. Counts and events come from the published evidence.
Six agents settle twelve vendor invoices; two carry a secret side objective and a seventh is a scripted attacker. Pick the controls and read the journals of what reached each service, replayed line by line from the published run. Nothing here is typed in: every row is a line from a file the harness signed, and the counts on the right were measured at the services.
Measured at the services by the harness. Recomputed here from the journals above: 96 effects reached a service, 0 of them carrying 0 unauthorized effects (one line can carry two kinds); 18 were refused by a receiver, 3 by a history rule at the gate. The two counts agree.
Run B-attested-34742001262, attested by its workflow run. Every file behind these numbers is public and checks offline with npm run check:swarm.