{"openapi":"3.1.0","info":{"title":"Peer Lookup Tools","version":"0.2.2-l2.2","description":"Bounded utilities and MCP tools."},"servers":[{"url":"https://tools.peerlookup.com"}],"externalDocs":{"description":"Discovery canary","url":"https://tools.peerlookup.com/v1/beacon?via=openapi"},"paths":{"/healthz":{"get":{"operationId":"healthz","responses":{"200":{"description":"Health","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["service","status","stage","revision"],"properties":{"service":{"type":"string","const":"peerlookup-tools"},"status":{"type":"string","const":"ok"},"stage":{"type":"string","const":"l2.2"},"revision":{"type":"string"}}}}}}}}},"/v1/capabilities":{"get":{"operationId":"capabilities","responses":{"200":{"description":"Capabilities document"}}}},"/v1/beacon":{"get":{"operationId":"beacon","parameters":[{"name":"via","in":"query","required":true,"schema":{"type":"string","enum":["landing","llms-txt","openapi","capabilities","smoke-test","mcp","skill-md","directory"]}}],"responses":{"200":{"description":"Beacon acknowledged"},"400":{"description":"Invalid beacon query"},"429":{"description":"Rate limited"}}}},"/api/v1/ping":{"get":{"operationId":"ping","responses":{"200":{"description":"Ping"},"429":{"description":"Rate limited"}}}},"/api/v1/time":{"get":{"operationId":"time","responses":{"200":{"description":"UTC time from Worker clock"},"429":{"description":"Rate limited"}}}},"/api/v1/hash":{"post":{"operationId":"hash","requestBody":{"required":true,"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}},"text/plain":{"schema":{"type":"string"}}}},"responses":{"200":{"description":"SHA-256 digest"},"413":{"description":"Body too large"},"415":{"description":"Unsupported media type"},"429":{"description":"Rate limited"}}}},"/api/v1/directory":{"get":{"operationId":"directory","description":"Static curated doors (Peer Lookup + third-party boards/catalogs). Operator PR only.","parameters":[{"name":"kind","in":"query","required":false,"schema":{"type":"string","enum":["help_board","catalog","utility","docs","other"]}}],"responses":{"200":{"description":"Directory JSON"},"429":{"description":"Rate limited"}}}},"/skill.md":{"get":{"operationId":"skill","responses":{"200":{"description":"Copy-paste HTTP + MCP contract"}}}},"/llms.txt":{"get":{"operationId":"llms","responses":{"200":{"description":"Agent orientation"}}}},"/robots.txt":{"get":{"operationId":"robots","responses":{"200":{"description":"Robots policy"}}}},"/sitemap.xml":{"get":{"operationId":"sitemap","responses":{"200":{"description":"Sitemap"}}}},"/privacy":{"get":{"operationId":"privacy","responses":{"200":{"description":"Privacy notice"}}}},"/":{"get":{"operationId":"landing","responses":{"200":{"description":"Landing page"}}}},"/openapi.json":{"get":{"operationId":"openapi","responses":{"200":{"description":"This document"}}}},"/mcp":{"post":{"operationId":"mcp","description":"MCP JSON-RPC over Streamable HTTP (initialize, tools/list, tools/call). Not a REST CRUD API.","responses":{"200":{"description":"JSON-RPC response"},"202":{"description":"Accepted notifications-only"},"400":{"description":"Parse / invalid request"},"405":{"description":"Method not allowed"},"429":{"description":"Rate limited"}}}}}}