delegation playground

Watch authority
get granted, narrowed, denied, and revoked.

Five real acts, verified live against Base mainnet — a bounded grant, a narrower delegation, an attempt the guard actually enforces, two ways to try for more than was granted, and a revocation that kills a whole cohort at once. No authorization server anywhere in this page.

Loading wasm + config…

What's real here, and what isn't

The delegator key (A, below) is published on purpose and controls nothing outside the shared sandbox.

The challenge is self-issued: this page is holder and verifier in one place (the broker sandbox documents the same caveat).

Everything else — signatures, narrowing math, registry reads — is real, against Base mainnet.

Use budgets (max_uses) are signed into the grants, but this page does not meter them — nothing here counts calls. Metering is enforced by the deployment that sits in front of real tool calls (the @grantor/mcp broker). Act 3 checks the grant's scope and expiry, not a running count.

A — loading… B, C — fresh identities, generated when you press Start
1

Grant

A signs a bounded grant to B — two tools, capped uses, an expiry — and B proves it against a live Base mainnet read. Press Start above to run it.


    

That identity step is a whole story of its own — no signup, no auth server, even passkeys: see the identity demo.

This exact mechanism, as a tool your agents use today

Every deny above is an argument; this is where it converts. The @grantor/mcp broker enforces grant/delegate/narrow/deny/revoke for real MCP tool calls — not advisory, structural.

npx -y @grantor/mcp serve
grantor-mcp wrap --tools search,fetch --max-uses 20 -- npx some-mcp-server

No analytics on any of this — the chain and npm are the only metrics, as everywhere on this site.