Tollrook GATE OPEN · EARLY ACCESS

Every request
pays at the gate.

Tollrook is a payment rail for AI agents. An agent calls an API, the gate quotes a price, the agent pays, the barrier lifts. No cards, no invoices, no humans in the loop. Just a receipt per call.

Settles on Solana · Robinhood Chain

A stone rook tower standing as a toll gate on a floating chessboard island
tap a square to open a route0 routes open
Toll lanes

Three ways an agent gets through.

A key is a lane. Each lane has its own price, limit and rule set. Run the demo to watch agents hit the gate.

Pay-per-callquote · pay · pass
idlewaiting
Prepaid tabtop up once, pass many
idlewaiting
Capped keystops at the spend limit
idlewaiting
Receipts

A paper trail your agent can read.

Every passage prints a line: what was called, what it cost, which key paid, which chain settled it. Signed, so the agent (or you) can verify it later.

Signed per callEach line carries a settlement reference and the gate's signature. Replay it anywhere.
Grouped per keySpend rolls up by key, by route, by hour. Caps are enforced against the tape, not a cache.
Readable by machinesReceipts are plain JSON behind the paper. Feed them back to the agent as context.
DEMO DATA
TOLLROOK · RECEIPT TAPEkey rk_live_…4f2a · lane 1
    session total$0.0000
    Policies

    Rules live on the gate, not in your code.

    Attach a policy to a key. The barrier decides before the request ever reaches your server.

    Spend cap

    Hard ceiling per key, per day or per task. Hit it and the arm stays down until it rolls over or someone tops up.

    cap: { usd: 25, window: "24h" }

    Route allowlist

    A key can only pass through the routes you name. Everything else is a closed lane, no charge, no leak.

    routes: ["/search", "/quote/*"]

    Rate limit

    Throttle by calls per minute or by tokens spent per minute. Bursty agents get queued, not billed twice.

    rate: { calls: 120, per: "1m" }
    SDK

    One fetch. The gate handles the rest.

    1. Call the route.The gate answers with a price and a payment challenge.
    2. The wallet pays.Your agent's wallet signs the amount on the chain you picked.
    3. The arm lifts.The original request goes through and a receipt comes back in the headers.
    // agent side — TypeScript
    import { tollrook } from "@tollrook/agent";
    
    const gate = tollrook({
      key: process.env.ROOK_KEY,
      chain: "solana",          // or "robinhood"
      maxPerCall: "0.02",        // usd, agent refuses above this
    });
    
    const res = await gate.fetch("https://api.example.com/search?q=rwa");
    // gate: 402 → pay → retry → 200
    
    console.log(res.headers.get("x-rook-receipt"));
    // { amount: "0.0040", route: "/search", ref: "sol:5Kj…" }
    Early access

    Open a gate for your agent.

    We're onboarding a small set of agent builders first. Leave an address and we'll send a key when your lane is ready.