generate_product_schema
Create structured JSON-LD markup for products to enhance search visibility with pricing, availability, brand, and SKU details.
Instructions
Generate a Product JSON-LD schema with pricing, brand, availability, and other product details.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Product name | |
| description | No | Product description | |
| image | No | Product image URL | |
| brand | No | Brand name | |
| sku | No | Stock Keeping Unit identifier | |
| price | No | Price of the product | |
| priceCurrency | No | Currency code (e.g., USD, EUR, GBP) | |
| availability | No | Product availability status | |
| url | No | Product page URL |
Implementation Reference
- mcp-server/src/index.ts:592-600 (handler)The handler logic for the 'generate_product_schema' tool, which calls 'buildProductSchema'.
async (params) => { const schema = buildProductSchema(params); return { content: [ { type: "text" as const, text: JSON.stringify(schema, null, 2), }, ], - mcp-server/src/index.ts:214-248 (helper)The helper function that constructs the product schema object.
function buildProductSchema(params: { name: string; description?: string; image?: string; brand?: string; sku?: string; price?: string; priceCurrency?: string; availability?: string; url?: string; }): object { const fields: Record<string, unknown> = { name: params.name }; if (params.description) fields.description = params.description; if (params.image) fields.image = params.image; if (params.brand) { fields.brand = { "@type": "Brand", name: params.brand, }; } if (params.sku) fields.sku = params.sku; if (params.url) fields.url = params.url; if (params.price || params.priceCurrency || params.availability) { const offers: Record<string, unknown> = { "@type": "Offer", }; if (params.price) offers.price = params.price; if (params.priceCurrency) offers.priceCurrency = params.priceCurrency; if (params.availability) { offers.availability = `https://schema.org/${params.availability}`; } fields.offers = offers; } return buildJsonLd("Product", fields); } - mcp-server/src/index.ts:572-591 (registration)Registration of the 'generate_product_schema' tool, including its input schema definitions.
server.tool( "generate_product_schema", "Generate a Product JSON-LD schema with pricing, brand, availability, and other product details.", { name: z.string().describe("Product name"), description: z.string().optional().describe("Product description"), image: z.string().optional().describe("Product image URL"), brand: z.string().optional().describe("Brand name"), sku: z.string().optional().describe("Stock Keeping Unit identifier"), price: z.string().optional().describe("Price of the product"), priceCurrency: z .string() .optional() .describe("Currency code (e.g., USD, EUR, GBP)"), availability: z .enum(["InStock", "OutOfStock", "PreOrder", "Discontinued"]) .optional() .describe("Product availability status"), url: z.string().optional().describe("Product page URL"), },