Skip to content

Latest commit

 

History

History
551 lines (369 loc) · 31.9 KB

File metadata and controls

551 lines (369 loc) · 31.9 KB

Tools

Generated by pnpm docs:tools — do not edit by hand.

All search tools accept the same paging/filter shape and return { total, page, limit, items }. filter entries map 1:1 to Shopware Criteria filters: { type: "equals" | "contains" | "range" | "equalsAny", field, value } (for range, value is { gte?, gt?, lte?, lt? }). limit is capped at 50. Errors are returned as { error: { status, code, detail } }.

Tool Access Purpose
shop_info read Shop info
sales_channels_list read List sales channels
products_search read Search products
products_get read Get product
orders_search read Search orders
orders_get read Get order
order_documents_list read List order documents
document_download read Download document PDF
customers_search read Search customers
customers_get read Get customer
categories_list read List categories
promotions_list read List promotions
plugins_list read List plugins and apps
stock_get read Get stock
sales_report read Sales report
shop_audit read Shop health audit
entity_schema read Entity schema
entity_search read Search any entity
stock_set write (guarded) Set stock (guarded)
product_update write (guarded) Update product (guarded)
order_state_transition write (guarded) Transition order state (guarded)
order_delivery_transition write (guarded) Transition delivery state (guarded)
order_transaction_transition write (guarded) Transition payment state (guarded)
order_note write (guarded) Add internal order note (guarded)
order_document_create write (guarded) Create order document (guarded)
promotion_toggle write (guarded) Toggle promotion (guarded)

shop_info

Shop info

Read tool — always registered.

Get basic facts about the connected Shopware shop: version, edition (Community/Commercial), default currency and default language, plus whether write tools are enabled on this server. Use it first to orient yourself or to confirm the connection works. Returns one object.

Input

No parameters.

sales_channels_list

List sales channels

Read tool — always registered.

List sales channels (storefronts, headless APIs, marketplaces) with their type, domains and active flag. Use it to find the sales channel or domain an order or product belongs to. Returns { total, page, limit, items[] }.

Input

Parameter Type Required Description
term string no Full-text search term
filter ({ type: "equals" | "contains" | "range" | "equalsAny", field: string, value: string | number | boolean | (string | number)[] | { gte?: number | string, gt?: number | string, lte?: number | string, lt?: number | string } })[] no Criteria filters, combined with AND
sort ({ field: string, order?: "ASC" | "DESC" })[] no Sort order; defaults per tool
page integer no 1-based page. default 1, min 1
limit integer no Items per page, max 50 (default from SHOPWARE_MCP_DEFAULT_LIMIT). min 1, max 50
fields string[] no Extra raw entity fields to add to each item, e.g. ['customFields', 'ean']. Dot-paths allowed

products_search

Search products

Read tool — always registered.

Search products by free-text term and/or Criteria filters (e.g. active, stock, manufacturer.name, categories.id, productNumber). Returns compact product summaries with price, stock, availability, manufacturer, category names and cover image URL. By default only main products are returned; set includeVariants=true to also get variants. Use products_get for the full record of one product. Returns { total, page, limit, items[] }.

Input

Parameter Type Required Description
term string no Full-text search term
filter ({ type: "equals" | "contains" | "range" | "equalsAny", field: string, value: string | number | boolean | (string | number)[] | { gte?: number | string, gt?: number | string, lte?: number | string, lt?: number | string } })[] no Criteria filters, combined with AND
sort ({ field: string, order?: "ASC" | "DESC" })[] no Sort order; defaults per tool
page integer no 1-based page. default 1, min 1
limit integer no Items per page, max 50 (default from SHOPWARE_MCP_DEFAULT_LIMIT). min 1, max 50
fields string[] no Extra raw entity fields to add to each item, e.g. ['customFields', 'ean']. Dot-paths allowed
includeVariants boolean no Include variant products (children) in the results. Default: parents only. default false

products_get

Get product

Read tool — always registered.

Get one product by ID with everything an agent usually needs: description, price, stock, tax, manufacturer, categories, properties, media and all variants with their options, stock and price. Use products_search or stock_get to find the ID first. Returns one object.

Input

Parameter Type Required Description
productId string yes Product UUID (32 hex chars)
fields string[] no Extra raw entity fields to add to each item, e.g. ['customFields', 'ean']. Dot-paths allowed

orders_search

Search orders

Read tool — always registered.

Search orders by term (order number, customer name/email) and/or Criteria filters such as stateMachineState.technicalName (open, in_progress, completed, cancelled), transactions.stateMachineState.technicalName (paid, open, ...), orderDateTime ranges or orderCustomer.email. Newest first by default. Returns compact summaries with totals, order/payment/delivery state and customer. Use orders_get for line items and addresses. Returns { total, page, limit, items[] }.

Input

Parameter Type Required Description
term string no Full-text search term
filter ({ type: "equals" | "contains" | "range" | "equalsAny", field: string, value: string | number | boolean | (string | number)[] | { gte?: number | string, gt?: number | string, lte?: number | string, lt?: number | string } })[] no Criteria filters, combined with AND
sort ({ field: string, order?: "ASC" | "DESC" })[] no Sort order; defaults per tool
page integer no 1-based page. default 1, min 1
limit integer no Items per page, max 50 (default from SHOPWARE_MCP_DEFAULT_LIMIT). min 1, max 50
fields string[] no Extra raw entity fields to add to each item, e.g. ['customFields', 'ean']. Dot-paths allowed

orders_get

Get order

Read tool — always registered.

Get one order by ID or order number with line items, billing/shipping addresses, transactions (payment method and state) and deliveries (shipping method, tracking codes). Use it to answer detailed questions about a single order. Returns one object.

Input

Parameter Type Required Description
orderId string no Order UUID
orderNumber string no Order number as shown to customers
fields string[] no Extra raw entity fields to add to each item, e.g. ['customFields', 'ean']. Dot-paths allowed

order_documents_list

List order documents

Read tool — always registered.

List the documents generated for one order: invoices, delivery notes, credit notes and cancellation invoices, with document number, type, creation date and whether they were sent. Use document_download to fetch one as PDF. Returns { orderId, orderNumber, total, items[] }.

Input

Parameter Type Required Description
orderId string no Order UUID
orderNumber string no Order number as shown to customers

document_download

Download document PDF

Read tool — always registered.

Fetch one order document (invoice, delivery note, credit note, cancellation invoice) as a PDF. The file is returned to the host as an embedded resource next to the document's metadata; the model sees the metadata only. Get the documentId from order_documents_list. Read-only, nothing is marked as sent. Returns { id, type, documentNumber, orderNumber, mimeType, bytes, attachments[] }.

Input

Parameter Type Required Description
documentId string yes Document UUID from order_documents_list

customers_search

Search customers

Read tool — always registered.

Search customers by term (name, email, customer number) and/or Criteria filters such as email, active, guest, group.name or lastOrderDate ranges. Returns compact summaries with group, order count and last order date. Use customers_get for addresses and payment method. Returns { total, page, limit, items[] }.

Input

Parameter Type Required Description
term string no Full-text search term
filter ({ type: "equals" | "contains" | "range" | "equalsAny", field: string, value: string | number | boolean | (string | number)[] | { gte?: number | string, gt?: number | string, lte?: number | string, lt?: number | string } })[] no Criteria filters, combined with AND
sort ({ field: string, order?: "ASC" | "DESC" })[] no Sort order; defaults per tool
page integer no 1-based page. default 1, min 1
limit integer no Items per page, max 50 (default from SHOPWARE_MCP_DEFAULT_LIMIT). min 1, max 50
fields string[] no Extra raw entity fields to add to each item, e.g. ['customFields', 'ean']. Dot-paths allowed

customers_get

Get customer

Read tool — always registered.

Get one customer by ID, customer number or email, including all addresses (with default billing/shipping flags), customer group, default and last used payment method. Returns one object.

Input

Parameter Type Required Description
customerId string no Customer UUID
customerNumber string no
email string no
fields string[] no Extra raw entity fields to add to each item, e.g. ['customFields', 'ean']. Dot-paths allowed

categories_list

List categories

Read tool — always registered.

List categories as a flat list with parentId and level so you can rebuild the tree. Each item includes productCount (directly assigned products). Filter by parentId to get one level, or by level=1 for the roots. Returns { total, page, limit, items[] }.

Input

Parameter Type Required Description
term string no Full-text search term
filter ({ type: "equals" | "contains" | "range" | "equalsAny", field: string, value: string | number | boolean | (string | number)[] | { gte?: number | string, gt?: number | string, lte?: number | string, lt?: number | string } })[] no Criteria filters, combined with AND
sort ({ field: string, order?: "ASC" | "DESC" })[] no Sort order; defaults per tool
page integer no 1-based page. default 1, min 1
limit integer no Items per page, max 50 (default from SHOPWARE_MCP_DEFAULT_LIMIT). min 1, max 50
fields string[] no Extra raw entity fields to add to each item, e.g. ['customFields', 'ean']. Dot-paths allowed

promotions_list

List promotions

Read tool — always registered.

List promotions (discount campaigns) with code settings, validity window, redemption limits and a summary of their discounts (scope, type, value). Filter by active or code. Returns { total, page, limit, items[] }.

Input

Parameter Type Required Description
term string no Full-text search term
filter ({ type: "equals" | "contains" | "range" | "equalsAny", field: string, value: string | number | boolean | (string | number)[] | { gte?: number | string, gt?: number | string, lte?: number | string, lt?: number | string } })[] no Criteria filters, combined with AND
sort ({ field: string, order?: "ASC" | "DESC" })[] no Sort order; defaults per tool
page integer no 1-based page. default 1, min 1
limit integer no Items per page, max 50 (default from SHOPWARE_MCP_DEFAULT_LIMIT). min 1, max 50
fields string[] no Extra raw entity fields to add to each item, e.g. ['customFields', 'ean']. Dot-paths allowed

plugins_list

List plugins and apps

Read tool — always registered.

List installed plugins and apps with version, active/installed state and the available upgrade version (when the shop can reach the Shopware store). Use it to check whether an extension is installed or outdated. Returns { total, items[] }.

Input

Parameter Type Required Description
activeOnly boolean no Only return active extensions. default false
type "all" | "plugin" | "app" no Filter by extension type. default "all"

stock_get

Get stock

Read tool — always registered.

Get stock and available stock for one product by ID or product number, including every variant. Use it for 'how many X are left?' questions. Returns one object with a variants[] list (empty for simple products).

Input

Parameter Type Required Description
productId string no Product UUID
productNumber string no Product number, e.g. SW10001

sales_report

Sales report

Read tool — always registered.

Aggregate sales figures for a period straight from Shopware: order count, gross/net revenue, average order value, breakdowns by order/payment/delivery state, payment method, currency and sales channel, a revenue timeline (day/week/month) and the top-selling products. Use it for 'how did we do last month?' questions instead of paging through orders. compareWithPrevious adds the period of equal length before from and the change in orders and revenue. Defaults to the last 30 days, cancelled orders excluded. Returns one object.

Input

Parameter Type Required Description
from string no Start (inclusive), ISO date. Default: 30 days ago
to string no End (inclusive; a date without time covers the whole day), ISO date. Default: now
interval "day" | "week" | "month" no Timeline bucket size. default "day"
salesChannelId string no Restrict to one sales channel
excludeCancelled boolean no default true
topProducts integer no default 10, min 1, max 25
compareWithPrevious boolean no Also report the preceding period of equal length and the change. default false

shop_audit

Shop health audit

Read tool — always registered.

Run a one-shot health check across the shop and return prioritised findings: paid orders not shipped, old unpaid orders, shipped orders never completed, out-of-stock and low-stock products, products without cover image or delivery time, expired promotions still active, sales channels in maintenance mode, storefronts missing legal pages (imprint, terms, privacy, revocation, shipping) and extensions with pending updates. Each finding has a severity, total count, sample items and a hint. Also reports which EU duties (e-invoicing, accessibility, packaging reporting, AI labelling) appear to be covered by an installed extension, guessed from extension names. Start here when asked 'is everything okay with the shop?'. Read-only. Returns one object.

Input

Parameter Type Required Description
stuckOrderDays integer no default 7, min 1, max 365
lowStockThreshold integer no default 5, min 1, max 10000
maxItems integer no Sample items per finding. default 10, min 1, max 50
complianceChecks boolean no Include the EU duty coverage map. Set false outside the EU. default true

entity_schema

Entity schema

Read tool — always registered.

Describe a Shopware entity: its fields (name, type, flags such as required/translatable) and associations (name, relation, target entity), taken from the shop's own entity schema. Call it without entity to list all entity names. Use it to build precise filters for entity_search or the fields parameter of other tools. Returns one object.

Input

Parameter Type Required Description
entity string no Entity name; omit to list all entities

entity_search

Search any entity

Read tool — always registered.

Escape hatch for everything without a dedicated tool: search ANY Shopware entity (e.g. product_manufacturer, property_group, shipping_method, tax, country, newsletter_recipient, product_review, seo_url, cms_page, media) with the same Criteria filters, sort and paging. Use entity_schema first to see the available fields and associations. Credentials and internal fields are always stripped, long values such as stored files are truncated, and entities holding secrets (users, integrations, system config) are blocked. Prefer the dedicated tools when one exists. Returns { entity, total, page, limit, items[] } with raw (scrubbed) entity data.

Input

Parameter Type Required Description
entity string yes Entity name in snake_case or kebab-case, e.g. 'product_manufacturer'
term string no Full-text search term
filter ({ type: "equals" | "contains" | "range" | "equalsAny", field: string, value: string | number | boolean | (string | number)[] | { gte?: number | string, gt?: number | string, lte?: number | string, lt?: number | string } })[] no Criteria filters, combined with AND
sort ({ field: string, order?: "ASC" | "DESC" })[] no Sort order; defaults per tool
page integer no 1-based page. default 1, min 1
limit integer no Items per page, max 50 (default from SHOPWARE_MCP_DEFAULT_LIMIT). min 1, max 50
fields string[] no Only return these fields of the entity (Shopware includes)
associations string[] no Association names to load, e.g. ['country', 'salesChannels']

stock_set

Set stock (guarded)

Write tool — registered only with --allow-write / SHOPWARE_MCP_ALLOW_WRITE=true. dryRun defaults to true.

Set the absolute stock of one product or variant. dryRun=true (default) returns the exact PATCH request without changing anything; call again with dryRun=false to apply. Returns { dryRun, wouldSend } or { dryRun: false, result: }.

Input

Parameter Type Required Description
productId string yes Product or variant UUID
stock integer yes New absolute stock quantity. min 0
dryRun boolean no true (default): return the request that would be sent without writing anything. default true

product_update

Update product (guarded)

Write tool — registered only with --allow-write / SHOPWARE_MCP_ALLOW_WRITE=true. dryRun defaults to true.

Update basic fields of one product: name, description, active flag and/or price for one currency. Only these fields are supported. dryRun=true (default) returns the exact PATCH request without changing anything; call again with dryRun=false to apply. Returns { dryRun, wouldSend } or { dryRun: false, result: }.

Input

Parameter Type Required Description
productId string yes Product UUID
name string no
description string no
active boolean no
price { gross: number, net: number, currencyId?: string } no New price for one currency; other currencies' prices are preserved
dryRun boolean no true (default): return the request that would be sent without writing anything. default true

order_state_transition

Transition order state (guarded)

Write tool — registered only with --allow-write / SHOPWARE_MCP_ALLOW_WRITE=true. dryRun defaults to true.

Move an order through its state machine: process (open → in_progress), complete (in_progress → completed), cancel, or reopen (→ open). Shopware rejects transitions that are not allowed from the current state. dryRun=true (default) only returns the request that would be sent; call again with dryRun=false to apply. Returns { dryRun, wouldSend } or { dryRun: false, result: }.

Input

Parameter Type Required Description
orderId string yes Order UUID
transition "process" | "complete" | "cancel" | "reopen" yes
dryRun boolean no true (default): return the request that would be sent without writing anything. default true

order_delivery_transition

Transition delivery state (guarded)

Write tool — registered only with --allow-write / SHOPWARE_MCP_ALLOW_WRITE=true. dryRun defaults to true.

Move an order's delivery through its state machine: ship (open → shipped), ship_partially, retour, retour_partially, cancel or reopen, optionally replacing the tracking codes first. Acts on the order's newest delivery unless deliveryId is given. Use it for 'mark order 10042 as shipped with tracking code X'. Shopware rejects transitions that are not allowed from the current state. dryRun=true (default) returns every request that would be sent; call again with dryRun=false to apply. Returns { dryRun, wouldSend } or { dryRun: false, result: }.

Input

Parameter Type Required Description
orderId string yes Order UUID
transition "ship" | "ship_partially" | "retour" | "retour_partially" | "cancel" | "reopen" yes
trackingCodes string[] no Replace the delivery's tracking codes before the transition
deliveryId string no Delivery UUID; default: the order's newest delivery
dryRun boolean no true (default): return the request that would be sent without writing anything. default true

order_transaction_transition

Transition payment state (guarded)

Write tool — registered only with --allow-write / SHOPWARE_MCP_ALLOW_WRITE=true. dryRun defaults to true.

Move an order's payment (its newest transaction) through its state machine: paid, paid_partially, remind, process, authorize, cancel, fail, refund, refund_partially, chargeback, reopen or process_unconfirmed. Use it for 'mark order 10042 as paid' once a bank transfer arrived, or 'remind' for an overdue payment (the state changes; whether a mail goes out is decided by the shop's flows). It never moves money. Shopware rejects transitions that are not allowed from the current state. dryRun=true (default) returns the request that would be sent; call again with dryRun=false to apply. Returns { dryRun, wouldSend } or { dryRun: false, result: }.

Input

Parameter Type Required Description
orderId string yes Order UUID
transition "paid" | "paid_partially" | "remind" | "process" | "authorize" | "cancel" | "fail" | "refund" | "refund_partially" | "chargeback" | "reopen" | "process_unconfirmed" yes
transactionId string no Transaction UUID; default: the order's newest transaction
dryRun boolean no true (default): return the request that would be sent without writing anything. default true

order_note

Add internal order note (guarded)

Write tool — registered only with --allow-write / SHOPWARE_MCP_ALLOW_WRITE=true. dryRun defaults to true.

Write an internal note on an order (Shopware's internal comment, shown in the admin, never to the customer). append (default) adds a dated line below the existing note, replace overwrites it. Use it for 'note on 10042: customer called, ships Monday'. dryRun=true (default) returns the request that would be sent; call again with dryRun=false to apply. Returns { dryRun, wouldSend } or { dryRun: false, result: { orderId, orderNumber, internalComment } }.

Input

Parameter Type Required Description
orderId string yes Order UUID
note string yes
mode "append" | "replace" no default "append"
dryRun boolean no true (default): return the request that would be sent without writing anything. default true

order_document_create

Create order document (guarded)

Write tool — registered only with --allow-write / SHOPWARE_MCP_ALLOW_WRITE=true. dryRun defaults to true.

Generate a document for an order with Shopware's own document generator: invoice, delivery_note, credit_note, storno (cancellation invoice) or another installed document type by its technical name. Shopware assigns the document number from its number range and refuses what its rules forbid, for example a storno without an invoice. Nothing is sent to the customer. dryRun=true (default) returns the request that would be sent; call again with dryRun=false to apply. Returns { dryRun, wouldSend } or { dryRun: false, result: }.

Input

Parameter Type Required Description
orderId string yes Order UUID
type string yes invoice, delivery_note, credit_note, storno, or another type's technical name
comment string no Printed on the document
dryRun boolean no true (default): return the request that would be sent without writing anything. default true

promotion_toggle

Toggle promotion (guarded)

Write tool — registered only with --allow-write / SHOPWARE_MCP_ALLOW_WRITE=true. dryRun defaults to true.

Activate or deactivate one promotion. dryRun=true (default) returns the exact PATCH request without changing anything; call again with dryRun=false to apply. Returns { dryRun, wouldSend } or { dryRun: false, result: }.

Input

Parameter Type Required Description
promotionId string yes Promotion UUID
active boolean yes true to activate, false to deactivate
dryRun boolean no true (default): return the request that would be sent without writing anything. default true

Plugin-aware tools

These tools are not part of the core set. The server looks up which extensions are installed and active, and registers the matching tools on top. A shop without the extension never sees them, and detection can be switched off with --no-extensions. Support for another vendor's extensions is a pull request against src/extensions/.

Merqo

Source: https://github.com/bnymnDev/merqo

Tool Requires Purpose
merqo_health MerqoHub Merqo compliance and health status
merqo_einvoice_inbox MerqoVault Merqo incoming e-invoices
merqo_returns_search MerqoReturns Merqo returns
merqo_abandoned_carts MerqoRescue Merqo abandoned carts

merqo_health

Registered when installed and active: MerqoHub.

Read the Merqo Hub status page: compliance traffic lights (e-invoicing out and in, packaging reporting, accessibility statement, AI labelling, review transparency) and operational health (disabled resilience guards, overdue scheduled tasks, message queue depth, admin two-factor coverage). Each entry is ok, warn, critical or neutral, where neutral means the area is not covered by an installed plugin. Use it to answer 'is the shop compliant and healthy?' in one call. Read-only. Returns one object.

Parameter Type Required Description
status ("ok" | "warn" | "critical" | "neutral")[] no Only return checks with these statuses, e.g. ['warn','critical']

merqo_einvoice_inbox

Registered when installed and active: MerqoVault.

Search incoming supplier e-invoices archived by Merqo Vault, with their EN 16931 validation verdict (valid, warning, error), issuing party, invoice number, date and gross total. Use it for 'which incoming invoices failed validation?'. The archived original file is never returned. Returns { total, page, limit, items[] }.

Parameter Type Required Description
term string no Full-text search term
filter ({ type: "equals" | "contains" | "range" | "equalsAny", field: string, value: string | number | boolean | (string | number)[] | { gte?: number | string, gt?: number | string, lte?: number | string, lt?: number | string } })[] no Criteria filters, combined with AND
sort ({ field: string, order?: "ASC" | "DESC" })[] no Sort order; defaults per tool
page integer no 1-based page. default 1, min 1
limit integer no Items per page, max 50 (default from SHOPWARE_MCP_DEFAULT_LIMIT). min 1, max 50
fields string[] no Extra raw entity fields to add to each item, e.g. ['customFields', 'ean']. Dot-paths allowed
verdict "valid" | "warning" | "error" no Only invoices with this validation verdict

merqo_returns_search

Registered when installed and active: MerqoReturns.

Search customer returns filed through the Merqo Returns self-service portal, with status, requested and refunded dates, refund total, tracking number and the returned line items. Use it for 'which returns are still open?' or 'what was refunded last month?'. Returns { total, page, limit, items[] }.

Parameter Type Required Description
term string no Full-text search term
filter ({ type: "equals" | "contains" | "range" | "equalsAny", field: string, value: string | number | boolean | (string | number)[] | { gte?: number | string, gt?: number | string, lte?: number | string, lt?: number | string } })[] no Criteria filters, combined with AND
sort ({ field: string, order?: "ASC" | "DESC" })[] no Sort order; defaults per tool
page integer no 1-based page. default 1, min 1
limit integer no Items per page, max 50 (default from SHOPWARE_MCP_DEFAULT_LIMIT). min 1, max 50
fields string[] no Extra raw entity fields to add to each item, e.g. ['customFields', 'ean']. Dot-paths allowed
status string no Only returns in this workflow status

merqo_abandoned_carts

Registered when installed and active: MerqoRescue.

Search abandoned cart snapshots captured by Merqo Rescue, with customer email, cart value, line items, state and the times of last activity, abandonment and recovery. Use it for 'how much revenue is sitting in abandoned carts this week?'. The cart token is never returned, so recovery links must come from the shop itself. Returns { total, page, limit, items[] }.

Parameter Type Required Description
term string no Full-text search term
filter ({ type: "equals" | "contains" | "range" | "equalsAny", field: string, value: string | number | boolean | (string | number)[] | { gte?: number | string, gt?: number | string, lte?: number | string, lt?: number | string } })[] no Criteria filters, combined with AND
sort ({ field: string, order?: "ASC" | "DESC" })[] no Sort order; defaults per tool
page integer no 1-based page. default 1, min 1
limit integer no Items per page, max 50 (default from SHOPWARE_MCP_DEFAULT_LIMIT). min 1, max 50
fields string[] no Extra raw entity fields to add to each item, e.g. ['customFields', 'ean']. Dot-paths allowed
state string no Only snapshots in this state, e.g. 'abandoned'