{"openapi":"3.1.0","info":{"title":"Lasertag API","version":"0.1.0","description":"A fully local, hand-curated laser tag game-format reference: indoor arena and outdoor field formats, free-for-all and team-based modes, objective modes (Capture the Flag, VIP Protection, Zone Control, Base Assault) and a large-scale outdoor format, with scoring/tagging mechanics, a vest & sensor equipment overview, an indoor-vs-outdoor venue comparison, and terminology. Safety content targets the sport's real hazard -- arena/field collisions and falls -- given the genuine risk in a dark or uneven play space. Keyless; zero upstream API calls; nothing stored.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://lasertag.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/lasertag/docs"},"termsOfService":"https://connectorbay.com/lasertag/terms"},"servers":[{"url":"https://lasertag.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/lasertag/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/format_info":{"post":{"operationId":"format_info","summary":"Full detail for one laser tag game format: how it's played, win condition, typical player count and","description":"Full detail for one laser tag game format: how it's played, win condition, typical player count and\n    duration, venue type, skill level and a format-specific safety emphasis. Always includes the general\n    arena/field safety notice. Use for \"what is capture the flag\", \"how does VIP protection work\", \"what's zone\n    control\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A game format's name or alias.","examples":["Capture the Flag","VIP Protection","Zone Control","Team Deathmatch"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"format_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/scoring_summary":{"post":{"operationId":"scoring_summary","summary":"One format's scoring and tagging mechanics in depth: points per tag, objective bonuses, how a player is","description":"One format's scoring and tagging mechanics in depth: points per tag, objective bonuses, how a player is\n    taken out of play (temporary deactivation vs. limited lives), typical deactivation time, respawn behavior,\n    and how the round is won. Use for \"how many points is a tag worth\", \"how does scoring work in capture the\n    flag\", \"do you respawn or are you out for good\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A game format's name or alias.","examples":["Capture the Flag","Team Deathmatch","Base Assault"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"scoring_summaryArguments","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 laser tag terminology -- vest/pack, sensor pad, phaser, deactivation, infrared vs","description":"Definitions of laser tag terminology -- vest/pack, sensor pad, phaser, deactivation, infrared vs\n    radio-frequency, muzzle sensor, boondocking, rambo, and more. Use for \"what does deactivation mean\", \"what's\n    boondocking\", \"what's the difference between infrared and radio-frequency tagging\".","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/equipment_overview":{"post":{"operationId":"equipment_overview","summary":"A factual overview of laser tag equipment -- the vest/sensor pack, the phaser, sensor placement,","description":"A factual overview of laser tag equipment -- the vest/sensor pack, the phaser, sensor placement,\n    infrared vs radio-frequency tagging technology, the control console, power, protective gear (minimal, since\n    laser tag is non-contact), and how hits and scores are tracked. Use for \"what's in a laser tag vest\", \"how\n    does laser tag scoring get tracked\", \"infrared vs radio-frequency laser tag\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"equipment_overviewArguments","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/venue_type_comparison":{"post":{"operationId":"venue_type_comparison","summary":"Compares indoor arena play against outdoor field play -- typical technology, environment, session","description":"Compares indoor arena play against outdoor field play -- typical technology, environment, session\n    length, group size, pacing, and safety focus. Pass both flags true (the default) for a full side-by-side\n    comparison with key differences, or set one false to get just that venue type. Use for \"indoor vs outdoor\n    laser tag\", \"what's different about outdoor laser tag\", \"tell me about indoor arenas\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"indoor":{"default":true,"description":"Include indoor arena details.","title":"Indoor","type":"boolean"},"outdoor":{"default":true,"description":"Include outdoor field details.","title":"Outdoor","type":"boolean"}},"title":"venue_type_comparisonArguments","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_format_for_group":{"post":{"operationId":"find_format_for_group","summary":"Suggests up to 5 game formats that fit a stated player count and experience level, ranked by fit. Use","description":"Suggests up to 5 game formats that fit a stated player count and experience level, ranked by fit. Use\n    for \"what format should 12 beginners play\", \"best mode for a large mixed group\", \"format for 6 experienced\n    players\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"player_count":{"description":"How many players in the group.","examples":[10,24],"maximum":1000,"minimum":1,"title":"Player Count","type":"integer"},"experience_level":{"default":"mixed","description":"The group's overall experience level.","examples":["beginner","mixed","advanced"],"title":"Experience Level","type":"string"}},"required":["player_count"],"title":"find_format_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 game-format category with how many formats are in it (Free-for-All, Team-Based, Objective-Based,","description":"Every game-format category with how many formats are in it (Free-for-All, Team-Based, Objective-Based,\n    Outdoor & Large-Scale). Use for \"what categories of laser tag games 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, safety-first shortlist of tips for a first-time laser tag player, ordered from most to least","description":"A curated, safety-first shortlist of tips for a first-time laser tag player, ordered from most to least\n    essential -- arena/field awareness always comes first. Use for \"what should a beginner know\", \"tips for my\n    first laser tag game\".","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}}}}