aov-bundle-upsell
🤖 MCP
Authentication

Authentication

There are two ways to authenticate, and they produce the same thing: a read-only token bound to one store. Pick by what your client can do, not by which is more secure — neither is weaker.

Server URLhttps://avada-bundle-upsell.firebaseapp.com/mcp
CredentialA token beginning aovmcp_
Sent asAuthorization: Bearer aovmcp_…
ScopeRead only
Rate limit60 requests per minute, per connection

Copy the Server URL from the app rather than typing the one above. It is shown in Settings → Integrations, on the Connect to AI and the API card, and it is the one correct for your store.


Option A — Sign in (no token to copy)

Use this when your client asks only for a URL: Claude web and desktop, and most hosted connectors. The client fetches its own token, so there is no secret for you to handle.

  1. Copy the Server URL from Settings → Integrations.
  2. In your AI client, add a custom connector and paste the URL. In Claude that is Settings → Connectors → Add custom connector.
  3. Click Connect. A consent screen appears, naming the client that asked and the address it will return to.
  4. Type the store's .myshopify.com domain — not your custom domain — and click Continue to Shopify.
  5. Sign in at Shopify and approve.

The connection then appears in Settings → Integrations like any other, named after the client.

⚠️

Read the consent screen before you approve it. The client's name is free text — anyone can register a connector called "Claude". The line that says where the connection will be sent back to is the part an impostor cannot fake. If you do not recognise that address, stop.

Connecting the same client again replaces its previous token rather than adding a second one. Reconnecting after a problem is safe; it does not leave dead connections behind.


Option B — Create a token

Use this for Claude Code, Cursor, and anything you script yourself.

  1. In AOV.ai Bundle Upsell, go to Settings → Integrations.
  2. On the Connect to AI and the API card, click Create connection.
  3. Name it after the tool you are connecting, for example Claude Desktop. The name only exists to tell connections apart.
  4. Click Create.

The token appears once, with ready-to-paste snippets for Claude web, Claude Code, Cursor, Claude Desktop, any other client, and the Public API. Copy the one for your tool, then follow Install a client.

The Connection created screen, with the masked token, a Copy button, and the client setup tabs
⚠️

The token is displayed only at this moment. The server stores a fingerprint of it, not the token, so it cannot be shown again — not by you, and not by support. Put it in a password manager before you close the screen.

Already set up once and just need the snippet again? Use See setup instructions at the bottom of the connections list. That view shows a placeholder where the token goes, since the real one cannot be shown a second time.

Five is the limit

A store can hold 5 tokens created this way at once. The card shows how many you have used, and Create connection is disabled once you are at the limit — revoke one to free a slot.

Connections made by signing in do not count against those five. If the card says you are full but you only remember creating two, the rest were created by hand at some point; the connections list shows them all.


Where the token goes

Your client sends it as a bearer token on every call:

Authorization: Bearer aovmcp_your_token_here

The word Bearer, a single space, then the token. The generated snippets already include it. Nothing is ever sent in a URL — the token belongs in the Authorization header only.

The connections list

Each connection shows its Name, when it was Created, and when it was Last used — or Never used, which is the fastest way to spot a client that has not actually connected yet.

Revoke stops the token working from the very next call. There is no confirmation step and it cannot be undone, so read the row before you click. Revoke when a token may have leaked, when you stop using a tool, or when a laptop leaves your control.

Uninstalling the app revokes every connection on the store. Reinstalling does not bring them back — connect again.

The same token calls the Public API

The token is accepted at two places, and it grants exactly the same thing at both:

SurfaceFor
/mcpAI clients
/public-apiYour own scripts, over plain REST — GET only. See Store API

Revoking a connection stops both at once. Because the Public API grants no more than the MCP tools do, a leaked token is a read of the same data either way — but it is still a leak. Treat it as one.

Keeping the token safe

  • Never paste it into a chat, an issue, a commit, or a screenshot.
  • Keep it out of shared config files and anything that reaches a repository. Where a client supports it, put it in an environment variable — the Claude Desktop snippet does this.
  • Use one named connection per tool. A shared token makes the connections list meaningless and turns revoking into a choice between breaking everything and breaking nothing.
  • Revoke rather than reuse. Creating a replacement takes seconds.
  • Prefer signing in where the client supports it. There is no secret to leak in that flow at all.

Reading an authentication error

Your assistant reads the refusal back to you in plain language.

Message saysMeansAction
UnauthorizedThe token was not acceptedSee the note below before you act
Rate limit exceededMore than 60 calls in one minuteWait about a minute
⚠️

Unauthorized is also what you get when the client sends no token at all. It covers a missing header, an unknown token, a revoked one, and an app that has been uninstalled — all one message, on purpose, so that the endpoint cannot be used to work out which tokens are real.

Before you create a replacement, check that your client is actually sending the Authorization header. If it is not, a new token will not be sent either. See Troubleshooting.

Related

Product
Install AppWebsiteAvada Apps
Resources
DocumentationFAQPrivacy Policy
Company
Avada GroupContact
© 2026 Avada Group. All rights reserved.