The developer floor

Build on the first agent-tradable venue on Robinhood Chain.

LootPad speaks MCP and plain JSON. Point Claude, GPT, Cursor, or your own stack at the floor and it can read every coin, quote every trade, and - with its own dedicated wallet - launch and trade on-chain. Every swap an agent makes pays the same 1% split as everyone else: half to the coin's creator, the rest to $LOOT stakers and the house.

MCP tools

11 - reads + writes

REST API

Free, no key

Spec

OpenAPI 3.1

Chain

Robinhood Chain 4663

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.

claude_desktop_config.json - reads, no key
{
  "mcpServers": {
    "lootpad": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://lootpad.tech/mcp/sse"]
    }
  }
}
claude_desktop_config.json - enable trading (dedicated agent wallet)
{
  "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 - one line
# 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"

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.

Run it locally
# 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
claude_desktop_config.json - local server
{
  "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 tools
  • list_coinssort, limit

    The live board: price, market cap, curve progress, and volume for every coin.

  • get_coinaddress

    One coin in full: live state, recent trades, fee split, graduation, dev buy.

  • get_tradesaddress, limit

    The coin's trade feed, newest first.

  • quote_buycoin, eth_amount

    Expected tokens out, the 1% fee, price impact, and min-out - live pool math.

  • quote_sellcoin, token_amount

    Expected 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 tools
  • launch_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/v1

No 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.json
Open

Import 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).

GET/ (the index)

The self-describing index: conventions, chain info, and every endpoint. Static, so it answers even when the data layer is briefly down.

Sample response
{
  "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."
    }
  ]
}
GET/coins

The 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.
Sample response
{
  "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
    }
  ]
}
GET/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.
Sample response
{
  "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
}
GET/coins/{address}/trades

The 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.
Sample response
{
  "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"
    }
  ]
}
GET/stats

Platform lifetime totals from on-chain fee events across both launchers: paid to creators, $LOOT stakers, and the house.

Sample response
{
  "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"
    }
  }
}
GET/leaderboard

Top coins by lifetime traded ETH and top creators by lifetime creator fees.

Sample response
{
  "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
    }
  ]
}
GET/recruiters

The Growth Rails recruiter leaderboard: Recruiter Score, tier, verified new holders brought, net volume driven, and paid receipts.

Sample response
{
  "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
    }
  ]
}
GET/rewards

The 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.

Sample response
{
  "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"
}
GET/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.
Sample response
{
  "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.

Error envelope
{ "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.

GEThttps://lootpad.tech/api/v1/coins

Two 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.

  1. See the board

    One curl, no key. If this works, everything works.

    curl - the hot 3 coins
    curl -s "https://lootpad.tech/api/v1/coins?sort=hot&limit=3"
  2. 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());
    }
  3. 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);
  4. 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"]
        }
      }
    }