> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getmcpulse.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> MCPulse ships its own MCP server, so Claude and other agents can read your analytics directly.

MCPulse is analytics for MCP servers, and it is one. Connect an AI client and ask *"how is my orders server doing?"* — the agent reads the real figures rather than guessing.

## How it works

|               |                                                                                      |
| ------------- | ------------------------------------------------------------------------------------ |
| **Transport** | Streamable HTTP at `/mcp`                                                            |
| **Auth**      | OAuth 2.1 with PKCE. You approve it on a consent screen; nothing is copied or pasted |
| **Scope**     | Every call is scoped to the signed-in account                                        |
| **Tools**     | 24 — 14 read, 7 write, 3 destructive                                                 |

Every number comes from the **same services the dashboard reads**. There is no metric computed in the MCP layer, because there is no metric that could be — which is the whole reason the logic lives in services.

## Writes are the API's guards, not new ones

The connector can create and rename MCPs, invite and remove teammates, revoke keys and edit the company — everything the dashboard can do except ingest.

None of that needed new permission code. Every tool calls the same service function the REST route calls and hits the same guard, so a **member** is refused with the same sentence they would get in the dashboard. That is the return on "routes are thin, logic lives in services": the hidden button was never the control.

Tools carry `readOnlyHint`, `destructiveHint` or neither, so your client knows what to confirm. Those are hints to the client; the guard underneath is the enforcement.

Two writes deliberately do **not** exist — minting a key and deleting the account. [Tools](/mcp/tools) says why.

## Five metric tools, not sixteen

The obvious design is one tool per metric — `get_calls`, `get_retries`, `get_p95` — so that every question has an obviously named tool.

It is the wrong shape, and this product is the argument against it. Every registered tool costs its [schema in the context window of every session](/metrics/schema-size), whether or not it is ever called. Shipping sixteen near-identical tools over one metrics query would earn MCPulse its own [dead-tool warnings](/insights/dead-tool).

So **narrowing is a parameter**. `get_overview({ metrics: ["calls"] })` returns calls and nothing else — one schema, one round trip, a small answer. All sixteen metrics are still reachable; they are arguments rather than names.

The other half of that decision: the default response is a **summary**. The bulky arrays — daily series, per-tool rows, client splits, sparklines — are opt-in, because returning them on an unqualified question would undo the saving from the other side.

## The tools

| Group                | Tools                                                                                                                                                                                                  |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **MCPs and keys**    | `list_mcps` `get_mcp` `create_mcp` `rename_mcp` `delete_mcp` `list_keys` `revoke_key`                                                                                                                  |
| **Metrics**          | `get_overview` `list_tools` `get_tool` `get_insights` `get_sessions`                                                                                                                                   |
| **Account and team** | `get_account` `get_usage` `list_members` `invite_member` `change_member_role` `remove_member` `get_profile` `update_profile` `get_company` `update_company` `get_notifications` `update_notifications` |

See [Tools](/mcp/tools) for arguments, annotations and the two deliberate omissions.

## Next steps

* [Connect](/mcp/connect) — wire up Claude, Cursor, or your MCP client
* [Authentication](/mcp/auth) — what the OAuth flow does under the hood
* [Tools](/mcp/tools) — every argument, and when to reach for which
* [Playbooks](/mcp/playbooks) — prompts that work
* [Skills](/mcp/skills) — install MCPulse as a reusable skill for your agent
* [Troubleshooting](/mcp/troubleshooting) — what the common errors mean
