05 · API
Ask your analytics through MCP
The MCP server lets an assistant such as Claude ask your analytics its own questions, with the same read-only key as the REST API.
01Add it to your assistant
The server is at https://tallybyoutpost.com/mcp, and it takes the same key as the REST API (make one on the Setup page), as Authorization: Bearer …. In Claude Code:
claude mcp add --transport http analytics "https://tallybyoutpost.com/mcp" \
--header "Authorization: Bearer $TALLY_API_KEY"
Any client that speaks MCP over Streamable HTTP and can send a header works the same way.
02The tools
Every tool only reads. Each takes the REST route's parameters as arguments (filters is an object, {"country": "DE"}, and site can be left out):
| Tool | What it answers |
|---|---|
list_sites | The site this API key reads: its id, name, domain, time zone and how visitors are counted (cookie, cookieless or consent). |
get_overview | Visitors, pageviews, visits, median engaged time and, when payments are connected, net revenue, sales, refunds, conversion rate and revenue per visitor, for a period and the window before it, with the change between them. Also the visitors live now. |
get_breakdown | The top values of one dimension (source, channel, page, country, device, campaign …) by distinct visitors, or by revenue, each with its share of visitors and the revenue its visitors brought. |
compare_periods | A period against the window just before it (previous) or the same dates a year earlier (year): every overview number for both, and the relative change. Changes are null where the site's records don't reach back far enough to compare. |
list_sales | Payments newest first, each with its amount as charged and in US dollars, whether it is linked to a visitor, how (method and confidence), and why not when it isn't. Filter to unlinked payments or refunds. |
get_receipt | One payment's receipt: the evidence chain that ties it to a visit (first visit, visits before paying, the credited visit, the handle that matched and where), every provider id, and the payment it follows from. |
get_coverage | How much of the period's revenue is attributed to a visitor, by method, and the fix-it list for what isn't (with code to paste). |
list_visitors | Visitors (visits on a cookieless site) of a period, most recent first or by revenue or likely to buy, with visits, pages, engaged time per visit, revenue and their latest visit. |
get_visitor | One visitor's whole journey: every visit with its pages, engaged time, goals and outbound clicks, their payments, first touch and the touch credited with the sale. |
get_realtime | Who is on the site in the last five minutes (page, place, source, device) and the sales of the last hour. |
get_goals | Every goal completed in the period with completions, converting visitors, conversion rate and the revenue of converting visitors; give goal for one goal's properties. Lists the site's funnels. |
get_funnels | The site's funnels with each step's visitors, conversion from the step before and from the first, and drop-off; or one funnel with funnel. |
get_customer_value | Lifetime value by the source that first brought each customer: customers, revenue, average per customer, renewals and repeat rate, over every payment on record. |
get_peak_hours | Visits, sales and revenue by weekday and hour in the site's time zone, and the busiest three hours when the data is enough to say. |
get_engagement | How pages are read: views, median reading time, average scroll depth and the share read to the end, per page and overall, and the common entry and exit pages. |
get_purchase_paths | How buyers got there: time from first visit to purchase, visits and pages before paying, first-touch to credited-source flows, and the pages buyers saw before paying. |
03Protocol
- Streamable HTTP with JSON-RPC 2.0, on revision
2026-07-28; clients of2025-11-25,2025-06-18,2025-03-26open withinitializeand are served too. - Methods:
server/discover,initialize,tools/list,tools/callandping. - A result's
structuredContentis the REST route's JSON;contentholds a one-line summary, then the same JSON as text. - A key the account's plan doesn't cover gets
402, the rate limit429withRetry-After, as over REST.
curl -s "https://tallybyoutpost.com/mcp" \
-H "Authorization: Bearer $TALLY_API_KEY" \
-H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
-H "MCP-Protocol-Version: 2026-07-28" -H "Mcp-Method: tools/call" -H "Mcp-Name: get_overview" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": {"name": "get_overview", "arguments": {"period": "30d"},
"_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientInfo": {"name": "curl", "version": "8"},
"io.modelcontextprotocol/clientCapabilities": {}}}}'
04Check it worked
Something missing, or not what you see? Write to support@tallybyoutpost.com and say which page.