Query Amplitude Analytics
Overview
This skill covers answering product-data questions with the Amplitude MCP server: discovering existing content (charts, dashboards, notebooks), reading definitions, executing queries, and searching session replays. Results respect the signed-in user's Amplitude permissions — you can only read projects and content the user can see in the Amplitude web app.
Key capabilities:
- Answer questions like "What were daily active users last week?" or "Show me the signup funnel."
- Reuse saved charts and dashboards instead of rebuilding analyses from scratch.
- Run ad-hoc metric and dataset queries with custom time ranges, segments, and filters.
- Find session replays matching specific user or event criteria.
Prerequisites Checklist
Available MCP Tools
Use these names. Several older leaf tools (search, get_charts, query_chart, query_dataset, query_metric, get_dashboard, get_notebook, get_session_replays, get_context) still exist in server code but are hidden when consolidation flags are on. Do not call them.
Discovery and content
| Tool |
Purpose |
get_amplitude_context |
Org, user, and accessible projects (omit projectId); one project's settings when projectId is set |
search_amp_entities |
Find dashboards, charts, notebooks, experiments, and docs by natural-language query |
search_amp_data_taxonomy |
Semantic search over events, properties, and property values — never guess names |
get_amplitude_charts |
Read saved charts: include = link (default), typed, definition, data (run the chart), or guide |
use_amp_dashboards |
Dashboards; action: "get" to read layout and chart IDs |
use_amp_notebooks |
Notebooks; action: "get" to fetch content |
get_properties |
Event/user/group/derived property definitions (propertyType: "event" + eventType for one event) |
use_amplitude_metrics |
Metric definitions (action: "get_metrics"). For metric values, use query_amplitude_data |
Query execution
| Tool |
Purpose |
query_amplitude_data |
Ad-hoc analytics (segmentation, funnel, retention, sessions, data table). Prefer typed chart; raw definition only as fallback |
render_amplitude_chart |
Render a chart visually from a chartEditId returned by query_amplitude_data |
Session replay
| Tool |
Purpose |
get_amp_session_replay_info |
Find and inspect replays. action: search (default), list, events, timeline |
render_amp_session_replay |
Play matching replays after search/list when the user wants to see them |
get_from_url parses Amplitude URLs into entity IDs.
Step-by-Step Guide
1. Establish context first
On the first analytics request in a session, call get_amplitude_context (no projectId) to learn the user's organization and accessible projects. When the user has multiple projects and the request is ambiguous, ask which project they mean rather than guessing. Call again with projectId for timezone, currency, and project AI context.
2. Search before you build
Most questions are already answered by saved content. Before constructing a custom query:
- Call
search_amp_entities with keywords from the user's question (e.g. "signup funnel", "weekly retention", "checkout conversion").
- If a relevant chart or dashboard exists, prefer it — it encodes the team's agreed-upon definition of the metric.
- Use
get_amplitude_charts with include: "definition" or "typed" to read the definition, then include: "data" (up to 3 IDs) to fetch numbers. For dashboards, use_amp_dashboards with action: "get".
This matters because metric definitions are opinionated: a team's "active user" or "conversion" often carries specific filters that a from-scratch query would miss.
3. Run custom queries when saved content doesn't fit
When no saved chart matches, or the user wants a variation (different time range, extra segment, new group-by):
- Verify event and property names exist before querying. Never invent event names — use
search_amp_data_taxonomy and get_properties to confirm the exact names in the project's taxonomy.
- Build the query with
query_amplitude_data (typed chart with kind segmentation | funnel | retention | sessions | data_table). Always set projectId, a descriptive name, and date_range.
- State the time range and filters you used when presenting results, so the user can correct any assumption.
- To show the chart, call
render_amplitude_chart with the returned chartEditId.
4. Present results clearly
- Lead with the direct answer to the question, then supporting numbers.
- Include the time range, project, and any segment filters applied.
- When the result comes from a saved chart, name the chart and link it if a URL is available.
- Offer a natural follow-up (e.g. "Want this broken down by platform?") only when it is genuinely useful.
Common Workflows
Workflow: Answer a metrics question ("What were DAU last week?")
Goal: Return a trusted number fast.
get_amplitude_context (if project unknown) → confirm project.
search_amp_entities for an existing DAU/active-users chart.
- If found:
get_amplitude_charts with include: "data" and a last-7-days range if the saved chart allows. If not: query_amplitude_data on the project's primary activity events (_active or the team's activity event).
- Report the daily values and the weekly trend. For unique counts, use overall unique users — do not sum daily uniques.
Workflow: Analyze a funnel
Goal: Show conversion between steps and where users drop off.
search_amp_entities for an existing funnel chart matching the flow (e.g. "signup funnel").
- Read its definition with
get_amplitude_charts (include: "typed" or "definition") to learn the canonical step events.
get_amplitude_charts include: "data", or query_amplitude_data with kind: "funnel" for a modified version.
- Report step-to-step conversion rates and highlight the largest drop-off.
Workflow: Investigate a metric change ("Why did signups drop on Tuesday?")
Goal: Localize the change before explaining it.
- Query the metric daily around the change window to confirm the drop is real, not noise.
- Re-run grouped by likely dimensions one at a time: platform, country, device, version, acquisition channel.
- When one segment explains the change, drill into that segment's events.
- Optionally use
get_amp_session_replay_info (action: "search") filtered to affected users/events, then render_amp_session_replay if the user wants to watch.
Workflow: Review a dashboard
Goal: Summarize the current state of a team's dashboard.
search_amp_entities with entityTypes: ["DASHBOARD"] for the dashboard by name.
use_amp_dashboards action: "get" to enumerate its charts.
get_amplitude_charts include: "data" for the charts the user cares about (ask before querying every chart on a large dashboard; max 3 IDs per call).
- Summarize per-chart findings, flagging anything anomalous.
Workflow: Find session replays
Goal: Surface recordings that show a specific behavior.
- Clarify the criteria: which events, which user segment, what time window.
- Verify event names via
search_amp_data_taxonomy / get_properties.
- Call
get_amp_session_replay_info with action: "search" (default) and those filters. Always pass projectId.
- Return matching sessions with enough metadata (time, user, triggering events). If the user wants to see them, call
render_amp_session_replay in the same turn.
Best Practices
- Prefer saved definitions over ad-hoc queries. Saved charts encode the team's metric definitions.
- Confirm taxonomy before querying. Event and property names are project-specific; a misspelled event silently returns zeros.
- Be explicit about time ranges. Default to a sensible window (last 7 or 30 days) and say which one you used.
- Break complex analyses into focused questions. One query per question beats a single sprawling query.
- Watch for rate limits. The Amplitude MCP server is under active development and may rate-limit heavy usage; batch questions rather than issuing many redundant queries.
- Respect data sensitivity. Query results are product data; don't copy them into code, commits, or files unless the user asks.
Troubleshooting
Error: Authentication failed / tools unavailable
Cause: OAuth session missing or expired, or the org admin has disabled MCP access.
Solution:
- Reconnect the
amplitude MCP server in Kiro to re-trigger the OAuth browser flow.
- Verify the user can sign in at amplitude.com with the same account.
- If it persists, have the user check with their Amplitude org administrator about MCP server access.
Issue: Tool not found (search, get_charts, query_dataset, …)
Cause: Those leaf names are hidden under consolidation flags. The live tools are search_amp_entities, get_amplitude_charts, query_amplitude_data, use_amp_dashboards, get_amp_session_replay_info.
Solution: Retry with the names in the table above.
Issue: No data returned for a query
Cause: Wrong project, wrong event name, or no access to the requested project.
Solution:
- Call
get_amplitude_context and confirm the project.
- Verify the exact event name via
search_amp_data_taxonomy / get_properties.
- Confirm the time range actually contains data (try widening it).
Issue: EU customer gets connection or auth errors
Cause: This power defaults to the US endpoint; EU-residency orgs live on a separate stack.
Solution: Edit the power's MCP configuration in Kiro and change the URL to https://mcp.eu.amplitude.com/mcp, then reconnect.
Issue: Results disagree with the Amplitude web app
Cause: Different time range, timezone, or segment filters than the saved chart.
Solution: Read the chart definition with get_amplitude_charts (include: "definition") and re-run with matching parameters; state both configurations to the user.
References
1---2name: query-analytics3description: Query Amplitude product analytics through the Amplitude MCP server — find and read charts, dashboards, and notebooks, run metric and dataset queries, and search session replays. Use when the user asks about user behavior, active users, conversion, funnels, retention, engagement, event volumes, a specific Amplitude chart or dashboard, or wants to find session recordings.4license: MIT5---67# Query Amplitude Analytics89## Overview1011This skill covers answering product-data questions with the Amplitude MCP server: discovering existing content (charts, dashboards, notebooks), reading definitions, executing queries, and searching session replays. Results respect the signed-in user's Amplitude permissions — you can only read projects and content the user can see in the Amplitude web app.1213**Key capabilities:**14- Answer questions like "What were daily active users last week?" or "Show me the signup funnel."15- Reuse saved charts and dashboards instead of rebuilding analyses from scratch.16- Run ad-hoc metric and dataset queries with custom time ranges, segments, and filters.17- Find session replays matching specific user or event criteria.1819## Prerequisites Checklist2021- [ ] The Amplitude MCP server is connected (this power configures it at `https://mcp.amplitude.com/mcp`).22- [ ] The user has completed the OAuth sign-in flow when Kiro first connected to the server.23- [ ] The user's Amplitude account has access to at least one project.24- [ ] EU data residency customers have switched the server URL to `https://mcp.eu.amplitude.com/mcp` (see Troubleshooting).2526## Available MCP Tools2728Use these names. Several older leaf tools (`search`, `get_charts`, `query_chart`, `query_dataset`, `query_metric`, `get_dashboard`, `get_notebook`, `get_session_replays`, `get_context`) still exist in server code but are hidden when consolidation flags are on. Do not call them.2930### Discovery and content31| Tool | Purpose |32|------|---------|33| `get_amplitude_context` | Org, user, and accessible projects (omit `projectId`); one project's settings when `projectId` is set |34| `search_amp_entities` | Find dashboards, charts, notebooks, experiments, and docs by natural-language query |35| `search_amp_data_taxonomy` | Semantic search over events, properties, and property values — never guess names |36| `get_amplitude_charts` | Read saved charts: `include` = `link` (default), `typed`, `definition`, `data` (run the chart), or `guide` |37| `use_amp_dashboards` | Dashboards; `action: "get"` to read layout and chart IDs |38| `use_amp_notebooks` | Notebooks; `action: "get"` to fetch content |39| `get_properties` | Event/user/group/derived property definitions (`propertyType: "event"` + `eventType` for one event) |40| `use_amplitude_metrics` | Metric *definitions* (`action: "get_metrics"`). For metric *values*, use `query_amplitude_data` |4142### Query execution43| Tool | Purpose |44|------|---------|45| `query_amplitude_data` | Ad-hoc analytics (segmentation, funnel, retention, sessions, data table). Prefer typed `chart`; raw `definition` only as fallback |46| `render_amplitude_chart` | Render a chart visually from a `chartEditId` returned by `query_amplitude_data` |4748### Session replay49| Tool | Purpose |50|------|---------|51| `get_amp_session_replay_info` | Find and inspect replays. `action`: `search` (default), `list`, `events`, `timeline` |52| `render_amp_session_replay` | Play matching replays after search/list when the user wants to see them |5354`get_from_url` parses Amplitude URLs into entity IDs.5556## Step-by-Step Guide5758### 1. Establish context first5960On the first analytics request in a session, call `get_amplitude_context` (no `projectId`) to learn the user's organization and accessible projects. When the user has multiple projects and the request is ambiguous, ask which project they mean rather than guessing. Call again with `projectId` for timezone, currency, and project AI context.6162### 2. Search before you build6364Most questions are already answered by saved content. Before constructing a custom query:65661. Call `search_amp_entities` with keywords from the user's question (e.g. "signup funnel", "weekly retention", "checkout conversion").672. If a relevant chart or dashboard exists, prefer it — it encodes the team's agreed-upon definition of the metric.683. Use `get_amplitude_charts` with `include: "definition"` or `"typed"` to read the definition, then `include: "data"` (up to 3 IDs) to fetch numbers. For dashboards, `use_amp_dashboards` with `action: "get"`.6970This matters because metric definitions are opinionated: a team's "active user" or "conversion" often carries specific filters that a from-scratch query would miss.7172### 3. Run custom queries when saved content doesn't fit7374When no saved chart matches, or the user wants a variation (different time range, extra segment, new group-by):75761. Verify event and property names exist before querying. Never invent event names — use `search_amp_data_taxonomy` and `get_properties` to confirm the exact names in the project's taxonomy.772. Build the query with `query_amplitude_data` (typed `chart` with `kind` `segmentation` | `funnel` | `retention` | `sessions` | `data_table`). Always set `projectId`, a descriptive `name`, and `date_range`.783. State the time range and filters you used when presenting results, so the user can correct any assumption.794. To show the chart, call `render_amplitude_chart` with the returned `chartEditId`.8081### 4. Present results clearly8283- Lead with the direct answer to the question, then supporting numbers.84- Include the time range, project, and any segment filters applied.85- When the result comes from a saved chart, name the chart and link it if a URL is available.86- Offer a natural follow-up (e.g. "Want this broken down by platform?") only when it is genuinely useful.8788## Common Workflows8990### Workflow: Answer a metrics question ("What were DAU last week?")91**Goal:** Return a trusted number fast.92931. `get_amplitude_context` (if project unknown) → confirm project.942. `search_amp_entities` for an existing DAU/active-users chart.953. If found: `get_amplitude_charts` with `include: "data"` and a last-7-days range if the saved chart allows. If not: `query_amplitude_data` on the project's primary activity events (`_active` or the team's activity event).964. Report the daily values and the weekly trend. For unique counts, use overall unique users — do not sum daily uniques.9798### Workflow: Analyze a funnel99**Goal:** Show conversion between steps and where users drop off.1001011. `search_amp_entities` for an existing funnel chart matching the flow (e.g. "signup funnel").1022. Read its definition with `get_amplitude_charts` (`include: "typed"` or `"definition"`) to learn the canonical step events.1033. `get_amplitude_charts` `include: "data"`, or `query_amplitude_data` with `kind: "funnel"` for a modified version.1044. Report step-to-step conversion rates and highlight the largest drop-off.105106### Workflow: Investigate a metric change ("Why did signups drop on Tuesday?")107**Goal:** Localize the change before explaining it.1081091. Query the metric daily around the change window to confirm the drop is real, not noise.1102. Re-run grouped by likely dimensions one at a time: platform, country, device, version, acquisition channel.1113. When one segment explains the change, drill into that segment's events.1124. Optionally use `get_amp_session_replay_info` (`action: "search"`) filtered to affected users/events, then `render_amp_session_replay` if the user wants to watch.113114### Workflow: Review a dashboard115**Goal:** Summarize the current state of a team's dashboard.1161171. `search_amp_entities` with `entityTypes: ["DASHBOARD"]` for the dashboard by name.1182. `use_amp_dashboards` `action: "get"` to enumerate its charts.1193. `get_amplitude_charts` `include: "data"` for the charts the user cares about (ask before querying every chart on a large dashboard; max 3 IDs per call).1204. Summarize per-chart findings, flagging anything anomalous.121122### Workflow: Find session replays123**Goal:** Surface recordings that show a specific behavior.1241251. Clarify the criteria: which events, which user segment, what time window.1262. Verify event names via `search_amp_data_taxonomy` / `get_properties`.1273. Call `get_amp_session_replay_info` with `action: "search"` (default) and those filters. Always pass `projectId`.1284. Return matching sessions with enough metadata (time, user, triggering events). If the user wants to see them, call `render_amp_session_replay` in the same turn.129130## Best Practices131132- **Prefer saved definitions over ad-hoc queries.** Saved charts encode the team's metric definitions.133- **Confirm taxonomy before querying.** Event and property names are project-specific; a misspelled event silently returns zeros.134- **Be explicit about time ranges.** Default to a sensible window (last 7 or 30 days) and say which one you used.135- **Break complex analyses into focused questions.** One query per question beats a single sprawling query.136- **Watch for rate limits.** The Amplitude MCP server is under active development and may rate-limit heavy usage; batch questions rather than issuing many redundant queries.137- **Respect data sensitivity.** Query results are product data; don't copy them into code, commits, or files unless the user asks.138139## Troubleshooting140141### Error: Authentication failed / tools unavailable142**Cause:** OAuth session missing or expired, or the org admin has disabled MCP access.143**Solution:**1441. Reconnect the `amplitude` MCP server in Kiro to re-trigger the OAuth browser flow.1452. Verify the user can sign in at amplitude.com with the same account.1463. If it persists, have the user check with their Amplitude org administrator about MCP server access.147148### Issue: Tool not found (`search`, `get_charts`, `query_dataset`, …)149**Cause:** Those leaf names are hidden under consolidation flags. The live tools are `search_amp_entities`, `get_amplitude_charts`, `query_amplitude_data`, `use_amp_dashboards`, `get_amp_session_replay_info`.150**Solution:** Retry with the names in the table above.151152### Issue: No data returned for a query153**Cause:** Wrong project, wrong event name, or no access to the requested project.154**Solution:**1551. Call `get_amplitude_context` and confirm the project.1562. Verify the exact event name via `search_amp_data_taxonomy` / `get_properties`.1573. Confirm the time range actually contains data (try widening it).158159### Issue: EU customer gets connection or auth errors160**Cause:** This power defaults to the US endpoint; EU-residency orgs live on a separate stack.161**Solution:** Edit the power's MCP configuration in Kiro and change the URL to `https://mcp.eu.amplitude.com/mcp`, then reconnect.162163### Issue: Results disagree with the Amplitude web app164**Cause:** Different time range, timezone, or segment filters than the saved chart.165**Solution:** Read the chart definition with `get_amplitude_charts` (`include: "definition"`) and re-run with matching parameters; state both configurations to the user.166167## References168169- [Amplitude MCP documentation](https://amplitude.com/docs/amplitude-ai/amplitude-mcp)170- [Amplitude MCP server guide](https://github.com/amplitude/mcp-server-guide)171- Related skill: [analyze-experiments](../analyze-experiments/SKILL.md) for A/B tests and feature flags172- Related skill: [instrument-analytics](../instrument-analytics/SKILL.md) for adding tracking to code