Analytics & observability
See how AI clients use your server — volume, sessions, latency percentiles, two-tier errors, per-tool usage — from the CLI and the console.
Every request to a hosted server is captured automatically at the gateway: no SDK, no instrumentation, no code changes. Once traffic flows, the same analytics are readable three ways — the CLI, the console dashboard, and your coding agent.
The two-tier error model
Analytics splits failures the way MCP does:
- Tool errors (
tool_error) — a tool result withisError: true. These are handed back to the model, which usually recovers. Shown in amber. - MCP errors (
mcp_error) — protocol violations, timeouts, unknown tools, internal faults. These never reach the model and degrade the user experience. Shown in rose; these are the ones that need your attention.
Discovery chatter (tools/list, ping) is excluded from usage numbers, so tool-call counts reflect
real intent. Sessions are counted from initialize requests, which also supply the client mix
(ChatGPT, Claude, Cursor, and friends).
From the CLI
noodle metrics # the report: volume, sessions, errors, latency, tools, clients
noodle metrics --window 24h # presets: 24h, 7d (default), 30d
noodle events # the per-request stream
noodle events --status mcp_error --json
noodle events --session <id> # replay one session chronologically
noodle events --tail # follow livenoodle metrics reports latency as percentiles (p50/p95/p99), a token gauge (average token-equivalent
each call adds to the model's context — a tool-design health signal), and per-tool health. When a
tool's error share is elevated, the report ends with the exact next command to run.
From the console
Open your project in the console and switch to the analytics tab: the same numbers as charts — request volume with error ticks, client and method mix, per-tool bars with health, and the event stream. Click any session id to replay that session in order. Tool names that are not in your manifest are tagged — a useful signal that an AI client is hallucinating tool names worth adding or aliasing.
You can also just ask the console's chat: "how is my server doing?" renders the same metrics as a card, and it will drill into failing tools and sessions for you.
For coding agents
noodle metrics --agent-outputReturns a compact JSON verdict — health (ok or attention), a one-line summary, and
attention[] items that each carry the exact next command — so an agent can branch without parsing
the full payload. The full payloads are noodle metrics --json and noodle events --json.
Logs vs analytics
Analytics answers what happened to requests; logs answer what your app said while handling them.
For logs, see Troubleshooting — noodle logs supports
--level, --search, --since, and --until.
Records are scalar-only by construction: no request bodies, headers, tokens, or secret values are ever captured.