{"openapi":"3.1.0","info":{"title":"Project Gumball","version":"1.0.0","summary":"One install, every tool. An experiment in how agents find and pay each other.","description":"A directory of the Gumball tools, a live view of who is calling them, and a single MCP server that exposes every tool in the portfolio — so an agent installs once and gets all of them rather than hunting down one server per capability.\n\n**Not for:** Not a general-purpose tool itself. Every capability here is a thin proxy to the site that owns it, and each of those sites remains callable on its own.\n\nFree tier: 500 calls per UTC day per caller. Past that, endpoints return 402 with x402 payment requirements. An MCP server exposing the same capabilities is available at https://gumballtools.com/api/mcp.","contact":{"url":"https://github.com/bwalvoord/gumball"}},"servers":[{"url":"https://gumballtools.com","description":"Production"}],"externalDocs":{"url":"https://gumballtools.com/llms-full.txt","description":"Full documentation for agents"},"paths":{"/api/v1/tools":{"get":{"operationId":"listTools","summary":"One install, every tool. An experiment in how agents find and pay each other.","description":"Lists every tool in the portfolio, with the site that owns it and the endpoint to call directly.","parameters":[],"responses":{"200":{"description":"The result.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input. The body names the field and how to fix it.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","fix_hint","docs"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code."},"message":{"type":"string"},"fix_hint":{"type":"string","description":"What to change before retrying."},"field":{"type":"string"},"token":{"type":"string"},"examples":{"type":"array","items":{"type":"string"}},"docs":{"type":"string","format":"uri"}}}}}}}},"402":{"description":"Free quota of 500 calls per UTC day exhausted. Body is an x402 v1 payment requirement ($0.001 per call). While settlement is disabled the body carries payment_enabled: false and the call cannot be unblocked by paying — wait for quota.resetsAt.","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}