This page explains Warrant in plain language. No deep crypto required.

The four steps

Step 1 — Owner creates a mandate

The owner (user or admin) defines rules and signs them:
  • Max amount per action
  • Allowed wallet addresses
  • Blocked categories
  • Time windows
Warrant stores the mandate and returns a mandate API key for the agent. Analogy: Signing a company expense policy document.

Step 2 — Agent calls check() before acting

Before a transfer, order, or MCP tool runs, the agent sends the planned action to Warrant:
Warrant compares the action to the mandate rules and returns: Important: If verdict is DENY, your code must not run the real transfer or tool.

Step 3 — Signed receipt

Every decision gets a receipt — a JSON document signed by Warrant (Ed25519). The receipt includes:
  • receipt_id — unique id (e.g. rcpt_dec_…)
  • verdict and reasons
  • signature — proves Warrant issued it
Share this receipt with auditors or attach it to your own logs. Note: verdict=DENY means the business rule blocked the action. That is normal. A valid DENY receipt is still cryptographically authentic. Individual receipts are not one transaction each. Warrant batches them:
  1. Builds a Merkle tree of receipt hashes
  2. Publishes the root to ReceiptLog on-chain
  3. Adds proof, batchId, and txHash to the receipt
Auditors can then prove a receipt was included in a published batch. Mandate hashes are also registered on MandateRegistry when a mandate is created or revoked.

Who does what

Web2 and Web3 use the same engine

Same API for:
  • Food ordering (amount + category rules)
  • Crypto transfers (amount + counterparty allowlist)
  • Any MCP tool you wrap with check()
Only the domain and action_type change.

Verify without trusting us alone

Auditors use @abstraxn/warrant-verifier:
  1. Paste the receipt JSON
  2. Verify Ed25519 signature (offline)
  3. Optionally check Merkle proof and on-chain ReceiptLog
See Verify receipts.

One-liners for your team

  • Product: “Rules before the agent acts, receipts after.”
  • Engineering: “Call check() before irreversible side effects.”
  • Compliance: “Every decision has a signed, verifiable receipt.”

Next steps