{"openapi":"3.1.0","info":{"title":"Punjabi Phrases API","version":"0.1.0","description":"A fully local, hand-curated everyday Punjabi (Gurmukhi-script) phrasebook, each entry verified against a real source: greetings, courtesy, family terms, food, directions, shopping, time and emergencies, with Gurmukhi script, romanization, English meaning, a pronunciation guide and a small 1-10 numbers list.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://punjabiphrases.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/punjabiphrases/docs"},"termsOfService":"https://connectorbay.com/punjabiphrases/terms"},"servers":[{"url":"https://punjabiphrases.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/punjabiphrases/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 Gurmukhi text, romanization, English meaning, category and notes. Use","description":"Keyword search across every phrase's Gurmukhi text, romanization, English meaning, category and notes. Use\n    for \"how do you say thank you in Punjabi\", \"Punjabi word for water\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Keyword to search for, in English, romanized Punjabi, or Gurmukhi.","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 in one category. \"Numbers\" returns the 1-10 numbers list instead of phrases. Use","description":"Every phrase in one category. \"Numbers\" returns the 1-10 numbers list instead of phrases. Use\n    categories_list to see valid category names. Use for \"Punjabi greetings\", \"Punjabi numbers 1 to 10\",\n    \"emergency phrases in Punjabi\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"description":"A category name.","examples":["Greetings","Courtesy","Family","Food","Directions","Shopping","Time","Emergencies","Numbers"],"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 a suitable Punjabi greeting given an optional time of day and formality level. Use for \"how do I","description":"Suggests a suitable Punjabi greeting given an optional time of day and formality level. Use for \"how do I\n    greet someone formally in Punjabi\", \"what do you say in the morning in Punjabi\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"time_of_day":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"e.g. 'morning', 'evening', 'night'.","title":"Time Of Day"},"formality":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"e.g. 'formal', 'informal'.","title":"Formality"}},"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 Punjabi phrase, deterministically chosen by today's date so it's the same for everyone all day. Use for","description":"One Punjabi phrase, deterministically chosen by today's date so it's the same for everyone all day. Use for\n    \"Punjabi phrase of the 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":"Punjabi kinship terms — mother, father, brother, sister, and specifically-named grandparents (paternal vs","description":"Punjabi kinship terms — mother, father, brother, sister, and specifically-named grandparents (paternal vs\n    maternal). Use for \"Punjabi words for family members\", \"how do you say grandmother in Punjabi\".","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":"Notes on Punjabi sound features relevant to reading the romanization — aspirated consonants, tones,","description":"Notes on Punjabi sound features relevant to reading the romanization — aspirated consonants, tones,\n    retroflex sounds, nasalization. Use for \"how do I pronounce Punjabi words\", \"what are aspirated consonants\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"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 entries it has (including the Numbers list). Use for \"what categories","description":"Every phrase category with how many entries it has (including the Numbers list). Use for \"what categories\n    of Punjabi 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}}}}