{"openapi":"3.1.0","info":{"title":"Skirmish API","version":"0.1.0","description":"A fully local, hand-curated, original reference to generic miniature-wargaming hobby concepts: scales, measurement conventions, turn-structure design patterns, terrain conventions, painting basics, a glossary and beginner tips. Not tied to any single trademarked ruleset.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://skirmish.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/skirmish/docs"},"termsOfService":"https://connectorbay.com/skirmish/terms"},"servers":[{"url":"https://skirmish.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/skirmish/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/scale_info":{"post":{"operationId":"scale_info","summary":"Full detail for one miniature scale: typical figure height, ground-scale ratio, genre fit, basing","description":"Full detail for one miniature scale: typical figure height, ground-scale ratio, genre fit, basing\n    convention and a table-footprint note. Use for \"what is 28mm scale\", \"how big is 15mm\", \"what's 1:72\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"scale":{"description":"A miniature scale name.","examples":["28mm","15mm","6mm","1:72"],"minLength":1,"title":"Scale","type":"string"}},"required":["scale"],"title":"scale_infoArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/measurement_convention":{"post":{"operationId":"measurement_convention","summary":"Explains one generic tabletop measurement convention: units (inches vs. cm), measuring tools,","description":"Explains one generic tabletop measurement convention: units (inches vs. cm), measuring tools,\n    measure-first vs. move-then-check, where on a model you measure from, ground scale vs. model scale,\n    area/blast templates, or grid vs. free measurement. Use for \"do wargamers use inches or cm\", \"what's a\n    blast template\", \"what's ground scale\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"topic":{"description":"A measurement-convention topic.","examples":["inches vs cm","measuring tools","ground scale","blast templates"],"minLength":1,"title":"Topic","type":"string"}},"required":["topic"],"title":"measurement_conventionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/turn_structure_type":{"post":{"operationId":"turn_structure_type","summary":"Explains one generic turn-structure design pattern used across tabletop wargame design: how it works,","description":"Explains one generic turn-structure design pattern used across tabletop wargame design: how it works,\n    its tradeoffs, and where it's typically used. Covers I-Go-You-Go, alternating activation, phase-based\n    (bound) structure, card/dice-driven activation order, reactive/interrupt activation, and simultaneous\n    (WEGO) orders. Use for \"what does IGOUGO mean\", \"what is alternating activation\", \"what's a WEGO system\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A turn-structure design pattern.","examples":["I-Go-You-Go","alternating activation","WEGO"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"turn_structure_typeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/terrain_convention":{"post":{"operationId":"terrain_convention","summary":"Explains one generic tabletop terrain convention: terrain types, line-of-sight conventions, difficult","description":"Explains one generic tabletop terrain convention: terrain types, line-of-sight conventions, difficult\n    vs. dangerous terrain, cover, terrain density guidelines, elevation/multi-level terrain, or scatter\n    terrain vs. modular boards. Use for \"what counts as cover\", \"how much terrain should a table have\",\n    \"what's the difference between difficult and dangerous terrain\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"topic":{"description":"A terrain-convention topic.","examples":["line of sight","cover","difficult terrain","terrain density"],"minLength":1,"title":"Topic","type":"string"}},"required":["topic"],"title":"terrain_conventionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/painting_basics":{"post":{"operationId":"painting_basics","summary":"Explains one hobby painting/finishing topic — priming, basecoating, washes and shading, highlighting,","description":"Explains one hobby painting/finishing topic — priming, basecoating, washes and shading, highlighting,\n    drybrushing, basing, varnishing, or brush and paint care — with a few practical tips, or lists every\n    topic if none is given. Use for \"how do I prime a miniature\", \"what is drybrushing\", \"how do I varnish\n    a model\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A painting/hobby topic; omit to list all.","title":"Topic"}},"title":"painting_basicsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/term_glossary":{"post":{"operationId":"term_glossary","summary":"Definitions of common generic miniature-wargaming terms — unit coherency, line of sight, morale","description":"Definitions of common generic miniature-wargaming terms — unit coherency, line of sight, morale\n    check, activation, cover save, flanking, deployment zone, WYSIWYG, and more — or lists the whole\n    glossary if no term is given. Use for \"what does unit coherency mean\", \"what's a cover save\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"term":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific term to look up; omit to list all.","title":"Term"}},"title":"term_glossaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/find_scale_for_space":{"post":{"operationId":"find_scale_for_space","summary":"Suggests suitable miniature scales and a game type (skirmish vs. mass battle) for a described","description":"Suggests suitable miniature scales and a game type (skirmish vs. mass battle) for a described\n    tabletop space, with reasoning. Accepts plain descriptions (\"a small desk\", \"a club table\") or rough\n    dimensions (\"6x4 feet\", \"90x60cm\"). Use for \"what scale fits on my kitchen table\", \"I only have a small\n    desk, what scale should I use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"space_description":{"description":"A description of the available tabletop space, in plain language or with dimensions.","examples":["a small coffee table","6x4 feet dedicated table","a kitchen table corner","120x90cm"],"minLength":1,"title":"Space Description","type":"string"}},"required":["space_description"],"title":"find_scale_for_spaceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/beginner_tips":{"post":{"operationId":"beginner_tips","summary":"A curated shortlist of practical tips for someone new to miniature wargaming, ordered from most to","description":"A curated shortlist of practical tips for someone new to miniature wargaming, ordered from most to\n    least essential. Use for \"tips for a beginner wargamer\", \"what should I know before starting this\n    hobby\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"default":5,"description":"How many tips to return.","maximum":10,"minimum":1,"title":"Count","type":"integer"}},"title":"beginner_tipsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}