Skip to main content
Glama

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
NameRequiredDescriptionDefault
nameYesProduct name
descriptionNoProduct description
imageNoProduct image URL
brandNoBrand name
skuNoStock Keeping Unit identifier
priceNoPrice of the product
priceCurrencyNoCurrency code (e.g., USD, EUR, GBP)
availabilityNoProduct availability status
urlNoProduct page URL

Implementation Reference

  • 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),
          },
        ],
  • 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);
    }
  • 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"),
      },

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sharozdawa/schema-gen'

If you have feedback or need assistance with the MCP directory API, please join our Discord server