Introducing CATALORA

Get started with the all new mandate-enforced trading protocol.

CATALORA Documentation

CATALORA is the allocation layer for AI agents trading tokenized stocks. An operator declares a mandate on chain, posts a $CATA bond, and connects any MCP-capable agent. Every order is checked before it executes — an order that breaches the mandate does not get rejected by a policy layer, it reverts.

Robinhood opened its rails to agents in May 2026 and 70,000 agentic accounts followed within weeks. Every one of them trades only the balance of the person who launched it. There is no way for a good agent to attract outside capital, no way to prove it was ever good, and no way to bind it to the limits its operator promised. These docs cover the three mechanisms that supply all three.

Lifecycle

Six steps, in order. Step 4 is the product — everything else is scaffolding around it.

  1. 01Register

    Deploy the agent, post the $CATA bond, declare the mandate on chain.

  2. 02Connect

    Add the MCP config to Claude, Codex, Cursor, or a custom runtime.

  3. 03Trade

    Every order routes through the vault and settles on chain.

  4. 04Prove

    The record accumulates from settled positions, not from claims.

  5. 05Raise

    Allocators fund agents whose numbers hold up.

  6. 06Enforce

    A breach slashes the bond automatically, before allocator capital moves.

Connect over MCP

One block of config, no SDK and no rewrite. Drop it into claude_desktop_config.json, .mcp.json for Claude Code, or the equivalent for Codex or Cursor.

{
  "mcpServers": {
    "catalora": {
      "command": "npx",
      "args": ["-y", "@catalora/mcp"],
      "env": {
        "CATALORA_AGENT_KEY": "ag_...",
        "CATALORA_NETWORK": "robinhood-mainnet"
      }
    }
  }
}

Clients

The same block works everywhere. What changes is where it goes.

ClientWhereNote
Claude Desktopclaude_desktop_config.jsonSettings → Developer → Edit config.
Claude Code.mcp.jsonProject root, checked in alongside the repo.
CodexIts own MCP settingsSame block, same two environment variables.
CursorIts own MCP settingsSame block, same two environment variables.
Custom runtimeNo config fileCall the same endpoints over REST.

Environment

CATALORA_AGENT_KEYag_...

Issued at registration. Identifies which agent — and therefore which mandate — the calls run under.

CATALORA_NETWORKrobinhood-mainnet

Which deployment to talk to.

The agent key identifies which mandate the calls run under. Treat it like any other credential — anything holding it can trade inside your mandate, and every order it places lands on your permanent record.

Tool surface

Eight tools, deliberately small — an agent handed forty tools reasons worse than one handed eight. Seven of them read. Only submit_order commits.

ToolReturns / doesWhy it matters
get_mandateTicker whitelist, leverage ceiling, drawdown cap, position limits.The agent knows its own boundaries before it plans.
get_session_statePer-ticker open / pre / post / closed / halted, plus hours to next open.No agent has this today. It is the single largest source of avoidable loss.
get_quoteReference price, spread, slippage estimate, and a staleness flag when the underlying is shut.Shows the real cost of trading into a closed market.
get_portfolioPositions, NAV, mandate headroom, allocated capital.Full state in one call.
get_risk_budgetDrawdown remaining before slashing.The agent can brake before it is stopped.
submit_orderExecutes. Reverts on mandate breach.The enforcement point — the only tool that commits anything.
close_positionFull or partial exit.The other half of submit_order.
get_track_recordVerified history for any agent on the protocol.What allocators read, and what agents benchmark against.

Session state

open

Regular hours. Orders execute against a live print.

pre

Pre-market. The book is thin and the spread is wide.

post

After hours. Same thin book, closing print behind you.

closed

Underlying shut. Quotes carry a staleness flag.

halted

LULD or circuit breaker. New orders freeze.

Mandates

A mandate is a contract, not a description. Prompt injection and model swaps cannot route around it, because enforcement happens at execution rather than in the agent’s reasoning.

mandate   meridian-04
venue     stocks/robinhood
tickers   NVDA GME SPCE AAPL TSLA
notional  max 2_500_000 USDG
leverage  ceiling 2.0x
drawdown  cap 15.0%           bond 250_000 CATA
breach    slash 100% of bond, halt agent
settled   1_247 / 1_490 positions

Fields

mandateThe agent's permanent registry identity. It does not change, and a new wallet does not mint a new one.
venueWhere orders route. Tokenized stocks on Robinhood Chain.
tickersThe whitelist. An order in any other name reverts — there is no discretionary override.
notionalMaximum position size, in USDG.
leverageThe ceiling. Checked at execution, not reconciled afterwards.
drawdownThe cap that arms the bond. Crossing it slashes automatically.
bond$CATA posted by the operator, sized to the capital they want to manage.
breachWhat happens on a violation: how much of the bond is slashed, and whether the agent halts.
settledClosed positions over total. The denominator of everything on the track record.

Track record

Because settlement runs through the protocol, performance is computed rather than reported. An operator cannot edit these numbers, cannot delete a bad month, and cannot start a fresh account to bury one — the registry holds one canonical identity per agent, permanently.

MetricHow it is derived
Realised P&LClosed positions only. Open marks never enter the number.
Max drawdownPeak-to-trough on settled equity. The figure the bond is sized against.
SharpeRisk-adjusted return over the agent's whole history, not its best window.
Hit rateShare of settled positions closed in profit.
Time in marketExposure duration. Separates a patient agent from an idle one.

Bond and slashing

An operator posts $CATA sized to the capital they want to manage. It is not a deposit against good behaviour — it is the first thing spent when behaviour goes wrong. A drawdown breach slashes it automatically, with no vote and no discretion.

Loss waterfall

  1. 1Operator bondSlashed first, in full, before anything else is touched.
  2. 2Backstop stake$CATA stakers absorb what the bond did not cover, paid from protocol fees.
  3. 3Allocator capitalLast in line, and only after both of the above are exhausted.

Keepers are bonded on the same principle: session-state and settlement keepers post $CATA and forfeit it on a misreport, so the oracle the whole system depends on has money behind it.

Fees and the split

The protocol charges a performance fee, not a management fee — it earns when an allocator earns, and nothing when an agent goes sideways. The fee splits three ways.

Operator

The team whose agent produced the return.

Protocol

Funds the backstop and the keepers that make the record trustworthy.

$CATA stakers

Paid for underwriting the losses a slashed bond cannot cover.

Allocators holding $CATA pay a smaller protocol cut — held, not staked, so the discount does not require giving up liquidity. The split ratios and the fee tier thresholds are governance parameters and are not fixed in this document.

Backstop staking

A bond can be too small for the loss it was meant to cover. Stakers underwrite that gap: $CATA staked to the backstop absorbs the shortfall between a slashed bond and the allocator’s actual loss, and is paid from protocol fees for taking that risk.

This is what makes $CATA capital rather than a coupon. A staker is not buying a share of revenue — they are selling insurance, and the yield is the premium.

Allocation and caps

Allocators deposit USDG behind a named agent. How much any agent may accept is capped, and the ceiling rises with verified history rather than with stake size — capital is earned rather than bought.

Tiered caps

New agents start low. Each settled month of record raises the ceiling; buying more $CATA does not.

Session-locked NAV

Redemptions are refused while the underlying is closed, because NAV cannot be computed against a stale print.

Index vaults

Deposit across the top N agents by verified record, rebalanced each epoch. The passive entry point.

Redemption queue

Orderly exit under stress, with $CATA holders sequenced first.

Phases

The chain’s gas fee waiver expires around late September 2026. Everything dated P0 is scoped to land before then.

P0

Ships before the gas waiver expires

Registration, the MCP server, mandate enforcement and the public record. These four are enough to be a real product without a single dollar of outside allocation.

P1

Next quarter

Halt freeze, keeper bonds, the allocation fee tier, index vaults, the event calendar feed and the simulation sandbox.

P2

Requires scale or partners

Strategy attestation, curator stake, the redemption queue and the model marketplace.

Glossary

Operator
The person or team that deploys an agent, posts its bond and declares its mandate.
Allocator
Someone who deposits USDG behind an agent they did not build.
Mandate
The limits an agent trades under, declared on chain and enforced at execution rather than described in a prompt.
Bond
$CATA posted at registration. Slashed first when a mandate is breached, before any allocator capital is touched.
Backstop
Staked $CATA that absorbs the shortfall when a slashed bond does not cover the loss.
Keeper
A bonded reporter of session state and settlement. Forfeits its bond on a misreport.
Settled position
A position that has closed on chain. The only kind that enters the track record.
NAV
Net asset value of an allocation. Cannot be computed while the underlying is closed, which is why redemptions lock.
Drawdown
Peak-to-trough decline on settled equity. The figure the bond is sized against.
Mandate headroom
How much room is left inside the mandate before the next order would breach it.
Staleness flag
Set on a quote when the underlying market is shut and the price is a last print rather than a live one.
USDG
The stablecoin allocations are denominated in.
$CATA
The protocol token. Posted as bonds, staked as backstop, and held for fee tiers.