@sonenta/mcp 0.24.0 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -3
- package/python/dist/sonenta_mcp-0.26.0-py3-none-any.whl +0 -0
- package/python/pyproject.toml +1 -1
- package/python/verbumia_mcp/__init__.py +1 -1
- package/python/verbumia_mcp/tools.py +54 -0
- package/bin/verbumia-mcp.js +0 -6
- package/python/dist/sonenta_mcp-0.24.0-py3-none-any.whl +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sonenta/mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.0",
|
|
4
4
|
"description": "MCP server for Sonenta translation management \u2014 wires Claude Desktop and other MCP clients into your project's keys, missing-key feed, and translation drafts.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://sonenta.com",
|
|
@@ -25,8 +25,7 @@
|
|
|
25
25
|
"node": ">=18.0.0"
|
|
26
26
|
},
|
|
27
27
|
"bin": {
|
|
28
|
-
"sonenta-mcp": "bin/sonenta-mcp.js"
|
|
29
|
-
"verbumia-mcp": "bin/verbumia-mcp.js"
|
|
28
|
+
"sonenta-mcp": "bin/sonenta-mcp.js"
|
|
30
29
|
},
|
|
31
30
|
"files": [
|
|
32
31
|
"bin/",
|
|
Binary file
|
package/python/pyproject.toml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sonenta-mcp"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.26.0"
|
|
4
4
|
description = "Model Context Protocol server for Sonenta — list projects, missing keys, propose translations from Claude Desktop and other MCP clients."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12,<3.14"
|
|
@@ -1971,6 +1971,48 @@ def register(server: Server, client: VerbumiaClient) -> tuple[Any, Any]:
|
|
|
1971
1971
|
"additionalProperties": False,
|
|
1972
1972
|
},
|
|
1973
1973
|
),
|
|
1974
|
+
# --- Placeholder mismatches (PM2 #173): translations whose interpolation
|
|
1975
|
+
# variables drift from the source (i18next {{}}, ICU {}, Ruby %{}). ---
|
|
1976
|
+
Tool(
|
|
1977
|
+
name="list_placeholder_mismatches",
|
|
1978
|
+
description=(
|
|
1979
|
+
"List TRANSLATIONS whose interpolation VARIABLES drift from their "
|
|
1980
|
+
"source value (Placeholder mismatch, PM2) — a broken `{{name}}` / "
|
|
1981
|
+
"`{count}` is a runtime bug (missing data, or a crash). Detection is "
|
|
1982
|
+
"by variable NAME and brace-agnostic (i18next `{{}}`, ICU `{}`, Ruby "
|
|
1983
|
+
"`%{}` all compared by name), evaluated PER LANGUAGE. Each item = "
|
|
1984
|
+
"{key_uuid, key ('namespace::name'), namespace_slug, language (BCP-47), "
|
|
1985
|
+
"source_value, source_vars[], target_value, target_vars[], missing[] "
|
|
1986
|
+
"(vars in the source absent from this translation), extra[] (vars in "
|
|
1987
|
+
"this translation unknown to the source)}. This is the worklist the "
|
|
1988
|
+
"sonenta-source-health agent repairs: rewrite the target value so its "
|
|
1989
|
+
"variables match the source, write it back (propose_translation), then "
|
|
1990
|
+
"RE-CALL this tool — `total == 0` confirms the fix (no server auto-fix). "
|
|
1991
|
+
"READ-ONLY. 0 credits."
|
|
1992
|
+
),
|
|
1993
|
+
inputSchema={
|
|
1994
|
+
"type": "object",
|
|
1995
|
+
"properties": {
|
|
1996
|
+
"project_uuid": {
|
|
1997
|
+
"type": "string",
|
|
1998
|
+
"description": "Project UUID. Required when multiple projects are configured (SONENTA_PROJECTS); defaults to the single configured project otherwise.",
|
|
1999
|
+
},
|
|
2000
|
+
"version_id": {
|
|
2001
|
+
"type": "string",
|
|
2002
|
+
"description": "Optional version UUID; defaults to the production version.",
|
|
2003
|
+
},
|
|
2004
|
+
"key_id": {
|
|
2005
|
+
"type": "string",
|
|
2006
|
+
"description": "Restrict to a single key by its UUID.",
|
|
2007
|
+
},
|
|
2008
|
+
"language_code": {
|
|
2009
|
+
"type": "string",
|
|
2010
|
+
"description": "Restrict to a single target language by its BCP-47 code (e.g. 'fr').",
|
|
2011
|
+
},
|
|
2012
|
+
},
|
|
2013
|
+
"additionalProperties": False,
|
|
2014
|
+
},
|
|
2015
|
+
),
|
|
1974
2016
|
# --- Source Health: duplicate source strings (#1116; backend #1114, PR #147) ---
|
|
1975
2017
|
Tool(
|
|
1976
2018
|
name="list_source_duplicates",
|
|
@@ -2705,6 +2747,18 @@ def register(server: Server, client: VerbumiaClient) -> tuple[Any, Any]:
|
|
|
2705
2747
|
f"/v1/mcp/projects/{project_uuid}/cognitive/score-local", json=body
|
|
2706
2748
|
)
|
|
2707
2749
|
return _text(data)
|
|
2750
|
+
# --- Placeholder mismatches (PM2 #173) ---
|
|
2751
|
+
if name == "list_placeholder_mismatches":
|
|
2752
|
+
project_uuid = _project_uuid(args, client)
|
|
2753
|
+
params: dict[str, Any] = {}
|
|
2754
|
+
for opt in ("version_id", "key_id", "language_code"):
|
|
2755
|
+
if args.get(opt):
|
|
2756
|
+
params[opt] = args[opt]
|
|
2757
|
+
data = await client.get(
|
|
2758
|
+
f"/v1/mcp/projects/{project_uuid}/placeholder-mismatches",
|
|
2759
|
+
params=params,
|
|
2760
|
+
)
|
|
2761
|
+
return _text(data)
|
|
2708
2762
|
# --- Source Health: duplicates (#1116; backend #1114, PR #147) ---
|
|
2709
2763
|
if name == "list_source_duplicates":
|
|
2710
2764
|
project_uuid = _project_uuid(args, client)
|
package/bin/verbumia-mcp.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// Deprecated alias for `sonenta-mcp` (@sonenta/mcp) — kept functional.
|
|
3
|
-
console.error(
|
|
4
|
-
"[deprecated] `verbumia-mcp` is now `sonenta-mcp` (@sonenta/mcp). This alias still works but will be removed in a future major.",
|
|
5
|
-
);
|
|
6
|
-
require("./sonenta-mcp.js");
|
|
Binary file
|