get_product
Retrieve a product by its ID. Optionally include additional attributes for detailed information.
Instructions
Get a product by ID. GET /products/{productId}. Optional: include.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | Product ID (required) | |
| include | No | Comma-separated attributes to include |
Implementation Reference
- src/tools/products/getProduct.ts:25-37 (handler)The handler function that parses args (productId, include) via Zod schema, then calls productService.getProduct().
async function handler(client: Client, args: Record<string, unknown> | undefined) { const parsed = schema.safeParse(args); if (!parsed.success) { return errorResult(parsed.error.errors.map((e) => e.message).join("; ")); } const { productId, include } = parsed.data; return handleToolCall(() => productService.getProduct(client, productId, { include })); } export const getProductTool: Tool = { definition, handler, }; - Zod validation schema for get_product tool: requires productId (string), optional include (string).
const schema = z.object({ productId: z.string().min(1, "productId is required"), include: z.string().optional(), }); - MCP tool definition/inputSchema for 'get_product' with name, description, and JSON Schema input definition.
const definition = { name: "get_product", description: "Get a product by ID. GET /products/{productId}. Optional: include.", inputSchema: { type: "object" as const, properties: { productId: { type: "string", description: "Product ID (required)" }, include: { type: "string", description: "Comma-separated attributes to include" }, }, required: ["productId"], }, }; - src/tools/products/index.ts:16-19 (registration)Registration of getProductTool in the product tools array returned by registerProductTools().
export function registerProductTools(): Tool[] { return [ listProductsTool, getProductTool, - The actual API call: GET /products/{productId} with optional include query parameter.
export async function getProduct( client: Client, productId: string, params?: { include?: string } ): Promise<unknown> { const search = new URLSearchParams(); if (params?.include) search.append("include", params.include); const q = search.toString(); return client.get<unknown>(`/products/${productId}${q ? `?${q}` : ""}`); }