# Connect your site to Claude

> Plaintext version for LLMs. Canonical HTML: https://askbowtie.com/learn/mcp/connect-your-site-to-claude/

Bottom line

Three steps, and the middle one is a single command. Put one tag on your site so there is something to read, add askbowtie as an MCP server in Claude with a token, then ask in plain language. From that point your agent reads your live traffic, conversions, errors and search data instead of guessing. Budget about five minutes, most of which is waiting for your first pageview to arrive.

## What you need before you start

Nothing you do not already have. The list is short on purpose, and two of the three items are free.

| You need | Why |
| --- | --- |
| A site you can edit the `` of | the tracker is one script tag, and it has to load on every page |
| An askbowtie account and its token | the token is what tells the server which sites are yours |
| Claude, Claude Code, Cursor or any MCP client | MCP is an open standard, so the client is your choice |

You do not need a credit card, a plan decision, or a migration. The free tier covers the tracker, the dashboard and an un-metered MCP up to roughly 100,000 events a month across every site on the account.

## Step 1: add the tracker so there is something to read

An MCP server with no data connected to it answers every question with a shrug, so this step comes first. Paste your line into the `` of your site:

```
<script src="https://askbowtie.com/bowtie.js" data-token="your-claim-token" async></script>
```

Three details matter and each one has bitten somebody. The `data-token` in that snippet is a placeholder: yours is unique to your site and is how askbowtie confirms the site is yours, so copy the real line from your dashboard. Use `async` rather than `defer`, because the tracker needs to be listening for errors that happen while the page is still parsing. And never version the URL, since the loader updates itself.

WordPress, Shopify, Tag Manager and the site builders all work, because all of them are just ways of getting that one line onto every page. If you have not signed up yet, [Get started](/signup/) covers this step and the two below it.

## Step 2: connect the server

Two ways in, and which one you want depends on the client. Claude desktop and web take one click and a sign-in; Claude Code and everything else take one command with a pasted token.

**Claude desktop or claude.ai:** Settings, then Connectors, then Add custom connector. Enter a name and `https://askbowtie.com/mcp` as the server URL, then Continue. That opens askbowtie's own sign-in and consent screen, where you pick which site(s) Claude can reach.

*What you see in Claude after entering the URL. Click Connect to sign in and choose your site.*

**Claude Code, Cursor, or any client that sets a header instead:**

```
claude mcp add --transport http askbowtie https://askbowtie.com/mcp \
  --header "Authorization: Bearer YOUR_TOKEN" --scope user
```

`--scope user` is the part people skip and then miss. Without it the connection belongs to the directory you happened to be standing in when you ran the command, so your agent knows about your site in one project and not in the next.

| Client | How it connects | Scope of the connection |
| --- | --- | --- |
| Claude desktop and web | Settings → Connectors → Add custom connector → sign in, above | your askbowtie account, all clients you're signed into |
| Claude Code | the `claude mcp add` command above | per user, or per directory without `--scope user` |
| Cursor and other MCP clients | an HTTP MCP server entry with the same URL and header | whatever that client offers |

The setup docs carry the current Claude Code command and are kept up to date there, so this page does not drift: see [the tracking reference](/docs/).

> The tool list is fetched once, when the client connects. If you connected before a tool existed, your agent cannot see it until you restart the connection. This surprises people roughly once each.

## Step 3: link your Google sources

The tracker gives your agent what happens on your site. Two Google products give it what happens before the visit, and both are optional.

| Source | What it adds | What the link grants |
| --- | --- | --- |
| Search Console | queries, impressions, clicks and position, joined to your pages | read only |
| Google Ads | spend, campaigns and paid performance joined to conversions | read and write, because Google offers no read-only scope |

Both are one-time links under Settings, then Connectors, with one consent screen each. The write access on the Ads side is Google's constraint rather than a design choice, so it is fenced: management is limited to a domain's owners and admins, every change previews before it applies, budget changes and campaign creation sit behind a separate switch, and any campaign created this way starts paused.

## The worked example: one command, then a real chain

Two things happen after that command, and it is worth seeing both.

**First, the handshake.** The client runs `initialize`, the two sides agree on protocol version `2025-03-26`, and the client calls `tools/list` exactly once. It comes back with **47 tools**, each carrying a description and an input schema. From then on your agent is choosing from that list without asking you which tool to use.

**Then, the work.** Here is a real sequence against askbowtie.com, read out of the per-call activity log rather than written from memory. Five calls, one user, the morning of 4 September 2026, all times UTC.

| Time (UTC) | Tool | Result |
| --- | --- | --- |
| 05:35:12 | `get_incidents` | the failure classes, split into what needs action and what is third-party noise |
| 05:35:18 | `get_incident_detail` | the signature behind one of those classes, with the page it happens on |
| 05:38:07 | `get_conversions` | **refused.** The call named no domain the token owns, so the server answered `domain_denied` |
| 05:38:37 | `list_domains` | which sites this token can actually see |
| 05:39:14 | `get_conversions` | conversions for the right domain, second attempt |

Keep the refused call in view, because it is the one that tells you the connection is safe to hand an agent. A token reaches the sites it owns and nothing else, and when the agent overstepped it got a flat `domain_denied` rather than a plausible-looking empty answer it might have reported as "no conversions". It then called `list_domains`, found out what it was allowed to see, and asked again.

Those first two calls are six seconds apart, and the second one has to be told which failure to expand. [What is Model Context Protocol?](/learn/mcp/what-is-model-context-protocol/) works through why that matters and what the log can and cannot prove about it.

What the agent replied is not recorded, deliberately: askbowtie stores which tool ran, for which domain, for which user, and when, and keeps no transcript at all.

## What to ask first

Open-ended questions work better here than precise ones, because the agent can see the whole surface and you cannot yet.

| Ask this | And you find out |
| --- | --- |
| how's the site doing? | the headline state, plus anything actually broken |
| which page leaks the most sessions? | top pages by exit rate, joined to conversions |
| did anything change after the last deploy? | errors and conversions before and after the timestamp |
| what am I ranking for that I did not expect? | Search Console queries, impressions, clicks and position |

If you would rather not improvise, ask for `playbook`. It returns the indexed procedures the server ships with, so the agent can follow a known-good route instead of inventing one.

## When it looks like it is not working

Four failures cover nearly all of it, and none of them needs a support ticket.

| Symptom | Usually | Check |
| --- | --- | --- |
| the agent says it has no tools | the client never completed the handshake | restart the client, then ask it to run `tools/list` |
| tools exist but every answer is empty | no events have arrived yet | load a page of your own site, then ask again |
| your site is missing from `list_domains` | the tag is missing its real `data-token` | view source on your live page and compare with the dashboard, or verification has not run yet; the dashboard shows the claim state |
| a Google tool refuses | the connector was never linked | Settings, then Connectors, then one consent screen |

One thing to know before you conclude that nothing is being recorded. On WordPress your own logged-in browsing is excluded automatically, so run that check in a private window or signed out, or you will see no events and assume the tag is broken. Everywhere else your own visits count like anyone else's.

## Running more than one site

Agencies and anyone running a small portfolio hit this on day two. One account holds as many sites as you like, and one connection reaches all of them, because the token is tied to the account rather than to a domain. Each site still gets its own tracker line with its own `data-token`, and its own database behind the scenes.

What changes is how you ask. With one site connected, "how's the site doing?" is unambiguous. With four, the agent calls `list_domains` first and then either asks you which one you meant or answers for each in turn, so naming the domain in your question saves a round trip.

## What the connection can and cannot see

A token reaches the sites it owns and nothing else, and each site's data sits in its own database. Tracking is cookieless by default.

In the other direction, askbowtie records which tool ran, for which domain, for which user, and when, and keeps no transcript of your prompts or the answers.

The one thing the connection does that a local server cannot is keep running after you close the chat. That is why a funnel break or an outage can reach a human at 2am, when no agent is asking anything.

## Where to go next

Once the connection is live, the interesting question is not how to wire it up but what to point it at. The next pages cover which MCP servers reach a live website at all, and why an agent reading joined data beats an agent reading a dashboard.

Continue in this hub

- [The analytics your AI agent can read](/learn/mcp/analytics-your-ai-agent-can-read/)
- [Best MCP servers for your website](/learn/mcp/best-mcp-servers-for-your-website/)
- [Back to the MCP hub](/learn/mcp/)
