{"openapi":"3.1.0","info":{"title":"Paintball API","version":"0.1.0","description":"A fully local, hand-curated paintball & airsoft game-format reference: common game formats (Capture the Flag, Elimination, Speedball, Woodsball, Scenario/MilSim, and more) with mandatory safety equipment and rules (mask/eye protection, barrel socks, minimum engagement distance, chronograph velocity limits), field etiquette, terminology, and a paintball-vs-airsoft equipment overview. Eye protection is treated as load-bearing safety content given the genuine injury risk. 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://paintball.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/paintball/docs"},"termsOfService":"https://connectorbay.com/paintball/terms"},"servers":[{"url":"https://paintball.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/paintball/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 paintball/airsoft game format: how it's played, win condition, typical player count and","description":"Full detail for one paintball/airsoft game format: how it's played, win condition, typical player count and\n    duration, field type, skill level and a format-specific safety emphasis. Always includes the general\n    eye-protection safety notice. Use for \"what is capture the flag\", \"how does speedball work\", \"what's a\n    scenario game\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A game format's name or alias.","examples":["Capture the Flag","Speedball","Scenario","CQB"],"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/safety_requirement":{"post":{"operationId":"safety_requirement","summary":"Detail on one mandatory safety topic: eye/face protection, barrel socks & blocking devices, minimum","description":"Detail on one mandatory safety topic: eye/face protection, barrel socks & blocking devices, minimum\n    engagement distance, chronograph velocity limits, protective clothing, referee/marshal authority, safe zones\n    & staging, or post-elimination conduct. Use for \"do I need a mask\", \"what is a barrel sock for\", \"how close\n    can I shoot someone\", \"what's the velocity limit\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"topic":{"description":"A safety topic to look up.","examples":["mask","eye protection","barrel sock","minimum engagement distance","chronograph","velocity limit"],"minLength":1,"title":"Topic","type":"string"}},"required":["topic"],"title":"safety_requirementArguments","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 paintball and airsoft terminology -- marker, hopper, chrono, ramping, hop-up, AEG, GBB,","description":"Definitions of paintball and airsoft terminology -- marker, hopper, chrono, ramping, hop-up, AEG, GBB,\n    bunker, MED, surrender, MilSim, and more. Use for \"what does hop-up mean\", \"what's a dorito bunker\",\n    \"what's MED stand for\".","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 paintball or airsoft equipment -- propulsion, ammunition, marker/replica types,","description":"A factual overview of paintball or airsoft equipment -- propulsion, ammunition, marker/replica types,\n    protective gear, feed system, and how hits are confirmed. Pass 'comparison' (the default) for a side-by-side\n    paintball-vs-airsoft rundown with key differences. Use for \"what's the difference between paintball and\n    airsoft gear\", \"how does an AEG work\", \"what powers a paintball marker\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sport":{"default":"comparison","description":"Which sport's equipment to describe.","examples":["paintball","airsoft","comparison"],"title":"Sport","type":"string"}},"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/field_etiquette":{"post":{"operationId":"field_etiquette","summary":"Sportsmanship and fair-play norms -- calling your own hits honestly, not wiping off a paint mark,","description":"Sportsmanship and fair-play norms -- calling your own hits honestly, not wiping off a paint mark,\n    rate-of-fire/ramping limits, no physical contact, respecting a surrender call, field & gear care, courtesy to\n    new players. Use for \"do I have to call my own hits\", \"what is wiping\", \"can I tackle someone\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"An etiquette topic to look up; omit to list all.","examples":["calling hits","wiping","rate of fire","surrender"],"title":"Topic"}},"title":"field_etiquetteArguments","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 for","description":"Suggests up to 5 game formats that fit a stated player count and experience level, ranked by fit. Use for\n    \"what format should 10 beginners play\", \"best game for a large mixed group\", \"format for 6 experienced 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 (Objective-Based, Elimination-Based, Speedball","description":"Every game-format category with how many formats are in it (Objective-Based, Elimination-Based, Speedball\n    & Tournament, Simulation & MilSim, Casual & Recreational). Use for \"what categories of paintball games are\n    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 paintball or airsoft player, ordered from most","description":"A curated, safety-first shortlist of tips for a first-time paintball or airsoft player, ordered from most\n    to least essential -- eye protection always comes first. Use for \"what should a beginner know\", \"tips for my\n    first paintball 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}}}}