@better-i18n/mcp 0.0.1 → 0.0.2

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.
Files changed (41) hide show
  1. package/README.md +15 -14
  2. package/dist/index.js +24 -21
  3. package/dist/index.js.map +1 -1
  4. package/dist/tools/addLanguage.d.ts +8 -0
  5. package/dist/tools/addLanguage.d.ts.map +1 -0
  6. package/dist/tools/addLanguage.js +42 -0
  7. package/dist/tools/addLanguage.js.map +1 -0
  8. package/dist/tools/createKeys.d.ts +8 -0
  9. package/dist/tools/createKeys.d.ts.map +1 -0
  10. package/dist/tools/{bulkCreateKeys.js → createKeys.js} +17 -15
  11. package/dist/tools/createKeys.js.map +1 -0
  12. package/dist/tools/getProject.d.ts +8 -0
  13. package/dist/tools/getProject.d.ts.map +1 -0
  14. package/dist/tools/{getProjectInfo.js → getProject.js} +7 -7
  15. package/dist/tools/getProject.js.map +1 -0
  16. package/dist/tools/listProjects.d.ts +9 -0
  17. package/dist/tools/listProjects.d.ts.map +1 -0
  18. package/dist/tools/listProjects.js +36 -0
  19. package/dist/tools/listProjects.js.map +1 -0
  20. package/dist/tools/updateKeys.d.ts +8 -0
  21. package/dist/tools/updateKeys.d.ts.map +1 -0
  22. package/dist/tools/{bulkUpdateTranslations.js → updateKeys.js} +27 -17
  23. package/dist/tools/updateKeys.js.map +1 -0
  24. package/package.json +1 -1
  25. package/dist/tools/bulkCreateKeys.d.ts +0 -8
  26. package/dist/tools/bulkCreateKeys.d.ts.map +0 -1
  27. package/dist/tools/bulkCreateKeys.js.map +0 -1
  28. package/dist/tools/bulkUpdateTranslations.d.ts +0 -8
  29. package/dist/tools/bulkUpdateTranslations.d.ts.map +0 -1
  30. package/dist/tools/bulkUpdateTranslations.js.map +0 -1
  31. package/dist/tools/createTranslationKey.d.ts +0 -8
  32. package/dist/tools/createTranslationKey.d.ts.map +0 -1
  33. package/dist/tools/createTranslationKey.js +0 -55
  34. package/dist/tools/createTranslationKey.js.map +0 -1
  35. package/dist/tools/getProjectInfo.d.ts +0 -8
  36. package/dist/tools/getProjectInfo.d.ts.map +0 -1
  37. package/dist/tools/getProjectInfo.js.map +0 -1
  38. package/dist/tools/updateTranslation.d.ts +0 -8
  39. package/dist/tools/updateTranslation.d.ts.map +0 -1
  40. package/dist/tools/updateTranslation.js +0 -61
  41. package/dist/tools/updateTranslation.js.map +0 -1
package/README.md CHANGED
@@ -35,7 +35,7 @@ npm install -g @better-i18n/mcp
35
35
  import { createI18n } from "@better-i18n/next";
36
36
 
37
37
  export const i18n = createI18n({
38
- project: "your-org/your-project", // Format: "org-slug/project-slug"
38
+ project: "your-org/your-project", // Format: "org-slug/project-slug"
39
39
  defaultLocale: "en",
40
40
  });
41
41
  ```
@@ -64,14 +64,15 @@ Add to `~/.cursor/mcp.json`:
64
64
 
65
65
  All tools require a `project` parameter in `org/project` format (e.g., `aliosman-co/personal`).
66
66
 
67
- | Tool | Description |
68
- |------|-------------|
69
- | `getProjectInfo` | Get project overview: namespaces, languages, key count |
70
- | `listKeys` | List all translation keys with filtering |
71
- | `createTranslationKey` | Create a single key with source text |
72
- | `bulkCreateKeys` | Create multiple keys at once (more efficient) |
73
- | `updateTranslation` | Update a single translation |
74
- | `bulkUpdateTranslations` | Update multiple translations at once (more efficient) |
67
+ | Tool | Description |
68
+ | -------------------- | ------------------------------------------------------------------------ |
69
+ | `listProjects` | List all accessible projects |
70
+ | `getProject` | Get project overview: namespaces, languages, coverage stats |
71
+ | `getAllTranslations` | Fetch all keys with translations (no pagination) |
72
+ | `listKeys` | List translation keys with filtering and pagination |
73
+ | `createKeys` | Create one or more keys (Compact: `n`, `ns`, `v`, `t`) |
74
+ | `updateKeys` | Update one or more translations (Compact: `k`, `n`, `ns`, `l`, `t`, `s`) |
75
+ | `addLanguage` | Add a new target language to the project |
75
76
 
76
77
  ## Example Prompts
77
78
 
@@ -94,11 +95,11 @@ Ask your AI assistant:
94
95
 
95
96
  ## Environment Variables
96
97
 
97
- | Variable | Required | Description |
98
- |----------|----------|-------------|
99
- | `BETTER_I18N_API_KEY` | Yes | Your API key |
100
- | `BETTER_I18N_API_URL` | No | API URL (default: dash.better-i18n.com) |
101
- | `BETTER_I18N_DEBUG` | No | Enable verbose logging |
98
+ | Variable | Required | Description |
99
+ | --------------------- | -------- | --------------------------------------- |
100
+ | `BETTER_I18N_API_KEY` | Yes | Your API key |
101
+ | `BETTER_I18N_API_URL` | No | API URL (default: dash.better-i18n.com) |
102
+ | `BETTER_I18N_DEBUG` | No | Enable verbose logging |
102
103
 
103
104
  ## License
104
105
 
package/dist/index.js CHANGED
@@ -10,12 +10,12 @@ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
10
10
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
11
11
  import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
12
12
  import { createBetterI18nClient } from "./client.js";
13
- import { bulkCreateKeys } from "./tools/bulkCreateKeys.js";
14
- import { bulkUpdateTranslations } from "./tools/bulkUpdateTranslations.js";
15
- import { createTranslationKey } from "./tools/createTranslationKey.js";
16
- import { getProjectInfo } from "./tools/getProjectInfo.js";
13
+ import { addLanguage } from "./tools/addLanguage.js";
14
+ import { createKeys } from "./tools/createKeys.js";
15
+ import { getProject } from "./tools/getProject.js";
17
16
  import { listKeys } from "./tools/listKeys.js";
18
- import { updateTranslation } from "./tools/updateTranslation.js";
17
+ import { listProjects } from "./tools/listProjects.js";
18
+ import { updateKeys } from "./tools/updateKeys.js";
19
19
  class BetterI18nServer {
20
20
  server;
21
21
  apiClient;
@@ -56,12 +56,12 @@ class BetterI18nServer {
56
56
  // List available tools
57
57
  this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
58
58
  tools: [
59
- getProjectInfo.definition,
59
+ listProjects.definition,
60
+ getProject.definition,
61
+ addLanguage.definition,
60
62
  listKeys.definition,
61
- createTranslationKey.definition,
62
- bulkCreateKeys.definition,
63
- updateTranslation.definition,
64
- bulkUpdateTranslations.definition,
63
+ createKeys.definition,
64
+ updateKeys.definition,
65
65
  ],
66
66
  }));
67
67
  // Execute tools
@@ -70,23 +70,23 @@ class BetterI18nServer {
70
70
  try {
71
71
  let result;
72
72
  switch (name) {
73
- case "getProjectInfo":
74
- result = await getProjectInfo.execute(this.apiClient, args);
73
+ case "listProjects":
74
+ result = await listProjects.execute(this.apiClient, args);
75
75
  break;
76
- case "createTranslationKey":
77
- result = await createTranslationKey.execute(this.apiClient, args);
76
+ case "getProject":
77
+ result = await getProject.execute(this.apiClient, args);
78
78
  break;
79
- case "updateTranslation":
80
- result = await updateTranslation.execute(this.apiClient, args);
79
+ case "addLanguage":
80
+ result = await addLanguage.execute(this.apiClient, args);
81
81
  break;
82
82
  case "listKeys":
83
83
  result = await listKeys.execute(this.apiClient, args);
84
84
  break;
85
- case "bulkCreateKeys":
86
- result = await bulkCreateKeys.execute(this.apiClient, args);
85
+ case "createKeys":
86
+ result = await createKeys.execute(this.apiClient, args);
87
87
  break;
88
- case "bulkUpdateTranslations":
89
- result = await bulkUpdateTranslations.execute(this.apiClient, args);
88
+ case "updateKeys":
89
+ result = await updateKeys.execute(this.apiClient, args);
90
90
  break;
91
91
  default:
92
92
  throw new Error(`Unknown tool: ${name}`);
@@ -114,7 +114,10 @@ class BetterI18nServer {
114
114
  }
115
115
  // Start the server
116
116
  const server = new BetterI18nServer();
117
- server.init().then(() => server.run()).catch((error) => {
117
+ server
118
+ .init()
119
+ .then(() => server.run())
120
+ .catch((error) => {
118
121
  console.error("[better-i18n] Fatal error:", error);
119
122
  process.exit(1);
120
123
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * addLanguage MCP Tool
3
+ *
4
+ * Adds a new target language to the project.
5
+ */
6
+ import type { Tool } from "../types/index.js";
7
+ export declare const addLanguage: Tool;
8
+ //# sourceMappingURL=addLanguage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addLanguage.d.ts","sourceRoot":"","sources":["../../src/tools/addLanguage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAM9C,eAAO,MAAM,WAAW,EAAE,IAkCzB,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * addLanguage MCP Tool
3
+ *
4
+ * Adds a new target language to the project.
5
+ */
6
+ import { z } from "zod";
7
+ import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
8
+ const inputSchema = projectSchema.extend({
9
+ languageCode: z.string().min(2).max(5),
10
+ });
11
+ export const addLanguage = {
12
+ definition: {
13
+ name: "addLanguage",
14
+ description: "Add a new target language to the project for translation. Use ISO 639-1 codes (e.g., 'fr' for French, 'ja' for Japanese).",
15
+ inputSchema: {
16
+ type: "object",
17
+ properties: {
18
+ ...projectInputProperty,
19
+ languageCode: {
20
+ type: "string",
21
+ description: "ISO 639-1 language code (e.g., 'fr', 'ja', 'de', 'es')",
22
+ },
23
+ },
24
+ required: ["project", "languageCode"],
25
+ },
26
+ },
27
+ execute: (client, args) => executeTool(args, inputSchema, async (input, { workspaceId, projectSlug }) => {
28
+ const result = await client.mcp.addLanguage.mutate({
29
+ orgSlug: workspaceId,
30
+ projectSlug,
31
+ languageCode: input.languageCode,
32
+ });
33
+ return success({
34
+ success: result.success,
35
+ message: result.message,
36
+ languageCode: input.languageCode,
37
+ project: input.project,
38
+ alreadyExists: result.alreadyExists,
39
+ });
40
+ }),
41
+ };
42
+ //# sourceMappingURL=addLanguage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addLanguage.js","sourceRoot":"","sources":["../../src/tools/addLanguage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;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,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAS;IAC/B,UAAU,EAAE;QACV,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,2HAA2H;QAC7H,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wDAAwD;iBACtE;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC;SACtC;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC3E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;YACjD,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,YAAY,EAAE,KAAK,CAAC,YAAY;SACjC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;YACb,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,aAAa,EAAE,MAAM,CAAC,aAAa;SACpC,CAAC,CAAC;IACL,CAAC,CAAC;CACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * createKeys MCP Tool
3
+ *
4
+ * Creates one or more translation keys with source text and optional translations.
5
+ */
6
+ import type { Tool } from "../types/index.js";
7
+ export declare const createKeys: Tool;
8
+ //# sourceMappingURL=createKeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createKeys.d.ts","sourceRoot":"","sources":["../../src/tools/createKeys.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAa9C,eAAO,MAAM,UAAU,EAAE,IAuExB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
- * bulkCreateKeys MCP Tool
2
+ * createKeys MCP Tool
3
3
  *
4
- * Creates multiple translation keys with all translations in a single request.
4
+ * Creates one or more translation keys with source text and optional translations.
5
5
  */
6
6
  import { z } from "zod";
7
7
  import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
@@ -13,10 +13,10 @@ const inputSchema = projectSchema.extend({
13
13
  translations: z.record(z.string(), z.string()).optional(),
14
14
  })),
15
15
  });
16
- export const bulkCreateKeys = {
16
+ export const createKeys = {
17
17
  definition: {
18
- name: "bulkCreateKeys",
19
- description: "Create multiple translation keys in a SINGLE efficient request. ALWAYS use this instead of calling createTranslationKey multiple times when adding 2 or more keys.",
18
+ name: "createKeys",
19
+ description: "Create one or more translation keys with source text. Accepts an array - use for single or multiple keys.",
20
20
  inputSchema: {
21
21
  type: "object",
22
22
  properties: {
@@ -37,11 +37,11 @@ export const bulkCreateKeys = {
37
37
  },
38
38
  sourceText: {
39
39
  type: "string",
40
- description: "English source text",
40
+ description: "Source text in default language (usually English)",
41
41
  },
42
42
  translations: {
43
43
  type: "object",
44
- description: "Translations for other languages. Keys are language codes, values are translated text.",
44
+ description: "Translations for target languages. Keys are language codes, values are translated text.",
45
45
  },
46
46
  },
47
47
  required: ["key", "sourceText"],
@@ -52,16 +52,18 @@ export const bulkCreateKeys = {
52
52
  },
53
53
  },
54
54
  execute: (client, args) => executeTool(args, inputSchema, async (input, { workspaceId, projectSlug }) => {
55
- const formattedKeys = input.keys.map((k) => ({
56
- key: k.key,
57
- namespace: k.namespace || "default",
58
- sourceText: k.sourceText,
59
- translations: k.translations,
55
+ // Map to compact format expected by API
56
+ // k: array of keys { n, ns, v, t }
57
+ const compactKeys = input.keys.map((k) => ({
58
+ n: k.key,
59
+ ns: k.namespace || "default",
60
+ v: k.sourceText,
61
+ t: k.translations,
60
62
  }));
61
- const result = await client.mcp.bulkCreateKeys.mutate({
63
+ const result = await client.mcp.createKeys.mutate({
62
64
  orgSlug: workspaceId,
63
65
  projectSlug,
64
- keys: formattedKeys,
66
+ k: compactKeys,
65
67
  });
66
68
  return success({
67
69
  success: true,
@@ -71,4 +73,4 @@ export const bulkCreateKeys = {
71
73
  });
72
74
  }),
73
75
  };
74
- //# sourceMappingURL=bulkCreateKeys.js.map
76
+ //# sourceMappingURL=createKeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createKeys.js","sourceRoot":"","sources":["../../src/tools/createKeys.ts"],"names":[],"mappings":"AAAA;;;;GAIG;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,IAAI,EAAE,CAAC,CAAC,KAAK,CACX,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KAC1D,CAAC,CACH;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,2GAA2G;QAC7G,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,IAAI,EAAE;oBACJ,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,qCAAqC;oBAClD,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE;gCACH,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,sEAAsE;6BACzE;4BACD,SAAS,EAAE;gCACT,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,+CAA+C;6BAC7D;4BACD,UAAU,EAAE;gCACV,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,mDAAmD;6BACtD;4BACD,YAAY,EAAE;gCACZ,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,yFAAyF;6BAC5F;yBACF;wBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC;qBAChC;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;SAC9B;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,wCAAwC;QACxC,mCAAmC;QACnC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzC,CAAC,EAAE,CAAC,CAAC,GAAG;YACR,EAAE,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS;YAC5B,CAAC,EAAE,CAAC,CAAC,UAAU;YACf,CAAC,EAAE,CAAC,CAAC,YAAY;SAClB,CAAC,CAAC,CAAC;QAEJ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;YAChD,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,CAAC,EAAE,WAAW;SACf,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;YACb,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC,CAAC;IACL,CAAC,CACF;CACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * getProject MCP Tool
3
+ *
4
+ * Gets project information including namespaces, languages, key count, and coverage stats.
5
+ */
6
+ import type { Tool } from "../types/index.js";
7
+ export declare const getProject: Tool;
8
+ //# sourceMappingURL=getProject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getProject.d.ts","sourceRoot":"","sources":["../../src/tools/getProject.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAI9C,eAAO,MAAM,UAAU,EAAE,IAsBxB,CAAC"}
@@ -1,14 +1,14 @@
1
1
  /**
2
- * getProjectInfo MCP Tool
2
+ * getProject MCP Tool
3
3
  *
4
- * Gets project information including available namespaces, languages, and stats.
4
+ * Gets project information including namespaces, languages, key count, and coverage stats.
5
5
  */
6
6
  import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
7
7
  const inputSchema = projectSchema;
8
- export const getProjectInfo = {
8
+ export const getProject = {
9
9
  definition: {
10
- name: "getProjectInfo",
11
- description: "Get project information including available namespaces, languages, and key count. Use this to understand the project structure before adding or updating translations.",
10
+ name: "getProject",
11
+ description: "Get project details including namespaces, languages, key count, and translation coverage. Use this after listProjects to understand a specific project's structure.",
12
12
  inputSchema: {
13
13
  type: "object",
14
14
  properties: {
@@ -18,11 +18,11 @@ export const getProjectInfo = {
18
18
  },
19
19
  },
20
20
  execute: (client, args) => executeTool(args, inputSchema, async (input, { workspaceId, projectSlug }) => {
21
- const result = await client.mcp.getProjectInfo.query({
21
+ const result = await client.mcp.getProject.query({
22
22
  orgSlug: workspaceId,
23
23
  projectSlug,
24
24
  });
25
25
  return success(result);
26
26
  }),
27
27
  };
28
- //# sourceMappingURL=getProjectInfo.js.map
28
+ //# sourceMappingURL=getProject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getProject.js","sourceRoot":"","sources":["../../src/tools/getProject.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC;AAElC,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,qKAAqK;QACvK,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;aACxB;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC3E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;YAC/C,OAAO,EAAE,WAAW;YACpB,WAAW;SACZ,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC;CACL,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * listProjects MCP Tool
3
+ *
4
+ * Lists all projects the user has access to across all organizations.
5
+ * Use this tool FIRST to discover available projects before other operations.
6
+ */
7
+ import type { Tool } from "../types/index.js";
8
+ export declare const listProjects: Tool;
9
+ //# sourceMappingURL=listProjects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listProjects.d.ts","sourceRoot":"","sources":["../../src/tools/listProjects.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,eAAO,MAAM,YAAY,EAAE,IA4B1B,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * listProjects MCP Tool
3
+ *
4
+ * Lists all projects the user has access to across all organizations.
5
+ * Use this tool FIRST to discover available projects before other operations.
6
+ */
7
+ import { success } from "../base-tool.js";
8
+ export const listProjects = {
9
+ definition: {
10
+ name: "listProjects",
11
+ description: "List all projects you have access to. Call this first to discover available projects before using other tools.",
12
+ inputSchema: {
13
+ type: "object",
14
+ properties: {},
15
+ required: [],
16
+ },
17
+ },
18
+ execute: async (client, _args) => {
19
+ try {
20
+ const result = await client.mcp.listProjects.query();
21
+ return success(result);
22
+ }
23
+ catch (err) {
24
+ return {
25
+ content: [
26
+ {
27
+ type: "text",
28
+ text: `Error listing projects: ${err instanceof Error ? err.message : String(err)}`,
29
+ },
30
+ ],
31
+ isError: true,
32
+ };
33
+ }
34
+ },
35
+ };
36
+ //# sourceMappingURL=listProjects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listProjects.js","sourceRoot":"","sources":["../../src/tools/listProjects.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG1C,MAAM,CAAC,MAAM,YAAY,GAAS;IAChC,UAAU,EAAE;QACV,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,gHAAgH;QAClH,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb;KACF;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YACrD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBACpF;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * updateKeys MCP Tool
3
+ *
4
+ * Updates translations for one or more keys in a single request.
5
+ */
6
+ import type { Tool } from "../types/index.js";
7
+ export declare const updateKeys: Tool;
8
+ //# sourceMappingURL=updateKeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateKeys.d.ts","sourceRoot":"","sources":["../../src/tools/updateKeys.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAY9C,eAAO,MAAM,UAAU,EAAE,IAyExB,CAAC"}
@@ -1,26 +1,26 @@
1
1
  /**
2
- * bulkUpdateTranslations MCP Tool
2
+ * updateKeys MCP Tool
3
3
  *
4
- * Updates translations for multiple keys in a single request.
4
+ * Updates translations for one or more keys in a single request.
5
5
  */
6
6
  import { z } from "zod";
7
7
  import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
8
8
  const inputSchema = projectSchema.extend({
9
- updates: z.array(z.object({
9
+ keys: z.array(z.object({
10
10
  key: z.string(),
11
11
  namespace: z.string().optional(),
12
12
  translations: z.record(z.string(), z.string()),
13
13
  })),
14
14
  });
15
- export const bulkUpdateTranslations = {
15
+ export const updateKeys = {
16
16
  definition: {
17
- name: "bulkUpdateTranslations",
18
- description: "Update translations for multiple keys in a SINGLE efficient request. ALWAYS use this instead of calling updateTranslation multiple times when updating 2 or more translations.",
17
+ name: "updateKeys",
18
+ description: "Update translations for one or more keys. Accepts an array - use for single or multiple updates.",
19
19
  inputSchema: {
20
20
  type: "object",
21
21
  properties: {
22
22
  ...projectInputProperty,
23
- updates: {
23
+ keys: {
24
24
  type: "array",
25
25
  description: "Array of translation updates",
26
26
  items: {
@@ -36,26 +36,36 @@ export const bulkUpdateTranslations = {
36
36
  },
37
37
  translations: {
38
38
  type: "object",
39
- description: "Translations for target languages. Keys are language codes, values are translated text.",
39
+ description: "Translations to update. Keys are language codes, values are translated text. Include source language to update sourceText.",
40
40
  },
41
41
  },
42
42
  required: ["key", "translations"],
43
43
  },
44
44
  },
45
45
  },
46
- required: ["project", "updates"],
46
+ required: ["project", "keys"],
47
47
  },
48
48
  },
49
49
  execute: (client, args) => executeTool(args, inputSchema, async (input, { workspaceId, projectSlug }) => {
50
- const formattedUpdates = input.updates.map((u) => ({
51
- key: u.key,
52
- namespace: u.namespace || "default",
53
- translations: u.translations,
54
- }));
55
- const result = await client.mcp.bulkUpdateTranslations.mutate({
50
+ // Flatten and map to compact format expected by API
51
+ // t: array of updates { k, n, ns, l, t, s }
52
+ const compactUpdates = [];
53
+ for (const k of input.keys) {
54
+ for (const [lang, text] of Object.entries(k.translations)) {
55
+ compactUpdates.push({
56
+ k: k.key, // Identifier
57
+ n: k.key, // Name
58
+ ns: k.namespace || "default",
59
+ l: lang,
60
+ t: text,
61
+ s: false, // Let API detect if this is source language via code match
62
+ });
63
+ }
64
+ }
65
+ const result = await client.mcp.updateKeys.mutate({
56
66
  orgSlug: workspaceId,
57
67
  projectSlug,
58
- updates: formattedUpdates,
68
+ t: compactUpdates,
59
69
  });
60
70
  return success({
61
71
  success: true,
@@ -65,4 +75,4 @@ export const bulkUpdateTranslations = {
65
75
  });
66
76
  }),
67
77
  };
68
- //# sourceMappingURL=bulkUpdateTranslations.js.map
78
+ //# sourceMappingURL=updateKeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateKeys.js","sourceRoot":"","sources":["../../src/tools/updateKeys.ts"],"names":[],"mappings":"AAAA;;;;GAIG;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,IAAI,EAAE,CAAC,CAAC,KAAK,CACX,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;KAC/C,CAAC,CACH;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,kGAAkG;QACpG,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,IAAI,EAAE;oBACJ,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,8BAA8B;oBAC3C,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE;gCACH,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,sEAAsE;6BACzE;4BACD,SAAS,EAAE;gCACT,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,+CAA+C;6BAC7D;4BACD,YAAY,EAAE;gCACZ,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,4HAA4H;6BAC/H;yBACF;wBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC;qBAClC;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;SAC9B;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,oDAAoD;QACpD,4CAA4C;QAC5C,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC1D,cAAc,CAAC,IAAI,CAAC;oBAClB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,aAAa;oBACvB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO;oBACjB,EAAE,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS;oBAC5B,CAAC,EAAE,IAAI;oBACP,CAAC,EAAE,IAAI;oBACP,CAAC,EAAE,KAAK,EAAE,2DAA2D;iBACtE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;YAChD,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,CAAC,EAAE,cAAc;SAClB,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;YACb,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;IACL,CAAC,CACF;CACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@better-i18n/mcp",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
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",
@@ -1,8 +0,0 @@
1
- /**
2
- * bulkCreateKeys MCP Tool
3
- *
4
- * Creates multiple translation keys with all translations in a single request.
5
- */
6
- import type { Tool } from "../types/index.js";
7
- export declare const bulkCreateKeys: Tool;
8
- //# sourceMappingURL=bulkCreateKeys.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bulkCreateKeys.d.ts","sourceRoot":"","sources":["../../src/tools/bulkCreateKeys.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAa9C,eAAO,MAAM,cAAc,EAAE,IA8D5B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bulkCreateKeys.js","sourceRoot":"","sources":["../../src/tools/bulkCreateKeys.ts"],"names":[],"mappings":"AAAA;;;;GAIG;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,IAAI,EAAE,CAAC,CAAC,KAAK,CACX,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KAC1D,CAAC,CACH;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,UAAU,EAAE;QACV,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,oKAAoK;QACtK,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,IAAI,EAAE;oBACJ,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,qCAAqC;oBAClD,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE;gCACH,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,sEAAsE;6BACpF;4BACD,SAAS,EAAE;gCACT,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,+CAA+C;6BAC7D;4BACD,UAAU,EAAE;gCACV,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,qBAAqB;6BACnC;4BACD,YAAY,EAAE;gCACZ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,wFAAwF;6BACtG;yBACF;wBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC;qBAChC;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;SAC9B;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC3E,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3C,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS;YACnC,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,YAAY,EAAE,CAAC,CAAC,YAAY;SAC7B,CAAC,CAAC,CAAC;QAEJ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC;YACpD,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,IAAI,EAAE,aAAa;SACpB,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;YACb,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC,CAAC;IACL,CAAC,CAAC;CACL,CAAC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * bulkUpdateTranslations MCP Tool
3
- *
4
- * Updates translations for multiple keys in a single request.
5
- */
6
- import type { Tool } from "../types/index.js";
7
- export declare const bulkUpdateTranslations: Tool;
8
- //# sourceMappingURL=bulkUpdateTranslations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bulkUpdateTranslations.d.ts","sourceRoot":"","sources":["../../src/tools/bulkUpdateTranslations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAY9C,eAAO,MAAM,sBAAsB,EAAE,IAyDpC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bulkUpdateTranslations.js","sourceRoot":"","sources":["../../src/tools/bulkUpdateTranslations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;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,OAAO,EAAE,CAAC,CAAC,KAAK,CACd,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;KAC/C,CAAC,CACH;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAS;IAC1C,UAAU,EAAE;QACV,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,gLAAgL;QAClL,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,OAAO,EAAE;oBACP,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,8BAA8B;oBAC3C,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE;gCACH,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,sEAAsE;6BACpF;4BACD,SAAS,EAAE;gCACT,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,+CAA+C;6BAC7D;4BACD,YAAY,EAAE;gCACZ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,yFAAyF;6BACvG;yBACF;wBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC;qBAClC;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;SACjC;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC3E,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjD,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS;YACnC,YAAY,EAAE,CAAC,CAAC,YAAY;SAC7B,CAAC,CAAC,CAAC;QAEJ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC;YAC5D,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,OAAO,EAAE,gBAAgB;SAC1B,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;YACb,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;IACL,CAAC,CAAC;CACL,CAAC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * createTranslationKey MCP Tool
3
- *
4
- * Creates a new translation key with source text in the default language.
5
- */
6
- import type { Tool } from "../types/index.js";
7
- export declare const createTranslationKey: Tool;
8
- //# sourceMappingURL=createTranslationKey.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createTranslationKey.d.ts","sourceRoot":"","sources":["../../src/tools/createTranslationKey.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAQ9C,eAAO,MAAM,oBAAoB,EAAE,IA6ClC,CAAC"}
@@ -1,55 +0,0 @@
1
- /**
2
- * createTranslationKey MCP Tool
3
- *
4
- * Creates a new translation key with source text in the default language.
5
- */
6
- import { z } from "zod";
7
- import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
8
- const inputSchema = projectSchema.extend({
9
- key: z.string().min(1),
10
- sourceValue: z.string().min(1),
11
- namespace: z.string().optional(),
12
- });
13
- export const createTranslationKey = {
14
- definition: {
15
- name: "createTranslationKey",
16
- description: "Create a SINGLE translation key with source text. IMPORTANT: If you need to create 2 or more keys, use bulkCreateKeys instead.",
17
- inputSchema: {
18
- type: "object",
19
- properties: {
20
- ...projectInputProperty,
21
- key: {
22
- type: "string",
23
- description: "Translation key WITHOUT namespace prefix when namespace is provided.",
24
- },
25
- sourceValue: {
26
- type: "string",
27
- description: "Source text in default language (usually English)",
28
- },
29
- namespace: {
30
- type: "string",
31
- description: "Namespace for the key. Defaults to 'default'.",
32
- },
33
- },
34
- required: ["project", "key", "sourceValue"],
35
- },
36
- },
37
- execute: (client, args) => executeTool(args, inputSchema, async (input, { workspaceId, projectSlug }) => {
38
- const result = await client.mcp.createKey.mutate({
39
- orgSlug: workspaceId,
40
- projectSlug,
41
- key: input.key,
42
- namespace: input.namespace || "default",
43
- sourceText: input.sourceValue,
44
- });
45
- return success({
46
- success: true,
47
- keyId: result.keyId,
48
- key: input.key,
49
- namespace: input.namespace || "default",
50
- sourceText: input.sourceValue,
51
- project: input.project,
52
- });
53
- }),
54
- };
55
- //# sourceMappingURL=createTranslationKey.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createTranslationKey.js","sourceRoot":"","sources":["../../src/tools/createTranslationKey.ts"],"names":[],"mappings":"AAAA;;;;GAIG;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,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAS;IACxC,UAAU,EAAE;QACV,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EACT,gIAAgI;QAClI,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sEAAsE;iBACpF;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,mDAAmD;iBACjE;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+CAA+C;iBAC7D;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,aAAa,CAAC;SAC5C;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC3E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;YAC/C,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,SAAS;YACvC,UAAU,EAAE,KAAK,CAAC,WAAW;SAC9B,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;YACb,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,SAAS;YACvC,UAAU,EAAE,KAAK,CAAC,WAAW;YAC7B,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;IACL,CAAC,CAAC;CACL,CAAC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * getProjectInfo MCP Tool
3
- *
4
- * Gets project information including available namespaces, languages, and stats.
5
- */
6
- import type { Tool } from "../types/index.js";
7
- export declare const getProjectInfo: Tool;
8
- //# sourceMappingURL=getProjectInfo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getProjectInfo.d.ts","sourceRoot":"","sources":["../../src/tools/getProjectInfo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAI9C,eAAO,MAAM,cAAc,EAAE,IAsB5B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getProjectInfo.js","sourceRoot":"","sources":["../../src/tools/getProjectInfo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC;AAElC,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,UAAU,EAAE;QACV,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,wKAAwK;QAC1K,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;aACxB;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC3E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC;YACnD,OAAO,EAAE,WAAW;YACpB,WAAW;SACZ,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC;CACL,CAAC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * updateTranslation MCP Tool
3
- *
4
- * Updates or creates a translation for a specific language.
5
- */
6
- import type { Tool } from "../types/index.js";
7
- export declare const updateTranslation: Tool;
8
- //# sourceMappingURL=updateTranslation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"updateTranslation.d.ts","sourceRoot":"","sources":["../../src/tools/updateTranslation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAS9C,eAAO,MAAM,iBAAiB,EAAE,IAkD/B,CAAC"}
@@ -1,61 +0,0 @@
1
- /**
2
- * updateTranslation MCP Tool
3
- *
4
- * Updates or creates a translation for a specific language.
5
- */
6
- import { z } from "zod";
7
- import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
8
- const inputSchema = projectSchema.extend({
9
- key: z.string().min(1),
10
- languageCode: z.string().min(2).max(10),
11
- value: z.string(),
12
- namespace: z.string().optional(),
13
- });
14
- export const updateTranslation = {
15
- definition: {
16
- name: "updateTranslation",
17
- description: "Update or create a SINGLE translation for a specific language. IMPORTANT: If you need to update 2 or more translations, use bulkUpdateTranslations instead.",
18
- inputSchema: {
19
- type: "object",
20
- properties: {
21
- ...projectInputProperty,
22
- key: {
23
- type: "string",
24
- description: "Translation key WITHOUT namespace prefix when namespace is provided.",
25
- },
26
- languageCode: {
27
- type: "string",
28
- description: "Language code (e.g., 'en', 'tr', 'de', 'fr')",
29
- },
30
- value: {
31
- type: "string",
32
- description: "Translation text",
33
- },
34
- namespace: {
35
- type: "string",
36
- description: "Namespace for the key. Defaults to 'default'.",
37
- },
38
- },
39
- required: ["project", "key", "languageCode", "value"],
40
- },
41
- },
42
- execute: (client, args) => executeTool(args, inputSchema, async (input, { workspaceId, projectSlug }) => {
43
- await client.mcp.updateTranslation.mutate({
44
- orgSlug: workspaceId,
45
- projectSlug,
46
- key: input.key,
47
- namespace: input.namespace || "default",
48
- languageCode: input.languageCode,
49
- value: input.value,
50
- });
51
- return success({
52
- success: true,
53
- key: input.key,
54
- namespace: input.namespace || "default",
55
- languageCode: input.languageCode,
56
- value: input.value,
57
- project: input.project,
58
- });
59
- }),
60
- };
61
- //# sourceMappingURL=updateTranslation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"updateTranslation.js","sourceRoot":"","sources":["../../src/tools/updateTranslation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;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,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAS;IACrC,UAAU,EAAE;QACV,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,6JAA6J;QAC/J,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sEAAsE;iBACpF;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,8CAA8C;iBAC5D;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kBAAkB;iBAChC;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+CAA+C;iBAC7D;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,CAAC;SACtD;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC3E,MAAM,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC;YACxC,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,SAAS;YACvC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;YACb,OAAO,EAAE,IAAI;YACb,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,SAAS;YACvC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;IACL,CAAC,CAAC;CACL,CAAC"}