# LingoHub MCP by usefulapi (remote · lingohub.usefulapi.io)

MCP server for LingoHub — localization projects, resources, exports and repository pushes.

- Trust score: 18/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-06

## Components

- remote · `lingohub.usefulapi.io`: 18/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-lingohub/lingohub.md), [page](https://verifymcp.io/servers/io-usefulapi-lingohub/lingohub)

## Channel facts

- Endpoint: `https://lingohub.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.6.4`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-06.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
  - HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Tool Safety**: 0/100
  - Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**Unverified: 5 categories.** Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### How do I install the LingoHub MCP by usefulapi server?

LingoHub MCP by usefulapi is a hosted endpoint at https://lingohub.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http io-usefulapi-lingohub 'https://lingohub.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-lingohub": {
      "url": "https://lingohub.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-lingohub": {
      "type": "http",
      "url": "https://lingohub.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-lingohub]
url = "https://lingohub.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-lingohub": {
      "type": "remote",
      "url": "https://lingohub.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-lingohub --url 'https://lingohub.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-lingohub:
    url: "https://lingohub.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-lingohub": {
      "Transport": "http",
      "Url": "https://lingohub.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-lingohub -t streamable-http -u 'https://lingohub.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-lingohub": {
      "type": "http",
      "url": "https://lingohub.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-06 (score 18, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-11-02 (score 18, −47)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Tool safety: pass → unverified
- [security regression] Authorization: pass → unverified
- [security regression] Stability: 0.03 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified

### 2026-11-01 (score 65, +1)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-31 (score 64)

First indexed and scored.

## MCP tools (14)

### `lingohub_list_projects` (~60 tokens)

List projects

List every Lingohub project this API key can see (owned and shared, across workspaces). Each entry has the title, its links and the workspace_url + project_url slugs that every other tool needs. GET /v1/projects.

### `lingohub_get_project` (~99 tokens)

Get project

One project: title, description, owner email, configured locales (project_locales), timestamps and links. GET /v1/{workspace_url}/projects/{project_url}.

Input parameters:

- `project_url` (string, required): Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url.
- `workspace_url` (string, required): Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url.

### `lingohub_get_project_status` (~155 tokens)

Get project file status

Translation status of one project: each resource file with per-locale segment counts (NOT_TRANSLATED, DRAFT, TRANSLATED, APPROVED, ...), failing quality checks, the export formats it supports and whether a Git repository is connected and can be pushed to. GET .../projects/{project_url}/status.

Input parameters:

- `branch` (string): Project branch name. Default: the project's default branch. An unknown branch is HTTP 422.
- `project_url` (string, required): Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url.
- `workspace_url` (string, required): Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url.

### `lingohub_get_workspace_status` (~94 tokens)

Get workspace translation status

Translation progress of every project in one workspace: title, app URL, total segment count and per-locale counts by status (NOT_TRANSLATED, DRAFT, TRANSLATED, PREFILLED, APPROVED). GET /v1/{workspace_url}/projects/status.

Input parameters:

- `workspace_url` (string, required): Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url.

### `lingohub_create_project` (~199 tokens)

Create project

WRITE: create a new localization project in a workspace (needs settings-management permission on the key). Returns the new project with its links. It adds a project and changes nothing existing; repeating the call can create a second project. POST /v1/{workspace_url}/projects.

Input parameters:

- `description` (string): Optional description, up to 512 characters.
- `resource_type` (string, required): Resource file type, which fixes the import/export format (e.g. standard_json, i18next_json, android_xml, ios_strings, gettext_po, xliff).
- `source_language` (string, required): Source language code, e.g. en or en-GB.
- `target_languages` (array): Target language codes, e.g. ["de","fr"].
- `title` (string, required): Project title.
- `workspace_url` (string, required): Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url.

### `lingohub_list_resources` (~164 tokens)

List resource files

List a project's resource files: name, locale and links (including a download link). GET .../projects/{project_url}/resources.

Input parameters:

- `add_iso2_slug` (boolean): Always add the iso2_slug parameter to the rendered file URLs.
- `branch` (string): Project branch name. Default: the project's default branch. An unknown branch is HTTP 422.
- `locale_in_file_name` (string): Whether file names carry the locale: ALL (default), TARGETS or NONE.
- `project_url` (string, required): Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url.
- `workspace_url` (string, required): Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url.

### `lingohub_download_resource` (~273 tokens)

Download resource file

Download one resource file as text, in one language. file_name is the file name as list_resources shows it (the folder goes in `path`). Long files are cut at 40000 characters (truncated: true); use request_export for a full copy. GET .../projects/{project_url}/resources/{file_name}.

Input parameters:

- `blank_content_handling` (string): What to export for a segment with no translation in the target language.
- `branch` (string): Project branch name. Default: the project's default branch. An unknown branch is HTTP 422.
- `file_name` (string, required): Resource file name, e.g. messages_de.properties.
- `filter_by_status` (string): Only export target segments in this state.
- `html_encoding` (string): How HTML in a segment is escaped.
- `language` (string): Locale code to export (overrides the locale in the file name), e.g. de.
- `path` (string): Folder of the file, when the file name alone is not unique.
- `project_url` (string, required): Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url.
- `workspace_url` (string, required): Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url.

### `lingohub_upload_resource_file` (~407 tokens)

Upload resource file

WRITE: upload one text resource file (JSON, properties, XLIFF, PO, ...) into a project. The language comes from the file name or from `language`. The import flags decide whether existing segments are changed or deactivated: with updating or deactivation on, translations already in Lingohub can be overwritten or switched off, so state the flags you want. Never retried. POST .../projects/{project_url}/resources.

Input parameters:

- `branch` (string): Project branch name. Default: the project's default branch. An unknown branch is HTTP 422.
- `content` (string, required): The file text (UTF-8), up to 1000000 characters.
- `file_name` (string, required): File name with extension, e.g. en.json.
- `language` (string): Locale of this file (overrides the locale in the file name), e.g. de.
- `path` (string): Folder the file is uploaded to; set it when the file name collides with another file (HTTP 406).
- `project_url` (string, required): Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url.
- `source_create_new` (boolean): If this is a source-language file: create new segments.
- `source_deactivate_missing` (boolean): If this is a source-language file: deactivate segments missing from the file.
- `source_update_existing` (boolean): If this is a source-language file: update changed segments.
- `target_create_new` (boolean): If this is a target-language file: create new segments.
- `target_deactivate_missing` (boolean): If this is a target-language file: deactivate segments missing from the file.
- `target_update_existing` (boolean): If this is a target-language file: update changed translations (overwrites existing ones).
- `workspace_url` (string, required): Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url.

### `lingohub_delete_resource` (~185 tokens)

Delete resource file

WRITE, DESTRUCTIVE: delete a resource container: the source-language file AND all its target-language files with their translations. file_name and path must address the source-language file. This cannot be undone through the API. Never retried. DELETE .../projects/{project_url}/resources/{file_name}.

Input parameters:

- `branch` (string): Project branch name. Default: the project's default branch. An unknown branch is HTTP 422.
- `file_name` (string, required): File name of the SOURCE-language file, as list_resources shows it.
- `path` (string): Folder of the source-language file.
- `project_url` (string, required): Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url.
- `workspace_url` (string, required): Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url.

### `lingohub_request_export` (~223 tokens)

Request export

Start an asynchronous export of a project's resource files as a ZIP. It creates an export job and changes no project data. Returns the export id; poll get_export until its status is SUCCESS to get the download URL. Without filters it exports every file and language. POST .../projects/{project_url}/exports.

Input parameters:

- `branch` (string): Project branch name. Default: the project's default branch. An unknown branch is HTTP 422.
- `export_format` (string): Override the export format of the project type.
- `file_paths` (array): Only these files, with the locale placeholder as shown in Lingohub, e.g. config/locales/%{locale}/messages.yml.
- `languages` (array): Only these language codes, e.g. ["en","de"].
- `project_url` (string, required): Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url.
- `workspace_url` (string, required): Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url.

### `lingohub_get_export` (~157 tokens)

Get export status

Status of an export started with request_export: overall and per-file status (NEW, SCHEDULED, PROCESSING, SUCCESS, SKIPPED, ERROR), error details and, when done, the pre-signed download URL of the ZIP. GET .../projects/{project_url}/exports/{export_id}.

Input parameters:

- `export_id` (string, required): Export id from request_export, e.g. reg_18USq6822XIv-19847171.
- `project_url` (string, required): Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url.
- `workspace_url` (string, required): Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url.

### `lingohub_list_context_images` (~144 tokens)

List context images

List the context images (screenshots that show translators where a text is used) of a project, with connected-segment counts and processing status. Paginated; page is zero-based. GET .../projects/{project_url}/contextImages.

Input parameters:

- `page` (integer): Zero-based page index (default 0).
- `project_url` (string, required): Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url.
- `size` (integer): Results per page, 1-100.
- `workspace_url` (string, required): Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url.

### `lingohub_delete_context_image` (~133 tokens)

Delete context image

WRITE, DESTRUCTIVE: delete one context image and its connections to text segments. Never retried. DELETE .../projects/{project_url}/contextImages/{image_id}.

Input parameters:

- `image_id` (string, required): Context image id from list_context_images, e.g. ci_18USq6822XIv-19847171.
- `project_url` (string, required): Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url.
- `workspace_url` (string, required): Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url.

### `lingohub_push_to_repository` (~287 tokens)

Push translations to repository

WRITE: push the project's resource files to its linked Git repository (GitHub, GitLab, Bitbucket or Azure DevOps; the connection must already exist). Depending on push_type this commits to a branch or opens a pull request, so it changes the user's repository. Never retried. POST .../projects/{project_url}/push.

Input parameters:

- `branch` (string): Branch to push to. Default: the repository connection's default branch.
- `commit_description` (string): Extended commit description.
- `commit_message` (string): Commit message. Default: generated.
- `language` (string): Only push this language.
- `path` (string): Only push resource files under this path.
- `project_url` (string, required): Project URL slug (e.g. "feature-demo"); list_projects returns it as project_url.
- `pull_request_branch` (string): Branch to create for the pull request (PULL_REQUEST only).
- `pull_request_description` (string): Pull request description (PULL_REQUEST only).
- `pull_request_title` (string): Pull request title (PULL_REQUEST only).
- `push_type` (string): PUSH commits directly; PULL_REQUEST opens a pull/merge request. Default: the connection's setting.
- `workspace_url` (string, required): Workspace URL slug (e.g. "lingohub-demo"); list_projects returns it as workspace_url.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-lingohub/lingohub#diagnostics

## Score history

- 2026-11-06: 18
- 2026-11-05: 18
- 2026-11-04: 18
- 2026-11-03: 18
- 2026-11-02: 18
- 2026-11-01: 65
- 2026-10-31: 64

## Common questions

### What is the LingoHub MCP by usefulapi server?

LingoHub MCP by usefulapi is listed in the public MCP registry as io.usefulapi/lingohub. MCP server for LingoHub, localization projects, resources, exports and repository pushes. This page covers its hosted endpoint (https://lingohub.usefulapi.io/mcp).

### Is the LingoHub MCP by usefulapi server safe to use?

LingoHub MCP by usefulapi scores 18 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the LingoHub MCP by usefulapi server expose?

LingoHub MCP by usefulapi exposes 14 tools: lingohub_list_projects, lingohub_get_project, lingohub_get_project_status, lingohub_get_workspace_status, lingohub_create_project, and 9 more. Their descriptions and schemas cost roughly 2,580 tokens of context every time the server is loaded.

### Does the LingoHub MCP by usefulapi server require authentication?

Its publisher declares no required credentials for LingoHub MCP by usefulapi. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.

### Is the LingoHub MCP by usefulapi server still maintained?

LingoHub MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 6 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What did VerifyMCP test on the LingoHub MCP by usefulapi server?

VerifyMCP ran 4 checks on LingoHub MCP by usefulapi, covering TLS certificate, HSTS header, DNSSEC and Transport. 7 items could not be completed, a gap on our side rather than a finding about LingoHub MCP by usefulapi: Authorization, HTTPS, Schema quality, Stability and 3 more. 5 categories score 0 for that reason, because we only credit what we can confirm. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- Remote endpoint: https://lingohub.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/lingohub/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-lingohub/lingohub.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-lingohub/lingohub/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/io-usefulapi-lingohub/lingohub.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-lingohub/lingohub
