{"openapi":"3.1.0","info":{"title":"Oche API","version":"0.1.0","description":"A fully local, hand-curated darts games & scoring reference: how-to-play rules for 501, 301, Cricket, Cutthroat, Around the Clock, Killer, Shanghai, Baseball and Halve It, a darts glossary, an equipment overview, beginner tips, and genuine computed dart-scoring math for scoring throws and finding double-out checkouts.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://oche.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/oche/docs"},"termsOfService":"https://connectorbay.com/oche/terms"},"servers":[{"url":"https://oche.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/oche/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/game_rules":{"post":{"operationId":"game_rules","summary":"Full how-to-play for one darts game: objective, setup, numbered steps, scoring notes, winning","description":"Full how-to-play for one darts game: objective, setup, numbered steps, scoring notes, winning\n    condition, common variations and beginner tips. Covers 501, 301, Cricket, Cutthroat, Around the Clock,\n    Killer, Shanghai, Baseball and Halve It. Use for \"how do you play 501\", \"what are the rules of cricket\n    darts\", \"how does killer work\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"A darts game's name or alias.","examples":["501","cricket","killer","shanghai"],"minLength":1,"title":"Name","type":"string"}},"required":["name"],"title":"game_rulesArguments","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/score_calculator":{"post":{"operationId":"score_calculator","summary":"Computes the real total of 1-3 dart throws using actual treble/double ring math (genuine","description":"Computes the real total of 1-3 dart throws using actual treble/double ring math (genuine\n    calculation from each dart's notation, not a static table). Returns a per-dart breakdown plus the\n    total. Use for \"what's T20 T19 D12 worth\", \"how many points is a bullseye plus two 20s\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dart_throws":{"description":"1-3 dart notations for one visit. A plain number 1-20 or 'S<n>' is a single, 'D<n>' a double, 'T<n>' a treble, 'BULL' or '25' the outer bull, 'DBULL' or '50' the bullseye/inner bull, and 'MISS' a scoreless dart.","examples":[["T20","T20","D16"],["5"],["T19","BULL"]],"items":{"type":"string"},"maxItems":3,"minItems":1,"title":"Dart Throws","type":"array"}},"required":["dart_throws"],"title":"score_calculatorArguments","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/checkout_suggestion":{"post":{"operationId":"checkout_suggestion","summary":"Computes a genuine double-out checkout route for a remaining score using real dart-value","description":"Computes a genuine double-out checkout route for a remaining score using real dart-value\n    combinations (an actual solver over legal single/double/treble/bull values, not a lookup table of\n    \"famous\" checkouts — it works for any score). Correctly identifies the seven bogey numbers (169, 168,\n    166, 165, 163, 162, 159) and anything over 170 as unfinishable in one 3-dart visit, and suggests a\n    setup dart for those cases. Use for \"what do I need to checkout 170\", \"can you finish on 169\", \"best\n    way to close out 32\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"remaining_score":{"description":"The score remaining to check out from, as in 501/301-style games.","examples":[170,121,40,32,169,9],"maximum":1000,"minimum":-60,"title":"Remaining Score","type":"integer"}},"required":["remaining_score"],"title":"checkout_suggestionArguments","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 darts terms — oche, ton, ton-80, bust, checkout, double out, madhouse,","description":"Definitions of common darts terms — oche, ton, ton-80, bust, checkout, double out, madhouse,\n    nine-darter, bogey number, three-dart average, and more. Use for \"what's a nine-darter\", \"what does\n    'bust' mean in darts\", \"what's a bogey number\".","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_game_for_group":{"post":{"operationId":"find_game_for_group","summary":"Suggests darts games that fit a given player count, based on each game's real minimum/maximum","description":"Suggests darts games that fit a given player count, based on each game's real minimum/maximum\n    player range, closest-fit games first. Use for \"what darts game works for 3 people\", \"best darts game\n    for a big group\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"player_count":{"description":"How many people are playing.","maximum":20,"minimum":1,"title":"Player Count","type":"integer"}},"required":["player_count"],"title":"find_game_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/equipment_overview":{"post":{"operationId":"equipment_overview","summary":"Covers the dartboard (standard bristle vs. electronic soft-tip, the standard clockwise number","description":"Covers the dartboard (standard bristle vs. electronic soft-tip, the standard clockwise number\n    layout), official throwing distances and board height, dart anatomy (tip, barrel, shaft, flight), and\n    scoring tools. Use for \"how far do you stand from a dartboard\", \"what's a dart barrel made of\", \"why\n    are the numbers on a dartboard arranged that way\".","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/category_list":{"post":{"operationId":"category_list","summary":"Every darts game category with how many games are in it. Use for \"what kinds of darts games do you","description":"Every darts game category with how many games are in it. Use for \"what kinds of darts games do you\n    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":"General darts throwing fundamentals (stance, grip, aim, follow-through), plus game-specific tips","description":"General darts throwing fundamentals (stance, grip, aim, follow-through), plus game-specific tips\n    when a game name is given. Use for \"how do I get better at darts\", \"tips for playing cricket\", \"advice\n    for a beginner dart player\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A darts game's name to get game-specific tips too; omit for general fundamentals only.","examples":["501","cricket"],"title":"Name"}},"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}}}}