{
  "protocol": "mpp",
  "version": 1,
  "name": "Numetal launch router",
  "description": "Pad aggregator. Simulate a launch on Clanker/Bankr/pools.fun. User signs. Free.",
  "origin": "https://launch.numetal.xyz",
  "price": "0",
  "currency": "USD",
  "endpoints": [
    {
      "method": "POST",
      "path": "/api/v1/list_pads",
      "tool": "list_pads",
      "description": "List every pad in the matrix (wired + unproven) with chains and notes. Call this first.",
      "price": "0"
    },
    {
      "method": "POST",
      "path": "/api/v1/list_networks",
      "tool": "list_networks",
      "description": "Union of chain IDs the pads actually list. We do not invent networks.",
      "price": "0"
    },
    {
      "method": "POST",
      "path": "/api/v1/get_capabilities",
      "tool": "get_capabilities",
      "description": "Knobs, forbidden fields, chains, and status for one pad. Stock pairing is Pons only.",
      "price": "0"
    },
    {
      "method": "POST",
      "path": "/api/v1/draft_intent",
      "tool": "draft_intent",
      "description": "Validate a LaunchIntent against the matrix. Returns warnings for ignored knobs; errors for unproven pads / forbidden stock pairs.",
      "price": "0"
    },
    {
      "method": "POST",
      "path": "/api/v1/simulate_launch",
      "tool": "simulate_launch",
      "description": "Build the pad-sign payload (same as get_sign_payload). Does not broadcast. No keys.",
      "price": "0"
    },
    {
      "method": "POST",
      "path": "/api/v1/get_sign_payload",
      "tool": "get_sign_payload",
      "description": "Pad-sign payload for the user's wallet. Clanker = SDK deploy config. Bankr = simulateOnly POST body. pools.fun = PartyFactory args with mined salt. Never a REST argument the agent posts with a hot key.",
      "price": "0"
    }
  ],
  "mcp": "https://launch.numetal.xyz/mcp",
  "docs": "https://launch.numetal.xyz/llms.txt"
}