Saffron for agents

Callable by
Agents.

Vault discovery, quotes on both sides, position monitoring, risk data. Over MCP, Telegram, or REST.

npx @saffron/mcp init
set up in ~30s
Chains
5
Vaults commissioned
145
Earning now
11
Paid to depositors
$27,873
  • Claude
  • MCP
  • Telegram
  • Uniswap V3
  • Ethereum
  • Arbitrum
  • Base
  • BNB Chain
  • X Layer
  • KyberSwap

Agent-native fixed income

Saffron matches two sides of a vault: one locks in a premium, the other buys the yield. Every rate, fill, and position is public onchain state.

THE VAULT · ONE UNISWAP V3 LPFIXED SIDEVARIABLE SIDELP CAPITAL IN◄ PREMIUM · BANKED DAY 0PREMIUM PAID UPFRONTALL TRADING FEES OUT ►

The fixed side funds the LP and banks the premium on day 0. The variable side pays that premium and collects every fee the LP earns until maturity. At maturity the fixed side withdraws its liquidity, price moves and impermanent loss included.

Three ways in

Wire Saffron into your stack.

Engraved gold node connected to a ring of brass instruments

MCP server

Give your agent the vault book.

Saffron as tools in any MCP client: list open vaults, read fills and rates, quote the premium for a size, and stage positions for signing.

AI-nativeNo-code

mcp.json

"saffron": {
  "command": "npx",
  "args": ["-y", "@saffron/mcp"]
}
Engraved gold bird carrying a sealed envelope

Telegram bot

The same engine, in chat.

Query vaults, track positions, and surface the strongest pools straight from Bento, Saffron's backtest engine: the bot reads its whole database. Opening a position hands off to your own wallet to sign.

PublicIn-chat

telegram

/pools balanced 30d

1. PIRATE/WETH · E[Y] 12.32% · Sharpe 3.13

2. USDC/ASTEROID · E[Y] 14.21% · Sharpe 2.08

bento backtest, 30d window

/quote fixed 10 ETH 90d

fixed APR 14.2% · premium 0.35 ETH

paid day 0 · /open to stage

Engraved gold key on black marble

API

The protocol, one GET away.

Public reads for every vault across five chains: state, capacity, fills, forward rates, and secondary-market orders. Sign-in with Ethereum for positions.

RESTWS (TODO)

http

$ curl $SAFFRON_API/v1/vaults/1/vaults
{
  "vault": { "status": "Started",
    "fixedSideCapacity": "50000",
    "endTime": 1789430400 } ...
}

Skills

One skill, tuned to your agent.

Install once and your agent holds the whole desk as tools: the vault book, quotes on both sides of the swap, position state, and Bento's full backtest database.

Claude

Claude Desktop and Claude Code speak MCP natively. The skill ships with tool descriptions tuned for how Claude plans.

MCP nativeDesktop + Code

$ npx @saffron/mcp init --agent claude

Hermes

The Hermes pack maps Saffron tools onto its planner schema, with compact outputs for small context windows.

Planner schemaCompact ctx

$ npx @saffron/mcp init --agent hermes

OpenClawd

OpenClawd loads the skill from its registry manifest and gets the same vault book, quotes, and Bento reads.

RegistryAuto-load

$ npx @saffron/mcp init --agent openclawd

Any MCP client

Everything else uses the plain MCP config. Same tools, standard schemas, no tuning required.

Standard MCP

$ npx @saffron/mcp init

Wallet OS

roadmap

Agentic wallet platforms install capabilities as skills the same way. The vault book packages for wallet operating systems like OKX Onchain OS, so an agent that already lives in a wallet can quote and stage Saffron positions in place.

$ npx skills add saffron/vault-book

For agent builders

what your agent sees

tools/list

{
  "name": "saffron_quote",
  "description": "Price either side of a vault: the fixed APR and premium, or the fee stream that premium buys.",
  "inputSchema": {
    "vault": "address | id",
    "side": "fixed | variable",
    "size": "amount + asset",
    "term": "duration, e.g. 90d"
  }
}

tools/call

> saffron_quote({ vault: 42, side: "fixed", size: "10 ETH", term: "90d" })
{ "fixedApr": "14.2%", "premium": "0.35 ETH", "paid": "day 0",
  "matures": "2026-09-30", "stage": "ready for signature" }

Agent workstation

What an agent can do with a vault book.

agent session

read-only

> saffron.vaults.list({ status: "filling" })

WETH/USDC 0.05% · 90d · eth · 62% filled

WBTC/USDT 0.30% · 30d · arb · 41% filled

SLVON/USD · 180d · eth · 88% filled

Scan open vaults across five chains. Filter by asset, duration, and fill state.

01 / 07 · the lifecycle, both sides of the swap

The quant

Why fixed yield exists.

Saffron simulation · 2026-05-11

LP fee yield is volatile · the premium is not

illustrative

12%15%18%21%29D AGONOWVAR 19.1%FIX 12.9%
Fixed vs variable APR · 29 dayssimulated series

Balanced ±50%

fixed side

13.8%fixed APR

Sharpe 3.25 · +4.51% mean vs hold · +1.12% net in the worst third

Infinite range

fixed side

4.42%fixed APR

Sharpe 3.61 · +1.66% mean vs hold · +0.66% net in the worst third

The premium against impermanent loss

P33 cVaR

On a $1M Balanced ±50% position the premium is $137,900, paid on day 0. In the average worst-third path it covers ~88% of realized impermanent loss.

premium coverage ~88%realized IL, worst third

Method

250 Monte Carlo paths · USDC/WETH · May 2022 - Apr 2026

Honest baseline: only 26.8% of simulated paths saw WETH appreciate. The fixed side is paid either way.

Real pools, real distributions · balanced ranges, 30d window

Bento backtest · synced 2026-07-01 · U at gamma 7.5

PoolFeeRangeE[Y] 30dSigmaSharpeU(Y)
PIRATE/WETH1%balanced 10%12.32%3.94%3.1311.16%
USDC/ASTEROID0.3%balanced 50%14.21%6.82%2.0810.72%
RIO/WETH1%balanced 30%14.95%9.78%1.537.78%
LIT/USDC1%balanced 30%8.92%3.9%2.297.78%

Fee yield distributions of live Uniswap V3 pools, backtested by Saffron Bento. Volatile fee income like this is what the fixed side swaps away for a premium.

9audits, 5 on the release commit
$250Klive bug bounty, scales with TVL
0owner functions, terms locked at initialize
0keys needed to read the vault book
A deep red wax seal embossed with a saffron crocus, pressed onto dark documents

Immutable by construction

The terms cannot move.

Every vault locks its terms in one transaction at initialization. No owner functions, no setters, no upgrade path: not a governance promise, a property of the deployed code. Nine audits, five of them on the release commit.

Read the audits

Early access

Put a Vault Book
in Your Agent.

The agent stack is rolling out with the public launch. Ask for early access and we will wire you in as it lands.

FAQ

What can an agent actually do today?

Read everything: vaults, rates, fills, and capacity across five chains. Quoting and staged execution ship with the public launch.

Is it custodial?

No. The agent stack never holds keys. Positions are staged and handed to your own wallet for signature.

What data does the Telegram bot see?

Public onchain state and the vault book. It sees your positions only if you link a wallet address, and it never sees a private key.

What are the rate limits?

Public reads are rate-limited per IP. Authenticated access lifts the limits.

How does an agent authenticate?

Reads need nothing: the vault book and Bento data are public. Positions use Sign-in with Ethereum, and the agent only stages transactions; your wallet signs.

Can it run headless?

The MCP server is a standard stdio server: it runs wherever your agent does. Desktop, a VPS, or CI.

Which chains?

Ethereum, Arbitrum, Base, BNB Chain, and X Layer. One vault book across all five.