{"openapi":"3.1.0","info":{"title":"Grammarworld API","version":"0.1.0","description":"A fully local grammar-reference overview for 8 world languages (Spanish, French, German, Mandarin Chinese, Arabic, Russian, Japanese, Swahili), with real example sentences, glosses, and translations for each language's core distinctive grammar features.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://grammarworld.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/grammarworld/docs"},"termsOfService":"https://connectorbay.com/grammarworld/terms"},"servers":[{"url":"https://grammarworld.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/grammarworld/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/list_languages":{"post":{"operationId":"list_languages","summary":"Lists all 8 covered languages with their family, script, and a one-line overview. Use for \"which","description":"Lists all 8 covered languages with their family, script, and a one-line overview. Use for \"which\n    languages do you cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_languagesArguments","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/language_grammar":{"post":{"operationId":"language_grammar","summary":"The full grammar overview for one language — family, script, and its core distinctive grammar features,","description":"The full grammar overview for one language — family, script, and its core distinctive grammar features,\n    each with a real example sentence, gloss, and translation. Use for \"how does German word order work\",\n    \"give me a grammar overview of Arabic\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"language":{"description":"A language to look up.","examples":["Spanish","Japanese","Swahili","Mandarin Chinese"],"title":"Language","type":"string"}},"required":["language"],"title":"language_grammarArguments","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_features":{"post":{"operationId":"search_features","summary":"Keyword search across every grammar feature and explanation in all 8 languages. Use for \"which languages","description":"Keyword search across every grammar feature and explanation in all 8 languages. Use for \"which languages\n    have no grammatical gender\", \"anything about measure words\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Keyword to search for, e.g. 'gender', 'case', 'particles', 'tone'.","minLength":1,"title":"Query","type":"string"}},"required":["query"],"title":"search_featuresArguments","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/example_sentence":{"post":{"operationId":"example_sentence","summary":"One real example sentence (with gloss and translation) for a language, optionally for a specific","description":"One real example sentence (with gloss and translation) for a language, optionally for a specific\n    grammar feature. Use for \"give me an example of Swahili noun-class agreement\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"language":{"description":"A language to get an example from.","title":"Language","type":"string"},"feature":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific feature name to get the example for; omit for a random feature of that language.","title":"Feature"}},"required":["language"],"title":"example_sentenceArguments","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/compare_languages":{"post":{"operationId":"compare_languages","summary":"Puts two languages' grammar-feature overviews side by side. Use for \"compare Russian and German cases\",","description":"Puts two languages' grammar-feature overviews side by side. Use for \"compare Russian and German cases\",\n    \"how is Japanese different from Mandarin\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"language_a":{"description":"The first language.","title":"Language A","type":"string"},"language_b":{"description":"The second language.","title":"Language B","type":"string"}},"required":["language_a","language_b"],"title":"compare_languagesArguments","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}}}}