Sessions and conversations
Two concepts matter before reading any session number, because they are easy to confuse: A session is an MCP protocol session. When an MCP client connects to your server, it sends an initialize request that starts a new session. This handshake announces the client’s name and capabilities, which is how Alpic knows whether traffic comes from ChatGPT, Claude, Cursor, or another client. The session then carries every request from that client until the connection ends or expires. A conversation is a chat thread in the end user’s client. The MCP protocol itself has no notion of a conversation: your server never sees the chat. Some clients choose to share a conversation identifier with each request. Today only ChatGPT does this, so for ChatGPT traffic Alpic knows which chat thread each session belongs to. The two do not map one to one. A single conversation can create several MCP sessions: clients reconnect, users return to an older chat, sessions expire and new ones open. This is normal protocol behavior, not a sign of anything wrong.
How it’s measured:
- The Sessions metric counts
initializerequests received from recognized MCP clients over the selected period. Think of it as how many times your app was opened or reconnected to. - Session-level metrics (Sessions with errors and Session error rate) group by conversation when the client provides one, and by MCP session otherwise. For ChatGPT traffic this means a conversation counts once, even if it opened several sessions along the way.
Because one conversation can span several sessions, the Sessions count for ChatGPT traffic can be higher than the
number of actual conversations. That gap is expected.
Requests
A request is any MCP request received by your server: tool calls, but also protocol traffic such asinitialize, tools/list, prompts/get, or resources/read. Request charts can be scoped to tool calls only, to protocol requests only (excluding ‘initialize’), or to everything.
Tool calls
The number oftools/call requests received. This is the best proxy for actual usage of your server: each tool call means an LLM decided to use one of your tools.
The tool performance table breaks this down per tool, with:
- Requests: the number of calls to that tool
- p50 / p95 latency: median and 95th percentile response time
- Success rate: the share of calls that completed without any error
Users
The number of distinct identified people who used your server over the period. This metric has enough subtlety to deserve its own page: see How users are counted.Output tokens
An estimate of how many tokens your server’s responses add to the LLM’s context window, shown as an average per call. Alpic estimates the token equivalent of each response part that gets passed to the model: tool call results, tool lists and descriptions, prompt contents, resource contents, and server instructions sent duringinitialize.
Use this to spot tools that flood the context window with oversized responses.
These are estimates of context usage, not billed tokens from any LLM provider.
Latency
The time between a request reaching Alpic and your server’s response, measured at the platform level. Charts show p50, p95, and p99 percentiles rather than averages, so slow outliers stay visible.Errors
Alpic separates two kinds of errors, because they mean very different things:- Tool errors: a tool call returned a result with
isErrorset to true. These are common and by design: the error is passed back to the LLM so it can recover, retry, or rephrase. A baseline of tool errors is normal. If you want to design recoverable errors well, check out this article. - MCP errors: protocol-level errors that are not passed to the LLM and usually surface as error messages in the user’s client. These deserve your attention. Check your logs if you see a spike.