A budget it can't raise
You set a spend limit per day or week, a cap per payment, an expiry and a merchant list. Only your wallet can change them; the agent's key can't.
update_terms needs your walletLet your agent pay for APIs, data and compute on NEAR — inside a budget it cannot change. The agent gets a limited key; the contract keeps the rules and checks every payment.
A rein is a NEAR function-call key added to your own account. NEAR itself stops that kind of key from moving money directly or calling anything except the three agent methods on the Reins contract.
Type what the agent may spend, in plain English. Reins turns it into terms you review, then your wallet signs create_rein.
Your wallet adds a new key that can only call pay, request_approval and issue_subrein. Paste it into Claude or Codex with one command.
Each payment is checked on-chain against your rules and paid from your vault. A failed transfer puts the budget back.
You set a spend limit per day or week, a cap per payment, an expiry and a merchant list. Only your wallet can change them; the agent's key can't.
update_terms needs your walletAbove your threshold the agent files a request instead of paying. You approve it from your phone; the contract re-checks the rest.
request_approval · approve_requestFreeze a rein for a moment, revoke it and every sub-rein for good, or revoke everything you own in one transaction.
freeze · revoke · revoke_allAnyone can report a drain address with a bond and proof. Every agent on Reins refuses to pay it unless its owner allows it.
bonded blocklistIs the account new? Did its code just change? Does the name imitate one you trust? A warning asks you; a block never signs.
allow · warn · blockAn agent can hand a sub-agent a smaller rein. It only works once you add its key, and its spending counts against the parent.
issue_subreinA rein can budget in a NEP-141 token instead of NEAR. Deposit it once; the contract pays merchants with ft_transfer.
The same limits gate payments on Base Sepolia: the contract asks NEAR's MPC network to sign, and only if the rein allows it.
Chain SignaturesGive an agent a named sub-account like research.you.testnet. Its key lives there, never on your account.
The agent holds a key. The chain holds the rules.— how Reins works, in one line
Each agent gets its own rein and its own key. Freeze one without touching the others; give a sub-agent a smaller one; see what each spent today.
claude mcp add reins \ -e REINS_OWNER=you.testnet \ -e REINS_AGENT_KEY=ed25519:… \ -- bun run Reins/packages/mcp/src/index.ts # tools: rein_status, check_counterparty, pay, …