Curbi / How it works
Can it do that?
What does the record show?
Curbi connects three developer tasks: check the action’s boundary, verify its signed record, and reproduce the integration failure when something breaks.
1 · Before the action: permission.
The reference gate checks one proposed mutation against an explicit grant, scope and limits. Action Lab makes those decisions visible in a browser simulation. The public Check API checks replies; it does not issue a production grant or execute an action.
2 · After the action: inspect the evidence.
The reference issuer can bind a receipt to an attested mutation and a digest of its completion evidence. A proof bundle adds the signed checkpoint and inclusion proofs needed for local verification. The reference examples use fixture evidence and test keys, with production signing off.
The offline verifier checks the bundle against keys you choose. Valid signatures establish what those keys signed. They do not independently establish that an external provider completed the action. Read exactly what verification establishes.
3 · When it breaks: reproduce and keep the test.
Repair Lab replays an included failure and its bounded repair. MCP Chaos exercises documented faults against the included refund fixture. Download the example, inspect its assertions, and adapt the test to your own safe environment. A fixture passing is evidence about that fixture, not a guarantee about an arbitrary integration.
Use the same surfaces from your tools.
Start with the HTTP API or the hosted read-only MCP endpoint. Framework adapters are local source distributions. The agent manifest identifies current endpoints and availability; release evidence records their boundaries.
How it works · one action, end to end
Permission, confirmation, receipt, log, verification.
One discount, run through the real gate and log at build time. Fields below are copied from the actual signed tokens.
| Step | Signed object | Key fields (actual) |
|---|---|---|
| 1 · Permission | attestation | mutation: billing.invoice.apply_discountresource: inv_500agent_id: agent:voiceamount_minor: 5000currency: usdpayload_hash: sha256:73d1ubUALiRf9QzV2D4lBaNkYg9l_ydYZZNWlPJqCyI |
| 2 · Confirmation → receipt | receipt | op: billing.invoice.apply_discountstatus: DONEamount_minor: 5000att: sha256:1Yv4fvhHWTjWryBYcyHSM96vZYmuIy5sgKEo7NE_hhkevidence: sha256:j2YE9m6Cz9AmaG2AUZdjthl2w_YSxXlHPNGfyePhFJg |
| 3 · Append-only log | checkpoint | log: curbi:log:site-examplesize: 1root: e-5q3i_-Rou4Desv78RSCW-6QlA5WxwWRbqozAtw0qcalg: rfc9162-sha256 |
| 4 · Verify anywhere | bundle | verified offline leaf 0, billing.invoice.apply_discount by agent:voice |
Runs wherever your agents run
Run a check. Keep the result.
Check a reply Connect your agent →A pass means no configured rule fired. It grants no execution authority or provider-completion proof.