Connect your AI assistant
Ask Claude, ChatGPT, Cursor or any assistant that speaks MCP about your website: “How many visitors did we get last week?”, “Which pages do people from ChatGPT land on?”. It reads your own sites, read-only, with a key you can revoke at any time.
1. Create a read key (not needed for ChatGPT or Claude on the web)
In Settings → API keys, give the key a name (such as “Claude”), choose Read stats, and if you like limit it to one site. Copy the key: it starts qs_ and is shown once. One key per assistant makes it easy to revoke just that one later.
2. Connect your assistant
The MCP server address is https://quietstats.co.uk/mcp (Streamable HTTP). ChatGPT and Claude on the web sign in to quietstats instead of using a key (see below). Everything else sends your key in the Authorization header as Bearer qs_….
Claude Code
claude mcp add --transport http quietstats https://quietstats.co.uk/mcp \
--header "Authorization: Bearer qs_…"Claude Desktop
Settings → Developer → Edit Config, add this to claude_desktop_config.json, then restart Claude (needs Node.js):
{
"mcpServers": {
"quietstats": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://quietstats.co.uk/mcp", "--header", "Authorization:${QS_AUTH}"],
"env": { "QS_AUTH": "Bearer qs_…" }
}
}
}Claude (claude.ai and the Claude apps)
Customize → Connectors → Add custom connector. Name it quietstats and enter the URL https://quietstats.co.uk/mcp. Under Authentication choose Sign in now (or Sign in when needed), keep Use Claude’s published identity (or Register automatically), then Add. Claude opens quietstats: log in, choose which site it can read, and press Allow read-only access. No key to paste.
Cursor
Add to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": {
"quietstats": {
"url": "https://quietstats.co.uk/mcp",
"headers": { "Authorization": "Bearer qs_…" }
}
}
}VS Code (Copilot agent mode)
Add to .vscode/mcp.json:
{
"servers": {
"quietstats": {
"type": "http",
"url": "https://quietstats.co.uk/mcp",
"headers": { "Authorization": "Bearer qs_…" }
}
}
}ChatGPT
On ChatGPT on the web: Plugins → + → Add custom MCP server. Name it quietstats, enter the server URL https://quietstats.co.uk/mcp, set Authentication to OAuth (it registers itself, so leave the client fields empty), tick the risk acknowledgement and Create as a plugin. ChatGPT opens quietstats: log in, pick the site, and press Allow read-only access. Then type @quietstats in a chat, or just ask about your stats.
Or a custom GPT with your API key: in the GPT builder, Configure → Actions → Create new action → Import from URL https://quietstats.co.uk/api/openapi.json, Authentication API Key, auth type Bearer.
Codex. In ~/.codex/config.toml, with your key in the QUIETSTATS_KEY environment variable:
[mcp_servers.quietstats]
url = "https://quietstats.co.uk/mcp"
bearer_token_env_var = "QUIETSTATS_KEY"Any other MCP client
Use Streamable HTTP with the URL https://quietstats.co.uk/mcp and the header Authorization: Bearer qs_…. To check a key from a terminal:
curl -s https://quietstats.co.uk/mcp \
-H "Authorization: Bearer qs_…" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'3. Ask about your site
- “How did my site do in the last 7 days compared with the week before?”
- “Which sources sent the most visitors this month, and how much came from AI assistants?”
- “Show daily visitors for October and tell me which day spiked.”
- “How is the Outreach campaign doing?” (UTM campaigns)
- “Which pages do mobile visitors from the UK read most?”
Tools
| Tool | What it returns |
|---|---|
list_sites | List the websites on this quietstats account (ID and domain). Use this first to find the site ID the other tools need. |
get_summary | Headline numbers for a site and date range: visitors, pageviews, visits, views per visit, bounce rate and average visit duration, each with the previous period and the change. |
get_timeseries | Visitors, pageviews and other metrics per hour, day, week or month, for charts and trends. |
get_breakdown | Top values of one dimension, biggest first: pages (page), entry/exit pages, referrers (referrer), channels (channel: Search, Social, AI, Email…), AI assistants (ai), UTM campaigns (utm_campaign, utm_source, utm_medium…), countries, regions, devices, browsers, operating systems, screen sizes or on-site search terms. |
get_overview | One-call overview for a date range: the summary numbers plus the top 5 pages, sources (referrers), channels, countries, devices and UTM campaigns. Good first call for "how is my site doing?". |
get_live | Unique visitors in the last 5 minutes, with the top pages and countries right now. Counts only. |
get_custom_events | Custom events and goals sent with quietstats events.js (e.g. Signup, Download): counts and unique visitors. property=name lists event names; prop or page needs name. |
get_report | Deeper reports: pathways (where visitors go next from a page, exit rates), matrix (browser × device × OS), landing (landing pages by channel), groups (content groups / site sections), search_terms (on-site search) and engagement (scroll depth and engaged time per page). |
Dates are in UTC. The tools take the same periods and filters as the Stats API; for full exports (every row, CSV) use the API directly.
Safety and limits
- Your sites only. A key reads the sites on your own account, or just the one site you limited it to. Other accounts’ sites are not found.
- Read-only. No tool can change settings, sites or data. “Send conversions” keys can’t read anything, so they don’t work here.
- Revoke at any time in Settings → API keys, or for ChatGPT and Claude under Settings → Connected apps; the assistant loses access straight away. We store only hashes of keys and sign-in tokens, and sign-in tokens last an hour before the app has to refresh them.
- Limits. Each tool call counts as one request towards your plan’s hourly API limit (the same limit as the Stats API). Connecting and listing tools don’t count.
- What the assistant does with the numbers is up to its provider: they leave quietstats when your assistant reads them, so check your assistant’s data settings if your stats are sensitive.