Product Catalog
Manage products, variants, and categories for your online store or any catalog-style listing. Prices in cents, category nesting, variant options, fulltext search.
Endpoints (19)
List products with optional filters. Returns products with category info. Paginated.
No input parameters required.
Get a single product with its variants, configurable properties (#822), and category in one response. The properties array carries the value ids used by resolve-variant.
No input parameters required.
Create a new product. Slug auto-generated from name if omitted. Price in cents (1999 = €19.99).
No input parameters required.
Update an existing product. Only send fields you want to change.
No input parameters required.
Delete a product and all its variants (CASCADE).
No input parameters required.
Fulltext search on product name, description, and SKU. Default: only active products.
No input parameters required.
Bulk import products: create new or update existing (matched by SKU). Up to 500 items per call. Each item must have sku; new products also need name + price_cents. Returns per-item results with status (created/updated/failed) and aggregate summary (by_action, by_error_type). AI clients MUST inspect result.summary — envelope.success: true does NOT mean all items succeeded; check result.failed and result.summary.by_error_type.
No input parameters required.
Bulk import variants: create new or update existing. Each item carries its own product_id (send all items with the same product_id to fill one product, or mix products in one call). Up to 500 items per call. Match key per item: sku (unique per website) if present, otherwise the options combination (combo_key) within the product. Each item needs sku OR options; new variants also need price_cents. Returns per-item results with status (created/updated/failed) and aggregate summary (by_action, by_error_type). AI clients MUST inspect result.summary, not envelope.success alone, for item-level outcomes.
No input parameters required.
List all categories with product counts. Returns tree structure by default.
No input parameters required.
Create a product category. Supports nesting via parent_id.
No input parameters required.
Update an existing category.
No input parameters required.
Delete a category. Products in this category get category_id = NULL.
No input parameters required.
Add a variant to a product. Auto-sets product type to variable.
No input parameters required.
Update a product variant.
No input parameters required.
Delete a variant. Auto-resets product type to simple if last variant.
No input parameters required.
Define or replace a product's configurable property schema (e.g. maat: [A4, A3], kleur: [zwart, RAL]). Declarative: send the full schema, the server diffs against existing rows. Returns properties and values WITH their ids — use those ids in create-variant (options) and on the storefront selector. Properties/values left out are removed (blocked if a value is still used by a variant).
No input parameters required.
Resolve a single variant (and its price) from a selected combination of property value ids. One indexed lookup on combo_key — does not fetch all variants. Returns the variant with price_cents, sku, stock_quantity. 404 if no variant matches the combination.
No input parameters required.
Progressive disclosure for the variant selector: given the value ids already chosen, returns per remaining property the value ids still reachable. Call with an empty or partial selection to drive dependent dropdowns.
No input parameters required.
Upload an image and link it to a product in one call. The product must exist — returns 404 if not found. Image is stored on the public CDN, slug is auto-generated from product slug + filename. The product images array is updated automatically (append or insert at position). Accepts base64 with optional data URI prefix (auto-stripped). Response includes the updated images array. Browser: adminCall("product-catalog", "upload-product-image", { product_id: 42, filename: "front.jpg", content: base64String }). Max 5MB per image. Allowed: jpg, jpeg, png, gif, webp, svg.
No input parameters required.
MCP Tool Names
When using this integration through an AI assistant (Claude, ChatGPT, Cursor, etc.), the endpoints are available as MCP tools:
| Endpoint | MCP Tool Name |
|---|---|
| list-products | product-catalog_list_products |
| get-product | product-catalog_get_product |
| create-product | product-catalog_create_product |
| update-product | product-catalog_update_product |
| delete-product | product-catalog_delete_product |
| search-products | product-catalog_search_products |
| bulk-upsert-products | product-catalog_bulk_upsert_products |
| bulk-upsert-variants | product-catalog_bulk_upsert_variants |
| list-categories | product-catalog_list_categories |
| create-category | product-catalog_create_category |
| update-category | product-catalog_update_category |
| delete-category | product-catalog_delete_category |
| create-variant | product-catalog_create_variant |
| update-variant | product-catalog_update_variant |
| delete-variant | product-catalog_delete_variant |
| set-product-properties | product-catalog_set_product_properties |
| resolve-variant | product-catalog_resolve_variant |
| list-variant-options | product-catalog_list_variant_options |
| upload-product-image | product-catalog_upload_product_image |
Website