{"openapi":"3.1.0","info":{"title":"Crowdin (BYOK) API","version":"0.1.0","description":"Crowdin (BYOK) lets an AI assistant read your own Crowdin data through the Crowdin API with a key you supply (Crowdin personal access token (crowdin.com accounts, not Crowdin Enterprise)). Read-only: 12 tools (list_projects, get_project, get_project_progress, get_language_progress, list_files, get_file, list_branches, list_strings, list_tasks, list_translation_builds, list_supported_languages,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-crowdin.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-crowdin/docs"},"termsOfService":"https://connectorbay.com/byok-crowdin/terms"},"servers":[{"url":"https://byok-crowdin.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-crowdin/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/list_projects":{"post":{"operationId":"list_projects","summary":"List Crowdin projects you can access with languages, visibility, last activity and project URL; filter by group, type or","description":"List Crowdin projects you can access with languages, visibility, last activity and project URL; filter by group, type or manager access. Use for \"Which Crowdin localization projects do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"group_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only projects in this group id (0 for the root).","title":"Group Id"},"type":{"anyOf":[{"maximum":1,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Project type: 0 for file-based, 1 for string-based.","title":"Type"},"has_manager_access":{"anyOf":[{"maximum":1,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"1 to list only projects where you are a manager, 0 for the others.","title":"Has Manager Access"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 500, default 25).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip (for paging).","title":"Offset"}},"title":"list_projectsArguments","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_project":{"post":{"operationId":"get_project","summary":"Get one project's languages, visibility, activity dates and URLs. Use for \"Show details of Crowdin project 12345\".","description":"Get one project's languages, visibility, activity dates and URLs. Use for \"Show details of Crowdin project 12345\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Numeric Crowdin project id (list_projects returns it).","title":"Project Id","type":"integer"}},"required":["project_id"],"title":"get_projectArguments","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_project_progress":{"post":{"operationId":"get_project_progress","summary":"Get translation and approval progress of every target language of a project, in words and phrases. Use for \"How complete","description":"Get translation and approval progress of every target language of a project, in words and phrases. Use for \"How complete is each language of Crowdin project 12345\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Numeric Crowdin project id (list_projects returns it).","title":"Project Id","type":"integer"},"language_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated language ids to include, for example 'uk,de'.","title":"Language Ids"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 500, default 25).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip (for paging).","title":"Offset"}},"required":["project_id"],"title":"get_project_progressArguments","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_language_progress":{"post":{"operationId":"get_language_progress","summary":"Get the translation and approval progress of one target language, broken down per file. Use for \"How far along is the Uk","description":"Get the translation and approval progress of one target language, broken down per file. Use for \"How far along is the Ukrainian translation of each file in Crowdin project 12345\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Numeric Crowdin project id (list_projects returns it).","title":"Project Id","type":"integer"},"language_id":{"description":"Crowdin language id such as 'uk' or 'pt-BR'.","maxLength":200,"title":"Language Id","type":"string"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 500, default 25).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip (for paging).","title":"Offset"}},"required":["project_id","language_id"],"title":"get_language_progressArguments","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_files":{"post":{"operationId":"list_files","summary":"List the source files of a project with type, path, status, revision and priority; filter by branch or directory. Use fo","description":"List the source files of a project with type, path, status, revision and priority; filter by branch or directory. Use for \"Which source files does Crowdin project 12345 contain\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Numeric Crowdin project id (list_projects returns it).","title":"Project Id","type":"integer"},"branch_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only files in this branch id.","title":"Branch Id"},"directory_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only files in this directory id.","title":"Directory Id"},"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to match in file names.","title":"Filter"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 500, default 25).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip (for paging).","title":"Offset"}},"required":["project_id"],"title":"list_filesArguments","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_file":{"post":{"operationId":"get_file","summary":"Get one source file's type, path, status, revision and priority. Use for \"Show Crowdin file 55 in project 12345\".","description":"Get one source file's type, path, status, revision and priority. Use for \"Show Crowdin file 55 in project 12345\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Numeric Crowdin project id (list_projects returns it).","title":"Project Id","type":"integer"},"file_id":{"description":"Numeric file id.","title":"File Id","type":"integer"}},"required":["project_id","file_id"],"title":"get_fileArguments","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_branches":{"post":{"operationId":"list_branches","summary":"List the version branches of a project with name, title, export pattern and protection flag. Use for \"Which branches doe","description":"List the version branches of a project with name, title, export pattern and protection flag. Use for \"Which branches does Crowdin project 12345 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Numeric Crowdin project id (list_projects returns it).","title":"Project Id","type":"integer"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only branches whose name matches this text.","title":"Name"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 500, default 25).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip (for paging).","title":"Offset"}},"required":["project_id"],"title":"list_branchesArguments","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_strings":{"post":{"operationId":"list_strings","summary":"List a project's source strings (text, identifier, context, max length, file) for one file or the whole project. Use for","description":"List a project's source strings (text, identifier, context, max length, file) for one file or the whole project. Use for \"What source strings does file 55 of Crowdin project 12345 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Numeric Crowdin project id (list_projects returns it).","title":"Project Id","type":"integer"},"file_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only strings of this file id.","title":"File Id"},"branch_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only strings of this branch id.","title":"Branch Id"},"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to match in string text, identifier or context.","title":"Filter"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Strings to return (1 to 500, default 25).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Strings to skip.","title":"Offset"}},"required":["project_id"],"title":"list_stringsArguments","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_tasks":{"post":{"operationId":"list_tasks","summary":"List a project's translation and proofreading tasks with status, languages, progress and deadline; filter by status. Use","description":"List a project's translation and proofreading tasks with status, languages, progress and deadline; filter by status. Use for \"Which Crowdin tasks are still open in project 12345\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Numeric Crowdin project id (list_projects returns it).","title":"Project Id","type":"integer"},"status":{"anyOf":[{"enum":["todo","in_progress","done","closed"],"type":"string"},{"type":"null"}],"default":null,"description":"Only tasks with this status.","title":"Status"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 500, default 25).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip (for paging).","title":"Offset"}},"required":["project_id"],"title":"list_tasksArguments","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_translation_builds":{"post":{"operationId":"list_translation_builds","summary":"List a project's translation export builds with status, progress and finish time. Use for \"Did the latest Crowdin build ","description":"List a project's translation export builds with status, progress and finish time. Use for \"Did the latest Crowdin build of project 12345 finish\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Numeric Crowdin project id (list_projects returns it).","title":"Project Id","type":"integer"},"branch_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only builds of this branch id.","title":"Branch Id"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 500, default 25).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip (for paging).","title":"Offset"}},"required":["project_id"],"title":"list_translation_buildsArguments","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_supported_languages":{"post":{"operationId":"list_supported_languages","summary":"List the languages Crowdin supports with ids, names, locale codes and text direction. Use for \"What language id does Cro","description":"List the languages Crowdin supports with ids, names, locale codes and text direction. Use for \"What language id does Crowdin use for Brazilian Portuguese\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 500, default 25).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip (for paging).","title":"Offset"}},"title":"list_supported_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_groups":{"post":{"operationId":"list_groups","summary":"List project groups (folders of projects) with name, parent, project and subgroup counts. Use for \"Which project groups ","description":"List project groups (folders of projects) with name, parent, project and subgroup counts. Use for \"Which project groups exist in my Crowdin account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"parent_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only groups under this parent group id (0 for top level).","title":"Parent Id"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many items to return (1 to 500, default 25).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip (for paging).","title":"Offset"}},"title":"list_groupsArguments","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}}}}