Agent-first analytics: stats, events, funnels, ingest, billing β 13 MCP tools, stdio + remote SSE.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Agent-first analytics for MCP + web traffic β query, instrument and configure from a terminal or an MCP client. No browser, no dashboard.
A dashboard for humans.
tgafor your agents.
One analytics surface for both halves of modern traffic: the web visits your site still gets, and the agent/MCP calls that increasingly drive it. Analytics tools assume a human staring at a chart β but increasingly the thing that needs the numbers is an agent: it fired the events, it wants to know whether they landed, and it wants five numbers back, not a dashboard to render. analyga is the surface the agent drives itself: one install, and it queries stats and funnels across web and MCP, sends server-side events, and reads its own schema β all as structured JSON, none of it screen-scraped.
Works with: Claude Code Β· Cursor Β· Cline Β· Windsurf Β· Aider Β· Codex Β· any MCP client
One agent, one terminal β query to funnel in 60 seconds. Watch the full demo.
No mockups β every clip is a live tga session against a seeded tenant. Click any GIF for the full-res video.
| Query β funnel | Agent self-signup | Server-side ingest |
|---|---|---|
![]() | ![]() | ![]() |
| One agent, one terminal, 60s | Keyless bootstrap β no admin in the loop | Send events with a stable --id |
| MCP client | The human dashboard |
|---|---|
![]() | ![]() |
| 13 native tools in Claude Code / Cursor | Everything the agent captures, in one real-time UI |
The npm package is analyga; the command is tga.
Every command takes --json β the machine surface is a first-class citizen, not an afterthought:
That returns every command, argument, flag, type, whether it is read-only, and the full list of error codes β generated from the same table that drives the parser, the help text and the MCP tools, so it cannot drift from what the CLI actually does. If it is not in the schema, it does not exist.
Ask the questions an agent actually asks after it ships: did the events land, and did anyone make it through the flow?
All read-only, all --json-able β an agent branches on the numbers instead of parsing a chart.
--id or your agents collapse into one visitorAnonymous identity is derived from IP and user-agent. Agent traffic shares both β one CLI version means one user-agent, and agents often share an egress IP β so without a stable id every agent behind that IP collapses into a single visitor. It cannot be backfilled.
A discarded event still answers HTTP 200. The ingest endpoint returns {"beep":"boop"} when it drops an event as a bot. This CLI treats that as a hard failure with a hint rather than reporting success β so an agent never believes a dropped event succeeded.
Server-side ingest uses a separate per-website key (ANALYGA_INGEST_KEY or --ingest-key), scoped to one website so it can only ever write that site's traffic. Mint one with tga ingest-key create <websiteId> and revoke it with tga ingest-key revoke <websiteId> β the plaintext is shown once and only its hash is stored.
An agent authenticates with its tenant key, names a plan, and gets back a Stripe Checkout URL to pass to a human who completes payment:
The tenant is pinned server-side from the key. The free plan (and any plan without a configured price) is not purchasable, and internal sister-stack tenants are never billed.
Prefer tools over a CLI? analyga ships an MCP server. Point Claude Code (or any MCP client) at it and your agent gets 13 native tools covering stats, events, funnels, websites, identity, server-side ingest (including minting/revoking ingest keys) and billing checkout.
For clients that use a JSON config, pass your key via ANALYGA_KEY. The MCP server runs outside your project directory, so it will not pick up .analyga/config.json:
Read-only tools are flagged, so a client will not prompt a human to confirm a read. Every tool declares an outputSchema, so an agent never parses prose or guesses field names β and a tool result and --json output are the same bytes, one client across two surfaces. A session with no key sees only the onboarding surface β how to connect, plus analyga_signup to bootstrap its own tenant β rather than the full toolset.
Failures carry a stable code and a distinct exit code, so an agent can branch on the outcome instead of string-matching a message.
| Exit | Meaning | What to do |
|---|---|---|
| 2 | usage | fix the call, do not retry |
| 3 | auth | fix the credential |
| 4 | permission | do not retry, escalate |
| 5 | not found | check the id |
| 6 | validation | fix the payload |
| 7 | rate limited | back off and retry |
| 8 | network | retry is reasonable |
| 9 | server | retry once, then report |
Exit 1 is reserved for unhandled crashes, so a classified failure is never ambiguous. Where the server can say what to do next, it comes back as a hint on its own line.
Resolved highest-priority first:
--key flagANALYGA_KEY environment variable.analyga/config.json in the current directorytga whoami reports which of these won. On a multi-tenant platform, "which tenant am I about to write to" is the question that matters most. .analyga/ holds a live credential β keep it out of version control.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/analyga)<a href="https://allmcps.com/mcp/analyga"><img src="https://allmcps.com/api/badge/analyga?style=directory" alt="Analyga on AllMCPs" /></a>