# Checkout Doctor MCP server

Connect Claude, ChatGPT, Gemini, Grok, Cursor, VS Code, and other AI assistants to Checkout Doctor over MCP. Checkout Doctor finds what is costing a Shopify store money: it shops the store on a schedule in a real browser, checks each step against the store's own Admin data, and reports every failure with an estimated dollar figure and proof.

- Server URL: `https://checkoutdoctor.agntwrk.com/mcp`
- Transport: Streamable HTTP
- Sign-in: OAuth 2.1 in your browser on first use; no API key

## Connect your assistant

### Claude Code

1. Add the server. Use `--scope user` to make it available in every project, or `--scope project` to write it to `.mcp.json` for your team.
2. Run `/mcp` inside Claude Code and follow the browser sign-in (or run `claude mcp login checkoutdoctor`).

Terminal:

```bash
claude mcp add --transport http checkoutdoctor https://checkoutdoctor.agntwrk.com/mcp
```

Vendor documentation: https://code.claude.com/docs/en/mcp

### Claude Desktop, claude.ai on the web, and Claude mobile

1. Open Customize, then Connectors.
2. Click +, then Add custom connector.
3. Enter the server URL https://checkoutdoctor.agntwrk.com/mcp and click Add, then sign in when asked.
4. On Team and Enterprise plans an owner adds it first under Organization settings, then Connectors; members then sign in individually.

Anthropic connects to the server from its own network, so the URL must be reachable from the public internet. Connectors you add on the web also appear in the mobile apps. Custom connectors are available on all plans; the free plan allows one.

Vendor documentation: https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp

### ChatGPT

1. On the web, open Settings, then Security and login, and turn on Developer mode.
2. In the Plugins section select the plus button to create a developer-mode app for a remote MCP server.
3. Enter the server URL https://checkoutdoctor.agntwrk.com/mcp and choose OAuth for authentication, then sign in when asked.

Developer mode is offered on paid web plans; your workspace admin may need to enable it. Write actions ask for confirmation by default.

Vendor documentation: https://developers.openai.com/api/docs/guides/developer-mode

### OpenAI API

1. Add an `mcp` tool to a Responses API request.
2. The API does not run the OAuth sign-in: your application obtains an access token for this server and passes it as `authorization` on every request.

Responses API tool:

```json
{
  "type": "mcp",
  "server_label": "checkoutdoctor",
  "server_url": "https://checkoutdoctor.agntwrk.com/mcp",
  "authorization": "<access token>"
}
```

Vendor documentation: https://developers.openai.com/api/docs/guides/tools-connectors-mcp

### OpenAI Codex CLI

1. Add the server to `~/.codex/config.toml`.
2. Run `codex mcp login checkoutdoctor` and finish the sign-in in the browser.

~/.codex/config.toml:

```toml
[mcp_servers.checkoutdoctor]
url = "https://checkoutdoctor.agntwrk.com/mcp"
```

Terminal:

```bash
codex mcp login checkoutdoctor
```

Vendor documentation: https://learn.chatgpt.com/docs/extend/mcp?surface=cli

### Gemini CLI

1. Add the server.
2. Run `/mcp auth checkoutdoctor` inside Gemini CLI and finish the sign-in in the browser.

Terminal:

```bash
gemini mcp add --transport http checkoutdoctor https://checkoutdoctor.agntwrk.com/mcp
```

Vendor documentation: https://geminicli.com/docs/tools/mcp-server/

### Gemini app

1. On gemini.google.com, open Settings, then Connected Apps.
2. Under Custom apps choose Add a custom app.
3. Enter the server URL https://checkoutdoctor.agntwrk.com/mcp, then continue and sign in.

Google limits custom apps to personal Google accounts for adults in the US; work and school accounts are not supported. Connections made on the web also work in the mobile app.

Vendor documentation: https://support.google.com/gemini/answer/17209137

### Grok and the xAI API

1. In the Grok app, open grok.com/connectors, choose New Connector, then Custom, enter the server URL, and complete the sign-in.
2. In the xAI API, add an `mcp` tool to a Responses API request at `https://api.x.ai/v1/responses`. Pass an access token for this server as `authorization`; the API does not run the sign-in.

xAI API tool:

```json
{
  "type": "mcp",
  "server_label": "checkoutdoctor",
  "server_url": "https://checkoutdoctor.agntwrk.com/mcp",
  "authorization": "<access token>"
}
```

Vendor documentation: https://docs.x.ai/docs/guides/tools/remote-mcp-tools, https://docs.x.ai/grok/connectors

### Cursor

1. Use the install link, or add the server to `~/.cursor/mcp.json` (all projects) or `.cursor/mcp.json` (this project).
2. Complete the sign-in if Cursor asks for it.

mcp.json:

```json
{
  "mcpServers": {
    "checkoutdoctor": {
      "url": "https://checkoutdoctor.agntwrk.com/mcp"
    }
  }
}
```

Add to Cursor: cursor://anysphere.cursor-deeplink/mcp/install?name=checkoutdoctor&config=eyJ1cmwiOiJodHRwczovL2NoZWNrb3V0ZG9jdG9yLmFnbnR3cmsuY29tL21jcCJ9

Vendor documentation: https://cursor.com/docs/context/mcp/install-links

### VS Code and GitHub Copilot

1. Use the install link, run the command, or add the server to `.vscode/mcp.json`.
2. Start the server from the MCP view or the file's inline Start action and complete the sign-in.

.vscode/mcp.json:

```json
{
  "servers": {
    "checkoutdoctor": {
      "type": "http",
      "url": "https://checkoutdoctor.agntwrk.com/mcp"
    }
  }
}
```

Terminal:

```bash
code --add-mcp '{"name":"checkoutdoctor","type":"http","url":"https://checkoutdoctor.agntwrk.com/mcp"}'
```

Install in VS Code: vscode:mcp/install?%7B%22name%22%3A%22checkoutdoctor%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fcheckoutdoctor.agntwrk.com%2Fmcp%22%7D

Vendor documentation: https://code.visualstudio.com/docs/copilot/customization/mcp-servers

### Any other MCP client

1. Add a remote (HTTP) MCP server with the URL https://checkoutdoctor.agntwrk.com/mcp.
2. It speaks Streamable HTTP and signs in with OAuth 2.1 (authorization code with PKCE S256, dynamic client registration). Clients that follow the MCP authorization spec discover everything from the URL.
3. To test a connection, run the MCP Inspector and choose the Streamable HTTP transport.

Terminal:

```bash
npx @modelcontextprotocol/inspector --server-url https://checkoutdoctor.agntwrk.com/mcp --transport http
```

Vendor documentation: https://modelcontextprotocol.io/docs/tools/inspector

## Tools

- `health` (read-only): Report that the app is up, its name, and the enabled features.
- `whoami` (read-only): Return the signed-in user (id, email, name) and the scope (store or tenant) every other tool acts on. Use it to confirm which account an answer is about.
- `sync_status` (read-only): For each resource this app mirrors from the store (products, inventory, ...): how many objects are mirrored and when the mirror last changed. Use to judge how fresh the data behind findings and product lookups is.
- `search_products` (read-only): Search the store's mirrored products by a substring of the title, a variant SKU, or a variant barcode (case-insensitive). Returns compact rows, sorted by title, paged with offset. Use get_product for the full record of one.
- `get_product` (read-only): One mirrored product with all its variants (SKU, barcode, price, weight). Takes the id from search_products, a numeric Shopify id, or a product GID. Reads the mirror, not live store data.
- `validate_gtin` (read-only): Check a barcode offline: whether it is a valid GTIN (8, 12, 13, or 14 digits with the right check digit), its type, the check digit it should have, and its GTIN-14 form. Spaces and hyphens are ignored. Does not look anything up.
- `list_findings` (read-only): List the findings (problems the checks found) for this store, newest first. Filter by status, severity, or check id; page with offset. Use findings_summary first for the big picture and get_finding for one finding's evidence.
- `get_finding` (read-only): Get one finding in full: its evidence, dates, the estimated revenue at risk (impact) when there is one, the store changes in the 48 hours before it appeared (changesBefore, most relevant first, each flagged relevant or not), what its check looks for and why it matters, and links to where it can be fixed. Use after list_findings when you need detail.
- `findings_summary` (read-only): Counts of this store's findings: all by status, and the open ones by severity and by check. Start here to see how bad things are before listing anything.
- `list_checks` (read-only): List the checks this app can run: id, what each looks for, the plan that unlocks it, and whether it is enabled. Use to find a valid check id for run_check or list_findings.
- `run_check` (changes data): Run one check now for this store and update its findings: new problems are created, fixed ones resolved. Returns how many findings were created, seen again, and resolved. Use run_scan to run every enabled check; do not call this repeatedly.
- `run_scan` (changes data): Run every enabled check now for this store (as the dashboard's Run checks now button does) and return how many findings were created, how many are reported in total, and how many checks failed. Can take a while; use run_check for one check.
- `resolve_finding` (changes data): Mark a finding resolved. It reopens by itself if a later scan sees the problem again. Use after the problem is fixed or accepted.
- `snooze_finding` (changes data): Hide an open finding for a number of days (1 to 365); it reopens after that. Use for problems that will be dealt with later. A resolved finding cannot be snoozed.
- `reopen_finding` (changes data): Set a snoozed or resolved finding back to open. Use when a problem was closed by mistake or is back.
- `list_journeys` (read-only): List the shopper journeys Checkout Doctor learned for this store (search to product, add to cart, checkout, menu pages and store-specific flows) with their steps in plain words, why each matters, and the newest result per viewport. Use it to see what is monitored beyond the fixed checkout checks; a failing journey also appears as a finding of the check storefront/journey-failed.
- `get_alert_settings` (read-only): Where this store's alerts go and what is muted: the plan, which channels (email, Slack, Shopify Flow) the plan allows and which are set up, email recipients, the checks muted, and whether a Slack webhook and a storefront password are set. Secrets are never returned, only "set" or "not set".
- `mute_check` (changes data): Stop alerts for one check in this store. The check still runs and still produces findings; only messages stop. Reverse with unmute_check.
- `unmute_check` (changes data): Let a muted check alert again. Findings of that check that are open and serious are alerted on the next scan.
- `list_stores` (read-only): List the stores this person is linked to (opened Checkout Doctor from their Shopify admin), worst first, with storefront status, open findings by severity, and the largest revenue at risk. Use it to see which client store needs attention. The other tools act on the one store marked active; this tool cannot switch stores. Not for findings detail: use list_findings.

## Prompts

- `triage_findings`: Summarize the open findings by severity and propose an order of work.
- `explain_finding` (id): Explain one finding in plain words and say how to fix it.

## Things to ask

- Who am I signed in as, and which store are you looking at?
- Look up a product by its title and show its variants and prices.
- How fresh is the mirrored store data?
- What is costing my store the most money right now?
- What changed in my store just before checkout broke?
- How many open findings do I have, and which are the most severe?
- Show me the evidence for the highest-severity open finding and tell me how to fix it.
- Run all checks and tell me what is new.
- Snooze the low-severity findings for two weeks.
- Where do my alerts go, and what is muted?
- Mute alerts for the broken images check.
- Which of my stores needs attention first?
