{"openapi":"3.1.0","info":{"title":"SimpleLocalize (BYOK) API","version":"0.1.0","description":"SimpleLocalize (BYOK) lets an AI assistant read your own SimpleLocalize data through the SimpleLocalize API with a key you supply (SimpleLocalize project API key). Read-only: 6 tools (search_translations, get_translations_for_key, list_missing_translations, list_languages, list_customers, get_customer). The BYOK key travels with each request, is used for that one call only and is never stored,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-simplelocalize.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-simplelocalize/docs"},"termsOfService":"https://connectorbay.com/byok-simplelocalize/terms"},"servers":[{"url":"https://byok-simplelocalize.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-simplelocalize/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/search_translations":{"post":{"operationId":"search_translations","summary":"Search the project's translations by text, key, namespace, language, review state or customer. Returns key, namespace, l","description":"Search the project's translations by text, key, namespace, language, review state or customer. Returns key, namespace, language, text and review status. At most 500 per page. Use for \"Find translations containing 'welcome' in my SimpleLocalize project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"text":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Return translations whose text contains this value (case is ignored).","title":"Text"},"key":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only this exact translation key.","title":"Key"},"namespace":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only this exact namespace.","title":"Namespace"},"language":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only this language key, for example 'en' or 'pl'.","title":"Language"},"review_status":{"anyOf":[{"enum":["REVIEWED","NOT_REVIEWED"],"type":"string"},{"type":"null"}],"default":null,"description":"Filter by review state.","title":"Review Status"},"customer_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the variants for this customer key.","title":"Customer Id"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number for paging through results (see the docs: omit for the first page).","title":"Page"},"size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many translations per page (maximum 500).","title":"Size"}},"title":"search_translationsArguments","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/get_translations_for_key":{"post":{"operationId":"get_translations_for_key","summary":"Get every language's translation of one translation key (optionally within one namespace). Use for \"Show all translation","description":"Get every language's translation of one translation key (optionally within one namespace). Use for \"Show all translations of the key HELLO_WORLD in SimpleLocalize\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"key":{"description":"Exact translation key, for example 'HELLO_WORLD'.","maxLength":200,"title":"Key","type":"string"},"namespace":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only this exact namespace.","title":"Namespace"},"size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many translations per page (maximum 500).","title":"Size"}},"required":["key"],"title":"get_translations_for_keyArguments","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/list_missing_translations":{"post":{"operationId":"list_missing_translations","summary":"List translation entries with empty text for one language, so gaps can be found. Use for \"Which Polish translations are ","description":"List translation entries with empty text for one language, so gaps can be found. Use for \"Which Polish translations are still empty in SimpleLocalize\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"language":{"description":"Language key to check, for example 'pl'.","maxLength":200,"title":"Language","type":"string"},"text_status":{"anyOf":[{"enum":["EMPTY","NOT_EMPTY"],"type":"string"},{"type":"null"}],"default":"EMPTY","description":"Which entries to list; EMPTY finds the missing ones.","title":"Text Status"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number for paging through results (see the docs: omit for the first page).","title":"Page"},"size":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many translations per page (maximum 500).","title":"Size"}},"required":["language"],"title":"list_missing_translationsArguments","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/list_languages":{"post":{"operationId":"list_languages","summary":"List the languages configured in the project with their keys and descriptions. Use for \"Which languages does my SimpleLo","description":"List the languages configured in the project with their keys and descriptions. Use for \"Which languages does my SimpleLocalize project support\".","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/list_customers":{"post":{"operationId":"list_customers","summary":"List the customer keys used for customer-specific translations, with their descriptions. Use for \"Which customers have c","description":"List the customer keys used for customer-specific translations, with their descriptions. Use for \"Which customers have custom translations in SimpleLocalize\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_customersArguments","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/get_customer":{"post":{"operationId":"get_customer","summary":"Get one customer's key and description by its customer key. Use for \"Describe the SimpleLocalize customer my-customer-21","description":"Get one customer's key and description by its customer key. Use for \"Describe the SimpleLocalize customer my-customer-2137\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"customer_key":{"description":"Customer key, for example 'my-customer-2137'.","maxLength":200,"title":"Customer Key","type":"string"}},"required":["customer_key"],"title":"get_customerArguments","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}}}}