{"openapi":"3.1.0","info":{"title":"Purser ledger API","version":"1.0.0","description":"Every service an AI agent can pay with stablecoins across x402, MPP and ACP, probed for liveness by Purser. Public, CORS open, no key. Field names are a contract."},"servers":[{"url":"https://purser.ink"}],"paths":{"/api/v1/services":{"get":{"summary":"List services","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"rail","in":"query","schema":{"type":"string","enum":["x402","mpp","acp"]}},{"name":"chain","in":"query","schema":{"type":"string"}},{"name":"asset","in":"query","schema":{"type":"string"}},{"name":"live","in":"query","schema":{"type":"string","enum":["1"]}},{"name":"limit","in":"query","schema":{"type":"integer","default":50,"maximum":500}},{"name":"offset","in":"query","schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"generated_at":{"type":"string"},"total":{"type":"integer"},"limit":{"type":"integer"},"offset":{"type":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Slug of the endpoint host. Stable."},"name":{"type":"string"},"category":{"type":["string","null"]},"description":{"type":["string","null"]},"endpoint":{"type":"string"},"rails":{"type":"array","items":{"type":"string","enum":["x402","mpp","acp"]}},"chains":{"type":"array","items":{"type":"string"}},"assets":{"type":"array","items":{"type":"string"}},"price_display":{"type":["string","null"]},"price_usd":{"type":["number","null"]},"facilitator":{"type":["string","null"]},"live":{"type":["boolean","null"],"description":"null = not probed yet"},"last_seen_live":{"type":["string","null"],"format":"date-time"},"last_probed_at":{"type":["string","null"],"format":"date-time"},"first_indexed":{"type":"string","format":"date-time"},"url":{"type":"string","description":"Human page for this service"}}}}}}}}}}}},"/api/v1/services/{id}":{"get":{"summary":"One service with sources and probe history","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"404":{"description":"Not found"}}}},"/api/v1/stats":{"get":{"summary":"Ledger totals","responses":{"200":{"description":"OK"}}}},"/api/v1/submit":{"post":{"summary":"Self-list an endpoint","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["endpoint"],"properties":{"endpoint":{"type":"string","format":"uri"},"name":{"type":"string"},"contact":{"type":"string"}}}}}},"responses":{"200":{"description":"Saved and probed"},"400":{"description":"Invalid"}}}},"/ask":{"get":{"summary":"Natural-language query over the ledger","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/mcp":{"post":{"summary":"MCP server (JSON-RPC 2.0, streamable HTTP)","responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"Service":{"type":"object","properties":{"id":{"type":"string","description":"Slug of the endpoint host. Stable."},"name":{"type":"string"},"category":{"type":["string","null"]},"description":{"type":["string","null"]},"endpoint":{"type":"string"},"rails":{"type":"array","items":{"type":"string","enum":["x402","mpp","acp"]}},"chains":{"type":"array","items":{"type":"string"}},"assets":{"type":"array","items":{"type":"string"}},"price_display":{"type":["string","null"]},"price_usd":{"type":["number","null"]},"facilitator":{"type":["string","null"]},"live":{"type":["boolean","null"],"description":"null = not probed yet"},"last_seen_live":{"type":["string","null"],"format":"date-time"},"last_probed_at":{"type":["string","null"],"format":"date-time"},"first_indexed":{"type":"string","format":"date-time"},"url":{"type":"string","description":"Human page for this service"}}}}}}