Every agent
gets a Pact.

Spending guardrails for autonomous AI agents. Set the budget, the limits, and the destinations. Every payment, swap, or transfer is checked against the Pact before it happens.

How it works

Is this agent allowed to do this, for this amount, right now?

An agent never holds unlimited authority. Its owner writes a Pact: what it may do, how much, where, and when a human has to say yes. AgentPact answers allow, deny, or ask before money moves, and logs every decision.

01 / Define the Pact

Describe what your agent may do.

Budgets, action permissions, assets, trusted destinations, and approval rules. Start from a template, adjust with plain controls, and every edit becomes a new immutable version, so you can always see which rules were in force for any decision.

Research Agent

pact v1
Daily budget
25 USDG
Per transaction
1 USDG
Payments
Allow
Swaps
Deny
Transfers
Deny
Contract calls
Ask
Allowed assets
USDG
Unknown destination
Ask
Velocity
120 actions / hour

02 / Enforce every action

Checked before execution. Live.

This is the production API with a throwaway sandbox agent. Propose an action and watch each rule pass, fail, or escalate. Budget checks are committed atomically, so two concurrent requests can never both spend the same last dollar.

Agent proposes

sandbox agent

Research Pact: payments allowed, swaps and transfers denied, 1 USDG per transaction, 25 USDG per day, USDG only, first payment to a new destination asks the owner. Throwaway agent, one-hour key, cannot move funds.

AgentPact decides

Run a request to see the decision, the rule checks, and the remaining budget.

03 / Stay in control

The agent works. You keep the keys.

An agent cannot raise its own budget, edit its own Pact, approve itself, or extend its own session. The owner wallet is always the root authority.

Approve the exceptions

Anything above the autonomous limit, any action marked ask, and any first payment to a new destination waits for you. Approvals expire on their own, and approving never lets the day's budget be exceeded.

Freeze instantly

One call revokes every session key and denies every new action. Unfreezing does not resurrect old keys; you issue a fresh one, scoped and time-boxed.

Audit everything

Every decision is stored with the Pact version it was judged against, the rule checks, the reasons, and the session key that asked. Nothing is overwritten.

04 / Integrate

MCP for agents. SDK and REST for everything else.

Claude, Codex, and any MCP client connect to the hosted server with the agent's session key. Custom agents use the TypeScript SDK or call the REST API directly. The policy lives server-side either way.

MCP (Claude Code, Claude Desktop, Codex)

{
  "mcpServers": {
    "agentpact": {
      "type": "http",
      "url": "https://mcp.agentpact.dev/mcp",
      "headers": { "Authorization": "Bearer pact_sk_..." }
    }
  }
}

TypeScript

import { AgentPact } from "@agentpact-dev/sdk";

const pact = new AgentPact({ sessionKey: process.env.AGENT_SESSION_KEY });

const result = await pact.pay({
  amount: "2",
  asset: "USDG",
  destination: "0x…",
});

if (result.decision === "allow") {
  // proceed: the amount is committed against today's budget
}

Today AgentPact enforces at the authorization layer: it decides, commits budgets, and records. On-chain execution through a Pact Account on Robinhood Chain is the next phase. See what is live.

05 / $PACT

The native token of AgentPact.

$PACT lives on Robinhood Chain, the same chain where agents spend through their Pacts. It is how the protocol and the community around it grow together. Verify the contract address here before interacting; the pill below is the only official source.

$PACT

Token
$PACT
Network
Robinhood Chain
Type
ERC-20

Anything claiming to be $PACT that does not match the address above is not ours. Launch details will be announced on @agent_pact. More about $PACT →

Give your agent a Pact.