{"openapi":"3.1.0","info":{"title":"Larp API","version":"0.1.0","description":"A fully local, hand-curated live-action role play (LARP) reference: how LARPs are structured and run, boffer/melee and other combat-safety systems, the real documented safety and consent mechanics the LARP community uses (cut, hold, lookdown, brake, OK-check-OK, the X-card and more), costume/prop basics, event structures from one-shot con games to long-running campaigns, player vs. non-player-character roles, and terminology.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://larp.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/larp/docs"},"termsOfService":"https://connectorbay.com/larp/terms"},"servers":[{"url":"https://larp.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/larp/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/mechanic_info":{"post":{"operationId":"mechanic_info","summary":"Explains one core LARP mechanic: what it is, how it works in practice, and any notes on how it varies","description":"Explains one core LARP mechanic: what it is, how it works in practice, and any notes on how it varies\n    between communities. Use for \"how does boffer combat work\", \"what are hit points in larp\", \"how does\n    downtime work\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A core LARP mechanic's name or alias.","examples":["boffer combat","hit points","call-based combat","downtime"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"mechanic_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/safety_mechanic_info":{"post":{"operationId":"safety_mechanic_info","summary":"Explains one real, community-documented LARP safety or consent mechanic: what it is, how it's called","description":"Explains one real, community-documented LARP safety or consent mechanic: what it is, how it's called\n    and answered, when it's used, and cautions. These are genuine practices used across the LARP community —\n    always confirm the exact convention with a specific event before relying on it. Use for \"what is the cut\n    safeword\", \"how does OK-check-OK work\", \"what does lookdown mean in larp\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A LARP safety/consent mechanic's name or alias.","examples":["cut","hold","lookdown","OK-check-OK","tap-out","x-card"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"safety_mechanic_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/term_glossary":{"post":{"operationId":"term_glossary","summary":"Defines common LARP terminology — PC, NPC, GM, marshal, plot team, monster camp, bleed, metagaming,","description":"Defines common LARP terminology — PC, NPC, GM, marshal, plot team, monster camp, bleed, metagaming,\n    powergaming, immersion, garb, phys-rep, boffer, module, chapter, blackbox, parlor larp, Nordic larp,\n    boffer war, and more. Use for \"what does bleed mean in larp\", \"what's the difference between a PC and an\n    NPC\", \"what is a phys-rep\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"term":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific LARP term to look up; omit to list all terms.","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/event_structure_info":{"post":{"operationId":"event_structure_info","summary":"Explains how a type of LARP event is organized: typical length, level of commitment, and who it suits","description":"Explains how a type of LARP event is organized: typical length, level of commitment, and who it suits\n    best — from a single-session one-shot through an ongoing multi-year campaign. Use for \"what's a one-shot\n    larp\", \"how does an ongoing campaign larp work\", \"what is a blackbox larp\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"An event structure's name or alias.","examples":["one-shot","campaign","weekend retreat","parlor larp","boffer war"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"event_structure_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/combat_safety_note":{"post":{"operationId":"combat_safety_note","summary":"Real-world physical-safety guidance for a boffer/padded-weapon combat topic: weapon construction &","description":"Real-world physical-safety guidance for a boffer/padded-weapon combat topic: weapon construction &\n    padding, weapon & armor inspection, strike zones, swing control, body armor, eye protection, terrain\n    awareness, heat & hydration, new-combatant orientation, and grappling restrictions. This is general\n    guidance, not a substitute for a specific event's own safety rules. Use for \"how should a boffer weapon be\n    built\", \"what areas are safe to hit in larp combat\", \"is grappling allowed in larp\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"topic":{"description":"A boffer/combat-safety topic.","examples":["weapon construction","strike zones","swing control","grappling"],"minLength":1,"title":"Topic","type":"string"}},"required":["topic"],"title":"combat_safety_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/find_larp_style_for_interest":{"post":{"operationId":"find_larp_style_for_interest","summary":"Suggests 1-3 LARP styles that fit a stated interest, keyword-matched against each style's tagged","description":"Suggests 1-3 LARP styles that fit a stated interest, keyword-matched against each style's tagged\n    interests. Use for \"what kind of larp should I try if I like mystery stories\", \"what larp style fits\n    someone who wants to try it once\", \"is there a larp style for people who like crafting systems\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"interest":{"description":"An interest or preference, in plain language.","examples":["I like mystery and puzzles","I want something low-commitment to try once","I love big sword fights","I like political scheming"],"minLength":1,"title":"Interest","type":"string"}},"required":["interest"],"title":"find_larp_style_for_interestArguments","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 browsable category across mechanics, safety mechanics, and glossary terms, each tagged with its","description":"Every browsable category across mechanics, safety mechanics, and glossary terms, each tagged with its\n    domain and entry count. Use for \"what categories of larp mechanics do you cover\", \"what glossary\n    categories are there\".","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 curated shortlist of practical, plain-language tips for a first-time LARPer — what to bring, what to","description":"A curated shortlist of practical, plain-language tips for a first-time LARPer — what to bring, what to\n    ask, and how to use safety mechanics. Use for \"what should a first-time larper know\", \"tips for my first\n    larp event\".","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}}}}