xDiscount is on the Shopify App Store. Founding merchants lock in lifetime founder pricing.
Docs

AI

Connect AI

Point your own MCP client at xDiscount on every plan, Free included, and review everything it creates as a draft before a discount reaches shoppers.

Letting an AI assistant run your discounts

What Connect AI does

Connect AI lets you point your own AI assistant at xDiscount and ask for discounts in plain language instead of filling in the discount form yourself.

The Settings screen says it in two lines:

Connect your own AI assistant to create and manage discounts. Anything it creates arrives as a draft, it can never publish a discount without you.

You bring your own assistant. We store no provider keys and charge nothing extra for it.

How it works, in short:

  1. xDiscount generates a key for your store.
  2. You paste that key into your AI client as a bearer token, pointed at the /mcp endpoint on this app’s URL.
  3. Your assistant can then read your discounts and your performance figures, and create and change discounts. Anything it creates arrives as a Draft, whatever status it asked for.
  4. You review what it made in Discounts and set it to Active yourself.

Bring your own AI. xDiscount does not include an AI subscription and stores no AI provider keys. You use, and pay for, your own client: anything that speaks MCP and lets you set a bearer token.

Which plans include it

FreeStarterGrowthScale
Price / monthFreeUSD 19USD 49USD 149
Connect AIIncludedIncludedIncludedIncluded

Connect AI is included on every plan, Free included. The Connect AI section in Settings always offers Generate a key. The plans differ on how many discounts can be active and how many discounted orders are included, never on this feature.

The plan is still checked when you ask for a key and on every tool call your assistant makes, so if a plan that withholds the feature is ever introduced, access stops straight away. Revoke is always available, whatever your plan.

Generating and managing your key

Generating a key

1

Open Settings

Click Settings in the sidebar.

Find Connect AI

Scroll to the Connect AI section. It is the fourth section down, below Plans and billing.

Generate a key

Click Generate a key.

Copy it straight away

The key appears immediately, in a warning banner headed Copy this now, it won’t be shown again. Copy it before you navigate away.

The key always starts with xdmcp_, so it is easy to recognise later in your client’s settings.

The banner tells you why the hurry:

Paste it into your MCP client as a bearer token. We only keep a hash, so we cannot show it to you later. If you lose it, generate a new one.

That is literal. xDiscount stores only a one-way hash of your key, not the key itself. Nobody, including support, can read it back to you. It is displayed exactly once, in your browser, and never again.

Paste it before you leave the screen

Put the key straight into your AI client’s connector settings before you leave the Settings screen. If you lose it nothing breaks, just click Generate a new key, but you will have to update your client.

Pointing your AI client at xDiscount

Every client words this differently, but all of them need the same two things:

What your client asks forWhat to give it
Server / endpoint URLYour app’s URL with /mcp on the end. Settings states this under the status badge: “The endpoint is /mcp on this app’s URL.”
AuthenticationBearer token, the xdmcp_… key you just copied

Nothing in the connection names your store. xDiscount works out which store is calling from the key itself, so there is no store field to fill in and no way for a key to reach another merchant’s discounts.

Checking whether it is actually connected

Once a key exists, the Connect AI section shows a badge:

BadgeWhat it means
Key created, not used yetThe key exists, but no client has ever authenticated with it. Your client has not connected yet, so check the URL and the token
ConnectedA client has successfully used the key at least once

When the key has been used you also see Last used with the date. The badge deliberately does not say “Connected” just because a key was generated, otherwise you would go hunting for a fault in your assistant when setup simply was not finished.

Replacing or revoking a key

To replace it: click Generate a new key. There is only ever one key per store, so the new one immediately replaces the old. Any client still using the old key stops working, so update your client with the new value.

To revoke it: click Revoke, the red button beside it. Access stops on the very next request, and the badge, the created date and the last-used date are all cleared.

Neither button asks you to confirm

Revoke takes effect the moment you click it, and Generate a new key invalidates the previous one the moment you click it. There is no undo, but there is also nothing to lose beyond having to re-paste a key.

Revoke when:

  • You have stopped using that AI client
  • You pasted the key somewhere you should not have
  • You want AI access off for a while

What your assistant can do

There are twelve tools. Your client lists them by name, and here is what each one actually does.

ToolWhat it doesNeeds your confirmation
readDiscountsLists your discounts with type, value, schedule, conditions and sync state, up to 100No
readPerformanceReads your daily performance figures, up to 90 days, newest firstNo
createProductDiscountCreates a discount. Always as a DraftNo
updateProductDiscountChanges a discount’s name, type, value, schedule or priorityNo
setDiscountRulesReplaces a discount’s conditionsNo
addTargetsListed as adding products or variants to a discount, but it publishes no product argument, so change a discount’s products in Discounts insteadNo
removeTargetsListed as removing products or variants, with the same limitation. Use DiscountsNo
publishDiscountMakes a discount live. This changes what shoppers are chargedYes
unpublishDiscountTakes a discount out of service, back to draftYes
archiveDiscountArchives a discount so it stops applying at checkout. It still shows in Discounts, with an ARCHIVED status badgeYes
deleteDiscountPermanently deletes a discount and its targetsYes
updateAppSettingsListed, but currently refuses with “App settings are not configurable yet.”No

The four confirmation tools are flagged to your client as destructive, so clients that support approval prompts ask you before running them. That prompt comes from your client, not from xDiscount, and a client with no approval step will not produce one.

Note what is not on the list: nothing an assistant can call chooses the products a discount applies to. It can create the discount, set its value, schedule, priority and conditions. You pick the products yourself in Discounts.

Examples of what to ask:

  • “What discounts do I have, and which ones are live?”
  • “Create a 15% off discount running from 1 December to 24 December.”
  • “Add a condition so it only applies when the cart has at least 3 items.”
  • “Show me the last 30 days of performance.”
  • “Unpublish the summer sale.”

The guardrails

Everything an assistant creates is a Draft

A discount your assistant creates arrives as a Draft, so it does nothing at checkout until you say so. Open it in Discounts, choose the products it applies to, check the value, schedule and conditions, then set Status to Active and click Save.

This is forced on the way in. Whatever status the assistant asks for, a discount it creates is written as a Draft. Making one live is a separate tool, publishDiscount, flagged to your client as destructive, so publishing is always a deliberate step of its own, and your client prompts you first if it supports approvals.

A live discount must be unpublished before an assistant may edit it

If you ask your assistant to change a discount that is currently ACTIVE, it is refused with:

This discount is live. Unpublish it first. Editing an active discount would change what shoppers are charged without anyone approving it.

This covers every editing tool: updateProductDiscount, setDiscountRules, addTargets and removeTargets. The fix is exactly what the message says. Unpublish it, make the change, publish it again, so nothing shoppers are charged changes without a deliberate step.

Your plan limits still apply

The AI route uses the same save path as the admin screens: the same validation, the same 10,000-byte payload guard, the same plan limit. Asking an assistant to publish one discount too many gets the same refusal you would get by clicking Save:

Your Free plan includes 3 active discounts, and you have 3. Pause or archive one, or upgrade your plan to add more.

Drafts are never blocked by the limit. Only what is live at checkout counts.

One store, always

No tool accepts a store name or ID. The store is resolved from your key and re-checked on every record that is read or written, so a tool call can only ever touch discounts belonging to the store whose key made it.

Messages you may see

Message starts withWhat happenedWhat to do
PLAN_LIMITYou are at your plan’s active-discount limitArchive or unpublish one, or upgrade under Plans and billing in Settings
MUST_UNPUBLISHThe discount is liveUnpublish it, edit it, publish it again
NOT_FOUNDNo such discount on this storeAsk for the discount list again, the ID may be stale
INVALIDA required value was missingGive the assistant the missing detail
FAILEDSomething else went wrong, and the real reason follows the codeCheck Discounts to see whether the change landed
That credential is not valid. It may have been revoked.The key was revoked or replacedGenerate a new key and update your client
Connect AI is available on … You’re on ….Your subscription is on a plan the app does not recogniseUse Refresh plan under Plans and billing in Settings, and if it persists, tell us

Check your work after an AI session

Open Discounts and check the Status and Sync columns. A discount your assistant created still has to reach Shopify. A FAILED or TOO_LARGE sync badge means it is not applying at checkout, whoever created it.