ERC-8004 tells you who an agent is. Chancela decides what it is allowed to do, and proves why on-chain. Identity, permissions, policies and verifiable accountability for autonomous agents.
An LLM proposes an action. A deterministic policy engine authorizes it. Swap the model and the decision is unchanged.
An action not explicitly granted is refused. Unknown actions are refused. A crash is refused. There is no permissive fallback.
Every decision is anchored on Monad, including the blocked ones. A registry that only proves the allows proves nothing.
Some actions need their owner. They approve with a passkey over the exact decision, and Monad verifies that signature itself, with its native P-256 precompile.
The SDK and the MCP server check every permission against the attestor the owner registered on-chain. This service can refuse to answer. It cannot forge a yes.
An owner holds one passkey. It derives a separate key for every agent — no seed phrase, nothing stored — and each key is registered on-chain.
No account and no API key. Pick the one that matches how your agent is built.
curl -X POST \
https://chancela.xyz/api/agents/TA-001/authorize \
-H 'content-type: application/json' \
-d '{"action":"CREATE_CUSTOMER",
"parameters":{"name":"Maria"}}'npm install chancela-sdk viem await chancela.guard(agentId, action, params, () => wallet.send(...))
{ "mcpServers": { "chancela": {
"command": "npx",
"args": ["-y", "chancela-mcp"] } } }Ask the agent to move money. Watch the policy engine say no, on-chain.