{
  "openapi": "3.1.1",
  "info": {
    "title": "Thorbis Design System public API",
    "version": "2.0.0",
    "description": "Public, read-only design documentation, discovery files, inspiration data, and MCP transport. This is not the private Thorbis product API.",
    "contact": {
      "name": "Thorbis support",
      "email": "support@thorbis.com",
      "url": "https://design.thorbis.com/contact"
    },
    "license": {
      "name": "Repository terms",
      "url": "https://github.com/byronwade/thorbis-design"
    }
  },
  "servers": [
    {
      "url": "https://design.thorbis.com",
      "description": "Production"
    }
  ],
  "paths": {
    "/": {
      "get": {
        "summary": "Read a Thorbis Design System document",
        "description": "Request HTML or Markdown with the Accept header. Unsupported document representations return 406.",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "text/html",
                "text/markdown"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested document representation.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string",
                  "example": "Accept, Accept-Encoding"
                }
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "No public document exists at this path."
          },
          "406": {
            "description": "The requested representation is not available."
          }
        }
      }
    },
    "/research": {
      "get": {
        "summary": "Read a Thorbis Design System document",
        "description": "Request HTML or Markdown with the Accept header. Unsupported document representations return 406.",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "text/html",
                "text/markdown"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested document representation.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string",
                  "example": "Accept, Accept-Encoding"
                }
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "No public document exists at this path."
          },
          "406": {
            "description": "The requested representation is not available."
          }
        }
      }
    },
    "/resources": {
      "get": {
        "summary": "Read a Thorbis Design System document",
        "description": "Request HTML or Markdown with the Accept header. Unsupported document representations return 406.",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "text/html",
                "text/markdown"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested document representation.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string",
                  "example": "Accept, Accept-Encoding"
                }
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "No public document exists at this path."
          },
          "406": {
            "description": "The requested representation is not available."
          }
        }
      }
    },
    "/components": {
      "get": {
        "summary": "Read a Thorbis Design System document",
        "description": "Request HTML or Markdown with the Accept header. Unsupported document representations return 406.",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "text/html",
                "text/markdown"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested document representation.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string",
                  "example": "Accept, Accept-Encoding"
                }
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "No public document exists at this path."
          },
          "406": {
            "description": "The requested representation is not available."
          }
        }
      }
    },
    "/references.md": {
      "get": {
        "summary": "Read a Thorbis Design System document",
        "description": "Request HTML or Markdown with the Accept header. Unsupported document representations return 406.",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "text/html",
                "text/markdown"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested document representation.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string",
                  "example": "Accept, Accept-Encoding"
                }
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "No public document exists at this path."
          },
          "406": {
            "description": "The requested representation is not available."
          }
        }
      }
    },
    "/about": {
      "get": {
        "summary": "Read a Thorbis Design System document",
        "description": "Request HTML or Markdown with the Accept header. Unsupported document representations return 406.",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "text/html",
                "text/markdown"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested document representation.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string",
                  "example": "Accept, Accept-Encoding"
                }
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "No public document exists at this path."
          },
          "406": {
            "description": "The requested representation is not available."
          }
        }
      }
    },
    "/contact": {
      "get": {
        "summary": "Read a Thorbis Design System document",
        "description": "Request HTML or Markdown with the Accept header. Unsupported document representations return 406.",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "text/html",
                "text/markdown"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested document representation.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string",
                  "example": "Accept, Accept-Encoding"
                }
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "No public document exists at this path."
          },
          "406": {
            "description": "The requested representation is not available."
          }
        }
      }
    },
    "/privacy": {
      "get": {
        "summary": "Read a Thorbis Design System document",
        "description": "Request HTML or Markdown with the Accept header. Unsupported document representations return 406.",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "text/html",
                "text/markdown"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested document representation.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string",
                  "example": "Accept, Accept-Encoding"
                }
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "No public document exists at this path."
          },
          "406": {
            "description": "The requested representation is not available."
          }
        }
      }
    },
    "/skills/ui/references/cloudflare-forms": {
      "get": {
        "summary": "Read a Thorbis Design System document",
        "description": "Request HTML or Markdown with the Accept header. Unsupported document representations return 406.",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "text/html",
                "text/markdown"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested document representation.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string",
                  "example": "Accept, Accept-Encoding"
                }
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "No public document exists at this path."
          },
          "406": {
            "description": "The requested representation is not available."
          }
        }
      }
    },
    "/skills/ui/references/shopify-polaris": {
      "get": {
        "summary": "Read a Thorbis Design System document",
        "description": "Request HTML or Markdown with the Accept header. Unsupported document representations return 406.",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "text/html",
                "text/markdown"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested document representation.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string",
                  "example": "Accept, Accept-Encoding"
                }
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "No public document exists at this path."
          },
          "406": {
            "description": "The requested representation is not available."
          }
        }
      }
    },
    "/skills/ui/references/vercel-geist": {
      "get": {
        "summary": "Read a Thorbis Design System document",
        "description": "Request HTML or Markdown with the Accept header. Unsupported document representations return 406.",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "text/html",
                "text/markdown"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested document representation.",
            "headers": {
              "Vary": {
                "schema": {
                  "type": "string",
                  "example": "Accept, Accept-Encoding"
                }
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "No public document exists at this path."
          },
          "406": {
            "description": "The requested representation is not available."
          }
        }
      }
    },
    "/files/skills/references/cloudflare-forms.md": {
      "get": {
        "summary": "Download Cloudflare forms",
        "description": "Canonical public Markdown shared with the UI reference page and kit ZIP. No authentication required.",
        "responses": {
          "200": {
            "description": "The canonical reference source, with a terminal newline. HEAD returns the same headers without a body.",
            "headers": {
              "Content-Disposition": {
                "schema": {
                  "type": "string",
                  "example": "attachment; filename=\"cloudflare-forms.md\""
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "The reference is not registered."
          },
          "405": {
            "description": "Only GET and HEAD are supported.",
            "headers": {
              "Allow": {
                "schema": {
                  "type": "string",
                  "const": "GET, HEAD"
                }
              }
            }
          }
        }
      },
      "head": {
        "summary": "Download Cloudflare forms",
        "description": "Canonical public Markdown shared with the UI reference page and kit ZIP. No authentication required.",
        "responses": {
          "200": {
            "description": "The canonical reference source, with a terminal newline. HEAD returns the same headers without a body.",
            "headers": {
              "Content-Disposition": {
                "schema": {
                  "type": "string",
                  "example": "attachment; filename=\"cloudflare-forms.md\""
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "The reference is not registered."
          },
          "405": {
            "description": "Only GET and HEAD are supported.",
            "headers": {
              "Allow": {
                "schema": {
                  "type": "string",
                  "const": "GET, HEAD"
                }
              }
            }
          }
        }
      }
    },
    "/files/skills/references/shopify-polaris.md": {
      "get": {
        "summary": "Download Shopify Polaris",
        "description": "Canonical public Markdown shared with the UI reference page and kit ZIP. No authentication required.",
        "responses": {
          "200": {
            "description": "The canonical reference source, with a terminal newline. HEAD returns the same headers without a body.",
            "headers": {
              "Content-Disposition": {
                "schema": {
                  "type": "string",
                  "example": "attachment; filename=\"shopify-polaris.md\""
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "The reference is not registered."
          },
          "405": {
            "description": "Only GET and HEAD are supported.",
            "headers": {
              "Allow": {
                "schema": {
                  "type": "string",
                  "const": "GET, HEAD"
                }
              }
            }
          }
        }
      },
      "head": {
        "summary": "Download Shopify Polaris",
        "description": "Canonical public Markdown shared with the UI reference page and kit ZIP. No authentication required.",
        "responses": {
          "200": {
            "description": "The canonical reference source, with a terminal newline. HEAD returns the same headers without a body.",
            "headers": {
              "Content-Disposition": {
                "schema": {
                  "type": "string",
                  "example": "attachment; filename=\"shopify-polaris.md\""
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "The reference is not registered."
          },
          "405": {
            "description": "Only GET and HEAD are supported.",
            "headers": {
              "Allow": {
                "schema": {
                  "type": "string",
                  "const": "GET, HEAD"
                }
              }
            }
          }
        }
      }
    },
    "/files/skills/references/vercel-geist.md": {
      "get": {
        "summary": "Download Vercel + Geist",
        "description": "Canonical public Markdown shared with the UI reference page and kit ZIP. No authentication required.",
        "responses": {
          "200": {
            "description": "The canonical reference source, with a terminal newline. HEAD returns the same headers without a body.",
            "headers": {
              "Content-Disposition": {
                "schema": {
                  "type": "string",
                  "example": "attachment; filename=\"vercel-geist.md\""
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "The reference is not registered."
          },
          "405": {
            "description": "Only GET and HEAD are supported.",
            "headers": {
              "Allow": {
                "schema": {
                  "type": "string",
                  "const": "GET, HEAD"
                }
              }
            }
          }
        }
      },
      "head": {
        "summary": "Download Vercel + Geist",
        "description": "Canonical public Markdown shared with the UI reference page and kit ZIP. No authentication required.",
        "responses": {
          "200": {
            "description": "The canonical reference source, with a terminal newline. HEAD returns the same headers without a body.",
            "headers": {
              "Content-Disposition": {
                "schema": {
                  "type": "string",
                  "example": "attachment; filename=\"vercel-geist.md\""
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "The reference is not registered."
          },
          "405": {
            "description": "Only GET and HEAD are supported.",
            "headers": {
              "Allow": {
                "schema": {
                  "type": "string",
                  "const": "GET, HEAD"
                }
              }
            }
          }
        }
      }
    },
    "/llms.txt": {
      "get": {
        "summary": "Read agent instructions",
        "responses": {
          "200": {
            "description": "Agent map and when-to-use guidance.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/sitemap.xml": {
      "get": {
        "summary": "Read the XML sitemap",
        "responses": {
          "200": {
            "description": "Indexable canonical URLs with last modification dates.",
            "content": {
              "application/xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/inspiration.json": {
      "get": {
        "summary": "List public inspiration captures",
        "description": "Returns published captures, the public DESIGNS X folder when available, and a checked-in source-linked image snapshot when upstream storage is unavailable. This response is not cached.",
        "responses": {
          "200": {
            "description": "The public inspiration collection, or an empty collection with an error description if storage is unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "items",
                    "folder",
                    "source"
                  ],
                  "properties": {
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    },
                    "folder": {
                      "type": "string"
                    },
                    "source": {
                      "type": "string"
                    },
                    "syncedAt": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "storageConfigured": {
                      "type": "boolean"
                    },
                    "configured": {
                      "type": "boolean"
                    },
                    "fallback": {
                      "type": "boolean"
                    },
                    "degraded": {
                      "type": "boolean"
                    },
                    "feedSources": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "error": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/.well-known/mcp": {
      "get": {
        "summary": "Discover the Thorbis Design System MCP server",
        "responses": {
          "200": {
            "description": "MCP discovery manifest.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/mcp": {
      "post": {
        "summary": "Call the read-only MCP server",
        "description": "JSON-RPC over MCP Streamable HTTP using the official TypeScript SDK. The server accepts initialization, resource discovery and reads, prompt discovery and calls, tool discovery and calls, and ping. Context tools select canonical rules, skills, verification gates, and bounded public inspiration image references by task facets.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "method"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      }
                    ]
                  },
                  "method": {
                    "type": "string"
                  },
                  "params": {
                    "type": "object"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC result or error.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "202": {
            "description": "Notification accepted."
          },
          "400": {
            "description": "Invalid JSON or JSON-RPC envelope."
          },
          "403": {
            "description": "Cross-origin browser request rejected."
          },
          "415": {
            "description": "Request body is not JSON."
          }
        }
      }
    }
  }
}
