{
 "openapi": "3.1.0",
 "info": {
  "title": "Sumbloom Puzzles API",
  "version": "1.0.0",
  "description": "Free original number puzzles (Target, Cage Grid, Brick Pyramid) as JSON or printable SVG, with solutions. No key; 30 calls/min per IP. By CyberMax.",
  "contact": {
   "name": "CyberMax",
   "url": "https://cybermax-tools-cybermax.static.hf.space/"
  }
 },
 "servers": [
  {
   "url": "https://sumbloom.cybermax-tools.workers.dev"
  }
 ],
 "paths": {
  "/v1/puzzle": {
   "get": {
    "operationId": "getPuzzle",
    "summary": "Get a number puzzle as JSON",
    "parameters": [
     {
      "name": "type",
      "in": "query",
      "schema": {
       "type": "string",
       "enum": [
        "target",
        "cage",
        "pyramid"
       ],
       "default": "cage"
      }
     },
     {
      "name": "level",
      "in": "query",
      "schema": {
       "type": "string",
       "enum": [
        "easy",
        "medium",
        "hard"
       ],
       "default": "easy"
      }
     },
     {
      "name": "seed",
      "in": "query",
      "schema": {
       "type": "string"
      },
      "description": "Same seed = same puzzle. Omit for random."
     },
     {
      "name": "daily",
      "in": "query",
      "schema": {
       "type": "boolean"
      },
      "description": "Today's puzzle (UTC)."
     },
     {
      "name": "solution",
      "in": "query",
      "schema": {
       "type": "boolean",
       "default": true
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Puzzle",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "description": "Bad type or level"
     },
     "429": {
      "description": "Rate limited"
     }
    }
   }
  },
  "/v1/puzzle.svg": {
   "get": {
    "operationId": "getPuzzleSvg",
    "summary": "Get a number puzzle as a printable SVG image",
    "parameters": [
     {
      "name": "type",
      "in": "query",
      "schema": {
       "type": "string",
       "enum": [
        "target",
        "cage",
        "pyramid"
       ],
       "default": "cage"
      }
     },
     {
      "name": "level",
      "in": "query",
      "schema": {
       "type": "string",
       "enum": [
        "easy",
        "medium",
        "hard"
       ],
       "default": "easy"
      }
     },
     {
      "name": "seed",
      "in": "query",
      "schema": {
       "type": "string"
      },
      "description": "Same seed = same puzzle. Omit for random."
     },
     {
      "name": "daily",
      "in": "query",
      "schema": {
       "type": "boolean"
      },
      "description": "Today's puzzle (UTC)."
     },
     {
      "name": "solution",
      "in": "query",
      "schema": {
       "type": "boolean",
       "default": false
      }
     }
    ],
    "responses": {
     "200": {
      "description": "SVG",
      "content": {
       "image/svg+xml": {}
      }
     }
    }
   }
  },
  "/mcp": {
   "post": {
    "operationId": "mcp",
    "summary": "Remote MCP server (streamable HTTP, JSON-RPC 2.0): tool get_number_puzzle",
    "responses": {
     "200": {
      "description": "JSON-RPC response"
     }
    }
   }
  }
 }
}