AOV.ai Free Gift MCP
Point the AI tool you already use — ChatGPT, Claude, Claude Code, Cursor, Codex — at this store's free gift data. Once connected, your assistant answers questions about your campaigns, revenue, storefront setup and plan on its own, and, if you let it, sets those campaigns up and changes them for you — without you opening the app, taking screenshots, or sharing your Shopify login.
Two things make this different from pasting numbers into a chat window. The assistant reads live data, so an answer is never stale. And what it is allowed to do is decided by you, per connection, and enforced on the server rather than asked of the model.
Three levels of access
Every connection carries one access level. It is chosen when the connection is made, it starts at the lowest, and you can raise or lower it afterwards without reconnecting.
| Level | The assistant can | Tools it sees |
|---|---|---|
| Read only | Read this store's data, and nothing else | 18 |
| Read and write | Also create campaigns, edit them, and turn them on and off | 25 |
| Read, write, and delete | Also delete a campaign, through a confirmed workflow | 27 |
A new connection is read only until you deliberately change it. Nothing you connect can alter a live campaign on the strength of being connected — write and delete are opt-in, one connection at a time, and each upgrade asks you to confirm.
The check runs on the server, on every call. It is not an instruction to the model that a clever prompt could talk it out of: a read-only connection is never offered the write tools at all, so there is nothing registered for it to call. An assistant that tries is told the connection is read-only and pointed at the setting.
Nothing is written without your say-so
Even at the highest level, the tools that change something are built so a change cannot happen by accident. Creating a campaign, editing one, and deleting one all run in two steps: the assistant first asks the server to prepare the change, which validates it, checks your plan and your Shopify resources, and returns a complete preview plus a short-lived token. Only a second call carrying that unchanged token commits it.
The practical effect is that you see the whole change, in the chat, before it exists. Change your mind and the token simply expires. Change any commercial field and the old token stops working, so the assistant has to show you the new version first.
One connection, one store
A connection is issued to one store and carries that binding itself. The store is never taken from the request, so a connection cannot be pointed at a different shop, and an assistant holding it can only ever see the store it was made for.
If you run several stores, each one makes its own connection, and key-based clients get their own
server name — aov-upsell-your-store — so an answer always says which store it came from.
Two ways to connect
| Route | For | Credential |
|---|---|---|
| Sign-in | ChatGPT, Claude on the web | None to copy — you approve the connection in the app |
| API key | Claude Code, Codex, Cursor, Claude Desktop, ChatGPT desktop | A key beginning aov_mcp_ |
Hosted clients like ChatGPT and Claude have no field for a key, so they sign in instead: the client shows a one-time code, you type it into Settings → MCP connectors, pick the access level, and approve. Desktop and terminal clients send a key in a header.
An API key is shown once, right after you create it. The server keeps only a fingerprint, never the key itself. Lose it and there is no way to recover it — you revoke that connection and make a new one. Sign-in connections have no key to lose.
A paid plan is required
Connecting to AI is available on paid plans. The check runs on the server, on every request — not once at setup. If a store's subscription ends, the next call from the assistant is refused with a message explaining why, and the connection starts working again once the plan is back.
What it can read
| Area | What the assistant can answer |
|---|---|
| Storefront setup | Whether the gift widget can actually appear, and what is blocking it |
| Campaigns | What offers you are running, and the full configuration of any one of them |
| Performance | Gift orders, revenue, conversion rate, and gift AOV against store AOV |
| Products | Whether a specific product can be given as a gift — stock, publication, draft state |
| Widgets | Which widget types this store has, and the settings of each |
| Storefront wording | The text shoppers see, and what has been translated |
| App settings | The global switches that apply across every campaign |
| Plan | Which plan this store is on, and how much of its limits are used |
| Shopify resources | Products, collections, customer segments, locations, markets, shipping rates and POS locations — looked up by name so a campaign can be built without you finding ids |
What it can change
Only with write access, and only after showing you the prepared preview:
| Area | What the assistant can do |
|---|---|
| New campaigns | Build and create any supported campaign type, from your description |
| Existing campaigns | Change wording, schedule, thresholds, gifts, triggers, eligibility, delivery and discount settings |
| Campaign status | Turn a campaign on or off |
| Widgets | Change allowlisted text, colours, layouts and display behaviour |
Deleting a campaign needs delete access on top, and is the one action that cannot be undone.
What it never returns
- No customer data. No names, emails, addresses, or individual orders. Performance figures are aggregates over a date range, never a list of people.
- No credentials. Not your Shopify access token, not the key itself, not any internal record id.
- No pricing or upgrade pitch. The plan tool reports what your store is doing — plan, quota, usage. It does not list plans, quote prices, or suggest an upgrade.
Where next
- Authentication — sign in or create a key, set the access level, revoke
- Install a client — ChatGPT, Claude, Claude Code, Codex, Cursor, Claude Desktop
- Tool guide — what each tool is for, and when it is the right one
- Recipes — questions worth asking, start to finish
- Troubleshooting — every refusal message, and what it means
- Store API — the same read data as plain REST, for your own integrations