Autonomous finance for AI agents

Money your agents
can actually move.

Moneo gives an AI agent its own account, its own spending limits, and its own access to markets. Three SDKs: a wallet whose keys the model never sees, a guard that evaluates every payment before it is signed, and an execution layer for markets that never close.

Get Started
Policy state
Per transaction
$250.00
Rolling 24h
$1,880 of $2,000
Counterparties
allowlist-only
Escalations
1 pending
Blocked today
2
createGuard()
Model Context ProtocolClaude Agent SDKOpenAI Agents SDKLangGraphVercel AI SDKCrewAIMastra
The stack

Three SDKs. One ledger underneath.

Adopt them one at a time. The wallet works alone, the guard wraps anything that spends, and trading is just another caller the guard has to approve.

Wallet ledger
Agent
research-01
Network
robinhood-mainnet
Custody
tee-signer
Balance
486.32 USDG
Key exposure
none
Spend Guard

A refusal that
costs nothing.

The guard sits between the agent's intent and the signer. A blocked payment is never broadcast, never costs a fee, and comes back as a structured reason the agent can reason about, not a stack trace it can retry into oblivion.

Decision ledger

research-01pay · x402 market data$0.04Allowunder micro-payment floor
research-01pay · x402 market data$0.04Allow142 calls today · $5.68 of $50 cap
ops-03trade · USDG → $TSLAx$1,500.00Allowtwap 30m · slippage 0.11% · venue verified
ops-03transfer · 0x9f3c…a71b$8,200.00Blockexceeds $2,000 rolling 24h budget · nothing signed
growth-02subscribe · vendor invoice$99.00Holdnew counterparty · awaiting human approval
ops-03trade · USDG → $AAPLx$240.00Blockcounterparty not on allowlist · unverified contract
How it works

Four steps from an agent that asks to an agent that pays.

Nothing here is a migration. Each step is a call you add next to the code you already have.

01

Write the policy

Declare what this agent may do with money: caps per transaction, a rolling budget, who it can pay, what it can trade, and the threshold where a human has to say yes.

02

Issue the wallet

One call creates a funded account for a named agent, with the policy already attached. Custody is a TEE signer, an MPC quorum, or your own KMS. Nothing about the key material crosses into the model's context.

03

Hand it the tools

Expose the SDKs to your agent over MCP or plain function calling. It sees pay, swap, quote, balance, and gets a structured refusal when policy says no.

04

Read the ledger

Every attempt is recorded with its verdict and reason, attributable to one agent, one run, one policy version. Reconciliation stops being archaeology.

Pricing

Only pay for the money that actually moves.

Policy evaluation is free and unmetered. You should never be billed for the decision to say no. Sandbox is free outright.

Platform costs

Policy evaluationunmeteredfree
Payment settledper transaction$0.004
Trade executedof notional0.05 %
Human escalationper approval$0.02
Ledger exportincluded
Quickstart

Roughly twenty lines to a funded agent.

TypeScript and Python, same surface. Start on the sandbox ledger with test funds, flip one flag when you want it real.

Read the docs
import { createGuard } from "@moneolabs/guard";
 
// Policy is data, versioned like code. Pass it to createWallet
// and it runs before anything is signed.
const guard = createGuard({
perTransaction: { max: "$250" },
rolling24h: { max: "$2,000" },
counterparties: "allowlist-only",
allow: ["x402:*", "0x9f3c…a71b", "stripe:acct_1Nz"],
escalate: { above: "$500" },
});
 
// Denials arrive as values, not exceptions the agent can swallow.
const decision = await guard.check({ action: "pay", amount: "$8,200" });
// → { verdict: "block", reason: "exceeds the rolling 24h budget" }
Sandbox keys are free and rate-limited. No card, no waitlist.

Give the agent a budget,
not your bank login.

Sandbox access is open. Production ledgers are onboarding now.