{"openapi":"3.1.0","info":{"title":"steadybuild API surface","description":"SteadyBuild is the public directory of apps built by the LiveGraph fleet — the canonical listing page for each product (LiveGraph, Citepath, CityAlert, browserd","version":"0.1.0"},"servers":[{"url":"https://www.steadybuild.dev"}],"paths":{"/":{"get":{"summary":"Landing page (HTML)","responses":{"200":{"description":"OK","content":{"text/html":{}}}}}},"/health":{"get":{"summary":"Deploy health check — {ok, commit}","responses":{"200":{"description":"OK","content":{"application/json":{}}}}}},"/robots.txt":{"get":{"summary":"Crawler rules incl. per-AI-bot allow groups","responses":{"200":{"description":"OK","content":{"text/plain":{}}}}}},"/sitemap.xml":{"get":{"summary":"XML sitemap with lastmod","responses":{"200":{"description":"OK","content":{"application/xml":{}}}}}},"/llms.txt":{"get":{"summary":"llms.txt — the AI-readable site map","responses":{"200":{"description":"OK","content":{"text/plain":{}}}}}},"/agents.txt":{"get":{"summary":"agents.txt — how to call this product","responses":{"200":{"description":"OK","content":{"text/plain":{}}}}}},"/llms-full.txt":{"get":{"summary":"llms-full.txt — docs and posts inline for agents","responses":{"200":{"description":"OK","content":{"text/plain":{}}}}}},"/blog/feed.xml":{"get":{"summary":"Blog Atom feed","responses":{"200":{"description":"OK","content":{"application/atom+xml":{}}}}}},"/openapi.json":{"get":{"summary":"This document","responses":{"200":{"description":"OK","content":{"application/json":{}}}}}},"/api/openapi.json":{"get":{"summary":"OpenAPI 3.1 (canonical path)","responses":{"200":{"description":"OK","content":{"application/json":{}}}}}},"/.well-known/openapi.json":{"get":{"summary":"OpenAPI 3.1, bot-protection-safe alias","responses":{"200":{"description":"OK","content":{"application/json":{}}}}}},"/api/mcp":{"post":{"summary":"MCP JSON-RPC endpoint (initialize, tools/list, tools/call)","responses":{"200":{"description":"OK","content":{"application/json":{}}}}}},"/.well-known/mcp":{"post":{"summary":"MCP JSON-RPC alias (logged as mcp-wk)","responses":{"200":{"description":"OK","content":{"application/json":{}}}}}},"/.well-known/agent-card.json":{"get":{"summary":"A2A agent card — skills match the MCP tool list","responses":{"200":{"description":"OK","content":{"application/json":{}}}}}},"/.well-known/mcp/server-card.json":{"get":{"summary":"Static Smithery-format MCP server card","responses":{"200":{"description":"OK","content":{"application/json":{}}}}}},"/.well-known/mcp-registry-auth":{"get":{"summary":"MCP registry publish proof (public key record)","responses":{"200":{"description":"OK","content":{"text/plain":{}}}}}},"/api/t":{"post":{"summary":"Page-view beacon intake (analytics v2)","responses":{"200":{"description":"OK","content":{"application/json":{}}}}}},"/api/ev":{"post":{"summary":"Named event intake — EVENT_NAMES allowlist","responses":{"200":{"description":"OK","content":{"application/json":{}}}}}},"/api/events":{"post":{"summary":"Legacy alias of /api/ev","responses":{"200":{"description":"OK","content":{"application/json":{}}}}}},"/api/contact":{"post":{"summary":"Contact form intake (JSON)","responses":{"200":{"description":"OK","content":{"application/json":{}}}}}}}}