{"openapi":"3.1.0","info":{"title":"Futurum Public Read API","version":"1.0.0","description":"Read-only, unauthenticated access to published pages and insights on this site. For agent tooling see the MCP server at /api/mcp and the index at /for-agents.","license":{"name":"Published content is free to read and cite — see /robots.txt"}},"servers":[{"url":"https://preview.erikbethke.com"}],"paths":{"/api/content/posts":{"get":{"operationId":"listPosts","summary":"List published insights posts","parameters":[{"name":"practiceArea","in":"query","required":false,"schema":{"type":"string"},"description":"Filter to posts tagged with this practice area, exact match"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"description":"Cap the number of posts returned"}],"responses":{"200":{"description":"A list of published posts","content":{"application/json":{"schema":{"type":"object","properties":{"posts":{"type":"array","items":{"$ref":"#/components/schemas/PostSummary"}},"total":{"type":"integer"}}}}}},"400":{"description":"Invalid query parameters"}}}},"/api/content/posts/{slug}":{"get":{"operationId":"getPost","summary":"Fetch one published post by slug","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The post","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostDetail"}}}},"404":{"description":"Not found or not published"}}}},"/api/content/pages":{"get":{"operationId":"listPages","summary":"List published pages","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100},"description":"Cap the number of pages returned"}],"responses":{"200":{"description":"A list of published pages","content":{"application/json":{"schema":{"type":"object","properties":{"pages":{"type":"array","items":{"$ref":"#/components/schemas/PageSummary"}},"total":{"type":"integer"}}}}}},"400":{"description":"Invalid query parameters"}}}},"/api/content/pages/{slug}":{"get":{"operationId":"getPage","summary":"Fetch one published page by slug","description":"A canvas-kind page returns the plain-text extraction of its HTML document in `body`, not the raw markup.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The page","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDetail"}}}},"404":{"description":"Not found or not published"}}}}},"components":{"schemas":{"PostSummary":{"type":"object","properties":{"slug":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string"},"author":{"type":"string"},"practiceAreas":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"publishedAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"}}},"PostDetail":{"allOf":[{"$ref":"#/components/schemas/PostSummary"},{"type":"object","properties":{"body":{"type":"string"}}}]},"PageSummary":{"type":"object","properties":{"slug":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"path":{"type":"string"},"kind":{"type":"string","enum":["canvas","mdx"]},"publishedAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"}}},"PageDetail":{"allOf":[{"$ref":"#/components/schemas/PageSummary"},{"type":"object","properties":{"body":{"type":"string","description":"Plain text for a canvas page, MDX source for an mdx page"}}}]}}},"x-mcp-server":"https://preview.erikbethke.com/api/mcp","x-llms-txt":"https://preview.erikbethke.com/llms.txt"}