{"openapi":"3.1.0","info":{"title":"Gujarati Riddles API","version":"0.1.0","description":"A fully local, hand-curated collection of traditional Gujarati riddles (ukhana) and tongue twisters: real Gujarati-script text, romanized transliteration, English translation and answer for each, organized by category with search, a daily pick, fuzzy answer-checking and wordplay explanations.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://gujaratiriddles.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/gujaratiriddles/docs"},"termsOfService":"https://connectorbay.com/gujaratiriddles/terms"},"servers":[{"url":"https://gujaratiriddles.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/gujaratiriddles/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/riddle_of_the_day":{"post":{"operationId":"riddle_of_the_day","summary":"One Gujarati riddle (ukhanu), rotating daily by date. Set reveal_answer to false to pose it as a","description":"One Gujarati riddle (ukhanu), rotating daily by date. Set reveal_answer to false to pose it as a\n    challenge without spoiling the answer. Use for \"riddle of the day\", \"give me today's Gujarati ukhanu\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"reveal_answer":{"default":true,"description":"If false, the answer is withheld so the riddle can be posed as a challenge.","title":"Reveal Answer","type":"boolean"}},"title":"riddle_of_the_dayArguments","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/random_riddle":{"post":{"operationId":"random_riddle","summary":"One Gujarati riddle picked at random (not date-based, unlike riddle_of_the_day). Set reveal_answer to","description":"One Gujarati riddle picked at random (not date-based, unlike riddle_of_the_day). Set reveal_answer to\n    false to pose it as a challenge. Use for \"give me a random Gujarati riddle\", \"quiz me with an ukhanu\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"reveal_answer":{"default":true,"description":"If false, the answer is withheld so the riddle can be posed as a challenge.","title":"Reveal Answer","type":"boolean"}},"title":"random_riddleArguments","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/riddles_by_category":{"post":{"operationId":"riddles_by_category","summary":"Every riddle in one category. Use categories_list to see valid category names. Use for \"Gujarati","description":"Every riddle in one category. Use categories_list to see valid category names. Use for \"Gujarati\n    riddles about animals\", \"food riddles in Gujarati\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"description":"nature | animals | body | household | food | objects | modern | toys and games","minLength":1,"title":"Category","type":"string"}},"required":["category"],"title":"riddles_by_categoryArguments","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/search_riddles":{"post":{"operationId":"search_riddles","summary":"Keyword search across every riddle's Gujarati text, transliteration, English clue and answer. Use for","description":"Keyword search across every riddle's Gujarati text, transliteration, English clue and answer. Use for\n    \"find a riddle about the moon\", \"riddle with the answer 'elephant'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"A keyword to search for, in English or Gujarati/romanized Gujarati.","examples":["moon","elephant","chandra"],"minLength":1,"title":"Query","type":"string"}},"required":["query"],"title":"search_riddlesArguments","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/tongue_twisters":{"post":{"operationId":"tongue_twisters","summary":"Every Gujarati tongue twister in this reference, with its transliteration, English meaning and a","description":"Every Gujarati tongue twister in this reference, with its transliteration, English meaning and a\n    wordplay explanation of the repeated sounds. Use for \"give me a Gujarati tongue twister\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"tongue_twistersArguments","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/check_answer":{"post":{"operationId":"check_answer","summary":"Fuzzy-matches a guessed answer against a specific riddle's real answer (in Gujarati, transliteration","description":"Fuzzy-matches a guessed answer against a specific riddle's real answer (in Gujarati, transliteration\n    or English), tolerant of spelling variation. Use for \"is 'moon' the right answer to this riddle\",\n    \"check my guess for this ukhanu\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"riddle":{"description":"A riddle's Gujarati text, transliteration, or a keyword from it.","minLength":1,"title":"Riddle","type":"string"},"guess":{"description":"A guessed answer, in Gujarati, transliteration, or English.","minLength":1,"title":"Guess","type":"string"}},"required":["riddle","guess"],"title":"check_answerArguments","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/categories_list":{"post":{"operationId":"categories_list","summary":"Every riddle category this reference covers, with how many riddles are tagged under each. Use for","description":"Every riddle category this reference covers, with how many riddles are tagged under each. Use for\n    \"what categories of Gujarati riddles do you have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"categories_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/explain_wordplay":{"post":{"operationId":"explain_wordplay","summary":"Explains the pun, metaphor or repeated-sound wordplay behind a specific riddle or tongue twister. Use","description":"Explains the pun, metaphor or repeated-sound wordplay behind a specific riddle or tongue twister. Use\n    for \"why is the answer to this riddle a comb\", \"explain the wordplay in this tongue twister\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"riddle":{"description":"A riddle or tongue twister's Gujarati text, transliteration, or a keyword from it.","minLength":1,"title":"Riddle","type":"string"}},"required":["riddle"],"title":"explain_wordplayArguments","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}}}}