Getting started

Lethe is a wallet for your AI agent that it can't empty and that doesn't point back to you. You fund a vault from your Solana wallet, the vault settles in Monero, and your agent spends from it, but only at verified merchants and only inside the limits you set.

  1. Connect a Solana wallet. Phantom, Solflare, Backpack or anything that speaks Wallet Standard. Signing in is a message signature and can't move funds.
  2. Fund the vault. Send SOL or USDC. It's converted and held as XMR.
  3. Set limits. A per-order cap, a daily cap, the line above which you approve by hand, and the allowed categories.
  4. Ask. "VPS in Iceland for 3 months under $40." The agent finds a verified listing, quotes it, and buys it if it fits.
Sandbox (now)Mainnet
DepositsYou sign the deposit; the vault is credited. No funds move.A real SOL or USDC transfer, verified on-chain.
XMR conversionAt the live XMR price.Through a settlement partner, at the quoted rate.
OrdersSimulated deliveries, clearly marked sandbox.Delivered by bonded merchants.
Limits, locker, keysReal.Real.

How privacy works

Solana is public. Anyone can follow a wallet from its first deposit to its last trade. Lethe breaks that trail once, at the vault: what goes in is a Solana transfer, but what comes out is a Monero payment, and Monero hides sender, receiver and amount by default.

From the outside, the chain shows your wallet funding Lethe, the same as everyone else funding Lethe. It doesn't show what was bought, from whom, or when.

What this is not: a mixer for funds of unknown origin. Lethe spends on goods and services from listed merchants, and withdrawals go to a Monero address you own.

What Lethe sees

DataStoredWhy
Wallet addressYesIt's your login.
Vault balance and ledgerYesTo enforce limits and show your activity.
Orders (item, price, merchant)YesDisputes and refunds need a record.
Deliveries (passwords, eSIM codes, configs)NoShown once, then encrypted in your browser. We keep only ciphertext.
Chat with the agentNoParsed into a quote and discarded.
Name, email, phone, IDNever askedThere's no form that asks for them.

The locker

When an order fills, the delivery (root password, eSIM QR, WireGuard config, gift code) comes back to your browser once. The app asks your wallet to sign a fixed message, hashes the signature into an AES-256-GCM key, encrypts the delivery, and stores only the ciphertext. To read it later, you sign the same message again. Only your wallet can produce that key.

Lose the wallet, lose the locker. We can't recover deliveries for you. Save anything important somewhere else as well.

Funding the vault

Open the vault panel, choose SOL or USDC, enter an amount and sign. On mainnet Lethe builds the transfer for you: a normal SOL or USDC payment to the Lethe treasury that carries a one-time reference key, so it is matched to your vault without any memo. Your wallet signs and sends it, Lethe waits for finality and credits the amount that actually arrived, at the quoted rate if you paid in time. If you close the tab, the deposit is still found and credited. In the sandbox you sign a message instead and nothing moves.

Limits

Limits are stored with the vault and checked on every order, from the app and from every API key. The agent can't see them as settings it can change, and a prompt injection can't talk its way past them.

LimitDefaultWhat it does
Per-order cap$50The most a single order can cost, fee included.
Daily cap$150Rolling 24 hours across everything.
Ask me above$25Orders above this wait for your approval in the app.
CategoriesallTurn off anything the agent has no business buying.
Verified onlyalwaysUnlisted merchants don't exist as far as the agent is concerned.

Kill switch

Freeze the vault from the vault panel, or type freeze to the agent. A frozen vault rejects every order and every API key call that spends. Only you, signed in with your wallet, can unfreeze it. API keys can't.

Withdrawals

Unspent balance can be withdrawn as native XMR to any Monero address you control: a standard address (starts with 4), a subaddress (starts with 8) or an integrated address. The address checksum is verified before anything moves. The network fee is a flat 0.0001 XMR and the minimum is 0.001 XMR. Withdrawals work even while the vault is frozen, so you can always get your money out. Use a fresh subaddress for each withdrawal.

Talking to the agent

Write what you need the way you'd say it. The agent picks out the category, region, term, budget and specs, finds the cheapest verified listing that fits, and quotes it with the fee and the XMR amount. If the quote is under your approval line and auto-buy is on, it buys straight away. Otherwise you get an Approve button.

You sayThe agent hears
vps in iceland for 3 months under $40VPS · region Iceland · term 3 · budget $40
esim for europe 10gbeSIM · Europe · 10 GB
a phone number for telegramNumber · receive SMS
vpn for a yearVPN · term 12 months
amazon gift card $50Gift card · brand Amazon · $50
chatgpt plus for 3 monthsSubscription · ChatGPT Plus · 3 months
buy me a mechanical keyboard under $120Concierge · physical · budget $120
https://store.example/desk-lamp under $40Concierge · that link · budget $40
balance · limits · history · freeze · helpCommands. They answer, they don't buy.

What it can buy

Ten categories. Infra the agent needs for its own work: VPS, eSIM, phone numbers, domains, VPN, email and API credits. Gift cards from 18 brands, including Amazon, Steam, Apple, Google Play, Uber, DoorDash, Airbnb, PlayStation and Xbox, at face value, with the code sealed to your locker. Prepaid plan codes for ChatGPT Plus, Claude Pro, Cursor, Midjourney, Netflix, Spotify, YouTube Premium and more, for 1 to 12 months, with no card on file.

Anything else goes through the concierge. Name a product or paste a link and give a budget. The concierge buys it from any online store at or below that price, and the unspent part goes back to your vault. Parcels go to a forwarding locker, and your address is never stored in plain text. The budget counts against your limits like any other order, so a $120 keyboard waits for you if your per-order cap is $50.

In sandbox, gift card codes, plan codes, tracking numbers and concierge orders are simulated and marked sandbox. Nothing is bought or shipped.

Verified merchants

The agent can only see listings from merchants Lethe has verified. A merchant is verified after test orders across every product it lists, and after bonding $LETHE. If a merchant takes the money and doesn't deliver, the dispute is checked against the order record, the bond is slashed and the buyer is refunded from it, with the insurance pool covering any gap.

Merchant codes like M-03 are stable and are shown on every quote. Bonds are posted at token launch. Until then, merchants show bond: pending launch.

API keys

Create keys under Keys in the vault panel. A key starts with lth_sk_ and is shown once. We store only its hash.

A key canA key can't
Read the vault and activity
Browse the catalog
Get quotes
Buy inside your limits
List orders and locker items
Change limits
Withdraw
Freeze or unfreeze
Create or revoke keys
Write to the locker

MCP server

The Lethe MCP server gives any MCP client five tools: lethe_balance, lethe_catalog, lethe_quote, lethe_buy and lethe_orders. It is one file with no dependencies, and it calls the same API with your key.

Claude Code
curl -fsSLo ~/.lethe-mcp.mjs __ORIGIN__/mcp/lethe-mcp.mjs

claude mcp add lethe \
  --env LETHE_API_URL=__ORIGIN__ \
  --env LETHE_API_KEY=lth_sk_… \
  -- node ~/.lethe-mcp.mjs
Claude Desktop · claude_desktop_config.json
{
  "mcpServers": {
    "lethe": {
      "command": "node",
      "args": ["/Users/you/.lethe-mcp.mjs"],
      "env": { "LETHE_API_URL": "__ORIGIN__", "LETHE_API_KEY": "lth_sk_…" }
    }
  }
}
Cursor · ~/.cursor/mcp.json
{
  "mcpServers": {
    "lethe": {
      "command": "node",
      "args": ["/Users/you/.lethe-mcp.mjs"],
      "env": { "LETHE_API_URL": "__ORIGIN__", "LETHE_API_KEY": "lth_sk_…" }
    }
  }
}

The server is a single file with no dependencies and needs Node 18 or newer. Download it once with the curl line above, then point any client at it with node and the same two environment variables.

HTTP API

JSON in, JSON out. Send Authorization: Bearer lth_sk_…. Errors look like {"error": "…", "code": "…"}.

EndpointDoes
GET /api/vaultBalance in XMR and USD, frozen flag, mode.
GET /api/catalogCategories and verified listings. Public.
POST /api/agent/message{"text"} → a reply, usually with a quote.
POST /api/orders{"quoteId"} → fills the quote inside your limits.
GET /api/ordersOrder history without deliveries.
GET /api/activityDeposits, orders, fees, withdrawals.
GET /api/pricesSOL, XMR and USDC in USD. Public.
Quote, then buy
curl __ORIGIN__/api/agent/message \
  -H "Authorization: Bearer lth_sk_…" -H "Content-Type: application/json" \
  -d '{"text":"esim for europe 10gb"}'

# → { "reply": { "kind": "quote", "quote": { "id": "qt_…", "totalUsd": 19.19, "totalXmr": 0.0303, … } } }

curl __ORIGIN__/api/orders \
  -H "Authorization: Bearer lth_sk_…" -H "Content-Type: application/json" \
  -d '{"quoteId":"qt_…"}'

$LETHE

Every order pays a flat 1% fee. 50% of fees buy $LETHE on the market and burn it, 30% go to stakers and are paid in XMR to a Monero address of their choice, and 20% go to the merchant insurance pool. Merchants bond $LETHE to be listed. Holders get a lower fee on their own vault, down to 0.5%.

Not live yet. The contract address will be posted on lethe's site and in the app at launch. Anything before that is fake.

Questions

Can the agent spend more than the vault holds?

No. There's no credit. An order that doesn't fit the balance is refused.

What if a quote's price moves?

Quotes are valid for five minutes and can be used once. After that the agent re-quotes.

Is this legal where I live?

Monero and privacy tools are legal in most places, but not all. Some exchanges and countries restrict XMR. You're responsible for following your local law. See the Terms.

© 2026 LetheTerms · Privacy · How it works · AppArt: Arnold Böcklin, Isle of the Dead (1880), public domain.