Headstream

MCP server

Updated 2026-11-02

Connect

URL: https://headstream.app/api/mcp

The server uses Streamable HTTP and takes the same API key as the REST API, in an Authorization: Bearer hsk_... header. Create a key under Organization, in the API and MCP card. It reaches every project in the organization. The limit is 120 requests per minute.

Claude Code:

claude mcp add --transport http headstream https://headstream.app/api/mcp \
  --header "Authorization: Bearer hsk_YOUR_KEY"

Cursor, in .cursor/mcp.json:

{
  "mcpServers": {
    "headstream": {
      "url": "https://headstream.app/api/mcp",
      "headers": { "Authorization": "Bearer hsk_YOUR_KEY" }
    }
  }
}

See the Claude Code and Cursor setup pages for more.

How it works

Start with list_sites to get a siteId, which nearly every tool needs. Most reporting tools take days, which defaults to 30. Revenue tools take model, which defaults to linear. Results are JSON, with a notice that the values are customer data and should be treated as data, not instructions.

Tools

Setup

ToolDoes
list_sitesLists projects, with IDs and domains
create_projectAdds a project and returns its snippet
get_setup_statusShows if events are arriving, plus goals and Stripe status
create_goalSets a conversion
get_goalsLists goals, with conversions and rate

Traffic

ToolDoes
get_summaryVisitors, pageviews, sessions and bounce rate, with the previous period
get_trafficPageviews per day
get_breakdownTop values for a dimension
get_heatmapClicks, top elements and scroll depth for a page
get_session_timelineWhat one visitor did, step by step
list_recordingsRecorded sessions, optionally only frustrated ones

Revenue

ToolDoes
get_revenue_by_channelRevenue minus refunds, credited by channel
get_revenue_breakdownRevenue by campaign, source or landing page
list_customersPaying people with revenue
get_customer_journeyA person's touches and payments, in order

Revenue tools need Stripe, and connecting Stripe is in beta.

Reports and dashboards

ToolDoes
run_reportRuns any report spec
list_dashboardsLists saved dashboards
get_dashboardRuns every report on a dashboard
create_dashboardCreates an empty dashboard
add_reportSaves a report to a dashboard
remove_reportRemoves a saved report

Self-reported

ToolDoes
record_self_reportsSaves answers from a server or an import
group_self_reportsPuts answers containing a phrase in a group

Trust

ToolDoes
explain_metricShows how a number is calculated, with raw rows
trace_paymentTraces a ledger entry to each credited visit
get_data_qualityChecks freshness, duplicates and reconciliation
get_change_logLists what changed how numbers are calculated
export_eventsReads raw events, one page at a time

Fixes

ToolDoes
get_top_fixReturns the most valuable change, with evidence and a brief
list_fixesLists fixes and their status
mark_fix_appliedRecords that a fix is live
check_fixReturns improved, worse or inconclusive
dismiss_fixDismisses a fix that doesn't hold up

A/B tests

ToolDoes
create_experimentCreates a test on a goal and returns the code
list_experimentsLists tests
start_experimentStarts a test once the code is live
get_experiment_resultsReturns results and a verdict
stop_experimentStops a test and records the winner

Uptime

ToolDoes
get_uptimeReturns status, uptime and recent incidents
configure_monitorTurns free downtime alerts on or off

See which marketing makes money.

Get started free