# AI monitoring (Insights) > https://docs.errora.org/en/products/insights Insights is LLM observability built on the tracing pipeline. The official Sentry SDKs' **AI-agents** and **MCP** integrations emit OpenTelemetry `gen_ai.*` and `mcp.*` spans; Errora projects those spans into a queryable table and gives you two dashboards. ## Setup There is no separate product to enable — turn on tracing and the AI integration for your stack. ```python import sentry_sdk sentry_sdk.init( dsn="…", traces_sample_rate=1.0, # AI traffic is low-volume and high-value send_default_pii=False, # set True only if you want prompts recorded ) ``` The Python SDK instruments OpenAI, Anthropic, LangChain and the Agents SDKs automatically once tracing is on. In JavaScript, `Sentry.init({ tracesSampleRate: 1 })` plus the `openAIIntegration()` / `anthropicAIIntegration()` / `vercelAIIntegration()` integration does the same. For MCP servers, the SDK's MCP integration emits `mcp.*` spans per JSON-RPC method — the same spans Errora's own [MCP server](/en/products/mcp) produces. :::caution Prompts and PII Prompt and completion text is only recorded when the SDK is configured to send it (`send_default_pii=True` or the integration's explicit option). Leave it off unless you have a reason — prompts routinely contain user data. ::: ## Manual spans If you call a model directly, wrap it yourself: ```python with sentry_sdk.start_span(op="gen_ai.chat", name="summarize") as span: span.set_data("gen_ai.system", "openai") span.set_data("gen_ai.request.model", "gpt-4o-mini") response = client.chat.completions.create(...) span.set_data("gen_ai.usage.input_tokens", response.usage.prompt_tokens) span.set_data("gen_ai.usage.output_tokens", response.usage.completion_tokens) ``` ## The AI Agents dashboard - **Agent runs** over time, with duration - **LLM calls** — count and latency - **Tokens by model**, split cached / not cached - **Tool calls** — which tools your agent actually reaches for - **Recent runs**, each opening a **per-run span timeline**: the agent's steps, the model calls it made and the tools it invoked, in order ## The MCP Server dashboard - **Traffic** over time - **By client** — which agent is calling you - **By method and transport** - **Most-used tools, resources and prompts** ## API ```text GET /api/v1/projects/{project_id}/insights/agents GET /api/v1/projects/{project_id}/insights/agents/runs GET /api/v1/projects/{project_id}/insights/agents/runs/{trace_id} GET /api/v1/projects/{project_id}/insights/mcp ``` ## Troubleshooting | Symptom | Cause / fix | | --- | --- | | Dashboards are empty | Tracing is off, or the SDK's AI integration isn't active — check that transactions contain `gen_ai.*` spans | | Token counts missing | The provider response didn't carry usage, or a manual span didn't set `gen_ai.usage.*` | | Runs look truncated | The trace was sampled away mid-run; raise `traces_sample_rate` for AI workloads | | Prompts visible when they shouldn't be | An integration option is sending PII — audit `send_default_pii` and per-integration flags |