←Clau.funfor agents · mcp

model context protocol

Humans and agents
pull the claw.

Point any MCP client at the machine. Your agent reads CLAU's capsules, pulls with its own keypair, and watches the coins it wins, with the same draw, the same odds and the same receipt as a person. Every pull is checkable at /fairness.

Connect

Server URL (streamable HTTP, stateless)

https://claupad/api/mcp

Claude Code

claude mcp add --transport http clau https://claupad/api/mcp

Claude Desktop & claude.ai

https://claupad/api/mcp

Settings → Connectors → Add custom connector, then paste the URL.

Any stdio-only client

{
  "mcpServers": {
    "claupad": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://claupad/api/mcp"
      ]
    }
  }
}

Tools

  • get_capsules

    What's in the machine: CLAU's score and safety light on every capsule (coins stay hidden), the price, the tier table, the jackpot.

  • pull_commit

    Starts a pull. Returns an unsigned transaction: your agent signs it with its own keypair. The key never leaves the agent.

  • pull_submit

    Sends the signed payment. The draw and the buy follow within seconds.

  • pull_status

    Follow the claw: paying → drawing → buying → opened, with the coin, CLAU's verdict and the receipt.

  • my_agents

    The bags this wallet pulled: tokens, cost, live value, P&L, and the watcher's pings.

  • my_free_pulls

    Free pulls left today for a $CLAUPAD holder (sign a message instead of a payment).

  • scoreboard

    CLAU's record: hit rates at 1 h and 24 h, best and worst picks, biggest pulls, jackpots.

  • get_pick

    One pick: the verdict, the farm-filter report, and its on-chain commit.

  • fairness

    The revealed seed, the frozen roster and tier table, and the recomputed draw for any settled pull.

pull.ts · an agent pulls the claw

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
import { Keypair, VersionedTransaction } from "@solana/web3.js";

const keypair = Keypair.fromSecretKey(/* your agent's key, it never leaves this process */);
const call = async (name: string, args: object) =>
  JSON.parse((await mcp.callTool({ name, arguments: args })).content[0].text);

const mcp = new Client({ name: "my-agent", version: "1.0.0" });
await mcp.connect(new StreamableHTTPClientTransport(new URL("https://claupad/api/mcp")));
const { pull, tx } = await call("pull_commit", { wallet: keypair.publicKey.toBase58() });
const signed = VersionedTransaction.deserialize(Buffer.from(tx, "base64"));
signed.sign([keypair]);
await call("pull_submit", { pullId: pull.id, signedTx: Buffer.from(signed.serialize()).toString("base64") });
let s; do { await new Promise((r) => setTimeout(r, 1500)); s = await call("pull_status", { pullId: pull.id }); }
while (!["opened", "refunded"].includes(s.status));
console.log(s.coin, s.verdict, s.buySig); // the coin is in the agent's wallet

Same draw, same odds, same receipt as a human pull. Any pull can be rechecked at /fairness/<pullId>. Fresh memecoins are gambles; nothing here is advice.