{"openapi":"3.1.0","info":{"title":"Odia Phrases API","version":"0.1.0","description":"A fully local, hand-curated everyday Odia (Oriya) phrasebook of 77 entries, each with real Odia-script text, romanized transliteration and English meaning, covering greetings, courtesy, family, food, directions, shopping, time and emergencies.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://odiaphrases.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/odiaphrases/docs"},"termsOfService":"https://connectorbay.com/odiaphrases/terms"},"servers":[{"url":"https://odiaphrases.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/odiaphrases/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/phrase_search":{"post":{"operationId":"phrase_search","summary":"Keyword search across every phrase's Odia text, transliteration and English meaning. Use for \"how do","description":"Keyword search across every phrase's Odia text, transliteration and English meaning. Use for \"how do\n    I say thank you in Odia\", \"find the Odia word for market\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"An English word/phrase, or a romanized Odia word, to search for.","examples":["thank you","market","mother"],"minLength":1,"title":"Query","type":"string"}},"required":["query"],"title":"phrase_searchArguments","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/phrases_by_category":{"post":{"operationId":"phrases_by_category","summary":"Every phrase filed under one category. Use categories_list to see valid category names. Use for","description":"Every phrase filed under one category. Use categories_list to see valid category names. Use for\n    \"give me all the Odia shopping phrases\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"description":"A category name.","examples":["Greetings","Family","Emergencies"],"title":"Category","type":"string"}},"required":["category"],"title":"phrases_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/greeting_for_context":{"post":{"operationId":"greeting_for_context","summary":"Suggests one greeting phrase appropriate for a stated time of day. Use for \"how do I greet someone","description":"Suggests one greeting phrase appropriate for a stated time of day. Use for \"how do I greet someone\n    in Odia in the morning\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"time_of_day":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"morning, afternoon, evening, or night; omit for a generic greeting.","examples":["morning","evening"],"title":"Time Of Day"},"formal":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Whether a formal register is wanted (Odia greetings are largely register-neutral, but this is reserved for future refinement).","title":"Formal"}},"title":"greeting_for_contextArguments","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/phrase_of_the_day":{"post":{"operationId":"phrase_of_the_day","summary":"One Odia phrase, the same for every caller across a given UTC day. Use for \"Odia phrase of the","description":"One Odia phrase, the same for every caller across a given UTC day. Use for \"Odia phrase of the\n    day\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"phrase_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/family_terms":{"post":{"operationId":"family_terms","summary":"Every kinship/family term in this phrasebook (father, mother, siblings by birth order, spouse,","description":"Every kinship/family term in this phrasebook (father, mother, siblings by birth order, spouse,\n    grandparent, friend). Use for \"what's the Odia word for elder sister\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"family_termsArguments","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/pronunciation_guide":{"post":{"operationId":"pronunciation_guide","summary":"Short notes on Odia sounds that don't map cleanly onto English spelling: retroflex vs dental","description":"Short notes on Odia sounds that don't map cleanly onto English spelling: retroflex vs dental\n    consonants, the rounded inherent vowel, nasalization marks, and word stress. Use for \"how do I\n    pronounce Odia retroflex letters\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific topic to look up; omit to list all.","title":"Topic"}},"title":"pronunciation_guideArguments","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 phrase category with how many phrases are filed under it. Use for \"what categories of Odia","description":"Every phrase category with how many phrases are filed under it. Use for \"what categories of Odia\n    phrases 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}}}}