Skip to main content
Highseat runs an MCP server, so an agent can read your stats and answer a question such as “What were my top referrers last week for example.com?”. It reads the same reports as the API, for the sites your API key reaches. Every tool reads, and none changes anything.
Server URL
The server is listed in the MCP Registry as com.highseat/mcp.

Connect a client

Create an API key in Workspace settings › API keys first: see Authentication. A read key is enough. Limit it to the sites the agent should see. The client sends the key as a bearer token in the Authorization header. Replace hs_live_… below with your key.

Claude Code

Cursor

Add the server to ~/.cursor/mcp.json, or to .cursor/mcp.json in a project:

Claude Desktop

Claude Desktop reaches a server that takes a key through mcp-remote, which needs Node.js. Open Settings › Developer › Edit Config, add the server, and restart Claude Desktop:
The header goes through env because Claude Desktop on Windows does not escape a space inside args.

Other clients

Any client that speaks Streamable HTTP and can send a header connects the same way: the server URL, plus Authorization: Bearer hs_live_….

Tools

Every GET endpoint of the API is a tool, named by its operation id: listSites, getOverview, getSources, getFilterValues and the rest. A tool takes the endpoint’s parameters and carries its description, so the endpoint pages document the tools too. Describe the API key is the one endpoint left out, because listSites already says which sites the key reaches. The server also tells the agent how to use them: start with listSites, read the values a filter takes before filtering on one, and read a row with an empty source name as direct traffic.

Limits and errors

A tool call is an API call. It counts against the key’s hourly budget and the workspace’s calls at once, as Limits describes, and it reaches only the key’s sites. A failed call answers with the API’s error code and message, such as RATE_LIMITED with the seconds to wait: see Errors. A call that runs longer than 30 seconds is stopped and answers QUERY_TIMEOUT. Ask for a shorter date range.