Connecting SalesPilot is signing in to CrossUp from Claude: you say yes on a CrossUp screen and the connection is created on its own. You don’t copy any key, and revoking it in the admin cuts access.

How it is authorized

1

Claude asks for permission

When you tap Connect, Claude registers with SalesPilot and opens the CrossUp permission screen, at app.crossup.ai/oauth/authorize.
2

You sign in with your CrossUp account

If you aren’t signed in, it asks you to and brings you back to the same screen. There you see which store will be connected and what Claude will be able to do. The request expires after 10 minutes.
3

You tap Allow

CrossUp issues an agent key for your store and hands it to Claude over a sealed channel. The key never shows on screen.
4

Claude comes back with the tools

From then on, every question travels with that key. Every hour Claude renews the session and SalesPilot checks the key is still alive.
Cancel creates nothing: Claude gets the refusal and no connection is left.

What the connection can do

What the permission screen says, and nothing else: It doesn’t create or edit suggestions, bundles or the CrossUp configuration. If you ask, Claude gets TOOL_NOT_AVAILABLE and tells you that is done from the admin. Turning SalesPilot off or pausing a suggestion ask for your confirmation before running: Claude shows you what changes and waits for the yes.

The agent key

The connection is an agent key (sak_…) with a single permission, agent:operate. It is nothing like the storefront key: With Claude you never see it. For Cursor and other clients without OAuth you generate it yourself and it shows only once.

Revoke

In API & Agents → Active connections, Revoke on the Claude connection. Claude can no longer renew the session and asks you to reconnect; a question already in progress may finish answering. To come back, Connect again in Claude: a new key is created. The connection lasts 90 days without use. While you use it, it renews itself.

For developers

SalesPilot is a remote MCP server over Streamable HTTP and is its own authorization server (OAuth 2.1, PKCE S256, dynamic client registration, public clients). A request without a credential answers 401 with the pointer to the resource metadata, which is what starts the flow in the client:
Accepted redirect URIs are Claude’s (https://claude.ai/api/mcp/auth_callback) and Claude Code’s loopback ones (http://localhost and http://127.0.0.1, on any port). The access token lasts one hour; the refresh token rotates on every use and, if the key was revoked, the token endpoint answers invalid_grant. With an agent key pasted by hand, the header is Authorization: Bearer sak_… and there is no flow: the session starts on the first request.

If you don’t see it

Connect Claude

The URL and the three steps.

The MCP

What the connection can query and change.