lokalise-mcp
Version:
The Lokalise MCP Server brings Lokalise's localization power to Claude and AI assistants—manage projects, keys, and translations by chat.
163 lines (148 loc) • 4.36 kB
text/typescript
import { z } from "zod";
/**
* Zod schema for the list keys tool arguments.
*/
export const ListKeysToolArgs = z
.object({
projectId: z.string().describe("Project ID to list keys for"),
limit: z
.number()
.optional()
.describe("Number of keys to return (1-5000, default: 100)"),
page: z
.number()
.optional()
.describe("Page number for pagination (default: 1)"),
includeTranslations: z
.boolean()
.optional()
.default(false)
.describe("Include translation data for each key"),
filterKeys: z
.array(z.string())
.optional()
.describe("Filter by specific key names"),
filterPlatforms: z
.array(z.enum(["ios", "android", "web", "other"]))
.optional()
.describe("Filter by platforms (ios, android, web, other)"),
})
.strict();
export type ListKeysToolArgsType = z.infer<typeof ListKeysToolArgs>;
/**
* Zod schema for the get key details tool arguments.
*/
export const GetKeyToolArgs = z
.object({
projectId: z.string().describe("Project ID containing the key"),
keyId: z.number().describe("Key ID to get details for"),
})
.strict();
export type GetKeyToolArgsType = z.infer<typeof GetKeyToolArgs>;
/**
* Zod schema for the create keys tool arguments.
*/
export const CreateKeysToolArgs = z
.object({
projectId: z.string().describe("Project ID to create keys in"),
keys: z
.array(
z.object({
key_name: z.string().describe("Name of the key"),
description: z
.string()
.optional()
.describe("Description of the translation key"),
platforms: z
.array(z.enum(["ios", "android", "web", "other"]))
.min(1)
.describe("Platforms this key belongs to (required)"),
translations: z
.array(
z.object({
language_iso: z.string().describe("Language ISO code"),
translation: z.string().describe("Translation text"),
}),
)
.optional()
.describe("Initial translations for the key"),
tags: z
.array(z.string())
.optional()
.describe("Tags to organize the key"),
}),
)
.min(1)
.max(1000)
.describe("Array of key objects to create (1-1000 keys)"),
})
.strict();
export type CreateKeysToolArgsType = z.infer<typeof CreateKeysToolArgs>;
/**
* Zod schema for the update key tool arguments.
*/
export const UpdateKeyToolArgs = z
.object({
projectId: z.string().describe("Project ID containing the key"),
keyId: z.number().describe("Key ID to update"),
keyData: z
.object({
description: z.string().optional().describe("New description"),
platforms: z
.array(z.enum(["ios", "android", "web", "other"]))
.optional()
.describe("New platforms for the key"),
tags: z.array(z.string()).optional().describe("New tags for the key"),
})
.describe("Key data to update"),
})
.strict();
export type UpdateKeyToolArgsType = z.infer<typeof UpdateKeyToolArgs>;
/**
* Zod schema for the delete key tool arguments.
*/
export const DeleteKeyToolArgs = z
.object({
projectId: z.string().describe("Project ID containing the key"),
keyId: z.number().describe("Key ID to delete"),
})
.strict();
export type DeleteKeyToolArgsType = z.infer<typeof DeleteKeyToolArgs>;
/**
* Zod schema for the bulk update keys tool arguments.
*/
export const BulkUpdateKeysToolArgs = z
.object({
projectId: z.string().describe("Project ID containing the keys"),
keys: z
.array(
z.object({
keyId: z.number().describe("Key ID to update"),
description: z.string().optional().describe("New description"),
platforms: z
.array(z.enum(["ios", "android", "web", "other"]))
.optional()
.describe("New platforms for the key"),
tags: z.array(z.string()).optional().describe("New tags for the key"),
}),
)
.min(1)
.max(1000)
.describe("Array of key updates (1-1000 keys)"),
})
.strict();
export type BulkUpdateKeysToolArgsType = z.infer<typeof BulkUpdateKeysToolArgs>;
/**
* Zod schema for the bulk delete keys tool arguments.
*/
export const BulkDeleteKeysToolArgs = z
.object({
projectId: z.string().describe("Project ID containing the keys"),
keyIds: z
.array(z.number())
.min(1)
.max(1000)
.describe("Array of key IDs to delete (1-1000 keys)"),
})
.strict();
export type BulkDeleteKeysToolArgsType = z.infer<typeof BulkDeleteKeysToolArgs>;