π LemonCake
The billing, budget & identity layer for software for agents. Private Beta Β· Open core
Monetize any MCP/API in minutes, and let AI agents pay for it safely β each agent gets a spend-capped identity (budget, usage, pause/revoke). Buyers pay by card; no crypto wallet. First 3,000 calls free (lifetime). Then 3% only when your API earns.
π Get started Β· π² Pricing Β· π Docs Β· π Live
<br> <img src="https://raw.githubusercontent.com/evidai/agent-unleashed/main/demo.gif" alt="An AI agent pays for paid API calls on its own β spend-capped, no crypto" width="760"><sub>βοΈ A real AI agent buys API calls by itself ($0.01 each), stops at its cap, and the API owner earns β no human, no crypto. Β· <a href="https://github.com/evidai/agent-unleashed">demo source</a></sub>
</div>π Get started
Monetizing an MCP/API? Start here β one command:
npx create-lemon-mcp my-paid-mcp # a paid MCP server, running in sandbox now
# then add a Seller Key in /app and set LEMONCAKE_SELLER_KEY β it charges for real (no code change)
Pick your path:
| I want to⦠| Do this |
|---|---|
| Monetize my MCP/API (sellers) | npx create-lemon-mcp β add a Seller Key in /app to go live |
| Add billing to a server I already have | @lemon-cake/mcp-sdk β wrap a tool with lc.charge(), or route through the gateway (no code) |
| Let an agent pay for paid APIs (buyers) | npx -y agent-payment-mcp β 8 free demo tools, no signup |
npx -y agent-payment-mcp
{ "mcpServers": { "lemon": { "command": "npx", "args": ["-y", "agent-payment-mcp"] } } }
Ask your agent to run list_demos / call_demo. To call paid APIs, set LC_PAY_TOKEN (get one at lemoncake.xyz/app).
What is LemonCake?
LemonCake is an x402 payment rail for monetizing MCP servers and HTTP APIs. Sellers register an endpoint and set a price per call. Buyers prepay by card and receive a spend-capped Pay Token. Agents call the gateway with that token, and LemonCake verifies, meters, forwards, and records usage.
sequenceDiagram
participant A as π€ AI Agent
participant G as π LemonCake Gateway
participant API as Your API
A->>G: POST /g/:id (no token)
G-->>A: 402 + accepts[] (price, mintUrl)
A->>G: mint Pay Token (off-session, capped)
A->>G: Bearer :jwt
G->>API: forward (upstream key hidden)
API-->>A: 200 + result
Note over A,G: budget exhausted β 402 β agent self-funds β continues
Sellers register any HTTP API and set a price per call. Buyers / agents prepay with a card β Pay Token issued automatically β agent calls the API within budget. Budget exhausted β 402 challenge β agent self-funds β continues. No humans.
π§± Open core
| Layer | Status | Where |
|---|---|---|
Buyer-side MCP (agent-payment-mcp) | β MIT | npm, src |
Seller SDK (@lemon-cake/mcp-sdk) | β MIT | npm, src |
| Starter templates | β MIT | examples/ |
| Docs site | β Public | lemoncake.xyz/docs |
| Gateway + billing engine | π Hosted | lemoncake.xyz |
| Dashboard (analytics, usage ledger) | π Hosted | lemoncake.xyz/app |
π³ How payment works
For buyers (human or agent)
- Open a buy link (
lemoncake.xyz/buy/<shortId>) - Pay with a card β Pay Token (JWT) issued automatically
- Pass
Authorization: Bearer <token>to the gateway - Gateway verifies, meters, forwards to the real API
- Budget exhausted β 402 challenge returned with payment instructions
For agents (fully autonomous)
- Issue a Buyer Key (
bk_...) at /app β Pay Tokens pane - Save a card once at /agent/fund
- Agent calls
POST /api/lc/agent/tokens(Bearer bk_) β off-session card charge β JWT - Agent uses JWT to call gateway β hard-capped, no human in the loop
// MCP config for agent with pre-issued Pay Token
{
"mcpServers": {
"lemon": {
"command": "npx",
"args": ["-y", "agent-payment-mcp"],
"env": {
"LC_PAY_TOKEN": "<jwt from Pay Token>"
}
}
}
}
π Publish your API on LemonCake (sellers)
Monetize any HTTP API or MCP server:
- Sign in at lemoncake.xyz/app
- Add API β paste your URL, set price per call (e.g.
$0.01) - Share the buy link, or issue a Seller Key (
sk_live_β¦) to charge from your own server - You keep 97%. LemonCake takes 3% (Stripe Connect Direct Charge). Never holds funds.
Scaffold a paid MCP in one command β sandbox by default, production with one env var:
npx create-lemon-mcp my-paid-mcp # demo runs with no key
# then: set LEMONCAKE_SELLER_KEY=sk_live_β¦ β it charges for real (no code change)
Add billing to any tool with the SDK (@lemon-cake/mcp-sdk v1, no crypto):
import { createLemonCakeSDK } from "@lemon-cake/mcp-sdk";
const lc = createLemonCakeSDK(); // reads LEMONCAKE_SELLER_KEY (demo without it)
server.tool("my_premium_tool", "desc", { q: z.string() },
lc.charge({ price: 0.01 })(async ({ q }) => {
return { content: [{ type: "text", text: "result" }] };
}),
);
lc.charge wraps the handler: preflight (reserve) β run β settle (confirm on success, refund on failure). Or route existing traffic through https://lemoncake.xyz/g/<shortId> β no code changes required.
πͺͺ Agent Identity
Give each AI agent its own spend-capped identity β so a fleet can pay for APIs without a shared card or runaway cost. Built on top of Pay Tokens; no balance pool, custody-free (an agent's "budget" is just the Pay Tokens bound to it).
- Bind a Pay Token to an agent when issuing it (
agentId) β spend is attributed to that agent. - Per-agent rollup β budget, spend, calls, last-used in the dashboard.
- Kill switch β
pause/resume/revokean agent; bound tokens are rejected at the gateway instantly (AGENT_PAUSED/AGENT_REVOKED), even with budget remaining. - Server-authoritative β price is set on the endpoint; agents never carry a card or a seller key.
# manage agents (owner-authenticated)
POST /api/agents # create β { agent_id, ... }
POST /api/agents/:id/pause # kill switch (also /resume, /revoke)
GET /api/agents # list + per-agent spend rollup
β¨ Features
For agents / buyers
- β
x402 native β 402 challenge returns
accepts[]with price + mintUrl - β Hard-capped β per-mint / daily / monthly limits, server-enforced
- β
Off-session top-up β agent self-funds via Buyer Key (
bk_...), no prompts - β Demo Mode β 8 free tools, try without any setup
For API providers / sellers
- β
5-min go-live β
npx create-lemon-mcp, orlc.charge()on any tool, or route through the gateway - β Custody-free β Stripe Connect Direct Charge, 97% goes directly to seller
- β Usage ledger β every call recorded, revenue visible in dashboard
- β Buy link β share one URL, buyers self-serve
For agent fleets / operators
- β Per-agent identity β bind Pay Tokens to an agent, attribute spend
- β Per-agent kill switch β pause / resume / revoke, enforced at the gateway
- β Spend rollup β budget / spent / calls per agent
- β No balance pool β custody-free; budget = the agent's bound Pay Tokens
Infrastructure
- π§ Stripe Connect Direct Charge (no custody)
- π§ x402 gateway with
WWW-Authenticate: Lemoncake-Prepaid - π§ EN / ζ₯ζ¬θͺ / EspaΓ±ol dashboard
- π§ JP FSA: registration not required (confirmed 2026-06)
π Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β Buyer / Agent β
β β³ prepays via card OR Buyer Key (bk_...) β
β β³ receives Pay Token (signed JWT) β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββ
β Authorization: Bearer <jwt>
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β LemonCake Gateway /g/<shortId> β
β β³ verify JWT signature β
β β³ check budget + calls + rate limit β
β β³ decrement spend, write to ledger β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββ
β HTTPS + upstream_auth (hidden)
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β Your API / MCP server (unchanged) β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
LemonCake is the middle box. It never holds funds β money flows Stripe β seller via Direct Charge.
π Compliance
Japan FSA Fintech Support Desk (2026-06) confirmed: no registration required. Custody-free design (Stripe Connect Direct Charge, no pooled balance).
| Jurisdiction | Basis |
|---|---|
| π―π΅ Japan | FSA β registration not required |
| πΊπΈ USA | FinCEN 2019 Β§4.5 β non-custodial software β MSB |
| πͺπΊ EU | MiCA β non-CASP |
| π¬π§ UK | FCA β Tech Service Provider |
| πΈπ¬ Singapore | MAS β DPT non-applicable |
| π¨π¦ Canada | FINTRAC β non-custodial exemption |
| π¨π Switzerland | FINMA β non-financial intermediary |
π Package family
| Package | What it does |
|---|---|
agent-payment-mcp | Main entry β x402 gateway + agent payment rail |
@lemon-cake/mcp-sdk | Seller SDK β lc.charge() / lc.protect(), fiat, no crypto |
create-lemon-mcp | Scaffold a paid MCP server β sandboxβprod with one env var |
xstocks-mcp | Buy tokenized US stocks on Solana |
alpaca-guard-mcp | Alpaca paper / live trading with hard daily cap |
tokenized-stock-mcp | Dinari dShares |
π‘ Security
- Server-side hard caps β per-mint / daily / monthly, cannot be exceeded
- Pay Token = signed JWT β HS256, verified on every gateway call
- upstream_auth never exposed β seller's real API key hidden from buyers
- RLS on all DB tables β Supabase row-level security enabled
- Stripe Connect Direct Charge β LemonCake never holds funds