@better-i18n/mcp 0.11.1 → 0.13.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.
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAMnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAcrD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG;IAC9D,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAaA;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,GACnD,MAAM,CAoGR;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAMnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAerD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG;IAC9D,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAaA;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,GACnD,MAAM,CAwGR;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
package/dist/server.js CHANGED
@@ -15,6 +15,7 @@ import { getPendingChanges } from "./tools/getPendingChanges.js";
15
15
  import { getProject } from "./tools/getProject.js";
16
16
  import { getSync } from "./tools/getSync.js";
17
17
  import { getSyncs } from "./tools/getSyncs.js";
18
+ import { getTranslations } from "./tools/getTranslations.js";
18
19
  import { listKeys } from "./tools/listKeys.js";
19
20
  import { listProjects } from "./tools/listProjects.js";
20
21
  import { publishTranslations } from "./tools/publishTranslations.js";
@@ -61,6 +62,7 @@ export function createConfiguredServer(apiClient) {
61
62
  annotate(getProject.definition, readOnly),
62
63
  annotate(addLanguage.definition, write),
63
64
  annotate(listKeys.definition, readOnly),
65
+ annotate(getTranslations.definition, readOnly),
64
66
  annotate(createKeys.definition, write),
65
67
  annotate(updateKeys.definition, write),
66
68
  annotate(deleteKeys.definition, destructive),
@@ -88,6 +90,9 @@ export function createConfiguredServer(apiClient) {
88
90
  case "listKeys":
89
91
  result = await listKeys.execute(apiClient, args);
90
92
  break;
93
+ case "getTranslations":
94
+ result = await getTranslations.execute(apiClient, args);
95
+ break;
91
96
  case "createKeys":
92
97
  result = await createKeys.execute(apiClient, args);
93
98
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AASnD;;;GAGG;AACH,MAAM,UAAU,aAAa;IAG3B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,UAAU,GACd,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACvC,UAAU,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;IAElD,MAAM,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAC/B,CAAC,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,MAAM,IAAI,UAAU,CAAC;IAErE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,SAAoD;IAEpD,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;QACE,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;SACV;KACF,CACF,CAAC;IAEF,4FAA4F;IAC5F,MAAM,QAAQ,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;IACtF,MAAM,KAAK,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;IACpF,MAAM,WAAW,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IAEzF,MAAM,QAAQ,GAAG,CAAC,GAAmB,EAAE,WAAoC,EAAE,EAAE,CAAC,CAAC;QAC/E,GAAG,GAAG;QACN,WAAW;KACZ,CAAC,CAAC;IAEH,uBAAuB;IACvB,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5D,KAAK,EAAE;YACL,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC;YAC3C,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC;YACzC,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC;YACvC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;YACvC,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC;YAC9C,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC;YACtC,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC;YACtC,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC;YAC5C,QAAQ,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC;YAChD,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,KAAK,CAAC;YAC/C,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;YACvC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC;SACvC;KACF,CAAC,CAAC,CAAC;IAEJ,gBAAgB;IAChB,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAEjD,IAAI,CAAC;YACH,IAAI,MAAM,CAAC;YAEX,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,cAAc;oBACjB,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBACrD,MAAM;gBACR,KAAK,YAAY;oBACf,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBACnD,MAAM;gBACR,KAAK,aAAa;oBAChB,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBACpD,MAAM;gBACR,KAAK,UAAU;oBACb,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBACjD,MAAM;gBACR,KAAK,iBAAiB;oBACpB,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBACxD,MAAM;gBACR,KAAK,YAAY;oBACf,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBACnD,MAAM;gBACR,KAAK,YAAY;oBACf,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBACnD,MAAM;gBACR,KAAK,YAAY;oBACf,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBACnD,MAAM;gBACR,KAAK,UAAU;oBACb,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBACjD,MAAM;gBACR,KAAK,mBAAmB;oBACtB,MAAM,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBAC1D,MAAM;gBACR,KAAK,qBAAqB;oBACxB,MAAM,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBAC5D,MAAM;gBACR,KAAK,SAAS;oBACZ,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBAChD,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;YAC7C,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,mBAAmB,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBAC3F;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * getTranslations MCP Tool
3
+ *
4
+ * Gets translation keys with full text content and status.
5
+ * Optimized for AI translation tasks that need to read or update translation text.
6
+ *
7
+ * USE THIS when you need actual translation text (to translate, review, or update).
8
+ * Use listKeys instead for browsing/exploring keys — it's faster and uses fewer tokens.
9
+ *
10
+ * SEARCH + FILTER:
11
+ * - search: Text to search for (in source text or specified languages)
12
+ * - languages: Which languages to search in AND return translations for
13
+ * - status: Filter by translation status ("missing", "draft", "approved", "all")
14
+ * - namespaces: Filter by namespace(s)
15
+ * - keys: Fetch specific keys by exact name
16
+ * - limit: Max keys to return (1–200, default 100)
17
+ *
18
+ * RESPONSE INCLUDES PAGINATION METADATA:
19
+ * - returned: number of keys in this response
20
+ * - total: total keys in DB matching your filters (before status filter)
21
+ * - hasMore: true when total > limit — use narrower filters to get specific keys
22
+ *
23
+ * EXAMPLES:
24
+ * - Find "login" in source: { project: "org/project", search: "login" }
25
+ * - Multi-term search: { project: "org/project", search: ["login", "signup", "forgot_password"] }
26
+ * - Find "Giriş" in Turkish: { project: "org/project", search: "Giriş", languages: ["tr"] }
27
+ * - Get all Turkish translations: { project: "org/project", languages: ["tr"] }
28
+ * - Get missing Turkish: { project: "org/project", languages: ["tr"], status: "missing" }
29
+ * - Get specific keys: { project: "org/project", keys: ["auth.login.title", "auth.login.button"] }
30
+ */
31
+ import type { Tool } from "../types/index.js";
32
+ export declare const getTranslations: Tool;
33
+ //# sourceMappingURL=getTranslations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTranslations.d.ts","sourceRoot":"","sources":["../../src/tools/getTranslations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAW9C,eAAO,MAAM,eAAe,EAAE,IAyF7B,CAAC"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * getTranslations MCP Tool
3
+ *
4
+ * Gets translation keys with full text content and status.
5
+ * Optimized for AI translation tasks that need to read or update translation text.
6
+ *
7
+ * USE THIS when you need actual translation text (to translate, review, or update).
8
+ * Use listKeys instead for browsing/exploring keys — it's faster and uses fewer tokens.
9
+ *
10
+ * SEARCH + FILTER:
11
+ * - search: Text to search for (in source text or specified languages)
12
+ * - languages: Which languages to search in AND return translations for
13
+ * - status: Filter by translation status ("missing", "draft", "approved", "all")
14
+ * - namespaces: Filter by namespace(s)
15
+ * - keys: Fetch specific keys by exact name
16
+ * - limit: Max keys to return (1–200, default 100)
17
+ *
18
+ * RESPONSE INCLUDES PAGINATION METADATA:
19
+ * - returned: number of keys in this response
20
+ * - total: total keys in DB matching your filters (before status filter)
21
+ * - hasMore: true when total > limit — use narrower filters to get specific keys
22
+ *
23
+ * EXAMPLES:
24
+ * - Find "login" in source: { project: "org/project", search: "login" }
25
+ * - Multi-term search: { project: "org/project", search: ["login", "signup", "forgot_password"] }
26
+ * - Find "Giriş" in Turkish: { project: "org/project", search: "Giriş", languages: ["tr"] }
27
+ * - Get all Turkish translations: { project: "org/project", languages: ["tr"] }
28
+ * - Get missing Turkish: { project: "org/project", languages: ["tr"], status: "missing" }
29
+ * - Get specific keys: { project: "org/project", keys: ["auth.login.title", "auth.login.button"] }
30
+ */
31
+ import { z } from "zod";
32
+ import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
33
+ const inputSchema = projectSchema.extend({
34
+ search: z.union([z.string(), z.array(z.string())]).optional(),
35
+ languages: z.array(z.string()).optional(),
36
+ namespaces: z.array(z.string()).optional(),
37
+ keys: z.array(z.string()).optional(),
38
+ status: z.enum(["missing", "draft", "approved", "all"]).optional(),
39
+ limit: z.number().min(1).max(200).optional(),
40
+ });
41
+ export const getTranslations = {
42
+ definition: {
43
+ name: "getTranslations",
44
+ description: `Get translation keys with full text content and status for AI translation tasks.
45
+
46
+ USE THIS when you need actual translation text (to translate, review, or update).
47
+ Use listKeys instead for browsing/exploring keys — it's faster and uses fewer tokens.
48
+
49
+ SEARCH + FILTER:
50
+ - search: Text to search for (in source text or specified languages)
51
+ - languages: Languages to search in AND return translations for
52
+ - status: Filter by translation status ("missing", "draft", "approved", "all")
53
+ - namespaces: Filter by namespace(s)
54
+ - keys: Fetch specific keys by exact name
55
+ - limit: Max keys (1–200, default 100)
56
+
57
+ RESPONSE METADATA:
58
+ - returned: keys in this response (after all filters)
59
+ - total: DB count before in-memory status filter
60
+ - hasMore: true when total > limit — narrow your filters to get specific results
61
+
62
+ EXAMPLES:
63
+ - Find "login" in source: { search: "login" }
64
+ - Multi-term search: { search: ["login", "signup", "forgot_password"] }
65
+ - Find "Giriş" in Turkish: { search: "Giriş", languages: ["tr"] }
66
+ - Get all Turkish translations: { languages: ["tr"] }
67
+ - Get missing Turkish translations: { languages: ["tr"], status: "missing" }
68
+ - Get specific keys: { keys: ["auth.login.title", "auth.login.button"] }
69
+
70
+ Response includes namespaceDetails: a map of namespace metadata (name, keyCount, description, context with team/domain/aiPrompt/tags) for all namespaces present in the result.`,
71
+ inputSchema: {
72
+ type: "object",
73
+ properties: {
74
+ ...projectInputProperty,
75
+ search: {
76
+ type: "string",
77
+ description: "Text to search for in source text or translations (case-insensitive). Single string or array of strings for multi-term search (OR matching). If languages is specified, searches in those languages; otherwise searches source text.",
78
+ },
79
+ languages: {
80
+ type: "array",
81
+ items: { type: "string" },
82
+ description: "Language codes to search in and return (e.g., ['tr', 'de']). If omitted with search, searches source text. If omitted without search, returns all languages.",
83
+ },
84
+ namespaces: {
85
+ type: "array",
86
+ items: { type: "string" },
87
+ description: "Filter by namespace(s)",
88
+ },
89
+ keys: {
90
+ type: "array",
91
+ items: { type: "string" },
92
+ description: "Fetch specific keys by exact name",
93
+ },
94
+ status: {
95
+ type: "string",
96
+ enum: ["missing", "draft", "approved", "all"],
97
+ description: "Filter by translation status (default: all). Requires languages to be specified for filtering.",
98
+ },
99
+ limit: {
100
+ type: "number",
101
+ description: "Max keys to return (1–200, default 100). Check 'returned', 'total', 'hasMore' in response to understand result size. Use narrower filters to get specific keys.",
102
+ },
103
+ },
104
+ required: ["project"],
105
+ },
106
+ },
107
+ execute: (client, args) => executeTool(args, inputSchema, async (input, { workspaceId, projectSlug }) => {
108
+ const result = await client.mcp.getAllTranslations.query({
109
+ orgSlug: workspaceId,
110
+ projectSlug,
111
+ search: input.search,
112
+ languages: input.languages,
113
+ namespaces: input.namespaces,
114
+ keys: input.keys,
115
+ status: input.status,
116
+ limit: input.limit,
117
+ });
118
+ return success(result);
119
+ }),
120
+ };
121
+ //# sourceMappingURL=getTranslations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTranslations.js","sourceRoot":"","sources":["../../src/tools/getTranslations.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,31 @@
1
1
  /**
2
2
  * listKeys MCP Tool
3
3
  *
4
- * Lists ALL translation keys with source text and translations.
5
- * Supports full-text search in source and target languages.
4
+ * Lists translation keys in compact format — optimized for browsing and exploration.
5
+ * Returns paginated results with namespace deduplication to minimize token usage.
6
+ *
7
+ * USE THIS for:
8
+ * - Browsing keys (finding what exists)
9
+ * - Checking which keys are missing a translation
10
+ * - Getting key IDs for use with updateKeys
11
+ *
12
+ * Use getTranslations instead when you need actual translation text.
13
+ *
14
+ * RESPONSE FORMAT:
15
+ * - tot: total matching keys (before pagination)
16
+ * - ret: keys returned in this page
17
+ * - has_more: true → increment page to fetch next batch
18
+ * - nss: namespace lookup table — each key's ns field is an index into this array
19
+ * - k: key items (k=name, ns=namespace index, id=uuid, src=source text, tl=translated langs)
20
+ * - note: optional warning (e.g., large project hint to use filters)
6
21
  *
7
22
  * EXAMPLES:
8
- * - Find "login" in source: { search: "login" }
9
- * - Multi-term search: { search: ["login", "signup", "forgot"] }
10
- * - Find "Giriş" in Turkish: { search: "Giriş", languages: ["tr"] }
11
- * - Get Turkish translations: { languages: ["tr"] }
12
- * - Get specific keys: { keys: ["auth.login.title", "auth.login.button"] }
23
+ * - List first page: { project: "org/project" }
24
+ * - Find "login" keys: { project: "org/project", search: "login" }
25
+ * - Find keys missing Turkish: { project: "org/project", missingLanguage: "tr" }
26
+ * - Filter by namespace: { project: "org/project", namespaces: ["auth", "common"] }
27
+ * - Next page: { project: "org/project", page: 2 }
28
+ * - Larger page: { project: "org/project", limit: 50 }
13
29
  */
14
30
  import type { Tool } from "../types/index.js";
15
31
  export declare const listKeys: Tool;
@@ -1 +1 @@
1
- {"version":3,"file":"listKeys.d.ts","sourceRoot":"","sources":["../../src/tools/listKeys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAU9C,eAAO,MAAM,QAAQ,EAAE,IA4EtB,CAAC"}
1
+ {"version":3,"file":"listKeys.d.ts","sourceRoot":"","sources":["../../src/tools/listKeys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAU9C,eAAO,MAAM,QAAQ,EAAE,IA8EtB,CAAC"}
@@ -1,89 +1,108 @@
1
1
  /**
2
2
  * listKeys MCP Tool
3
3
  *
4
- * Lists ALL translation keys with source text and translations.
5
- * Supports full-text search in source and target languages.
4
+ * Lists translation keys in compact format — optimized for browsing and exploration.
5
+ * Returns paginated results with namespace deduplication to minimize token usage.
6
+ *
7
+ * USE THIS for:
8
+ * - Browsing keys (finding what exists)
9
+ * - Checking which keys are missing a translation
10
+ * - Getting key IDs for use with updateKeys
11
+ *
12
+ * Use getTranslations instead when you need actual translation text.
13
+ *
14
+ * RESPONSE FORMAT:
15
+ * - tot: total matching keys (before pagination)
16
+ * - ret: keys returned in this page
17
+ * - has_more: true → increment page to fetch next batch
18
+ * - nss: namespace lookup table — each key's ns field is an index into this array
19
+ * - k: key items (k=name, ns=namespace index, id=uuid, src=source text, tl=translated langs)
20
+ * - note: optional warning (e.g., large project hint to use filters)
6
21
  *
7
22
  * EXAMPLES:
8
- * - Find "login" in source: { search: "login" }
9
- * - Multi-term search: { search: ["login", "signup", "forgot"] }
10
- * - Find "Giriş" in Turkish: { search: "Giriş", languages: ["tr"] }
11
- * - Get Turkish translations: { languages: ["tr"] }
12
- * - Get specific keys: { keys: ["auth.login.title", "auth.login.button"] }
23
+ * - List first page: { project: "org/project" }
24
+ * - Find "login" keys: { project: "org/project", search: "login" }
25
+ * - Find keys missing Turkish: { project: "org/project", missingLanguage: "tr" }
26
+ * - Filter by namespace: { project: "org/project", namespaces: ["auth", "common"] }
27
+ * - Next page: { project: "org/project", page: 2 }
28
+ * - Larger page: { project: "org/project", limit: 50 }
13
29
  */
14
30
  import { z } from "zod";
15
31
  import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
16
32
  const inputSchema = projectSchema.extend({
17
33
  search: z.union([z.string(), z.array(z.string())]).optional(),
18
- languages: z.array(z.string()).optional(),
19
34
  namespaces: z.array(z.string()).optional(),
20
- keys: z.array(z.string()).optional(),
21
- status: z.enum(["missing", "draft", "approved", "all"]).optional(),
35
+ missingLanguage: z.string().optional(),
36
+ page: z.number().int().min(1).default(1),
37
+ limit: z.number().int().min(1).max(100).default(20),
22
38
  });
23
39
  export const listKeys = {
24
40
  definition: {
25
41
  name: "listKeys",
26
- description: `Get all translation keys with their id, source text, and translations.
42
+ description: `Browse translation keys in compact format. Optimized for exploration — use getTranslations when you need actual translation text.
43
+
44
+ PAGINATION:
45
+ - Response includes tot (total), ret (returned), has_more — increment page for next batch
46
+ - Default: page=1, limit=20
27
47
 
28
- SEARCH + FILTER:
29
- - search: Text to search for (in source text or specified languages)
30
- - languages: Languages to search in AND return translations for
48
+ NAMESPACE DEDUPLICATION:
49
+ - nss field is the namespace lookup table (array of strings)
50
+ - Each key's ns field is an index into nss (saves tokens on repeated namespaces)
51
+ - e.g. nss=["auth","common"] and ns=0 means the key belongs to "auth"
52
+
53
+ NOTE FIELD:
54
+ - Large projects (>500 keys) return a note field warning to use filters
55
+ - Apply search, namespaces, or missingLanguage to narrow results
31
56
 
32
57
  FILTER OPTIONS:
58
+ - search: Key name search (partial match, single string or array for OR)
33
59
  - namespaces: Filter by namespace(s)
34
- - keys: Fetch specific keys by exact name
35
- - status: Filter by translation status ("missing", "draft", "approved", "all")
60
+ - missingLanguage: Find keys with no translation for this language (e.g., "tr")
61
+ - fields: Which fields to include per key (default: id, sourceText, translatedLanguages)
36
62
 
37
63
  EXAMPLES:
38
- - Find "login" in source: { search: "login" }
39
- - Multi-term search: { search: ["login", "signup", "forgot_password"] }
40
- - Find "Giriş" in Turkish: { search: "Giriş", languages: ["tr"] }
41
- - Get all Turkish translations: { languages: ["tr"] }
42
- - Get missing Turkish translations: { languages: ["tr"], status: "missing" }
43
- - Get specific keys: { keys: ["auth.login.title", "auth.login.button"] }
44
-
45
- Response includes namespaceDetails: a map of namespace metadata (name, keyCount, description, context with team/domain/aiPrompt/tags) for all namespaces present in the result.`,
64
+ - Browse all keys: { project: "org/project" }
65
+ - Find "login" keys: { project: "org/project", search: "login" }
66
+ - Missing Turkish: { project: "org/project", missingLanguage: "tr" }
67
+ - Next page: { project: "org/project", page: 2, limit: 50 }`,
46
68
  inputSchema: {
47
69
  type: "object",
48
70
  properties: {
49
71
  ...projectInputProperty,
50
72
  search: {
51
73
  type: "string",
52
- description: "Text to search for in source text or translations (case-insensitive). Single string or array of strings for multi-term search (OR matching). If languages is specified, searches in those languages; otherwise searches source text.",
53
- },
54
- languages: {
55
- type: "array",
56
- items: { type: "string" },
57
- description: "Language codes to search in and return (e.g., ['tr', 'de']). If omitted with search, searches source text. If omitted without search, returns all languages.",
74
+ description: "Search keys by name (partial match, case-insensitive). Single string or array for multi-term OR search.",
58
75
  },
59
76
  namespaces: {
60
77
  type: "array",
61
78
  items: { type: "string" },
62
- description: "Filter by namespace(s)",
79
+ description: "Filter to keys in these namespace(s)",
63
80
  },
64
- keys: {
65
- type: "array",
66
- items: { type: "string" },
67
- description: "Fetch specific keys by exact name",
68
- },
69
- status: {
81
+ missingLanguage: {
70
82
  type: "string",
71
- enum: ["missing", "draft", "approved", "all"],
72
- description: "Filter by translation status (default: all). Requires languages to be specified for filtering.",
83
+ description: "Return only keys missing a translation for this language code (e.g., 'tr', 'de')",
84
+ },
85
+ page: {
86
+ type: "number",
87
+ description: "Page number (1-indexed, default: 1)",
88
+ },
89
+ limit: {
90
+ type: "number",
91
+ description: "Keys per page (default: 20, max: 100)",
73
92
  },
74
93
  },
75
94
  required: ["project"],
76
95
  },
77
96
  },
78
97
  execute: (client, args) => executeTool(args, inputSchema, async (input, { workspaceId, projectSlug }) => {
79
- const result = await client.mcp.getAllTranslations.query({
98
+ const result = await client.mcp.listKeys.query({
80
99
  orgSlug: workspaceId,
81
100
  projectSlug,
82
101
  search: input.search,
83
- languages: input.languages,
84
102
  namespaces: input.namespaces,
85
- keys: input.keys,
86
- status: input.status,
103
+ missingLanguage: input.missingLanguage,
104
+ page: input.page,
105
+ limit: input.limit,
87
106
  });
88
107
  return success(result);
89
108
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"listKeys.js","sourceRoot":"","sources":["../../src/tools/listKeys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC7D,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC1C,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;CACnE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAS;IAC5B,UAAU,EAAE;QACV,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE;;;;;;;;;;;;;;;;;;;gLAmB+J;QAC5K,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,sOAAsO;iBACzO;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EACT,8JAA8J;iBACjK;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EAAE,wBAAwB;iBACtC;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EAAE,mCAAmC;iBACjD;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;oBAC7C,WAAW,EACT,gGAAgG;iBACnG;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CACT,IAAI,EACJ,WAAW,EACX,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC;YACvD,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,CACF;CACJ,CAAC"}
1
+ {"version":3,"file":"listKeys.js","sourceRoot":"","sources":["../../src/tools/listKeys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC7D,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC1C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACpD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAS;IAC5B,UAAU,EAAE;QACV,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;4DAyB2C;QACxD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,yGAAyG;iBAC5G;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EAAE,sCAAsC;iBACpD;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,kFAAkF;iBACrF;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qCAAqC;iBACnD;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uCAAuC;iBACrD;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CACT,IAAI,EACJ,WAAW,EACX,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC7C,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,CACF;CACJ,CAAC"}
@@ -2,8 +2,10 @@
2
2
  * updateKeys MCP Tool
3
3
  *
4
4
  * Updates source text and/or target translations for one or more keys.
5
- * Uses compact schema matching the API: t=[{k, ns, l, t, s, st, nc}].
6
- * Each entry = one language update for one key. s=true for source text.
5
+ * Uses UUID-based schema matching the API: t=[{id, l, t, s, st}].
6
+ *
7
+ * IMPORTANT: id (UUID) is required — get it from getAllTranslations or listKeys response.
8
+ * The old k/ns/nc format has been removed. Use id exclusively.
7
9
  */
8
10
  import type { Tool } from "../types/index.js";
9
11
  export declare const updateKeys: Tool;
@@ -1 +1 @@
1
- {"version":3,"file":"updateKeys.d.ts","sourceRoot":"","sources":["../../src/tools/updateKeys.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAwB9C,eAAO,MAAM,UAAU,EAAE,IAuDxB,CAAC"}
1
+ {"version":3,"file":"updateKeys.d.ts","sourceRoot":"","sources":["../../src/tools/updateKeys.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAc9C,eAAO,MAAM,UAAU,EAAE,IA2CxB,CAAC"}
@@ -2,33 +2,26 @@
2
2
  * updateKeys MCP Tool
3
3
  *
4
4
  * Updates source text and/or target translations for one or more keys.
5
- * Uses compact schema matching the API: t=[{k, ns, l, t, s, st, nc}].
6
- * Each entry = one language update for one key. s=true for source text.
5
+ * Uses UUID-based schema matching the API: t=[{id, l, t, s, st}].
6
+ *
7
+ * IMPORTANT: id (UUID) is required — get it from getAllTranslations or listKeys response.
8
+ * The old k/ns/nc format has been removed. Use id exclusively.
7
9
  */
8
10
  import { z } from "zod";
9
11
  import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
10
- const namespaceContextSchema = z.object({
11
- description: z.string().optional(),
12
- team: z.string().optional(),
13
- domain: z.string().optional(),
14
- aiPrompt: z.string().optional(),
15
- tags: z.array(z.string()).optional(),
16
- }).optional();
17
12
  const inputSchema = projectSchema.extend({
18
13
  t: z.array(z.object({
19
- k: z.string().describe("Key name (e.g., 'submit_button')"),
20
- ns: z.string().optional().describe("Namespace (default: 'default')"),
21
- l: z.string().describe("Language code (e.g., 'en', 'tr', 'de')"),
14
+ id: z.string().describe("Translation key UUID — get from getAllTranslations or listKeys response (id field)"),
15
+ l: z.string().describe("Language code (e.g., 'tr', 'de')"),
22
16
  t: z.string().describe("Translation text"),
23
17
  s: z.boolean().optional().describe("true if updating source language text"),
24
18
  st: z.string().optional().describe("Translation status (e.g., 'approved')"),
25
- nc: namespaceContextSchema,
26
19
  })).min(1),
27
20
  });
28
21
  export const updateKeys = {
29
22
  definition: {
30
23
  name: "updateKeys",
31
- description: "Update translations. Each entry updates ONE language for ONE key. Set s=true to update the source text.",
24
+ description: "Update translations for existing keys. REQUIRED: Get key UUIDs first via getAllTranslations or listKeys (id field). Each entry updates ONE language for ONE key. Set s=true to update the source text.",
32
25
  inputSchema: {
33
26
  type: "object",
34
27
  properties: {
@@ -39,25 +32,13 @@ export const updateKeys = {
39
32
  items: {
40
33
  type: "object",
41
34
  properties: {
42
- k: { type: "string", description: "Key name (e.g., 'submit_button')" },
43
- ns: { type: "string", description: "Namespace (default: 'default')" },
44
- l: { type: "string", description: "Language code (e.g., 'en', 'tr', 'de')" },
35
+ id: { type: "string", description: "Translation key UUID (required). Get from getAllTranslations or listKeys response." },
36
+ l: { type: "string", description: "Language code (e.g., 'tr', 'de')" },
45
37
  t: { type: "string", description: "Translation text" },
46
38
  s: { type: "boolean", description: "true if updating source language text" },
47
39
  st: { type: "string", description: "Translation status (e.g., 'approved')" },
48
- nc: {
49
- type: "object",
50
- description: "Optional context for the namespace (description, team, domain, aiPrompt, tags). Applied once per namespace.",
51
- properties: {
52
- description: { type: "string", description: "What this namespace is about" },
53
- team: { type: "string", description: "Team owning this namespace" },
54
- domain: { type: "string", description: "Business domain (e.g., 'auth', 'billing')" },
55
- aiPrompt: { type: "string", description: "Custom AI prompt for translations in this namespace" },
56
- tags: { type: "array", items: { type: "string" }, description: "Tags for categorization" },
57
- },
58
- },
59
40
  },
60
- required: ["k", "l", "t"],
41
+ required: ["id", "l", "t"],
61
42
  },
62
43
  },
63
44
  },
@@ -1 +1 @@
1
- {"version":3,"file":"updateKeys.js","sourceRoot":"","sources":["../../src/tools/updateKeys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"updateKeys.js","sourceRoot":"","sources":["../../src/tools/updateKeys.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,CAAC,EAAE,CAAC,CAAC,KAAK,CACR,CAAC,CAAC,MAAM,CAAC;QACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oFAAoF,CAAC;QAC7G,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QAC1D,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC1C,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QAC3E,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;KAC5E,CAAC,CACH,CAAC,GAAG,CAAC,CAAC,CAAC;CACT,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,wMAAwM;QAC1M,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,CAAC,EAAE;oBACD,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,4EAA4E;oBACzF,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oFAAoF,EAAE;4BACzH,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;4BACtE,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;4BACtD,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,uCAAuC,EAAE;4BAC5E,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;yBAC7E;wBACD,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;qBAC3B;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC;SAC3B;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CACT,IAAI,EACJ,WAAW,EACX,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;YAChD,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,CAAC,EAAE,KAAK,CAAC,CAAC;SACX,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,CACF;CACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@better-i18n/mcp",
3
- "version": "0.11.1",
3
+ "version": "0.13.0",
4
4
  "description": "MCP server for Better i18n translation management - AI-powered translation workflow for Cursor, Claude, and other AI assistants",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -50,7 +50,7 @@
50
50
  "prepublishOnly": "npm run clean && npm run build && chmod +x ./dist/index.js ./dist/http.js"
51
51
  },
52
52
  "dependencies": {
53
- "@better-i18n/mcp-types": "^0.7.0",
53
+ "@better-i18n/mcp-types": "^0.9.1",
54
54
  "@modelcontextprotocol/sdk": "^1.25.3",
55
55
  "@trpc/client": "^11.0.0",
56
56
  "zod": "^3.25.1"