{"openapi":"3.1.0","info":{"title":"Genre API","version":"0.1.0","description":"A fully local, hand-curated video game genre reference: definitions and core mechanics for 14 major genres (platformer, RPG, FPS, real-time strategy, turn-based strategy, roguelike, metroidvania, survival, sandbox, visual novel, rhythm game, fighting game, puzzle game, simulation), each with well-documented landmark/foundational titles, a history note, beginner tips, cross-genre hybrid explanations, and a genre-terms glossary. Genre history and definition, not competitive esports scenes.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://genre.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/genre/docs"},"termsOfService":"https://connectorbay.com/genre/terms"},"servers":[{"url":"https://genre.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/genre/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/genre_info":{"post":{"operationId":"genre_info","summary":"Full detail for one video game genre: definition, core defining mechanics, category, aliases, its","description":"Full detail for one video game genre: definition, core defining mechanics, category, aliases, its\n    landmark/foundational titles and a short history summary. Use for \"what is a roguelike\", \"define metroidvania\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A genre's name or alias.","examples":["metroidvania","RTS","visual novel","JRPG"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"genre_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/landmark_title":{"post":{"operationId":"landmark_title","summary":"The well-documented, historically important real games for one genre, each with a one-line factual note on","description":"The well-documented, historically important real games for one genre, each with a one-line factual note on\n    why it mattered to the genre's development — factual reference, not reviews. Use for \"what's a landmark\n    platformer\", \"what games defined the RTS genre\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"genre":{"description":"A genre's name or alias.","examples":["platformer","fighting game","RPG"],"minLength":1,"title":"Genre","type":"string"}},"required":["genre"],"title":"landmark_titleArguments","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/genre_hybrid_explainer":{"post":{"operationId":"genre_hybrid_explainer","summary":"Explains how two genres combine into a hybrid (e.g. RPG + FPS = \"looter-shooter\", Metroidvania + Roguelike","description":"Explains how two genres combine into a hybrid (e.g. RPG + FPS = \"looter-shooter\", Metroidvania + Roguelike\n    = \"roguevania\"), with a curated real example where a well-known hybrid subgenre exists, or a clearly-labeled\n    generic combination when it doesn't. Use for \"what's an action RPG\", \"what do you call a platformer fighting\n    game hybrid\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"genre_a":{"description":"First genre's name or alias.","examples":["RPG","roguelike","platformer"],"minLength":1,"title":"Genre A","type":"string"},"genre_b":{"description":"Second genre's name or alias.","examples":["FPS","metroidvania","fighting game"],"minLength":1,"title":"Genre B","type":"string"}},"required":["genre_a","genre_b"],"title":"genre_hybrid_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/term_glossary":{"post":{"operationId":"term_glossary","summary":"Definitions of common video game genre and mechanics terms — roguelike vs roguelite, frame data, fog of","description":"Definitions of common video game genre and mechanics terms — roguelike vs roguelite, frame data, fog of\n    war, Metroidvania as a structural term, aggro, tech tree, JRPG vs WRPG, and more. Use for \"what does frame\n    data mean\", \"what's the difference between roguelike and roguelite\".","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_genre_by_description":{"post":{"operationId":"find_genre_by_description","summary":"Matches a plain-language description of gameplay to the closest-matching genre(s) from this reference,","description":"Matches a plain-language description of gameplay to the closest-matching genre(s) from this reference,\n    ranked best match first. Use for \"what genre is a game where you die permanently and levels are randomized\n    each time\", \"what do you call games like Tetris\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"description":{"description":"A plain-language description of the gameplay you have in mind.","examples":["you explore a big connected map and unlock new areas with abilities you find","you build a base and command an army in real time","one on one combat with special moves and combos"],"minLength":1,"title":"Description","type":"string"}},"required":["description"],"title":"find_genre_by_descriptionArguments","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 genre family/category this reference covers (Action, Strategy, RPG & Narrative, Action-Adventure,","description":"Every genre family/category this reference covers (Action, Strategy, RPG & Narrative, Action-Adventure,\n    Simulation & Sandbox, Puzzle), each with its genre count and the genres in it. Use for \"what genres do you\n    cover\", \"list genre categories\".","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/history_note":{"post":{"operationId":"history_note","summary":"One genre's longer evolution/timeline note — how it emerged, its key turning points, and roughly where it","description":"One genre's longer evolution/timeline note — how it emerged, its key turning points, and roughly where it\n    stands today. Use for \"how did the roguelike genre evolve\", \"history of fighting games\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"genre":{"description":"A genre's name or alias.","examples":["roguelike","fighting game","sandbox"],"minLength":1,"title":"Genre","type":"string"}},"required":["genre"],"title":"history_noteArguments","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":"Practical, non-spoiler tips for someone trying a genre for the first time. Use for \"tips for my first","description":"Practical, non-spoiler tips for someone trying a genre for the first time. Use for \"tips for my first\n    fighting game\", \"how do I get started with roguelikes\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"genre":{"description":"A genre's name or alias.","examples":["fighting game","roguelike","RTS"],"minLength":1,"title":"Genre","type":"string"}},"required":["genre"],"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}}}}