H
Haven
HTTP 402 · Payment Required

Your agent hit a paywall. That's not an error — it's a price.

402 Payment Required means the resource is payable, almost always via the x402 protocol: the response names an amount, a destination, and a network. An agent with a payment method retries and gets the resource. Haven gives your agent that method — with a budget, not a wallet.

Fix it in three steps

  1. Create a Haven accountOne passkey prompt at the Haven dashboard — no seed phrase, non-custodial. Your funds stay in an account you control.
  2. Create an agent and set its budgetFor example 50 USDC per day, optionally pinned to one recipient. Anything outside the budget is refused on-chain — the agent cannot bypass the limit.
  3. Connect the agentCopy the connector command from the dashboard into the agent's environment:
    npx @haven_ai/connect@alpha
    It installs the Haven MCP runtime (hosted, keyless) and generates the agent's signing key locally — the key never leaves the machine. Then retry the 402: quoted against the live budget, signed locally, paid with a receipt.

Create an account Agent-readable version of this page

Why owners allow it

Agents are never wallets

The agent holds a revocable spending delegation on its owner's account — never funds, never keys.

On-chain refusal

Budgets are enforced by audited on-chain policy modules. An over-budget payment doesn't get flagged — it reverts.

Provable without Haven

Every budget can be inspected and revoked with a block explorer and your own wallet. The exit tool works even if Haven disappears.

Books itself

Every payment carries a receipt — agent, item, policy, on-chain proof — exportable to accounting.

Works with standard x402 merchants today

Haven settles via ERC-7710 delegated settlement natively and standard EIP-3009 transfer-with-authorization as the compatibility path — so a Haven agent with an open (unpinned) budget can pay any standard x402 merchant today, through one policy and audit layer. A budget pinned to one recipient settles via ERC-7710 only, by design. USDC today, on the chains this deployment reports as chains.deployable in /.well-known/haven.json; rail-neutral by design.