{
  "openapi": "3.0.3",
  "info": {
    "title": "LLM Mart API",
    "version": "1.0.0",
    "description": "Public, read-only discovery API for approved skills. Anonymous access is rate-limited per IP."
  },
  "servers": [
    {
      "url": "https://llmmart.ai"
    }
  ],
  "paths": {
    "/api/v1/skills": {
      "get": {
        "summary": "List and search approved skills",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Full-text search across title, summary, and body",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "platform",
            "in": "query",
            "required": false,
            "description": "Filter by platform slug (e.g. claude)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "required": false,
            "description": "Filter by tag slug",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "trending (default), new, or top",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "1-based page number",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Items per page (clamped to the server max)",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedSkillSummary"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/skills/{slug}": {
      "get": {
        "summary": "Get an approved skill by slug",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkillDetail"
                }
              }
            }
          },
          "404": {
            "description": "No public skill with that slug"
          }
        }
      }
    },
    "/api/v1/tools": {
      "get": {
        "summary": "List and search approved tools",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Full-text search across name, tagline, and description",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "required": false,
            "description": "Filter by tag slug",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "popular (default) or new",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "1-based page number",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Items per page (clamped to the server max)",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedToolSummary"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/{slug}": {
      "get": {
        "summary": "Get an approved tool by slug",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolDetail"
                }
              }
            }
          },
          "404": {
            "description": "No public tool with that slug"
          }
        }
      }
    },
    "/api/v1/mcp-servers": {
      "get": {
        "summary": "List and search listed MCP servers",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Full-text search across name, tagline, and description",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "required": false,
            "description": "Filter by tag slug",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "transport",
            "in": "query",
            "required": false,
            "description": "Filter by transport: stdio, http or sse",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "popular (default) or new",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "1-based page number",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Items per page (clamped to the server max)",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedMcpServerSummary"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mcp-servers/{slug}": {
      "get": {
        "summary": "Get a listed MCP server by slug",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpServerDetail"
                }
              }
            }
          },
          "404": {
            "description": "No public MCP server with that slug"
          }
        }
      }
    },
    "/api/v1/commands": {
      "get": {
        "summary": "List and search the approved slash-command reference",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Full-text search across title, syntax, and description",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "platform",
            "in": "query",
            "required": false,
            "description": "Filter by platform slug, e.g. claude",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "top (default, by score) or new",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "1-based page number",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Items per page (clamped to the server max)",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedCommand"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/articles": {
      "get": {
        "summary": "List and search published articles",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Full-text search across title, excerpt, and body",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "required": false,
            "description": "Filter by tag slug",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "1-based page number",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Items per page (clamped to the server max)",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedArticleSummary"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/articles/{slug}": {
      "get": {
        "summary": "Get a published article by slug",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ArticleDetail"
                }
              }
            }
          },
          "404": {
            "description": "No public article with that slug"
          }
        }
      }
    },
    "/api/v1/series": {
      "get": {
        "summary": "List and search published article series",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Full-text search across title and description",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "author",
            "in": "query",
            "required": false,
            "description": "Filter by author profile slug",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "1-based page number",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Items per page (clamped to the server max)",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedSeriesSummary"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/series/{slug}": {
      "get": {
        "summary": "Get a published series by slug, with its parts in reading order",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SeriesDetail"
                }
              }
            }
          },
          "404": {
            "description": "No public series with that slug"
          }
        }
      }
    },
    "/api/v1/vault/items": {
      "get": {
        "summary": "List your own vault items",
        "security": [
          {
            "apiKey": [
              "vault:read"
            ]
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "1-based page number",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Items per page (clamped to the server max)",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedVaultItem"
                }
              }
            }
          },
          "401": {
            "description": "No API key presented"
          },
          "403": {
            "description": "The key lacks the required scope"
          }
        }
      },
      "post": {
        "summary": "Create a vault item",
        "security": [
          {
            "apiKey": [
              "vault:write"
            ]
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VaultItemInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VaultItemDetail"
                }
              }
            }
          },
          "400": {
            "description": "Missing or unrecognised field"
          },
          "409": {
            "description": "Vault item limit reached"
          },
          "401": {
            "description": "No API key presented"
          },
          "403": {
            "description": "The key lacks the required scope"
          }
        }
      }
    },
    "/api/v1/vault/quota": {
      "get": {
        "summary": "Your current vault usage against the caps",
        "security": [
          {
            "apiKey": [
              "vault:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VaultQuota"
                }
              }
            }
          },
          "401": {
            "description": "No API key presented"
          },
          "403": {
            "description": "The key lacks the required scope"
          }
        }
      }
    },
    "/api/v1/vault/items/{slug}": {
      "get": {
        "summary": "Get one of your vault items, including its raw markdown body",
        "security": [
          {
            "apiKey": [
              "vault:read"
            ]
          }
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VaultItemDetail"
                }
              }
            }
          },
          "404": {
            "description": "No vault item of yours with that slug"
          },
          "401": {
            "description": "No API key presented"
          },
          "403": {
            "description": "The key lacks the required scope"
          }
        }
      },
      "patch": {
        "summary": "Update a vault item (omitted fields are left unchanged)",
        "security": [
          {
            "apiKey": [
              "vault:write"
            ]
          }
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VaultItemInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VaultItemDetail"
                }
              }
            }
          },
          "400": {
            "description": "Unrecognised field value"
          },
          "404": {
            "description": "No vault item of yours with that slug"
          },
          "401": {
            "description": "No API key presented"
          },
          "403": {
            "description": "The key lacks the required scope"
          }
        }
      },
      "delete": {
        "summary": "Delete a vault item and its bundle",
        "security": [
          {
            "apiKey": [
              "vault:write"
            ]
          }
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Deleted"
          },
          "404": {
            "description": "No vault item of yours with that slug"
          },
          "401": {
            "description": "No API key presented"
          },
          "403": {
            "description": "The key lacks the required scope"
          }
        }
      }
    },
    "/api/v1/vault/items/{slug}/bundle": {
      "get": {
        "summary": "Download a vault bundle (302 to a short-lived signed URL, or the bytes)",
        "security": [
          {
            "apiKey": [
              "vault:read"
            ]
          }
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The zip bytes (providers that can\u0027t presign)"
          },
          "302": {
            "description": "Redirect to a short-lived signed download URL"
          },
          "404": {
            "description": "No such item, or it has no bundle"
          },
          "409": {
            "description": "The bundle has not cleared the virus scan yet"
          },
          "401": {
            "description": "No API key presented"
          },
          "403": {
            "description": "The key lacks the required scope"
          }
        }
      },
      "post": {
        "summary": "Attach a zip bundle (raw body). Replaces any existing bundle.",
        "description": "The bundle is quarantined and virus-scanned before it becomes downloadable.",
        "security": [
          {
            "apiKey": [
              "vault:write"
            ]
          }
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filename",
            "in": "query",
            "required": false,
            "description": "Name used for the download\u0027s Content-Disposition",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/zip": {
              "schema": {
                "type": "string",
                "format": "binary"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VaultBundle"
                }
              }
            }
          },
          "400": {
            "description": "Not a zip, or empty"
          },
          "404": {
            "description": "No vault item of yours with that slug"
          },
          "409": {
            "description": "Storage quota reached, or email unconfirmed"
          },
          "413": {
            "description": "Bundle exceeds the upload limit"
          },
          "401": {
            "description": "No API key presented"
          },
          "403": {
            "description": "The key lacks the required scope"
          }
        }
      }
    },
    "/api/v1/teams": {
      "get": {
        "summary": "The teams you belong to, with your role on each",
        "security": [
          {
            "apiKey": [
              "vault:read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamList"
                }
              }
            }
          },
          "401": {
            "description": "No API key presented"
          },
          "403": {
            "description": "The key lacks the required scope"
          }
        }
      }
    },
    "/api/v1/teams/{team}/items": {
      "get": {
        "summary": "List a team registry\u0027s items",
        "security": [
          {
            "apiKey": [
              "vault:read"
            ]
          }
        ],
        "parameters": [
          {
            "name": "team",
            "in": "path",
            "required": true,
            "description": "Slug of a team you belong to",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "1-based page number",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Items per page (clamped to the server max)",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedVaultItem"
                }
              }
            }
          },
          "404": {
            "description": "No team of yours with that slug"
          },
          "401": {
            "description": "No API key presented"
          },
          "403": {
            "description": "The key lacks the required scope"
          }
        }
      },
      "post": {
        "summary": "Create an item in a team registry (screened for prompt injection on every write)",
        "security": [
          {
            "apiKey": [
              "vault:write"
            ]
          }
        ],
        "parameters": [
          {
            "name": "team",
            "in": "path",
            "required": true,
            "description": "Slug of a team you belong to",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VaultItemInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VaultItemDetail"
                }
              }
            }
          },
          "400": {
            "description": "Missing or unrecognised field"
          },
          "404": {
            "description": "No team of yours with that slug"
          },
          "409": {
            "description": "Team item limit reached"
          },
          "401": {
            "description": "No API key presented"
          },
          "403": {
            "description": "The key lacks the required scope"
          }
        }
      }
    },
    "/api/v1/teams/{team}/quota": {
      "get": {
        "summary": "A team registry\u0027s usage against its caps",
        "security": [
          {
            "apiKey": [
              "vault:read"
            ]
          }
        ],
        "parameters": [
          {
            "name": "team",
            "in": "path",
            "required": true,
            "description": "Slug of a team you belong to",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VaultQuota"
                }
              }
            }
          },
          "404": {
            "description": "No team of yours with that slug"
          },
          "401": {
            "description": "No API key presented"
          },
          "403": {
            "description": "The key lacks the required scope"
          }
        }
      }
    },
    "/api/v1/teams/{team}/items/{slug}": {
      "get": {
        "summary": "Get a team item, including its raw markdown body and trust report",
        "security": [
          {
            "apiKey": [
              "vault:read"
            ]
          }
        ],
        "parameters": [
          {
            "name": "team",
            "in": "path",
            "required": true,
            "description": "Slug of a team you belong to",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VaultItemDetail"
                }
              }
            }
          },
          "404": {
            "description": "No such team of yours, or no such item in it"
          },
          "401": {
            "description": "No API key presented"
          },
          "403": {
            "description": "The key lacks the required scope"
          }
        }
      },
      "patch": {
        "summary": "Update a team item (omitted fields are left unchanged; re-screened)",
        "security": [
          {
            "apiKey": [
              "vault:write"
            ]
          }
        ],
        "parameters": [
          {
            "name": "team",
            "in": "path",
            "required": true,
            "description": "Slug of a team you belong to",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VaultItemInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VaultItemDetail"
                }
              }
            }
          },
          "400": {
            "description": "Unrecognised field value"
          },
          "404": {
            "description": "No such team of yours, or no such item in it"
          },
          "401": {
            "description": "No API key presented"
          },
          "403": {
            "description": "The key lacks the required scope"
          }
        }
      },
      "delete": {
        "summary": "Delete a team item and its bundle",
        "security": [
          {
            "apiKey": [
              "vault:write"
            ]
          }
        ],
        "parameters": [
          {
            "name": "team",
            "in": "path",
            "required": true,
            "description": "Slug of a team you belong to",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Deleted"
          },
          "404": {
            "description": "No such team of yours, or no such item in it"
          },
          "401": {
            "description": "No API key presented"
          },
          "403": {
            "description": "The key lacks the required scope"
          }
        }
      }
    },
    "/api/v1/teams/{team}/items/{slug}/bundle": {
      "get": {
        "summary": "Download a team item\u0027s bundle (302 to a short-lived signed URL, or the bytes)",
        "security": [
          {
            "apiKey": [
              "vault:read"
            ]
          }
        ],
        "parameters": [
          {
            "name": "team",
            "in": "path",
            "required": true,
            "description": "Slug of a team you belong to",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The zip bytes (providers that can\u0027t presign)"
          },
          "302": {
            "description": "Redirect to a short-lived signed download URL"
          },
          "404": {
            "description": "No such team of yours, no such item, or no bundle"
          },
          "409": {
            "description": "The bundle has not cleared the virus scan yet"
          },
          "401": {
            "description": "No API key presented"
          },
          "403": {
            "description": "The key lacks the required scope"
          }
        }
      },
      "post": {
        "summary": "Attach a zip bundle to a team item (raw body). Replaces any existing bundle.",
        "description": "The bundle is quarantined and virus-scanned before it becomes downloadable.",
        "security": [
          {
            "apiKey": [
              "vault:write"
            ]
          }
        ],
        "parameters": [
          {
            "name": "team",
            "in": "path",
            "required": true,
            "description": "Slug of a team you belong to",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filename",
            "in": "query",
            "required": false,
            "description": "Name used for the download\u0027s Content-Disposition",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/zip": {
              "schema": {
                "type": "string",
                "format": "binary"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VaultBundle"
                }
              }
            }
          },
          "400": {
            "description": "Not a zip, or empty"
          },
          "404": {
            "description": "No such team of yours, or no such item in it"
          },
          "409": {
            "description": "Team storage limit reached, or email unconfirmed"
          },
          "413": {
            "description": "Bundle exceeds the upload limit"
          },
          "401": {
            "description": "No API key presented"
          },
          "403": {
            "description": "The key lacks the required scope"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "GitHubRepo": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "stars": {
            "type": "integer"
          },
          "forks": {
            "type": "integer"
          },
          "license": {
            "type": "string",
            "nullable": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "InstallCommand": {
        "type": "object",
        "properties": {
          "target": {
            "type": "string",
            "enum": [
              "skills-cli",
              "claude-code",
              "git"
            ]
          },
          "command": {
            "type": "string"
          }
        }
      },
      "SkillFile": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "sizeBytes": {
            "type": "integer",
            "format": "int64"
          },
          "isText": {
            "type": "boolean"
          }
        }
      },
      "ContentTrust": {
        "type": "object",
        "properties": {
          "provenance": {
            "type": "string",
            "enum": [
              "ai-reviewed",
              "human-reviewed",
              "trusted-source-unreviewed",
              "moderator-approved",
              "post-moderated",
              "unreviewed"
            ]
          },
          "notice": {
            "type": "string"
          },
          "bodySource": {
            "type": "string",
            "nullable": true,
            "enum": [
              "authored",
              "source-readme",
              "model-drafted"
            ]
          }
        }
      },
      "SkillSummary": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "platform": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "authorName": {
            "type": "string"
          },
          "authorSlug": {
            "type": "string"
          },
          "score": {
            "type": "integer"
          },
          "installs": {
            "type": "integer"
          },
          "source": {
            "type": "string",
            "enum": [
              "uploaded",
              "github"
            ]
          },
          "price": {
            "type": "number",
            "nullable": true
          },
          "verified": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "repo": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/GitHubRepo"
              }
            ]
          },
          "install": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/InstallCommand"
            }
          }
        }
      },
      "SkillDetail": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "platform": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "authorName": {
            "type": "string"
          },
          "authorSlug": {
            "type": "string"
          },
          "score": {
            "type": "integer"
          },
          "installs": {
            "type": "integer"
          },
          "source": {
            "type": "string",
            "enum": [
              "uploaded",
              "github"
            ]
          },
          "price": {
            "type": "number",
            "nullable": true
          },
          "verified": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "repo": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/GitHubRepo"
              }
            ]
          },
          "install": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/InstallCommand"
            }
          },
          "bodyHtml": {
            "type": "string"
          },
          "files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SkillFile"
            }
          },
          "reviewScore": {
            "type": "integer",
            "nullable": true
          },
          "reviewSummary": {
            "type": "string",
            "nullable": true
          },
          "trust": {
            "$ref": "#/components/schemas/ContentTrust"
          }
        }
      },
      "TrustReport": {
        "type": "object",
        "properties": {
          "provenance": {
            "type": "string"
          },
          "screen": {
            "type": "object",
            "properties": {
              "ran": {
                "type": "boolean"
              },
              "outcome": {
                "type": "string",
                "enum": [
                  "not-run",
                  "clean",
                  "notes-only",
                  "flagged-cleared-by-moderator",
                  "flagged"
                ]
              },
              "suspicious": {
                "type": "integer"
              },
              "notes": {
                "type": "integer"
              },
              "hiddenCharacters": {
                "type": "boolean"
              }
            }
          },
          "virusScan": {
            "nullable": true,
            "allOf": [
              {
                "type": "object",
                "properties": {
                  "engine": {
                    "type": "string"
                  },
                  "status": {
                    "type": "string"
                  },
                  "scannedAt": {
                    "type": "string",
                    "format": "date-time",
                    "nullable": true
                  },
                  "sha256": {
                    "type": "string"
                  },
                  "sizeBytes": {
                    "type": "integer"
                  }
                }
              }
            ]
          },
          "review": {
            "nullable": true,
            "allOf": [
              {
                "type": "object",
                "properties": {
                  "model": {
                    "type": "string"
                  },
                  "overall": {
                    "type": "integer"
                  },
                  "safety": {
                    "type": "integer",
                    "nullable": true
                  },
                  "completeRead": {
                    "type": "boolean"
                  },
                  "summary": {
                    "type": "string",
                    "nullable": true
                  }
                }
              }
            ]
          },
          "source": {
            "nullable": true,
            "allOf": [
              {
                "type": "object",
                "properties": {
                  "repositoryUrl": {
                    "type": "string"
                  },
                  "path": {
                    "type": "string",
                    "nullable": true
                  },
                  "license": {
                    "type": "string",
                    "nullable": true
                  },
                  "commit": {
                    "type": "string",
                    "nullable": true
                  },
                  "subtreeSha": {
                    "type": "string",
                    "nullable": true
                  },
                  "lastSyncedAt": {
                    "type": "string",
                    "format": "date-time",
                    "nullable": true
                  }
                }
              }
            ]
          },
          "reviewedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "notice": {
            "type": "string"
          }
        }
      },
      "PagedSkillSummary": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SkillSummary"
            }
          },
          "page": {
            "type": "integer"
          },
          "pageSize": {
            "type": "integer"
          },
          "total": {
            "type": "integer"
          }
        }
      },
      "ToolSummary": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "tagline": {
            "type": "string"
          },
          "websiteUrl": {
            "type": "string"
          },
          "authorName": {
            "type": "string"
          },
          "authorSlug": {
            "type": "string"
          },
          "likes": {
            "type": "integer"
          },
          "verified": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "imageUrl": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ToolDetail": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "tagline": {
            "type": "string"
          },
          "websiteUrl": {
            "type": "string"
          },
          "authorName": {
            "type": "string"
          },
          "authorSlug": {
            "type": "string"
          },
          "likes": {
            "type": "integer"
          },
          "verified": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "descriptionHtml": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "imageUrls": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "trust": {
            "$ref": "#/components/schemas/ContentTrust"
          },
          "report": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/TrustReport"
              }
            ]
          }
        }
      },
      "PagedToolSummary": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ToolSummary"
            }
          },
          "page": {
            "type": "integer"
          },
          "pageSize": {
            "type": "integer"
          },
          "total": {
            "type": "integer"
          }
        }
      },
      "McpServerSummary": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "tagline": {
            "type": "string"
          },
          "websiteUrl": {
            "type": "string"
          },
          "transport": {
            "type": "string",
            "enum": [
              "unknown",
              "stdio",
              "http",
              "sse"
            ]
          },
          "packageName": {
            "type": "string",
            "nullable": true
          },
          "authorName": {
            "type": "string"
          },
          "authorSlug": {
            "type": "string"
          },
          "verified": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "McpServerDetail": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "tagline": {
            "type": "string"
          },
          "websiteUrl": {
            "type": "string"
          },
          "transport": {
            "type": "string",
            "enum": [
              "unknown",
              "stdio",
              "http",
              "sse"
            ]
          },
          "packageName": {
            "type": "string",
            "nullable": true
          },
          "authorName": {
            "type": "string"
          },
          "authorSlug": {
            "type": "string"
          },
          "verified": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "registryName": {
            "type": "string",
            "nullable": true
          },
          "descriptionHtml": {
            "type": "string"
          },
          "trust": {
            "$ref": "#/components/schemas/ContentTrust"
          }
        }
      },
      "PagedMcpServerSummary": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpServerSummary"
            }
          },
          "page": {
            "type": "integer"
          },
          "pageSize": {
            "type": "integer"
          },
          "total": {
            "type": "integer"
          }
        }
      },
      "Command": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "syntax": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "referenceUrl": {
            "type": "string",
            "nullable": true
          },
          "platform": {
            "type": "string"
          },
          "authorName": {
            "type": "string"
          },
          "score": {
            "type": "integer"
          }
        }
      },
      "PagedCommand": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Command"
            }
          },
          "page": {
            "type": "integer"
          },
          "pageSize": {
            "type": "integer"
          },
          "total": {
            "type": "integer"
          }
        }
      },
      "ArticleSummary": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "excerpt": {
            "type": "string"
          },
          "coverImageUrl": {
            "type": "string",
            "nullable": true
          },
          "authorName": {
            "type": "string"
          },
          "authorSlug": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "ArticleDetail": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "excerpt": {
            "type": "string"
          },
          "coverImageUrl": {
            "type": "string",
            "nullable": true
          },
          "authorName": {
            "type": "string"
          },
          "authorSlug": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "bodyHtml": {
            "type": "string"
          },
          "trust": {
            "$ref": "#/components/schemas/ContentTrust"
          },
          "series": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/SeriesRef"
              }
            ]
          }
        }
      },
      "PagedArticleSummary": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ArticleSummary"
            }
          },
          "page": {
            "type": "integer"
          },
          "pageSize": {
            "type": "integer"
          },
          "total": {
            "type": "integer"
          }
        }
      },
      "SeriesRef": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "position": {
            "type": "integer"
          },
          "partCount": {
            "type": "integer"
          }
        }
      },
      "SeriesPart": {
        "type": "object",
        "properties": {
          "position": {
            "type": "integer"
          },
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "excerpt": {
            "type": "string"
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "SeriesSummary": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "coverImageUrl": {
            "type": "string",
            "nullable": true
          },
          "authorName": {
            "type": "string"
          },
          "authorSlug": {
            "type": "string"
          },
          "partCount": {
            "type": "integer"
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "SeriesDetail": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "coverImageUrl": {
            "type": "string",
            "nullable": true
          },
          "authorName": {
            "type": "string"
          },
          "authorSlug": {
            "type": "string"
          },
          "parts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SeriesPart"
            }
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "trust": {
            "$ref": "#/components/schemas/ContentTrust"
          }
        }
      },
      "PagedSeriesSummary": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SeriesSummary"
            }
          },
          "page": {
            "type": "integer"
          },
          "pageSize": {
            "type": "integer"
          },
          "total": {
            "type": "integer"
          }
        }
      },
      "VaultBundle": {
        "type": "object",
        "properties": {
          "fileName": {
            "type": "string"
          },
          "sizeBytes": {
            "type": "integer",
            "format": "int64"
          },
          "scanStatus": {
            "type": "string",
            "enum": [
              "pending",
              "clean",
              "infected",
              "failed"
            ]
          },
          "scannedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "VaultItem": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "platform": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "bundle": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/VaultBundle"
              }
            ]
          },
          "author": {
            "type": "string",
            "nullable": true
          },
          "authorName": {
            "type": "string",
            "nullable": true
          },
          "screen": {
            "type": "string",
            "nullable": true,
            "enum": [
              "not-run",
              "clean",
              "notes-only",
              "flagged-cleared-by-moderator",
              "flagged"
            ]
          }
        }
      },
      "VaultItemDetail": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "platform": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "bundle": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/VaultBundle"
              }
            ]
          },
          "author": {
            "type": "string",
            "nullable": true
          },
          "authorName": {
            "type": "string",
            "nullable": true
          },
          "screen": {
            "type": "string",
            "nullable": true,
            "enum": [
              "not-run",
              "clean",
              "notes-only",
              "flagged-cleared-by-moderator",
              "flagged"
            ]
          },
          "body": {
            "type": "string"
          },
          "bodyHtml": {
            "type": "string"
          },
          "report": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/TrustReport"
              }
            ]
          }
        }
      },
      "PagedVaultItem": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VaultItem"
            }
          },
          "page": {
            "type": "integer"
          },
          "pageSize": {
            "type": "integer"
          },
          "total": {
            "type": "integer"
          }
        }
      },
      "VaultItemInput": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "workflow",
              "prompt",
              "skill",
              "recipe",
              "template"
            ]
          },
          "platform": {
            "type": "string"
          }
        }
      },
      "TeamList": {
        "type": "object",
        "properties": {
          "teams": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "slug": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "role": {
                  "type": "string",
                  "enum": [
                    "member",
                    "maintainer",
                    "owner"
                  ]
                },
                "members": {
                  "type": "integer"
                }
              }
            }
          }
        }
      },
      "VaultQuota": {
        "type": "object",
        "properties": {
          "items": {
            "type": "integer"
          },
          "maxItems": {
            "type": "integer"
          },
          "bytes": {
            "type": "integer",
            "format": "int64"
          },
          "maxBytes": {
            "type": "integer",
            "format": "int64"
          }
        }
      }
    },
    "securitySchemes": {
      "apiKey": {
        "type": "http",
        "scheme": "bearer",
        "description": "A personal API key, scoped at creation."
      }
    }
  }
}