{"openapi":"3.1.0","info":{"title":"Altus public catalog API","version":"1.0.0","description":"Read-only catalog for the Altus website (altus.fit). No authentication. Do not use this spec for checkout, orders, or admin.","contact":{"name":"Altus Support","email":"support@altus.fit","url":"https://altus.fit"}},"servers":[{"url":"https://altus.fit","description":"Production"}],"paths":{"/api/store/products":{"get":{"operationId":"listProducts","summary":"List merch products","description":"In-stock products and upcoming drops.","tags":["Catalog"],"responses":{"200":{"description":"Store catalog","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreCatalog"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/articles/list":{"get":{"operationId":"listArticles","summary":"List article summaries","tags":["Catalog"],"responses":{"200":{"description":"Article summaries without full HTML bodies","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArticleList"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/categories":{"get":{"operationId":"listCategories","summary":"List merch categories","tags":["Catalog"],"responses":{"200":{"description":"Active categories","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Category"}}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/mcp":{"get":{"operationId":"mcpServerInfo","summary":"MCP server card","tags":["MCP"],"responses":{"200":{"description":"Server metadata","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"operationId":"mcpJsonRpc","summary":"MCP JSON-RPC (initialize, tools/list, tools/call)","tags":["MCP"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcRequest"}}}},"responses":{"200":{"description":"JSON-RPC response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcResponse"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}}},"components":{"responses":{"RateLimited":{"description":"Too many requests","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying"}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}},"schemas":{"StoreCatalog":{"type":"object","required":["inStock","upcoming"],"properties":{"inStock":{"type":"array","items":{"$ref":"#/components/schemas/Product"}},"upcoming":{"type":"array","items":{"$ref":"#/components/schemas/UpcomingProduct"}}}},"Product":{"type":"object","required":["id","name","slug","base_price"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"description":{"type":"string"},"base_price":{"type":"number"},"image_url":{"type":"string","format":"uri"},"has_stock":{"type":"boolean"},"colors":{"type":"array","items":{"type":"string"}},"category_name":{"type":"string"}}},"UpcomingProduct":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"base_price":{"type":"number"},"image_url":{"type":"string","format":"uri"},"launch_date":{"type":"string"}}},"ArticleList":{"type":"object","required":["articles"],"properties":{"articles":{"type":"array","items":{"$ref":"#/components/schemas/ArticleSummary"}}}},"ArticleSummary":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"category":{"type":"string"},"date_posted":{"type":"string"},"image_url":{"type":"string"},"read_time":{"type":"string"}}},"Category":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"is_active":{"type":"boolean"}}},"JsonRpcRequest":{"type":"object","required":["jsonrpc","method"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"type":["string","number","null"]},"method":{"type":"string"},"params":{"type":"object"}}},"JsonRpcResponse":{"type":"object","required":["jsonrpc"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"type":["string","number","null"]},"result":{"type":"object"},"error":{"type":"object"}}}}}}