‹ Vantemo Docs
MCP

MCP Tools Reference

Complete list of tool groups and actions available in the Vantemo MCP server.

MCP Tools Reference

The Vantemo MCP server organizes its actions into 9 tool groups. Each group is exposed as up to three meta-tools that accept an action parameter to select the specific operation:

ToolHoldsAsks you first?
<group> (e.g. catalog)The group's read actions (every GET below)No
<group>_write (e.g. catalog_write)Changes that are easy to undo: new items, text edits, draft page sections, adding or removing a photoNo — not flagged for approval
<group>_confirm (e.g. catalog_confirm)Deletes, prices, coupons, stock, shipping, order status, store-wide settings, menu links, storefront publish and anything that changes the live shop at onceYes — flagged for approval on every call

The Tool column in each table below names the tool that carries the action. A group gets no tool for a tier it has no actions in: analytics is read-only; orders, store_config and shipping have no _write tool; customers has no _confirm tool. See Approval tiers for how each client treats them.

How Tool Groups Work

When the AI calls a tool, it provides two parameters:

  • action (required): The specific operation to perform (e.g., list_products)
  • params (optional): Parameters for the operation (e.g., { "status": "active" })
AI calls: catalog({ action: "list_products", params: { status: "active", limit: 10 } })
  → MCP server resolves to: GET /v1/admin/shops/{shopId}/products?status=active&limit=10
  → Returns product list as text content

Read (GET) and DELETE actions accept only the parameters named in the tool description the AI receives; any other name is refused with the list of accepted ones. In that description, path parameters follow the action name, e.g. get_product(productId). bulk_set_out_of_stock_behavior always sends its own fixed operation to the bulk endpoint, so a call that tries to choose a different one (e.g. a bulk delete) is refused. The content-only _write actions (update_product_content, create_product_draft, update_category_content, update_tag, update_attribute_options, update_brand_content) accept only the fields their description lists; any other field is refused. They cannot change status, prices, stock, visibility, an attribute's key or data type, or any slug; those go through the matching _confirm action. (create_product_draft does set the new draft's variant prices; the draft is not on sale until update_product publishes it.) update_media and update_product_media likewise accept only the fields their description lists (alt text, plus folder or option value).

For every action, path ids (productId, categoryId, …) must be UUIDs.


catalog

Products, prices, categories, collections, tags, filters (attributes), brands, and inventory management.

ActionMethodToolDescription
list_productsGETcatalogList products with filters (status, search, category, brand, featured, stock), sorting, and pagination; limit: 1 plus pagination.total gives a count
get_productGETcatalogFull product detail: variants, categories, subscription prices, the productMedia gallery and the older images list
create_productPOSTcatalog_confirmCreate a new product; optional listing (everywhere default, search_and_link, link_only) sets where it can be discovered. Each variant may carry supplierSku — the supplier's own product code (unique per shop; a code another active variant holds is refused with 409 SUPPLIER_SKU_CONFLICT)
create_product_draftPOSTcatalog_writeCreate a product as a draft (not on sale) with its text, categories, brand, tags and variants. Prices per currency, option groups, subscription and digital products need create_product; going live needs update_product
update_productPATCHcatalog_confirmPartial update of product fields, including status (active/draft/archived/hidden) and listing — everywhere shows it in automatic lists; search_and_link only in search and by direct link; link_only only by direct link (not in lists, search, sitemap or shopping feeds, and noindex). Every value stays purchasable by its URL and still shows where you place it by hand (collections, Featured, menus). Per variant, supplierSku sets the supplier's code: omitted keeps it, null clears it. tags adds tags and removes none.
update_product_contentPATCHcatalog_writeEdit a product's text only: name, descriptions, SEO and social fields, description sections, filter values (attributeValues), categories, brand and tags (added, none removed). Any other field is refused: status, variants, prices, stock, images and translations go through update_product
delete_productDELETEcatalog_confirmArchive (soft-delete) a product; refused while it has active orders
duplicate_productPOSTcatalog_writeCreate a draft copy of an existing product
upsert_pricesPUTcatalog_confirmReplace a product's per-currency standard prices (left-out currencies are deactivated)
bulk_set_out_of_stock_behaviorPOSTcatalog_confirmSet what selected products do when sold out — Store default, a "Notify me" form, or shown as out of stock — for up to 50 product ids per call, or for every product matching a filter, 50 per call. Products hidden for being sold out come back when they no longer follow Hide. This is the only bulk product action over MCP.
list_categoriesGETcatalogList all categories (flat or tree format)
get_categoryGETcatalogGet a single category
create_categoryPOSTcatalog_writeCreate a new category
update_categoryPATCHcatalog_confirmUpdate category name, slug, or parent
update_category_contentPATCHcatalog_writeEdit a category's name, description, icon, image, SEO fields and translations; slug, parent, visibility and order go through update_category
delete_categoryDELETEcatalog_confirmDelete a category
list_collectionsGETcatalogList product collections
get_collectionGETcatalogGet collection detail with its products
create_collectionPOSTcatalog_writeCreate a collection; add products with add_collection_product. Display settings: showFilters (false hides the storefront filters on its page), cardStyle (standard or featured: the first product in the hand-set order shows as a large "favourite" card) and cardAttributeKey (an attribute shown as a pill on its cards when featured)
update_collectionPATCHcatalog_confirmUpdate collection details or display settings (showFilters, cardStyle, cardAttributeKey)
delete_collectionDELETEcatalog_confirmDelete a collection
add_collection_productPOSTcatalog_writeAdd one product to a collection, optionally with its note. Refused (403) on a collection a funnel checkout uses as its plan list: change that one in the dashboard
set_collection_product_notePATCHcatalog_confirmSet or clear one product's note in one collection (one line, up to 120 characters; "" or null clears it). The note shows only on that collection's page when its cardStyle is featured
remove_collection_productDELETEcatalog_confirmRemove one product from a collection (the product is kept)
list_tagsGETcatalogList product tags with usage counts
create_tagPOSTcatalog_writeCreate a new tag
update_tagPATCHcatalog_writeUpdate a tag's name, color or type (the slug cannot be changed over MCP)
delete_tagDELETEcatalog_confirmDelete a tag
list_attributesGETcatalogList the shop's active attributes (product facts and storefront filters) with their options and how many products hold a value; each id is the definitionId for update_product_content
create_attributePOSTcatalog_writeCreate an attribute (filter): key, name, data type, options, group, unit and its filter, search and card flags
update_attribute_optionsPATCHcatalog_writeEdit an attribute's display name, options, group, unit or order. The option list is replaced whole; removing an option drops it from the filter and leaves product values as they are
update_attributePATCHcatalog_confirmFull attribute update, including key, data type, active and filter flags (asks first: key and data type changes are not checked against products that hold values)
delete_attributeDELETEcatalog_confirmDelete an attribute and every product's value for it
list_brandsGETcatalogList every brand with its product count; search, active filter and sort
get_brandGETcatalogGet one brand
create_brandPOSTcatalog_writeCreate a brand with its text, logo, banner, website and SEO fields
update_brand_contentPATCHcatalog_writeEdit a brand's name, descriptions, logo, banner, website and SEO fields; slug, visibility and order go through update_brand
update_brandPATCHcatalog_confirmFull brand update, including the slug (brand page URL), visibility and order
delete_brandDELETEcatalog_confirmDelete a brand; its products are kept without a brand
list_inventoryGETcatalogList inventory rows (one per variant) with search, stock-status and supplier filters and a sort
get_inventoryGETcatalogGet one inventory row by inventoryId (from list_inventory)
update_inventoryPATCHcatalog_writeUpdate an inventory row's reorder point, reorder quantity, stock-level visibility or location (not the stock count)
adjust_stockPOSTcatalog_confirmAdd or remove stock on an inventory row (quantityChange, movementType)

orders

Orders, abandoned carts, and subscriptions.

ActionMethodToolDescription
list_ordersGETordersList orders with status filter and pagination
get_orderGETordersFull order detail with line items and addresses
update_order_statusPATCHorders_confirmChange an order's status (allowed transitions only) or shipping status; moves no money
list_abandoned_cartsGETordersList abandoned carts with recovery status
get_abandoned_cart_statsGETordersAggregate abandoned cart metrics
list_subscriptionsGETordersList recurring subscriptions
get_subscriptionGETordersSubscription detail with payment history

Subscriptions are read-only here: to cancel one, the merchant opens it in the admin (Subscriptions → the subscription → Cancel).


customers

Customer profiles, recent orders, and CRM notes.

ActionMethodToolDescription
list_customersGETcustomersList customers with search by name or email
get_customerGETcustomersCustomer profile (by email) with order stats and the 20 most recent orders
list_customer_notesGETcustomersInternal CRM notes for a customer
add_customer_notePOSTcustomers_writeAdd an internal CRM note

content

Blog posts, pages and their sections, storefront publishing, navigation menus and their links, reviews, and testimonials.

Product cards in a blog post. A paragraph that holds only a link to one of your products (<p><a href="/lt/products/<slug>">Name</a></p>, a relative link) shows on the storefront as a product card with its photo, name, current price and add button. Several such paragraphs in a row make a grid (2 per row on phones, 3 on wider screens); put text between them to start a new grid. A product link inside a sentence, list or table stays a normal link. If the product is no longer available, the paragraph shows as its plain link. Prices on cards refresh within a few minutes. Up to 24 different products per post become cards.

ActionMethodToolDescription
list_blog_postsGETcontentList blog posts with status filter
get_blog_postGETcontentGet full blog post content
create_blog_postPOSTcontent_confirmCreate a new blog post
save_blog_post_draftPUTcontent_confirmSave a full draft edit of a blog post; the live post is unchanged until published, but the draft replaces any unpublished one
publish_blog_postPOSTcontent_confirmApply the saved draft to the live blog post
delete_blog_postDELETEcontent_confirmDelete a blog post
list_pagesGETcontentList storefront pages (identified by slug)
get_pageGETcontentGet a page's metadata and ordered sections by slug
create_pagePOSTcontent_writeCreate an empty storefront page (about, contact, blog, or custom). It goes live only after publish_storefront; hiding it with update_page removes it from menus, but its URL still opens
update_pagePUTcontent_confirmUpdate a page's title, meta description, OG image, or visibility
delete_pageDELETEcontent_confirmDelete a page and its sections (system pages are refused)
add_sectionPOSTcontent_writeAdd a section to a page's draft (the section type is copied from get_page)
update_sectionPUTcontent_writeEdit a draft section's content, settings, position or visibility. Editing a header or footer section changes the shop's draft header or footer
reorder_sectionsPUTcontent_writePut a page's draft sections in a new order
delete_sectionDELETEcontent_confirmDelete a section from a page's draft (cannot be undone)
get_publish_statusGETcontentWhen the storefront was last published, whether the draft has unpublished changes, and whether a rollback is possible
publish_storefrontPOSTcontent_confirmMake the whole storefront draft live: every pending page, section, style, header and footer change, including changes made in the dashboard
rollback_storefrontPOSTcontent_confirmPut the previous published version back live (one step only; the draft is kept)
list_menusGETcontentList navigation menus
get_menuGETcontentGet menu with items
create_menuPOSTcontent_confirmCreate an empty navigation menu for one location (HEADER, FOOTER, MOBILE or CUSTOM)
update_menuPATCHcontent_confirmRename or (de)activate a menu
delete_menuDELETEcontent_confirmDelete a menu
add_menu_itemPOSTcontent_confirmAdd a link to a menu: a category, product, collection, page, custom URL or a heading
add_menu_items_bulkPOSTcontent_confirmAdd many links in one call, optionally nested under each other
update_menu_itemPATCHcontent_confirmEdit a link's label, target, type or parent
delete_menu_itemDELETEcontent_confirmDelete a link and the links nested under it
reorder_menu_itemsPATCHcontent_confirmMove or nest links
list_reviewsGETcontentList product reviews
update_review_statusPATCHcontent_confirmApprove or reject a review
list_testimonialsGETcontentList testimonials
update_testimonial_statusPATCHcontent_confirmApprove or reject a testimonial

Page sections are edited in the storefront draft: add_section, update_section and reorder_sections change nothing on your live shop until publish_storefront, which asks first. A header or footer section is shop-wide: adding one replaces the shop's header/footer draft, and on a shop that has never been published it shows at once. publish_storefront publishes every pending draft change, not only the AI's, so its description tells the AI to check get_publish_status first and tell you which pages and sections it changed. Menu links have no draft: every link change is live at once, so each one asks first. A link's parent must be another link of the same menu (from get_menu).


marketing

Email campaigns, coupons, and email settings.

ActionMethodToolDescription
list_campaignsGETmarketingList email campaigns with status filter
get_campaignGETmarketingGet campaign detail with content
create_campaignPOSTmarketing_writeCreate a new email campaign as a draft (sending is done in the admin)
update_campaignPATCHmarketing_confirmUpdate campaign content or schedule
delete_campaignDELETEmarketing_confirmDelete a campaign
list_couponsGETmarketingList discount coupons
get_couponGETmarketingGet coupon detail
create_couponPOSTmarketing_confirmCreate a new coupon
update_couponPATCHmarketing_confirmUpdate coupon rules or limits
delete_couponDELETEmarketing_confirmDelete a coupon
list_email_templatesGETmarketingList email templates
get_email_settingsGETmarketingGet email config: languages, order email toggles, reply-to, quotas, sending domain
update_email_settingsPATCHmarketing_confirmUpdate email languages, order email toggles, reply-to, admin notification email

analytics

Business intelligence and reporting. All actions are read-only.

ActionMethodToolDescription
overviewGETanalyticsRevenue, order count, AOV, customer count and previous-period revenue
revenueGETanalyticsDaily revenue time series
top_productsGETanalyticsBest-selling products by revenue
customer_metricsGETanalyticsNew vs returning customers, top customers, all-time average LTV
geographicGETanalyticsRevenue breakdown by country
funnelGETanalyticsStorefront session counts by current stage
order_statusGETanalyticsOrder distribution by status
category_revenueGETanalyticsRevenue breakdown by category
ad_spendGETanalyticsAd spend and ROAS by platform, campaign and day

All analytics actions take an optional date range: days (1-365, default 30) or from + to (dates, inclusive). top_products also takes limit (1-50) and ad_spend takes platform (meta, google_ads, tiktok or all).


store_config

Store settings, payment/shipping providers, domains, themes, and the out-of-stock default.

ActionMethodToolDescription
get_shopGETstore_configGet shop settings and configuration
update_shopPATCHstore_config_confirmUpdate shop settings, sending only the changed fields: name, currency, locales, timezone, SEO and branding details (merged with the saved ones), free-shipping thresholds, tax, statement descriptor, time and date format, image quality, preview prefix
list_providersGETstore_configList configured payment/shipping providers
list_domainsGETstore_configList connected domains
list_themesGETstore_configBrowse available storefront themes
get_back_in_stock_settingsGETstore_configGet the store default for sold-out products (HIDE, NOTIFY or NONE)
update_back_in_stock_settingsPATCHstore_config_confirmChange the store default for sold-out products. Every product set to "Store default" follows it; switching away from Hide brings back products already hidden for being sold out (liftedCount in the reply)

media

Media library and product gallery management.

ActionMethodToolDescription
list_mediaGETmediaList media library assets
get_mediaGETmediaGet media asset details
upload_media_from_urlPOSTmedia_writeImport a JPEG, PNG or WebP from a public https URL into the library
create_media_upload_linkPOSTmedia_confirmGet a 30-minute link where you upload up to 200 photos from your computer or phone (asks first: anyone holding the link can upload to your library until it expires)
get_media_upload_linkGETmediaList the photos uploaded through a link
delete_mediaDELETEmedia_confirmDelete a media asset
update_mediaPATCHmedia_writeSet a library file's alt text (used wherever a product image has none of its own) or folder
attach_product_mediaPOSTmedia_writeAttach a library file to a product gallery
detach_product_mediaDELETEmedia_writeRemove an image from a product gallery (the file stays in the library)
reorder_product_mediaPATCHmedia_writeSet product gallery image order; the lowest sort order becomes the primary image
update_product_mediaPATCHmedia_writeSet one product image's own alt text, or the option value it shows for; the primary image stays primary

The product gallery's link ids (productMediaId, and id in reorder items) come from get_product's productMedia[].id, not the library mediaId.

To add photos to a product, get them into the library first, then attach each one by its mediaId. For images already on the web, use upload_media_from_url. For files on your computer, the AI calls create_media_upload_link and gives you a link. Open it, drop in your photos, and tell the AI when you're done. It then calls get_media_upload_link to find the new mediaIds.


shipping

Shipping rates per method, country, currency, and carrier.

ActionMethodToolDescription
list_shipping_ratesGETshippingList shipping rates, optionally filtered by country or method
create_shipping_ratePOSTshipping_confirmCreate a rate for a method, country, currency, and optional carrier
update_shipping_ratePATCHshipping_confirmUpdate a rate's price, method, country, currency, carrier, or active flags
delete_shipping_rateDELETEshipping_confirmDelete a shipping rate

Approval tiers

Every action that changes data (all non-GET actions above) lives on one of the group's two write tools, and only there:

  • _confirm tools carry _meta["anthropic/requiresUserInteraction"]: true. Claude Code documents that this flag shows you the exact call before every invocation, even when an allow rule or permission mode would otherwise skip the prompt; in dontAsk mode the call is denied (Claude Code MCP docs, "Require approval for a specific tool"). The AI has no parameter that can approve a call on your behalf.
  • _write tools carry no such flag. Whether Claude Code asks before a _write call depends on your permission rules: with an allow rule for the server, it runs without a prompt.

Both write tools are annotated destructiveHint: true; read tools are annotated readOnlyHint.

An action called on the wrong tool is refused before any API request, and the reply names the right tool:

# A delete on the read or _write tool is refused — no API request is made
catalog_write({ action: "delete_product", params: { productId: "..." } })
→ 'Action "delete_product" is not available on tool "catalog_write". Call it through the "catalog_confirm" tool instead.'

# The same delete on the _confirm tool runs after you approve the prompt
catalog_confirm({ action: "delete_product", params: { productId: "..." } })
→ { success: true }

Letting _write calls run without a prompt in Claude Code

Allow the server's tools in your Claude Code settings. The rule names one server; the server part of the rule cannot contain a wildcard, so add one rule per configured server (Claude Code permissions):

.claude/settings.json
{
  "permissions": {
    "allow": ["mcp__vantemo__*"]
  }
}

mcp__vantemo__* matches every tool of the server named vantemo — read, _write and _confirm alike — yet _confirm calls still ask, because their flag overrides allow rules.

Only Claude Code's handling of the flag is documented. Other clients (Claude Desktop, claude.ai, ChatGPT, Cursor) may treat it differently: configure them to ask before every call to a *_confirm tool, and before *_write calls too if you want to see those first.

Responses are marked as data

API responses can contain text written by customers or anonymous visitors (reviews, testimonials, names, order details). Every API response and API error body is wrapped in an <untrusted_content_…> block with a random tag that changes on every call, preceded by a note telling the AI that the block is data, never instructions.

Next Steps

On this page