{"openapi":"3.1.0","info":{"title":"Dungeon API","version":"0.1.0","description":"A fully local, hand-curated, original, system-agnostic tabletop RPG reference: a real dice-notation parser/calculator, 30+ generic mechanic concepts, GM advice, character archetypes, generic system-type guidance, a cross-system term glossary, and beginner tips. Never reproduces a specific trademarked ruleset's exact rules text.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://dungeon.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/dungeon/docs"},"termsOfService":"https://connectorbay.com/dungeon/terms"},"servers":[{"url":"https://dungeon.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/dungeon/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/dice_notation_explainer":{"post":{"operationId":"dice_notation_explainer","summary":"Parses real dice notation (\"XdY+Z\" sums, \"kh\"/\"kl\"/\"dh\"/\"dl\" keep-or-drop modifiers, or a \">=\" style","description":"Parses real dice notation (\"XdY+Z\" sums, \"kh\"/\"kl\"/\"dh\"/\"dl\" keep-or-drop modifiers, or a \">=\" style\n    success-counting dice pool) and computes genuine min/max/average statistics — actual dice math, not a\n    lookup table. Use for \"explain 3d6+2\", \"what's the average of 4d6 keep highest 3\", \"what can 6d10>=7\n    roll\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"notation":{"description":"A dice notation string.","examples":["3d6+2","1d20","2d8-1","4d6kh3","6d10>=7"],"minLength":1,"title":"Notation","type":"string"}},"required":["notation"],"title":"dice_notation_explainerArguments","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/mechanic_concept":{"post":{"operationId":"mechanic_concept","summary":"Explains one generic, system-agnostic tabletop RPG mechanic concept: what it is, why it exists, and","description":"Explains one generic, system-agnostic tabletop RPG mechanic concept: what it is, why it exists, and\n    how it's typically used, plus related concepts. Covers 30+ concepts across resolution/randomness,\n    character building, combat, progression and narrative play. Use for \"what's armor class\", \"explain\n    advantage and disadvantage\", \"what's a dice pool\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A generic RPG mechanic concept's name.","examples":["armor class","hit points","advantage","dice pool","initiative"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"mechanic_conceptArguments","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/gm_advice":{"post":{"operationId":"gm_advice","summary":"Practical game-master advice on a topic: a summary, concrete tips, and common pitfalls to avoid.","description":"Practical game-master advice on a topic: a summary, concrete tips, and common pitfalls to avoid.\n    Covers session zero, pacing, improvisation, session prep, running combat, spotlight balance, rules\n    disputes, failing forward, worldbuilding, player absence, ending sessions, reading the table, new-GM\n    confidence, NPC motivation, table dynamics, and note-taking. Use for \"how do I pace a session\", \"tips\n    for improvising\", \"how do I run combat faster\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"topic":{"description":"A game-mastering topic.","examples":["pacing","improvisation","session zero","running combat"],"minLength":1,"title":"Topic","type":"string"}},"required":["topic"],"title":"gm_adviceArguments","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":"Defines common tabletop RPG terminology used across many different systems: GM/DM, PC, NPC, one-shot,","description":"Defines common tabletop RPG terminology used across many different systems: GM/DM, PC, NPC, one-shot,\n    homebrew, house rule, min-maxing, meta-gaming, railroading, sandbox play, theater of the mind, TPK,\n    rules-lite, crunchy, retcon, safety tools, and more. Omit `term` to list every defined term. Use for\n    \"what does railroading mean\", \"what's a TPK\", \"what's the difference between rules-lite and crunchy\".","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/character_concept_explainer":{"post":{"operationId":"character_concept_explainer","summary":"Explains one generic character role/archetype that recurs across many different tabletop systems","description":"Explains one generic character role/archetype that recurs across many different tabletop systems\n    under different names: tank/defender, striker/damage dealer, healer/support, face/social character,\n    skill monkey/utility expert, caster, scout/stealth, leader/commander, generalist, and trickster/wildcard.\n    Includes typical traits, strengths, weaknesses and a play tip. Use for \"what's a tank archetype\", \"how\n    do I play a face character\", \"what's the difference between a striker and a tank\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A generic character role or archetype name.","examples":["tank","healer","striker","the face","skill monkey"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"character_concept_explainerArguments","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_system_type_for_group":{"post":{"operationId":"find_system_type_for_group","summary":"Suggests 1-3 generic tabletop RPG system TYPES (crunchy/tactical, rules-light, narrative-focused,","description":"Suggests 1-3 generic tabletop RPG system TYPES (crunchy/tactical, rules-light, narrative-focused,\n    old-school revival, dice-pool, point-buy/build-focused, universal/generic) matching a group's stated\n    taste, each with what it's good for and typical traits. Real system names are referenced only as\n    factual, illustrative examples, never reproduced content. Use for \"what kind of system should a new\n    group play\", \"we want something crunchy and tactical\", \"suggest a system for improv-heavy roleplay\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"preference":{"description":"A group's taste or preference, in plain language.","examples":["we like deep tactical combat","something rules-light for new players","we want a dark, story-driven game","we like dice pools"],"minLength":1,"title":"Preference","type":"string"}},"required":["preference"],"title":"find_system_type_for_groupArguments","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/category_list":{"post":{"operationId":"category_list","summary":"Every mechanic-concept category with how many concepts are in it (Core Resolution & Randomness,","description":"Every mechanic-concept category with how many concepts are in it (Core Resolution & Randomness,\n    Character Building, Combat & Conflict, Progression & Rewards, Narrative & Group Play). Use for \"what\n    categories of RPG mechanics do you cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"category_listArguments","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 ranked shortlist of practical starting tips for people new to tabletop RPGs, covering both players","description":"A ranked shortlist of practical starting tips for people new to tabletop RPGs, covering both players\n    and new game masters, ordered from most to least essential. Use for \"tips for my first session\", \"advice\n    for a new GM\", \"what should a beginner player know\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"count":{"default":5,"description":"How many tips to return.","maximum":12,"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}}}}