Skip to navigation

Store Management MCP

Beta
Closed beta developer guide

Store Management MCP lets an AI agent — Claude, Cursor, ChatGPT, or any other Model Context Protocol (MCP)-compatible client — work directly with your BigCommerce store’s catalog, pricing, inventory, orders, promotions, and store profile. This guide covers how an administrator turns on access, how to connect a client, and how to use the tools available in the closed beta.

Beta access

Store Management MCP is in an invite-only closed beta and isn’t available by default. To request access, submit the form on the Commerce AI Labs page. Some capabilities are deliberately limited during this phase; see Beta limitations for details.

Before you begin

  • Your store must be active. Suspended, cancelled, or closed stores can’t connect.
  • An administrator must turn on Store Management MCP for the store (see Enable Store Management MCP) and grant scopes to the specific user who will connect an agent (see Grant a user access). Every user starts with no access.
  • If you manage more than one store, repeat both steps separately in each store. A grant in one store doesn’t carry over to another.

Enable Store Management MCP for your store

Only the store owner can turn on Store Management MCP — this step can’t be delegated to another user.

  1. In the control panel, go to Settings → API and MCP → MCP. You can also search for “MCP” from the Settings page.

    Settings page search for MCP, showing the MCP entry under API and MCP
  2. Turn on the Management MCP toggle.

  3. Accept the terms of service for the MCP server and tools for AI agents. This is a binding acknowledgment on behalf of your organization.

Once accepted, the page records who accepted the terms and when, and reveals your store’s MCP API Endpoint and a Manage AI agent access button.

Management MCP card with the toggle enabled, showing who accepted the terms and when, the MCP API Endpoint field, and the Manage AI agent access button

The control panel describes Management MCP as covering catalog, promotions, inventory, orders, and customers. That’s the eventual scope. Today, tools are available for catalog, pricing, and inventory; for creating and reading promotions; for looking up and refunding orders; and for reading store details. No tool uses the Customers scope yet — see Available tools.

Turning Management MCP off revokes access for every connected agent, though it can take a few minutes to take effect everywhere — see Beta limitations.

Grant a user access to connect an agent

From the Management MCP card, select Manage AI agent access, then Assign agent access. Pick an existing control panel user and set their access, one scope at a time:

ScopeLevelsNotes
ProductsNone, read-only, modifyBacks viewing, searching, creating, and categorizing products, editing existing product text and custom fields, and updating catalog and price-list pricing (modify required for editing and pricing)
InventoryNone, read-only, modifyBacks viewing and setting inventory levels
PromotionsNone, read-only, modifyRead-only unlocks get_promotions. Modify also unlocks create_promotion
StoreNone, read-onlyUnlocks get_store_info, which returns your store’s business contact details
CustomersNone, read-onlyNo tool uses this scope yet — granting it has no effect today
OrdersNone, read-only, modifyRead-only unlocks get_orders, which returns order summaries without shopper contact details. Modify also unlocks get_refund_quote and create_refund, which can refund orders

Selecting modify implicitly includes read access.

Only grant Orders modify if you want your agent to be able to refund orders. A refund returns real money to a shopper and can’t be undone through the tool. Promotions modify lets your agent create discounts, which are always created disabled until someone enables them in the control panel. None of the tools return shopper names, email addresses, phone numbers, or addresses.

The Store scope returns your business’s contact information, not shopper data. However, if your store is registered to a home address, or uses a personal email or phone number, granting Store access lets your agent see those details.

Three details about how grants work:

  • Every new user starts at None across every scope. Connecting an agent as that user grants it nothing until you explicitly assign scopes.
  • Grants are flat, not per-agent. If a user connects both Claude and ChatGPT, both get exactly the same access — there’s no way yet to give two agents different scopes for the same person.
  • Grants are per store. A user who administers several stores needs scopes assigned separately in each one.

The AI agent access page lists every user you’ve granted access to, with their scopes spelled out in plain text and Edit and Clear links next to each. Clearing a grant stops future tool calls for that user, though an already-connected session can continue until it expires — see Beta limitations.

AI agent access page listing users with their granted scopes, Edit and Clear links, and the Assign agent access button

Delegate scope management

By default, only the store owner can view or assign AI agent access. To let another team member manage it, go to Settings → Users, edit their permissions, and grant one or both of these System Admin Permissions:

PermissionLets that user
View AI MCP Scopes GrantsView the AI agent access page and see who has what access
Create AI MCP Scopes GrantsAssign or edit which scopes a user’s agent can use
User permissions with View AI MCP Scopes Grants and Create AI MCP Scopes Grants selected

This only delegates scope management. Turning Management MCP on or off for the store, in the section above, remains store owner-only.

Connect your MCP client

The following clients were tested during this phase. In every case, you point the client at your store’s address and sign in through the BigCommerce login — you never paste a password, API key, or token into the client. Any client with standard MCP and OAuth support should work, even if it isn’t listed here.

Menu names in third-party clients change often. If a step doesn’t match what you see, check that client’s MCP documentation.

Server address

Each store has its own MCP address:

https://api.bigcommerce.com/stores/{store_hash}/mcp

Point your MCP client at the address for the store you want to connect. Because the address identifies the store, the connection flow has no separate store picker.

Authentication

Connections use OAuth 2.1 with PKCE. Your MCP client registers itself automatically, so there’s no client ID or client secret to create or manage.

When you connect, your client sends you to the standard BigCommerce login. Your agent never sees or holds your BigCommerce password, session, or any other credential. If your login normally uses two-factor authentication or single sign-on, it works the same way here.

The scopes assigned to your BigCommerce user (see Grant a user access) determine which tools your agent can see after you sign in. Every tool call is checked against those scopes on the server, on every request — nothing your agent sends is trusted to establish its identity or permissions.

  1. Go to Settings → Connectors and select Add custom connector.
  2. Paste your store’s address: https://api.bigcommerce.com/stores/{store_hash}/mcp
  3. Select Connect, then sign in with your BigCommerce login when prompted.

To configure the connection manually instead, add an entry to the Claude Desktop config file that uses mcp-remote as a bridge:

claude_desktop_config.json
{
"mcpServers": {
"bigcommerce": {
"command": "npx",
"args": [
"mcp-remote",
"https://api.bigcommerce.com/stores/{store_hash}/mcp"
]
}
}
}

Available tools

The closed beta includes 16 tools across five scopes: Products, Inventory, Orders, Promotions, and Store. An agent only sees the tools within the scopes granted to the connecting user — tools outside those scopes aren’t just blocked, they’re invisible to the agent.

ToolScopeDescription
get_productProductsReturns a single product’s details, including variants, images, and custom fields.
search_productsProductsFinds products by keyword, name, SKU, product ID, or category, one page of results at a time. Returns summaries only (no variants, images, custom fields, or descriptions); use get_product for full detail.
create_productProductsCreates a catalog product from a name, type, weight, and price, plus optional catalog fields. New products are always created hidden, so nothing an agent creates goes live until someone reviews and publishes it.
assign_product_categoriesProductsAdds, replaces, or removes a product’s category assignments, up to 100 categories per call.
update_product_contentProducts (modify)Edits the text on an existing product: name, description, page title, meta description, search keywords, warranty, availability text, and pre-order message.
set_product_custom_fieldsProducts (modify)Adds or changes custom fields (name/value pairs such as “Material: Wool”) on an existing product.
update_catalog_pricesProducts (modify)Sets price, sale price, cost price, MAP price, and retail price on up to 10 products and 50 variants per call. Omitting a field keeps its current value; sending an explicit null clears it.
update_price_list_recordsProducts (modify)Updates up to 1,000 price list records in one call, for stores that use price lists. Omitting a money field keeps its current value (price can’t be cleared). Pricing tiers are replaced in full on each call.
get_inventory_levelsInventoryReturns per-location stock levels and a per-item total. Returns inventory data only — no product names, prices, or images.
set_inventory_levelsInventorySets on-hand stock for up to 2,000 items to an exact quantity. This is always an absolute set, never a relative adjustment.
get_ordersOrdersLists orders as summaries: status, dates, totals, payment method, and refunded amount. Never returns shopper names, email addresses, phone numbers, addresses, IP addresses, staff notes, or order comments. Can also return each order’s line items and shipping consignments, which the refund tools need.
get_refund_quoteOrders (modify)Calculates what refunding part or all of an order would pay out, including tax and rounding, and the payment options for paying it back. Moves no money and is safe to retry.
create_refundOrders (modify)Refunds part or all of an order using one of the payment options from a quote. Moves money and can’t be undone through the tool.
get_promotionsPromotionsLists the store’s promotions, or reads one by ID. Can also find which promotion a coupon code belongs to.
create_promotionPromotions (modify)Creates one promotion with one rule: a percentage or fixed amount off products or categories, a percentage off the order, or free shipping. New promotions are always created disabled, so nothing an agent creates discounts anything until someone reviews and enables it.
get_store_infoStoreReads the store’s profile: store name, contact email, phone, and address, either store-wide or as overridden on a specific channel.

Tool details

The following tools have behavior worth knowing before you use them.

update_product_content

  • Partial update. Only the fields your agent sends are changed; everything else keeps its current value. Sending an empty string clears that field. The product name can’t be cleared.
  • Search keywords replace the whole list. Keywords are stored as one comma-separated string, so your agent has to read the current keywords first and send back the full set, not only the new word.
  • Descriptions accept HTML or plain text, not Markdown. Markdown is stored as-is, so shoppers would see the raw asterisks.
  • Text only. It can’t change prices, stock, visibility, categories, brand, SKU, weight, dimensions, images, variants, or option sets. Custom fields have their own tool, set_product_custom_fields.
  • No undo. The previous text can’t be recovered through the tool, so have your agent confirm new wording with you before it writes.
  • One product per call. It’s safe to retry.

set_product_custom_fields

  • Matched by exact, case-sensitive name. If a field with that name exists, its value is updated. Otherwise, a new field is added. “Material” and “material” are two different fields.
  • Never deletes. Fields you don’t name are left alone. Custom fields can’t be removed through this tool, and an empty value is rejected.
  • Not atomic. Each field is written separately, so if a call fails partway through, the fields before the failure are already saved. Your agent gets a result for each field: created, updated, or unchanged.
  • Limits. Up to 50 fields per call, 250 characters per name or value, and 200 custom fields per product. It’s safe to retry.

get_orders

  • Summaries only. Each order includes status, dates, totals, payment method, payment status, and refunded amount. It never returns shopper names, email addresses, phone numbers, shipping or billing addresses, IP addresses, staff notes, or order comments.
  • Line items on request. Your agent can ask for each order’s product lines and shipping consignments. The product line id is the order product ID, not the catalog product ID, and the shipping id identifies the shipping consignment. The refund tools need both, and no other tool returns them. Asking for line items lowers the maximum page size from 250 to 25.
  • Truncated item lists are flagged. If an order has a consignment with more than 50 line items, the response says the list is incomplete. Your agent shouldn’t quote or refund from an incomplete list.
  • Filters. Your agent can filter by customer ID (0 selects guest orders), customer email, status, channel, payment method, creation date, and archived state.

get_refund_quote

  • Moves no money. A quote only calculates the refund, so it’s safe to retry. It’s also the required first step before create_refund.
  • Typed items. Each item to refund has a type. PRODUCT and GIFT_WRAPPING are refunded by quantity. SHIPPING, HANDLING, ORDER, and FEE are refunded by amount; use ORDER for a partial refund that isn’t tied to a product. Listing the same item twice is rejected.
  • Payment options to choose from. The quote returns the total, including tax and rounding, and a list of options. Each option is a complete way to pay back the whole refund, and it can split the amount across the payment methods the order was paid with, for example part back to the card and part as store credit. Your agent should show you the options and let you choose, not pick one for you.
  • One order per call. An archived order can still be quoted. Refunding an archived order hasn’t been verified, so have your agent check the order isn’t archived first.

create_refund

  • Moves money, with no undo. It returns the money to the shopper and debits your store. Have your agent confirm the total and the payment option with you before it calls the tool.
  • Needs the quote’s numbers. Your agent sends the same items, one payment option copied exactly from the quote, and the quote’s total. Before submitting, the tool takes a fresh quote and refuses if the total or the payment option no longer matches. When that happens, no money moves, and your agent has to quote again and confirm with you again.
  • Never retried. There’s no way to make a refund safe to repeat, so a second submit can refund the shopper twice. If a call fails and the outcome is unknown, your agent should check the order’s refunds in the control panel before doing anything else. When the error says no money moved, your agent can fix the request, take a fresh quote, and try again.
  • Declined payments. A refund can be recorded even though one of its payment methods declined. The response lists every payment with whether it was declined, and your agent should tell you if any were.
  • Reason. An optional reason of up to 1,000 characters is kept on the refund record.
  • One order per call. The option to skip the store’s tax calculation isn’t available through the tool.

get_promotions

  • Read-only. It shows how promotions are set up (status, schedule, channels, customer groups, rules, and usage count), but not redemption history, revenue, or which customers used a promotion.
  • Coupon codes aren’t returned. Your agent can look up the promotion a code belongs to, but it can’t list a promotion’s codes.
  • No individual shoppers. Customer targeting is shown as group and segment IDs only.
  • Empty channel list means every channel. A promotion with an empty channel list applies to every channel, not none.

create_promotion

  • Always created disabled. Status isn’t something your agent can set, so a new promotion discounts nothing until someone reviews it and enables it in the control panel.
  • Four kinds. percentage_off_products and fixed_amount_off_products need at least one product ID or category ID. percentage_off_order takes a percentage and an optional minimum order amount. free_shipping takes an optional minimum order amount and optional shipping zone IDs, and applies to all zones when you omit them.
  • One promotion, one rule. It can’t create buy-one-get-one offers, free gifts, tiered or stacked discounts, customer group or segment targeting, country targeting, day-of-week schedules, or any condition other than a minimum order amount. Create those in the control panel.
  • Parameters must match the kind. A parameter the chosen kind doesn’t use is rejected instead of ignored.
  • Coupon promotions have no code. Your agent can create a promotion that’s redeemed with a coupon, but not the code itself. Add the code in the control panel when you enable the promotion.
  • Optional settings. Start and end dates (RFC 3339 timestamps with an offset, not bare dates), a total usage limit, whether the promotion can be used with other promotions (it can by default), and channel IDs. Without channel IDs, the promotion applies to every channel. Each ID list takes up to 50 unique IDs, and amounts are in the store’s default currency.
  • Not safe to retry. Creating a promotion twice makes two promotions, and both apply to a cart. If a call fails and the outcome is unknown, your agent should check the store’s promotions before trying again.

get_store_info

  • Read-only. Returns store name, contact email, phone, address, and address type, plus any new store email that’s waiting for confirmation.
  • Channel reads show overrides only. If your agent asks for a specific channel, a blank field means that channel uses the store-wide value, not that the field is empty.
  • Business data, not shopper data. See the note under Grant a user access about stores registered to personal contact details.

Example prompts

The following prompts map directly onto the tools above:

  • “Look up SKU WIDGET-100 and tell me its current price and stock level.” → get_product
  • “Find all products with ‘scarf’ in the name.” → search_products
  • “Create a hidden product called ‘Autumn Wool Scarf’, physical, 0.3 kg, $34.99, SKU SCARF-AUT-01.” → create_product
  • “File that scarf product under the Winter and Accessories categories.” → assign_product_categories
  • “Raise the price of SKUs WIDGET-100, WIDGET-101, and WIDGET-102 by 10%.” → get_product to confirm current prices, then update_catalog_prices to apply the change
  • “Update the Wholesale price list so SKU MUG-042 is $6.50.” → update_price_list_records
  • “What’s our current stock level on SKU MUG-042?” → get_inventory_levels
  • “We just received 50 units of SKU MUG-042 — update the stock count.” → set_inventory_levels
  • “Show me the last 10 orders.” → get_orders (only works if the connecting user has been granted the Orders scope)
  • “How much would it cost to refund one unit of the Autumn Wool Scarf on order 180, and how could I pay it back?” → get_orders to find the order’s line items, then get_refund_quote
  • “Refund that to the original card.” → create_refund, after your agent has shown you the quote and you’ve confirmed the total and payment option
  • “Rewrite the description of product 123 to emphasize that it’s handmade, and show me the new text before you save it.” → get_product, then update_product_content
  • “Add ‘eco-friendly’ to the search keywords on the Autumn Wool Scarf.” → get_product to read the current keywords, then update_product_content with the full list
  • “Set Material to ‘100% Merino Wool’ and Care to ‘Hand wash cold’ on product 123.” → set_product_custom_fields
  • “Which promotions are running right now on my US channel?” → get_promotions
  • “Which promotion does the code SAVE20 belong to, and when does it end?” → get_promotions
  • “Create a 15% off promotion on the Winter category.” → create_promotion, which creates it disabled for you to review
  • “Set up free shipping on orders over $75.” → create_promotion
  • “What email address and phone number are shoppers seeing for my store?” → get_store_info

Your agent reports what it did, not what it verified. Spot-check a price or stock change against the control panel the first few times. Scopes aren’t field-level, so an agent with Products modify access can change any price it can see, not just the one you asked about — be specific about what you want changed. The same applies to refunds and promotions: check the amounts and payment options before you confirm.

Troubleshooting

SymptomLikely causeWhat to do
Your agent doesn’t offer a tool you expect (for example, no pricing tool at all)The connecting user’s scope for that area is None, or set to read-only where modify is neededCheck the user’s grant on the AI agent access page. A missing or insufficient scope makes the tool invisible, not blocked, so there’s no error to see.
Connecting fails at loginThe store isn’t active, or Store Management MCP hasn’t been turned onConfirm the store’s status is active and that Enable Store Management MCP is complete
A tool call is rejected after previously workingA scope was changed or revoked since you connected, or your session expiredReconnect. Sessions are intentionally short-lived during this phase — see Beta limitations.
A newly created product isn’t showing on your storefrontExpected — create_product always creates hidden productsReview and publish the product yourself from the control panel
Your agent says it can’t add images, variants, or set visibility on a product it just createdExpected — create_product only creates the base recordMake those changes in the control panel
Your agent can see products but can’t edit their text, custom fields, or pricesThe connecting user has Products set to read-only, and update_product_content, set_product_custom_fields, update_catalog_prices, and update_price_list_records need modifyChange the user’s Products scope to modify on the AI agent access page
Your agent doesn’t offer get_promotions or get_store_infoThe user’s Promotions or Store scope is still NoneGrant read-only for that scope on the AI agent access page
A custom field your agent “updated” shows up twiceThe name didn’t match the existing field exactly (for example, different capitalization), so a new field was createdDelete the extra field in the control panel, then ask again using the exact existing name
Your agent says it can’t show coupon codesExpected — get_promotions doesn’t return coupon codesView codes in the control panel under Marketing → Promotions
Your agent can look up orders but doesn’t offer the refund toolsThe connecting user has Orders set to read-only, and get_refund_quote and create_refund need modifyChange the user’s Orders scope to modify on the AI agent access page.
Your agent can see promotions but doesn’t offer create_promotionThe connecting user has Promotions set to read-only, and create_promotion needs modifyChange the user’s Promotions scope to modify on the AI agent access page
A promotion your agent created isn’t discounting anythingExpected — create_promotion always creates promotions disabledReview the promotion and enable it in the control panel under Marketing → Promotions
A coupon promotion your agent created has no codeExpected — create_promotion can’t create coupon codesAdd the code in the control panel under Marketing → Promotions before you enable the promotion
Your agent says a refund wasn’t sent because the quote no longer matchesThe order, its payments, or the refund total changed after the quote, or the payment option wasn’t copied exactlyAsk your agent to take a fresh quote, show you the options, and confirm again. No money moved.
A refund was recorded but one payment shows as declinedThe payment provider refused its part of the refundCheck the order’s refunds in the control panel and resolve the declined part there. Don’t ask your agent to submit the refund again.
Your agent reports that it doesn’t know whether a refund went throughThe request timed out or the store returned an error before confirming the refundCheck the order’s refunds in the control panel before doing anything else. Submitting again can refund the shopper twice.
You want to see which agents are actively connected, or force one to disconnect immediatelyThere’s no self-service view of live connections yetContact your BigCommerce closed beta contact

Beta limitations

  • No shopper personal data. None of the tools return shopper names, email addresses, phone numbers, or addresses. The Store scope can expose your own contact details if they’re personal — see Grant a user access.
  • Orders modify can move money. With Orders set to modify, your agent can refund orders. A refund can’t be undone through the tool, so only grant modify to users who should be able to issue refunds.
  • Scopes aren’t field-level. Each scope grants full read and write access across its area. For example, you can’t allow description edits while blocking price changes within Products.
  • Scopes apply per user, not per agent. Every agent you connect under your account shares the same access. You can’t give two agents different scopes.
  • No self-service view of connected agents. You can review and clear a user’s scope grant yourself, but there’s no visibility into which agents or sessions are actively using that access right now, and no way to force one off immediately. Contact your BigCommerce closed beta contact for that.
  • Scope changes aren’t always immediate. When an administrator changes or removes your scopes, the change can take up to the remaining length of your current session to take effect. Sessions are kept short during the beta to minimize this window.
  • No agent attribution. Anything your agent does is recorded in your audit trail against the user who authorized it, the same as if that person had made the change by hand.

Get help

If anything is confusing, broken, or unexpected, contact your BigCommerce closed beta contact directly.