Agents first
Add LootPad to your agent
The hosted MCP server gives any agent the whole venue: eight read tools with no key at all, and three write tools - launch, buy, sell - signed by a dedicated agent wallet. One line is the entire integration.
The one-line add
npx -y mcp-remote https://lootpad.tech/mcp/sse/mcp/sse
SSE endpoint
/mcp
Streamable HTTP
/mcp/health
Liveness
Claude Desktop: Settings, then Developer, then Edit Config. Paste this, restart Claude, and ask it what is hot on LootPad. That is the whole integration.
{
"mcpServers": {
"lootpad": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://lootpad.tech/mcp/sse"]
}
}
}{
"mcpServers": {
"lootpad": {
"command": "npx",
"args": [
"-y", "mcp-remote", "https://lootpad.tech/mcp/sse",
"--header", "X-Lootpad-Agent-Key:0xYOUR_DEDICATED_AGENT_WALLET_KEY"
]
}
}
}# Claude Code - reads only
claude mcp add --transport sse lootpad https://lootpad.tech/mcp/sse
# Claude Code - reads + trading (DEDICATED agent wallet key)
claude mcp add --transport sse lootpad https://lootpad.tech/mcp/sse \
--header "X-Lootpad-Agent-Key: 0xYOUR_DEDICATED_AGENT_WALLET_KEY"ChatGPT connectors
- Settings, then Apps & Connectors, then Advanced, then enable Developer mode.
- Add a connector with the URL
https://lootpad.tech/mcp/sseand no authentication. - Ask it for the board, quotes, stats, or the leaderboard.
# OpenAI Responses API - the agent gets all 11 tools (reads + trading)
resp = client.responses.create(
model="gpt-5",
tools=[{
"type": "mcp",
"server_label": "lootpad",
"server_url": "https://lootpad.tech/mcp/sse",
"headers": {"X-Lootpad-Agent-Key": "0x..."}, # omit for read-only
"require_approval": "never",
}],
input="Read the LootPad board and quote a 0.05 ETH buy of the hottest coin.",
)Any other MCP client
The hosted server speaks both wire protocols. Point your client at whichever it prefers; writes ride the X-Lootpad-Agent-Key connection header.
- GET /mcp/sse
- classic SSE (plus POST /mcp/messages)
- POST /mcp
- Streamable HTTP, stateless - modern clients
- GET /mcp/health
- liveness
Save as .cursor/mcp.json in the project, or ~/.cursor/mcp.json globally. Omit the headers block for read-only.
{
"mcpServers": {
"lootpad": {
"url": "https://lootpad.tech/mcp/sse",
"headers": { "X-Lootpad-Agent-Key": "0xYOUR_DEDICATED_AGENT_WALLET_KEY" }
}
}
}{
"mcpServers": {
"lootpad": {
"command": "node",
"args": ["/absolute/path/to/lootpad-mcp-local.mjs"],
"env": { "LOOTPAD_AGENT_KEY": "0xYOUR_DEDICATED_AGENT_WALLET_KEY" }
}
}
}Local mode - maximum security, one file
Prefer the key to never touch anyone's server? The entire MCP server also ships as a single self-contained file that runs on your machine. It scrubs the key from the environment at boot, signs locally, and only signed transactions ever leave - straight to the public RPC. Reads work with no key at all.
# Download once - Node 18+ is the only requirement, no npm install
curl -O https://lootpad.tech/agents/lootpad-mcp-local.mjs
# Reads only
node lootpad-mcp-local.mjs
# Reads + trading - the key never leaves your machine
LOOTPAD_AGENT_KEY=0xYOUR_DEDICATED_AGENT_WALLET_KEY node lootpad-mcp-local.mjs{
"mcpServers": {
"lootpad": {
"command": "node",
"args": ["/absolute/path/to/lootpad-mcp-local.mjs"],
"env": { "LOOTPAD_AGENT_KEY": "0xYOUR_DEDICATED_AGENT_WALLET_KEY" }
}
}
}Remote - easiest
Hosted at lootpad.tech. Reads are open to everyone. For writes, the key rides per-session in a connection header over TLS - held in that session's RAM only, never logged, never stored.
Local - most secure
One open file, Node 18+, no install. The key never leaves your machine, and the only trust required is in code you can read before you run it.
The toolbox
Eleven tools, grouped by trust
Every tool returns a one-line human summary plus clean structured JSON, with all wei values as decimal strings. Reads need nothing. Writes sign with the dedicated agent wallet and respect a per-trade ceiling.
Read - no key
8 toolslist_coinssort, limitThe live board: price, market cap, curve progress, and volume for every coin.
get_coinaddressOne coin in full: live state, recent trades, fee split, graduation, dev buy.
get_tradesaddress, limitThe coin's trade feed, newest first.
quote_buycoin, eth_amountExpected tokens out, the 1% fee, price impact, and min-out - live pool math.
quote_sellcoin, token_amountExpected ETH out, fee, price impact, and min-out for a sell.
get_stats-Platform lifetime fee totals: creators, $LOOT stakers, house.
get_leaderboard-Top coins by volume and top creators by fees.
wallet_infoaddress?ETH + $LOOT balances for any wallet - defaults to the agent wallet.
Write - agent wallet key
3 toolslaunch_tokenname, symbol, dev_buy_eth?, image_url?, socials?Launches a real coin through LootPadV3, optional dev buy in the same transaction. The agent wallet becomes the creator and earns 50% of every swap fee, forever.
buycoin, eth_amount, max_slippage_pct?Buys through the venue router with quote-checked slippage (8% default). Returns the exact tokens received.
sellcoin, token_amount | percent, max_slippage_pct?Sells an exact amount or a percentage of the agent wallet's balance. Returns the exact ETH received.
Ask your agent
"What are the hottest coins on LootPad right now?"
"Quote a 0.05 ETH buy of the top coin and tell me the price impact."
"Launch a coin called Midnight Fox, ticker MFOX, with a 0.02 ETH dev buy."
"Buy 0.05 ETH of MFOX, then show me my wallet."
"Check my creator earnings across everything I have launched."
Non-negotiable
Wallet safety, in plain terms
- A dedicated agent wallet, always
- Create a fresh wallet just for the agent - LootPad's in-browser create-wallet takes seconds - fund it with a little ETH for gas and trading, and give the agent that key. Never your main wallet, never a seed that holds anything you would miss. Treat it like cash in a pocket, not a vault.
- Local mode keeps the key at home
- The one-file server parses the key into a signer, scrubs it from the environment at boot, and never logs, echoes, or transmits it. Only signed transactions leave your machine, straight to the public RPC.
- Remote mode never stores it
- The key rides per-session in the X-Lootpad-Agent-Key connection header over TLS, is held in that session's RAM only, and is gone when the session ends. Tool outputs only ever carry the public address. That is still a real trust decision - which is why local mode exists.
- No key, no problem
- All eight read tools work with no key at all. Add a key only when you want the agent to launch and trade.
- A ceiling on every trade
- A per-trade cap - 10 ETH by default, tunable with LOOTPAD_MAX_TRADE_ETH in local mode - guards against runaway orders.
Clean JSON
The REST API
Read every coin, trade, and fee split on Robinhood Chain - free, no key, CORS-open. The same data that powers the board, the leaderboard, and the earnings pages. A self-describing index is always live at GET /api/v1.
Base URL
https://lootpad.tech/api/v1No key
Public + open
CORS
Any origin
Cached
~10 seconds
Amounts
wei strings
OpenAPI 3.1 - the machine-readable contract
https://lootpad.tech/api/v1/openapi.jsonImport it into Postman, Insomnia, or any client generator - or hand it to an agent toolchain. The reference below and the live explorer render from the same source object the spec is generated from, so all three always agree.
Endpoint reference
All paths are relative to the base URL. Curly braces mark a path parameter - swap in a 0x address (any case; responses come back lowercase).
/ (the index)The self-describing index: conventions, chain info, and every endpoint. Static, so it answers even when the data layer is briefly down.
{
"ok": true,
"name": "LootPad API",
"version": "v1",
"base_url": "https://lootpad.tech/api/v1",
"docs": "https://lootpad.tech/developers",
"chain": {
"id": 4663,
"name": "Robinhood Chain",
"explorer": "https://robinhoodchain.blockscout.com"
},
"conventions": [
"GET only; CORS is open to all origins",
"All on-chain amounts are wei as decimal strings"
],
"endpoints": [
{
"method": "GET",
"path": "/api/v1/coins",
"description": "The live board."
}
]
}/coinsThe live board: every tradeable coin with price, market cap, curve progress, and volume.
- limit
- How many coins to return, 1 to 500. Default 60.
- sort
- Board order: new (latest launches), cap (largest market cap), bonded (closest to graduation), hot (most 24h volume). Default new.
{
"ok": true,
"sort": "hot",
"count": 1,
"total": 42,
"coins": [
{
"address": "0x1234567890abcdef1234567890abcdef12345678",
"launcher": "v3",
"name": "Golden Fox",
"symbol": "GFOX",
"uri": "https://lootpad.tech",
"creator": "0x9608701da2dcae22f89d72dba133167d15612bfb",
"created_ts": 1752600000,
"created_block": 10901234,
"launch_tx": "0xab12ab12ab12ab12ab12ab12ab12ab12ab12ab12ab12ab12ab12ab12ab12ab12",
"pool": "0xabcd1234abcd1234abcd1234abcd1234abcd1234",
"coin_is_token0": true,
"hidden": false,
"graduated": false,
"price_wei": "1240000000",
"mcap_wei": "1240000000000000000",
"curve_progress_bps": 3820,
"eth_raised_wei": "820000000000000000",
"launch_price_wei": "1000000000",
"live": true,
"trades": 214,
"last_trade_ts": 1752600500,
"volume_eth": 18.42,
"volume_1h_eth": 2.05,
"volume_24h_eth": 6.11
}
]
}/coins/{address}One coin in full: live detail, the 50 most recent trades, lifetime fee split, graduation record, and launch dev buy.
- address
- A 0x hex address (40 hex chars). Case-insensitive on input; responses always use lowercase.
{
"ok": true,
"coin": {
"address": "0x1234567890abcdef1234567890abcdef12345678",
"launcher": "v3",
"name": "Golden Fox",
"symbol": "GFOX",
"uri": "https://lootpad.tech",
"creator": "0x9608701da2dcae22f89d72dba133167d15612bfb",
"created_ts": 1752600000,
"created_block": 10901234,
"launch_tx": "0xab12ab12ab12ab12ab12ab12ab12ab12ab12ab12ab12ab12ab12ab12ab12ab12",
"pool": "0xabcd1234abcd1234abcd1234abcd1234abcd1234",
"coin_is_token0": true,
"hidden": false,
"graduated": false,
"price_wei": "1240000000",
"mcap_wei": "1240000000000000000",
"curve_progress_bps": 3820,
"eth_raised_wei": "820000000000000000",
"launch_price_wei": "1000000000",
"live": true,
"trades": 214,
"last_trade_ts": 1752600500,
"volume_eth": 18.42,
"volume_1h_eth": 2.05,
"volume_24h_eth": 6.11
},
"trades": [
{
"coin": "0x1234567890abcdef1234567890abcdef12345678",
"side": "buy",
"wallet": "0x00aa00aa00aa00aa00aa00aa00aa00aa00aa00aa",
"eth_wei": "50000000000000000",
"token_wei": "40000000000000000000000",
"price_wei": "1240000000",
"block": 10905678,
"log_index": 3,
"ts": 1752600500,
"tx": "0xcd34cd34cd34cd34cd34cd34cd34cd34cd34cd34cd34cd34cd34cd34cd34cd34",
"source": "pool"
}
],
"fees": {
"to_creator_wei": "410000000000000000",
"to_loot_wei": "307500000000000000",
"to_house_wei": "102500000000000000",
"total_wei": "820000000000000000"
},
"graduation": null,
"dev_buy": null
}/coins/{address}/tradesThe coin's trade feed, newest first. Covers both launchers: V3 pool Swaps and legacy Bought/Sold events.
- address
- A 0x hex address (40 hex chars). Case-insensitive on input; responses always use lowercase.
- limit
- How many trades to return, 1 to 1000. Default 100.
{
"ok": true,
"coin": "0x1234567890abcdef1234567890abcdef12345678",
"count": 2,
"trades": [
{
"coin": "0x1234567890abcdef1234567890abcdef12345678",
"side": "buy",
"wallet": "0x00aa00aa00aa00aa00aa00aa00aa00aa00aa00aa",
"eth_wei": "50000000000000000",
"token_wei": "40000000000000000000000",
"price_wei": "1240000000",
"block": 10905678,
"log_index": 3,
"ts": 1752600500,
"tx": "0xcd34cd34cd34cd34cd34cd34cd34cd34cd34cd34cd34cd34cd34cd34cd34cd34",
"source": "pool"
},
{
"coin": "0x1234567890abcdef1234567890abcdef12345678",
"side": "sell",
"wallet": "0x00bb00bb00bb00bb00bb00bb00bb00bb00bb00bb",
"eth_wei": "120000000000000000",
"token_wei": "97000000000000000000000",
"price_wei": "1235000000",
"block": 10905650,
"log_index": 1,
"ts": 1752600480,
"tx": "0xef56ef56ef56ef56ef56ef56ef56ef56ef56ef56ef56ef56ef56ef56ef56ef56",
"source": "pool"
}
]
}/statsPlatform lifetime totals from on-chain fee events across both launchers: paid to creators, $LOOT stakers, and the house.
{
"ok": true,
"events": 5821,
"totals": {
"events": 5821,
"to_creator_wei": "12500000000000000000",
"to_loot_wei": "9375000000000000000",
"to_house_wei": "3125000000000000000",
"total_wei": "25000000000000000000"
},
"by_launcher": {
"legacy": {
"events": 1204,
"to_creator_wei": "2500000000000000000",
"to_loot_wei": "1875000000000000000",
"to_house_wei": "625000000000000000",
"total_wei": "5000000000000000000"
},
"v3": {
"events": 4617,
"to_creator_wei": "10000000000000000000",
"to_loot_wei": "7500000000000000000",
"to_house_wei": "2500000000000000000",
"total_wei": "20000000000000000000"
}
}
}/leaderboardTop coins by lifetime traded ETH and top creators by lifetime creator fees.
{
"ok": true,
"coins": [
{
"address": "0x1234567890abcdef1234567890abcdef12345678",
"launcher": "v3",
"name": "Golden Fox",
"symbol": "GFOX",
"creator": "0x9608701da2dcae22f89d72dba133167d15612bfb",
"graduated": true,
"mcap_wei": "42000000000000000000",
"volume_eth": 182.4,
"trades": 2140
}
],
"creators": [
{
"creator": "0x9608701da2dcae22f89d72dba133167d15612bfb",
"fees_wei": "4200000000000000000",
"coins": 7,
"volume_eth": 512.9,
"trades": 6033
}
]
}/recruitersThe Growth Rails recruiter leaderboard: Recruiter Score, tier, verified new holders brought, net volume driven, and paid receipts.
{
"ok": true,
"enabled": true,
"count": 1,
"recruiters": [
{
"code": "9608701d",
"handle": "robin",
"tier": "Outlaw",
"score": 412,
"referred_wallets": 38,
"new_wallets": 21,
"net_volume_eth": 14.7,
"earned_wei": "182000000000000000",
"paid_wei": "120000000000000000",
"followers": 9,
"staked": true
}
]
}/rewardsThe live Growth Rails program card: which earn surfaces are on and what they pay - straight from the live config, so a throttled surface reports itself honestly.
{
"ok": true,
"enabled": true,
"note": "All cash rewards come from the house 12.5% of the 1% fee (Pool A) or the capped marketing budget (Pool B).",
"surfaces": {
"s3_invite": {
"enabled": true,
"summary": "Your open invite link (site + bot) - 2.5% of every fee your referred wallets ever generate, for life."
}
},
"holdback_hours": 24,
"disclosure_tag": "#ad @lootpadfun",
"docs": "https://lootpad.tech/rewards"
}/creators/{address}A creator wallet's public profile: the coins they launched, lifetime creator fees earned, and what is claimable right now.
- address
- A 0x hex address (40 hex chars). Case-insensitive on input; responses always use lowercase.
{
"ok": true,
"creator": "0x9608701da2dcae22f89d72dba133167d15612bfb",
"coins": [
{
"address": "0x1234567890abcdef1234567890abcdef12345678",
"launcher": "v3",
"name": "Golden Fox",
"symbol": "GFOX",
"uri": "https://lootpad.tech",
"creator": "0x9608701da2dcae22f89d72dba133167d15612bfb",
"created_ts": 1752600000,
"created_block": 10901234,
"launch_tx": "0xab12ab12ab12ab12ab12ab12ab12ab12ab12ab12ab12ab12ab12ab12ab12ab12",
"pool": "0xabcd1234abcd1234abcd1234abcd1234abcd1234",
"coin_is_token0": true,
"hidden": false,
"graduated": false,
"price_wei": "1240000000",
"mcap_wei": "1240000000000000000",
"curve_progress_bps": 3820,
"eth_raised_wei": "820000000000000000",
"launch_price_wei": "1000000000",
"live": true,
"trades": 214,
"last_trade_ts": 1752600500,
"volume_eth": 18.42,
"volume_1h_eth": 2.05,
"volume_24h_eth": 6.11
}
],
"lifetime_creator_fees_wei": "4200000000000000000",
"claimable": {
"legacy_wei": "0",
"v3_wei": "180000000000000000",
"total_wei": "180000000000000000"
}
}Errors
Every failure returns the same envelope with a matching HTTP status: 400 for a bad address or parameter, 404 for an unknown coin, and 503 if the data layer is briefly unavailable. Check ok before reading the payload.
{ "ok": false, "error": "unknown coin" }Try it
Fire a real request
Pick an endpoint, fill the params, and hit send - your browser calls the production API directly, exactly like any agent or script would. No key, no sandbox, live data.
API explorer
Live against lootpad.tech - real data, straight from your browser
The live board: every tradeable coin with price, market cap, curve progress, and volume.
https://lootpad.tech/api/v1/coinsTwo minutes
Zero to a trading agent
Four steps, all copy-paste: see the data, read it in code, take the SDK, then hand the whole venue to your agent.
See the board
One curl, no key. If this works, everything works.
curl - the hot 3 coinscurl -s "https://lootpad.tech/api/v1/coins?sort=hot&limit=3"Read it in code
Plain fetch, browser or Node 18+. Wei amounts are decimal strings - BigInt, never Number.
fetch() - the hot 10 coins// No key, no SDK - just fetch. Runs in the browser or Node 18+. const res = await fetch("https://lootpad.tech/api/v1/coins?sort=hot&limit=10"); const { coins } = await res.json(); for (const c of coins) { // On-chain amounts are wei as decimal STRINGS - parse with BigInt, not Number. const priceWei = BigInt(c.price_wei ?? "0"); console.log(c.symbol, c.name, priceWei.toString()); }Take the tiny SDK
One file, zero dependencies, named methods for every endpoint. A fully typed TypeScript version is downloadable at /agents/loot-sdk.ts.
loot-sdk.js// loot-sdk.js - zero-dependency LootPad API client. Paste anywhere fetch exists. export function createLootClient(baseUrl = "https://lootpad.tech/api/v1") { const root = baseUrl.replace(/\/+$/, ""); async function get(path) { const res = await fetch(root + path, { headers: { accept: "application/json" } }); const body = await res.json().catch(() => null); if (!res.ok || !body || body.ok !== true) { throw new Error((body && body.error) || res.statusText); } return body; } const qs = (o) => { const p = new URLSearchParams(); for (const [k, v] of Object.entries(o)) if (v !== undefined) p.set(k, String(v)); const s = p.toString(); return s ? "?" + s : ""; }; return { coins: (opts = {}) => get("/coins" + qs(opts)), // { limit, sort } coin: (addr) => get("/coins/" + addr), trades: (addr, opts = {}) => get("/coins/" + addr + "/trades" + qs(opts)), stats: () => get("/stats"), leaderboard: () => get("/leaderboard"), creator: (addr) => get("/creators/" + addr), }; } // Usage: const loot = createLootClient(); const { coins } = await loot.coins({ sort: "hot", limit: 10 }); const detail = await loot.coin(coins[0].address);Hand it to your agent
Add the MCP server, fund a dedicated agent wallet, and ask: "Launch a coin called Midnight Fox, ticker MFOX, with a 0.02 ETH dev buy." The agent wallet becomes the creator and earns half of every swap fee on that coin, forever.
claude_desktop_config.json - the one-line add{ "mcpServers": { "lootpad": { "command": "npx", "args": ["-y", "mcp-remote", "https://lootpad.tech/mcp/sse"] } } }
Keep going
Everything else you might want
Verified contracts
Every address the venue runs on, deployed and verified on the explorer.
API index
The self-describing JSON index - static, so it answers even during a data blip.
OpenAPI spec
The full 3.1 document: schemas, params, examples, error envelopes.
MCP health
Liveness of the hosted MCP server, plain JSON.
TypeScript SDK
The typed client: one file, zero dependencies, every endpoint.
Local MCP server
The one-file server for max security - your key never leaves your machine.
Fair use
The API is public and free, and responses are cached for about ten seconds - so polling once every few seconds is plenty to stay live, and hammering it harder just serves you the same cached bytes. Please be reasonable: cache on your side, back off on errors, and do not scrape in a tight loop. The read API never exposes hidden or test coins, and it never asks for a wallet, a signature, or a key. Trading is different by design: it happens on-chain, signed by a wallet you control, against contracts you can verify on the contracts page.
