update-metadata
Modify Chrome Web Store listing metadata including title, description, category, and URLs using the v1.1 API. Supports both standard fields and advanced custom metadata.
Instructions
Update the store listing metadata of a Chrome Web Store item (v1.1 API). Supports both common fields and raw metadata payload for advanced fields. Note: v1 API is deprecated and will be removed after Oct 15, 2026. Use update-metadata-ui as an alternative.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | No | Extension item ID (defaults to CWS_ITEM_ID env var) | |
| title | No | Store listing title | |
| summary | No | Store listing short summary | |
| description | No | Store listing description | |
| category | No | Category (e.g. 'productivity', 'developer_tools') | |
| defaultLocale | No | Default locale (e.g. 'ko', 'en') | |
| homepageUrl | No | Homepage URL | |
| supportUrl | No | Support URL | |
| metadata | No | Raw metadata object forwarded as-is to the v1 API. Useful for fields not exposed as first-class params. |
Implementation Reference
- src/index.ts:522-565 (handler)The handler function for the update-metadata tool, which builds a payload from input parameters and calls the API.
async ({ itemId, title, summary, description, category, defaultLocale, homepageUrl, supportUrl, metadata, }) => { try { const id = resolveItemId(itemId); const url = `${V1_BASE}/items/${id}`; const payload: Record<string, unknown> = { ...(metadata || {}), }; if (title !== undefined) payload.title = title; if (summary !== undefined) payload.summary = summary; if (description !== undefined) payload.description = description; if (category !== undefined) payload.category = category; if (defaultLocale !== undefined) payload.defaultLocale = defaultLocale; if (homepageUrl !== undefined) payload.homepageUrl = homepageUrl; if (supportUrl !== undefined) payload.supportUrl = supportUrl; if (Object.keys(payload).length === 0) { throw new Error("No metadata fields provided."); } const result = await apiCall(url, { method: "PUT", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload), }); return formatResponse(result); } catch (e: any) { return { content: [{ type: "text" as const, text: `Error: ${e.message}` }], isError: true, }; } }, - src/index.ts:482-521 (schema)The Zod schema defining the input parameters for the update-metadata tool.
{ itemId: z .string() .optional() .describe("Extension item ID (defaults to CWS_ITEM_ID env var)"), title: z .string() .optional() .describe("Store listing title"), summary: z .string() .optional() .describe("Store listing short summary"), description: z .string() .optional() .describe("Store listing description"), category: z .string() .optional() .describe("Category (e.g. 'productivity', 'developer_tools')"), defaultLocale: z .string() .optional() .describe("Default locale (e.g. 'ko', 'en')"), homepageUrl: z .string() .optional() .describe("Homepage URL"), supportUrl: z .string() .optional() .describe("Support URL"), metadata: z .record(z.unknown()) .optional() .describe( "Raw metadata object forwarded as-is to the v1 API. Useful for fields not exposed as first-class params." ), }, - src/index.ts:479-481 (registration)The registration of the update-metadata tool using the server.tool method.
server.tool( "update-metadata", "Update the store listing metadata of a Chrome Web Store item (v1.1 API). Supports both common fields and raw metadata payload for advanced fields. Note: v1 API is deprecated and will be removed after Oct 15, 2026. Use update-metadata-ui as an alternative.",