← Back to all apps

Amplitude

by Amplitude
Launched Aug 31, 2026 on ChatGPT

Amplitude connects your product analytics to AI so you can explore data, build visualizations, and manage your analytics setup without leaving the conversation.

25ChatGPT Tools
14Claude Tools
AmplitudeDeveloper

Use Cases

sales-and-marketing

Available Tools

Creating dashboard

create_dashboard
Full Description

Create a comprehensive dashboard with charts, rich text, and custom layout

WHEN TO USE:

  • After the user has searched existing content or explored some analysis in Amplitude
  • The user has explicitly requested to create a dashboard

CRITICAL

  • CHART IDs MUST BE FROM SAVED CHARTS:
    • Only use chartIds from SAVED/PERMANENT charts - these are returned by save_chart_edits (in the chartId field) or create_chart
    • DO NOT use editIds from query_dataset - these are temporary IDs that cannot be added to dashboards
    • DO NOT use the editId from query_dataset responses - you must first call save_chart_edits to get a permanent chartId
    • The typical workflow is: query_dataset (returns editId) → save_chart_edits (converts editId to permanent chartId) → create_dashboard (uses chartId)
    • If you use an editId instead of a saved chartId, the dashboard creation will fail with "NotFoundError: No chart"

INSTRUCTIONS:

  • Provide a descriptive name for the dashboard
  • Use rows array where each row contains items in left-to-right order
  • Each item specifies width (3-12 columns). If width is omitted, items auto-fill remaining space
  • Each row must specify height in pixels. Only heights of 375, 500, 625, 750 are allowed
  • Total width of items in a row must not exceed 12 columns
  • Max 4 items per row (ensures minimum 3-column width per item)
  • Use chartMetas to configure chart display options (view type, annotations, etc.)
  • Return a link to the new dashboard in the response
  • DO NOT include static analysis in dashboard text content. Dashboards are meant to be long-lived and thus a point in time insight does not help
  • DO group similar charts together and include a header and some text describing how to interpret the charts effectively

MARKDOWN FORMAT:

  • Rich text content uses standard markdown syntax
  • Supported: headers (

#

###), bold (text), italic (*text*), lists (- or 1.), links ([text](url)), code blocks (

), inline code (`code`)
- Example: "

Overview\n\nThis dashboard shows key metrics for user engagement."

LAYOUT EXAMPLES:

  • Full-width item: { height: 6, items: [{ type: 'chart', chartId: '123', width: 12 }] }
  • Two side-by-side: { height: 4, items: [{ type: 'chart', chartId: '1', width: 6 }, { type: 'rich_text', content: '

Notes', width: 6 }] }

  • Three columns: { height: 5, items: [{ width: 4 }, { width: 4 }, { width: 4 }] }
  • Auto-fill: { height: 4, items: [{ type: 'chart', chartId: '1' }, { type: 'chart', chartId: '2' }] } (each gets 6 columns)
Parameters (2 required, 3 optional)
Required
namestring

Descriptive name for the dashboard (e.g., "User Engagement Overview", "Revenue Analytics")

rowsarray

Array of rows, each containing items in left-to-right order with height specification

Optional
chartMetasobject

Display configuration for charts. Key is chartId, value contains view type, annotations, and other display options.

descriptionstring

Optional description for the dashboard to provide context and details about its purpose

rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Getting Amplitude context

get_amplitude_context
Full Description

Unified entry point for Amplitude context. Routes to one of two underlying tools based on whether a projectId is provided.

ROUTES:

  • No projectId → 'get_context' route: returns the current user, organization (including org-level AI context), and the LIST of accessible projects as { appId, appName }. Use this to discover which projects exist and their ids.
  • projectId provided → 'get_project_context' route: returns that single project's details — description, timezone, currency, session definition, source projects, and project-level AI context.

WHEN TO USE:

  • Session start, "what projects do I have access to?", "show me my org details", "what is my role?" → call with no arguments.
  • "what timezone / currency / session settings does project X use?", "describe project X" → pass projectId.

CONTEXT DOCUMENTS (uploaded files):

  • org.aiContext / project aiContext are short text fields only. Customers also upload context files (CSV data dictionaries, PDFs, process docs) in Settings → AI Controls; those are indexed for search and never returned in full — only titles (opt-in) or search snippets.
  • listContextDocuments: true adds contextDocuments — document titles and ids only, no file contents. Use it when aiContext references an uploaded file by name (e.g. "always check <file> before answering").
  • searchContextDocuments runs semantic search over the uploaded documents' contents and adds contextDocumentSearch with matching text snippets. Use specific terms from the user's question (event names, property names, column names).
  • Scope for both: without projectId, org-level documents only; with projectId, org-level plus that project's documents.

EXAMPLES:

  • Session start: {}
  • Project settings: {"projectId": 12345}
  • aiContext says "check the event dictionary file" → {"projectId": 12345, "listContextDocuments": true}
  • Look up a term from uploaded docs: {"projectId": 12345, "searchContextDocuments": "envelope_event_type_id"}

NOTES:

  • projectId is optional on purpose. Omit it to get the project list first, then call again with a real id from that list — do NOT guess project ids.
  • The two layers are meant to be loaded together: call once without projectId at session start for org context, then with a projectId to drill into a project. On conflict, project-level context overrides org-level.
  • Omit listContextDocuments and searchContextDocuments at session start — they add latency and are only useful once you know what to look for.

DO NOT USE FOR:

  • Running analytics queries → use 'query_dataset'.
  • Finding charts/dashboards/cohorts → use 'search'.
Parameters (0 required, 4 optional)
Optional
listContextDocumentsboolean

When true, adds contextDocuments: titles and ids of the customer's uploaded context files (no file contents). Without projectId lists org-level documents; with projectId also includes that project's documents. Omit at session start.

projectIdinteger

The project/app id to fetch detailed context for. Omit to get org context plus the list of projects you can access (the 'get_context' route); provide it to fetch one project's settings (the 'get_project_context' route).

rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

searchContextDocumentsstring

Semantic search query over the contents of uploaded context documents. Adds contextDocumentSearch with matching text snippets. Without projectId searches org-level documents; with projectId also searches that project's documents.

Getting chart alerts

get_chart_alerts
Full Description

Retrieve chart alert anomalies for a project or for one specific chart.

WHEN TO USE:

  • The user wants recent chart alerts, anomalies, or alert notifications.
  • Use chartId to scope to one chart.
  • Use get_chart_monitor when the user wants monitor configuration or subscribers instead of alert history.

INSTRUCTIONS:

  • chartId is optional. If provided, projectId is not needed.
  • For project-wide alerts, projectId is optional only when the user has access to exactly one project. If multiple projects are accessible, provide projectId.
  • includeUnseen filters to alerts the current user has not marked as seen.
  • limit defaults to 20 and is capped at 100.

EXAMPLES:

  • {"projectId":"12345"}
  • {"chartId":"abc123","limit":10}
  • {"projectId":"12345","includeUnseen":true}

NOTES:

  • This tool returns alert anomalies, not monitor configuration.
  • Alerts are returned newest first.
Parameters (0 required, 5 optional)
Optional
chartIdstring

Optional chart ID to scope alerts to one chart instead of the whole project.

includeUnseenboolean

If true, return only alerts that the current user has not marked as seen.

Default: False
limitinteger

Maximum number of alerts to return. Defaults to 20.

Default: 20
projectIdstring

Optional project ID for project-wide alerts. Not needed when chartId is provided.

rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Getting chart definition params

get_chart_definition_params
Full Description

Get the parameter schema, valid enum values, and a working example for a specific chart type.

WHEN TO USE:

  • Before calling query_dataset, to understand the correct parameter schema for a chart type.
  • When you need to know valid enum values (e.g., funnel modes, segmentation metrics).
  • When you need a working example definition to use as a template.

INSTRUCTIONS:

  • Call this tool with the chart type you want to build a definition for.
  • Use the returned schema to construct a valid definition object.
  • Pass the constructed definition to query_dataset.
  • If the chart type is not yet supported, construct the definition based on existing chart examples from search/get_charts.

SUPPORTED CHART TYPES: eventsSegmentation, funnels, metricExplorer, retention, revenueLtv, sessions, stickiness

Parameters (1 required, 1 optional)
Required
chartTypestring

The chart type to get parameter documentation for. Supported: eventsSegmentation, funnels, metricExplorer, retention, revenueLtv, sessions, stickiness

Optional
rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Getting chart monitor

get_chart_monitor
Full Description

Retrieve the current monitor configuration and subscribers for a chart.

WHEN TO USE:

  • The user wants to inspect a chart alert monitor before changing it.
  • Use this before subscribe_chart_alert if you need the monitorId or current subscriber list.
  • Use get_chart_alerts if the user wants alert anomalies instead of monitor settings.

INSTRUCTIONS:

  • Provide chartId.
  • Returns the monitor ID, enabled state, conditions, email recipients, and channel subscriptions.

EXAMPLES:

  • {"chartId":"abc123"}

NOTES:

  • This only works for charts that already have a monitor.
Parameters (1 required, 1 optional)
Required
chartIdstring

Chart ID to read the monitor for.

Optional
rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Reading chart data

get_charts
Full Description

Retrieve full chart objects by their IDs using the chart service directly

WHEN TO USE:

  • You want to retrieve a full chart definition.
  • Useful if you want to base an ad hoc query dataset analysis on an exsiting chart.

INSTRUCTIONS:

  • Use the search tool to find the IDs of charts you want to retrieve, then call this tool with the IDs.
Parameters (1 required, 1 optional)
Required
chartIdsarray

Array of chart IDs to retrieve (required)

Optional
rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Finding cohorts

get_cohorts
Full Description

Get detailed information about specific cohorts by their IDs.

WHEN TO USE:

  • You want to retrieve full cohort definitions after finding them via search.
  • You need detailed cohort information including definition, metadata, and audience details.

INSTRUCTIONS:

  • Use the search tool to find the IDs of cohorts you want to retrieve, then call this tool with the IDs.
  • This returns full cohort objects with all details, unlike the search tool which returns summary information.
Parameters (1 required, 1 optional)
Required
cohortIdsarray

Array of cohort IDs to retrieve (required)

Optional
rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Getting project context

get_context
Full Description

Get information about the current user, organization, and list of accessible projects.

WHEN TO USE:

  • "What projects do I have access to?"
  • "Show me my organization details"
  • "What is my user role?"
  • Any session start, before drilling into a specific project — load the org layer first.

RETURNS:

  • User details (email, name, role)
  • Organization info: name, plan, quota, and org.aiContext — org-level AI context (company-wide business definitions, glossary terms, KPI rules, behavior guidelines). Canonical source for org-scoped guidance.
  • List of accessible projects (just names and IDs)

CONTEXT LAYERING:

  • org.aiContext here is the org-level layer of customer AI context.
  • For project-specific guidance — including project-level AI context, timezone, currency, source projects, and session settings — call 'get_project_context' with a projectId.
  • The two layers are intended to be loaded together. On conflict, project-level context supplements or overrides org-level context.

DO NOT USE FOR:

  • Project-specific settings (timezone, currency, sessions) → use 'get_project_context' instead
  • Running analytics queries → use 'query_dataset' or 'query_amplitude_data' instead
  • Finding charts/dashboards/cohorts → use 'search' instead
Parameters (0 required, 1 optional)
Optional
rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Getting dashboard data

get_dashboard
Full Description

Get specific dashboards and all their charts

WHEN TO USE:

  • You want to retrieve full dashboard definitions including chart IDs that you can query and analyze individually.

INSTRUCTIONS:

  • Use the search tool to find the IDs of dashboards you want to retrieve, then call this tool with the IDs.
  • Very commonly you will want to query the charts after retrieving a dashboard.
  • When a dashboard has activeFilters (saved Replace Property entries, dashboard filters, or a date range), pass the dashboard's id as dashboardId to query_charts so those params are applied — and mention the replaced/filtered view when reporting numbers.
Parameters (1 required, 1 optional)
Required
dashboardIdsarray

Array of dashboard IDs to retrieve (required)

Optional
rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Get Event Properties

get_event_properties
Full Description

Retrieve event properties for a specific event type from a project. This tool provides a concise way to get all properties associated with a particular event.

WHEN TO USE:

  • You want to get all properties associated with a particular event with the EXACT event type.

INSTRUCTIONS:

  • Search for the exact event type you want to get properties for using the search tool or the get_events tool.
  • Use this tool to get all event properties associated with a particular event.
Parameters (2 required)
Required
eventTypestring

The specific event type to get properties for.

projectIdstring

Project ID to get event properties from. If the user has not specified a project, prompt the user to decide. Dont decide for them.

Getting events

get_events
Full Description

Retrieve events from a project with strict filtering by event types, limit, and cursor pagination.

WHEN TO USE:

  • You can generally rely on the search tool to find the event you are looking for.
  • Use this tool to get full event objects, including metadata like category, activity, visiblity, and more.
  • Use this tool to paginate through ALL events when the search tool may not return the event you are looking for.

INSTRUCTIONS:

  • Get the project ID from the context tool.
  • Use the search tool first to try to find the event you're looking for.
  • If the search tool does not return the event you are looking for, use this tool without specifying eventTypes to paginate through all events.
  • If you know the event types you want to get, use this tool with the eventTypes parameter to get more information about the event.
  • By default, returns events from the project's default branch. Pass branchId or branchName to fetch events from a specific tracking-plan branch — use get_branches first to find the branch.

NOTES:

  • Event types are equivalent to the ingested name. Always use "ingested name" instead of "event type" when responding to the user.
  • Each event has a "status" field: "planned" (in tracking plan, not yet ingested), "live" (in tracking plan and ingested), "unexpected" (ingested, not in tracking plan), "blocked" (ingestion blocked by an admin), or "deleted" (soft-deleted; only returned when includeDeleted is true).
  • Amplitude system events (e.g. "[Amplitude] Page Viewed", "session_start", "_active") are flagged with "isAmplitudeEvent: true". The tracking-plan UI special-cases these as "live" in its status filter regardless of actual ingestion state — keep that in mind when reasoning about why a system event might show as "unexpected" or "planned" here.
  • Source events of enabled merge transformations are hidden — only the merged target is returned, with a "mergedFrom" field listing the source event names. mergedFrom is always included for merge targets even when fields omits it (otherwise source-hiding would drop context).
  • "firstSeen"/"lastSeen" are lifetime ingestion timestamps (not scoped to a lookback window). "createdAt"/"updatedAt" are tracking-plan edit times and are only present for events in the plan — unexpected events omit them. "updatedBy" is the last editor; Amplitude does not record who originally created an event.
  • Valid requested fields: name, displayName, description, category, tags, status, isActiveAction, isOfficial, isAmplitudeEvent, hiddenFrom, sources, mergedFrom, owner, createdAt, updatedAt, updatedBy, firstSeen, lastSeen.
  • Automatically returned when fields is provided: name (plus mergedFrom when the event is a merge target).
  • When fields is omitted, the full event row is returned. Required fields are automatic, and [] is invalid.
Parameters (1 required, 10 optional)
Required
projectIdstring

Project ID to get events from. If the user has not specified a project, prompt the user to decide. Dont decide for them.

Optional
_clientobject

Unless the user has requested that no telemetry be sent, supply _client with non-authoritative caller attribution when known. Do not invent or infer these values.

branchIdstring

Optional branch ID to target a non-default branch. If omitted, the project's default branch is used. Mutually exclusive with branchName.

branchNamestring

Optional branch name to target a non-default branch (e.g. "my-edits-branch"). If omitted, the project's default branch is used. Mutually exclusive with branchId.

cursorstring

Pagination cursor for retrieving the next page of results. Use this in conjunction with limit to paginate through results.

eventTypesarray

Filter events using EXACT match to only include these specific event types/names.

fieldsarray

Select event row fields. Valid: name, displayName, description, category, tags, status, isActiveAction, isOfficial, isAmplitudeEvent, hiddenFrom, sources, mergedFrom, owner, createdAt, updatedAt, updatedBy, firstSeen, lastSeen. Automatically returned: name (plus mergedFrom when the event is a merge target). Omit to return the full event row. [] is invalid.

includeDeletedboolean

When true, include events with status "deleted" in the response. Default false — deleted events are excluded.

Default: False
includeTransformationsboolean

When true, includes event transformations (merges, derived properties) alongside the events. May increase response time.

Default: False
limitnumber

Maximum number of events to return (1-500). Use this in conjunction with cursor to paginate through results.

Default: 100
rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Getting experiments

get_experiments
Full Description

Retrieve specific experiments by their IDs.

WHEN TO USE:

  • You want to retrieve addition information for experiments like state, decisions, etc.

INSTRUCTIONS:

  • Use the search tool to find the IDs of experiments you want to retrieve, then call this tool with the IDs.
Parameters (1 required, 1 optional)
Required
idsarray

Array of IDs to retrieve experiments by.

Optional
rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Getting feature flags

get_flags
Full Description

Retrieve specific feature flags by their IDs or flag key.

WHEN TO USE:

  • You want to retrieve full flag definitions including variants, metadata, and configuration details.

INSTRUCTIONS:

  • Use the search tool to find the IDs of flags you want to retrieve, then call this tool with the IDs.
  • You can also pass in flag key instead and this can return multiple flags since the same flag key can be in multiple projects.
Parameters (1 required, 1 optional)
Required
flagIdsarray

Array of flag IDs to retrieve

Optional
rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Getting data from URL

get_from_url
Full Description

Retrieve objects from Amplitude URLs

WHEN TO USE:

  • CRITICAL: Only use this tool for full Amplitude app URLs on supported hosts (app.amplitude.com, app.eu.amplitude.com, apps.stag2.amplitude.com, local.amplitude.com)
  • You have an Amplitude URL and want to get the full object definition
  • User shares a link to a dashboard, chart, notebook, experiment, etc.

INSTRUCTIONS:

  • Provide the full Amplitude URL (e.g., https://app.amplitude.com/analytics/myorg/chart/456 or https://app.eu.amplitude.com/analytics/myorg/chart/456)
  • The tool will parse the URL, validate the organization, and return the full object
  • Works with charts, dashboards, notebooks, experiments, flags, cohorts, metrics, and opportunities
  • /chart/new/{id} URLs may refer to a chart draft or a temporary chart edit (from query tools); both are resolved automatically
  • Agent session URLs (/agents/session/{id}) are not resolvable here — use get_agent_results with the session_id instead
Parameters (1 required, 1 optional)
Required
urlstring

Full Amplitude URL to retrieve the object from

Optional
rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Analyzing business metrics

get_metrics
Full Description

Get detailed information about specific metrics by their IDs.

WHEN TO USE:

  • You want to retrieve full metric definitions after finding them via search.
  • You need detailed metric information including params, key properties, and metadata.

INSTRUCTIONS:

  • Use the search tool to find the IDs of metrics you want to retrieve, then call this tool with the IDs.
  • This returns full metric objects with all details, unlike the search tool which returns summary information.
  • If you already have the metric ID, you can not use this tool and instead query the metric directly using query_metric if that is what the user wants.
Parameters (1 required, 1 optional)
Required
metricIdsarray

Array of metric IDs to retrieve (required)

Optional
rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Getting monitor history

get_monitor_history
Full Description

Retrieve the audit history for a chart monitor.

WHEN TO USE:

  • The user wants to know who changed a chart monitor and when.
  • Use get_chart_monitor first if you need to discover the monitorId from a chart.

INSTRUCTIONS:

  • Provide monitorId.
  • Returns the history entries in reverse chronological order.

EXAMPLES:

  • {"monitorId":"mon_123"}

NOTES:

  • This is monitor change history, not alert anomaly history.
Parameters (1 required, 1 optional)
Required
monitorIdstring

Monitor ID to fetch history for.

Optional
rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Get Notebook

get_notebook
Full Description

Get specific notebooks and all their charts

WHEN TO USE:

  • You want to retrieve full notebook definitions including chart IDs that you can query and analyze individually.

INSTRUCTIONS:

  • Use the search tool to find the IDs of notebooks you want to retrieve, then call this tool with the IDs.
  • Very commonly you will want to query the charts after retrieving a notebook.
  • The returned notebook rows have markdown content and use the same schema as create_notebook, so you can directly copy and modify them to create new notebooks.
Parameters (1 required)
Required
notebookIdsarray

Array of notebook IDs to retrieve (required)

Getting comprehensive project context

get_project_context
Full Description

Get project-specific settings and configuration for a specific project.

WHEN TO USE:

  • "What timezone is this project using?"
  • "What are the currency settings?"
  • "How are sessions defined?"
  • "What is the week start day?"

RETURNS:

  • Timezone and date settings (timezone, week start, quarter start)
  • Currency settings (locale, target currency)
  • Session definition (timeout, custom property)
  • Source projects (data lineage)
  • Project-level AI context (project-specific business guidelines)

CONTEXT LAYERING:

  • This tool returns the project-level layer of customer AI context only.
  • For org-level AI context (company-wide business definitions, glossary, KPI rules, behavior guidelines), call 'get_context' — it carries org.aiContext and is the canonical source for org-scoped guidance.
  • Call 'get_context' once per session before drilling into specific projects so you have both layers loaded. On conflict, project-level context supplements or overrides org-level context.

REQUIRES: projectId parameter

DO NOT USE FOR:

  • Listing all projects → use 'get_context' instead
  • User/org info → use 'get_context' instead
Parameters (1 required, 1 optional)
Required
projectIdnumber

The project/app ID to get context for

Optional
rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Getting properties

get_properties
Full Description

List the properties that exist in a project's taxonomy — the direct way to answer "which/what properties exist on <event>?" and to discover valid property names before querying or filtering.

WHEN TO USE — answer questions like:

  • "Which properties exist on the checkout event?" → { propertyType: "event", eventType: "checkout", projectId }
  • "What properties are on the Purchase event?" → { propertyType: "event", eventType: "Purchase", projectId }
  • "What user properties are in my project?" → { propertyType: "user", projectId }
  • "What group / derived / channel / lookup properties are tracked?" → set propertyType accordingly
  • Discovering valid event-property names before building a query_dataset filter or group_by

This is a fast, direct lookup. Do NOT run query_dataset to discover which properties an event has — that is a schema lookup, not a metric query, and belongs here.

DO NOT USE FOR:

  • Metrics, counts, trends, funnels, retention → use 'query_dataset'
  • Finding which EVENTS exist (not their properties) → use 'get_events' or 'search'

PROPERTY TYPES: | propertyType | What it returns | Key params | |---|---|---| | event | Event properties. Pass eventType to scope to one event; omit it to list project-wide. Pass includeDeleted to include deleted properties. | eventType, includeDeleted | | user | User-level properties | sources, name | | derived | Computed/formula properties | derivedPropertyType, names | | group | Group properties (e.g., company_name, plan_tier) | groupTypes | | lookup | CSV lookup table properties | configurationFilter, lookupTableName | | channel | Traffic source channel classifiers (derived formula properties) | names | | persisted | Event-to-user persisted properties | names |

CHART QUERY PROP TYPES (query_dataset / chart definitions):

  • Derived and channel classifier properties must use prop_type / group_by.type / subprop_type of "derivedV2" — not legacy "derived" or other invented types.
  • get_properties returns chartPropType: "derivedV2" for derived and channel properties. propertyType "event"/"user" is display scope only, not the chart API type.

GLOBAL VS. EVENT-SCOPED EVENT PROPERTIES: Event properties in Amplitude have two scopes:

  • Global (plan-wide): a property definition shared across the project's tracking plan, not tied to a single event.
  • Event-scoped (local): a definition attached to one specific event type (e.g., "Button Clicked.button_name").

When the user looks for event properties without specifying a scope (global or event-scoped), prompt for clarification.

INSTRUCTIONS:

  • Use the search tool or get_events first to find exact event/property names before calling this tool.
  • All property types support limit/cursor pagination. For 'event', pagination applies only when eventType is omitted (event-scoped returns all properties for that event).
  • If the user has not specified a project, prompt them to decide. Don't decide for them.

EXAMPLES:

  • Event properties for one event: { "propertyType": "event", "projectId": "123", "eventType": "Button Clicked" }
  • All event properties in a project: { "propertyType": "event", "projectId": "123" }
  • Including deleted: { "propertyType": "event", "projectId": "123", "includeDeleted": true }
  • User properties: { "propertyType": "user", "projectId": "123", "sources": ["CUSTOMER"] }
  • Derived properties: { "propertyType": "derived", "projectId": "123", "derivedPropertyType": "event" }
  • Group properties: { "propertyType": "group", "projectId": "123", "groupTypes": ["company"] }
Parameters (2 required, 13 optional)
Required
projectIdstring

Project ID. If the user has not specified a project, prompt the user to decide. Dont decide for them.

propertyTypestring

Discriminator: determines which set of parameters applies (event | user | derived | group | lookup | channel | persisted)

Options:eventuserderivedgrouplookupchannelpersisted
Optional
configurationFilterstring

Filter by configuration status.

Options:allconfiguredunconfigured
Default: all
cursorstring

Pagination cursor. Only honored for project-wide listing.

derivedPropertyTypestring

Filter to event-level or user-level derived properties. Omit to return both.

Options:eventuser
eventTypestring

Exact event type to scope to. Omit to list event properties across the entire project (paginated). Empty strings are treated the same as omitting.

fieldsarray

Select event property row fields. Valid requested fields: name, eventType, description, type, isRequired, isHidden, isDeleted, enumValues, regex, isArrayType, classifications, isInSchema. Automatically returned: eventType, name, type. Default when omitted: name, eventType, description, type, isRequired, isHidden, isDeleted, enumValues, regex, isArrayType, classifications, isInSchema. Omit fields to return the current default fields; [] is invalid.

groupTypesarray

Filter to specific group types (exact match, case-insensitive).

includeDeletedboolean

Include deleted event properties in the response. When eventType is provided, returns properties deleted on that specific event (mirrors what Stargate's event right-pane shows). When eventType is omitted, returns project-wide schema-level deletions.

Default: False
includeTransformationsboolean

Include event property transformations (merges, value mappings). May increase response time.

Default: False
limitnumber

Max properties to return (1-500). Only applied to project-wide listing; event-scoped responses return all properties for the event.

Default: 100
lookupTableNamestring

Filter to properties belonging to this lookup table.

namestring

Exact user property name to match (case-sensitive). Omit this field to list all user properties for the project; do not pass an empty string. Customer-defined user properties are stored with a `gp:` prefix in TMS; the handler will prepend `gp:` if missing, so callers can pass either `plan_tier` or `gp:plan_tier`.

namesarray

Fetch specific derived properties by exact name.

sourcesarray

Filter by property sources.

Default: ['AMPLITUDE', 'CUSTOMER']

Get Session Replays

get_session_replays
Full Description

Search session replays for a project using segment filters.

WHEN TO USE:

  • You want to find session replays that match user segments or conditions (e.g., variant membership, cohorts, user properties).

INSTRUCTIONS:

  • Provide the projectId and one or more segments with conditions.
  • Searches the last 30 days with a limit of 10 replays by default.
  • Optionally include eventCountFilters, groupBys, and limit.

IMPORTANT: ALWAYS provide the clickable replay links to users. Each session replay result includes a direct URL that users can click to view the full replay in Amplitude's Session Replay interface. These links are essential for users to actually watch and analyze the sessions. Simply providing raw session data without the viewing links is not helpful.

EXAMPLES:

  • Segments: All users

segmentFilters: [{ "conditions": [] }]

  • Segments: Experiment variant membership

segmentFilters: [ { "conditions": [ { "type": "property", "group_type": "User", "prop_type": "user", "prop": "gp:[Experiment] My Flag", "op": "is", "values": ["treatment"] } ] } ]

  • Segments: Country = US and plan in {Pro, Enterprise}

segmentFilters: [ { "conditions": [ {"type":"property","group_type":"User","prop_type":"user","prop":"country","op":"is","values":["US"]}, {"type":"property","group_type":"User","prop_type":"user","prop":"plan","op":"is","values":["Pro","Enterprise"]} ] } ]

  • Event counter: at least 1 Purchase event

eventCountFilters: [ { "count": "1", "operator": "greater or equal", "event": {"event_type": "Purchase", "filters": [], "group_by": []} } ]

  • Event counter: >= 3 Page Viewed on pricing page

eventCountFilters: [ { "count": "3", "operator": "greater or equal", "event": { "event_type": "Page Viewed", "filters": [ { "group_type": "User", "subprop_key": "page", "subprop_op": "is", "subprop_type": "event", "subprop_value": ["pricing"] } ], "group_by": [] } } ]

NOTES:

  • Prefer property-based segment conditions for attributes; prefer eventCountFilters for behavioral criteria.
Parameters (1 required, 4 optional)
Required
projectIdstring

Project ID (appId) to search within

Optional
eventCountFiltersarray

Optional event count filters to constrain results

Default: []
groupBysarray

Optional group by properties to include in metadata

Default: []
limitnumber

Max number of sessions to return. Defaults to 10.

Default: 10
segmentFiltersarray

Array of segments; each with a conditions array

Default: [{'conditions': []}]

Analyzing chart

query_chart_chatgpt
Full Description

Query a single chart given its ID.

RULES:

  • Users want to know references for analyses in order to validate the data.
  • ALWAYS REFERENCE CHARTS TO THE USER BY THEIR LINK WHEN QUERIED AND USED IN ANALYSES.

WHEN TO USE:

  • You want to query a chart to get its data.
  • Only one chart or chart edit can be queried in a single request.

PREREQUISITES (required):

  • You MUST have a concrete chartId or chartEditId before calling this tool. Do not call it speculatively.
  • If you do not already have one, resolve it FIRST via:
    • search with entityTypes: ["CHART"] to find a saved chart by name.
    • get_from_url when the user has shared an Amplitude chart URL.
    • query_amplitude_data if the user wants an ad-hoc analysis rather than an existing chart.
    • If the user has not provided a chart reference and none of the above apply, STOP and ask the user which chart to query.

INSTRUCTIONS:

  • Provide saved charts via chartId and chart edits (links ending in /chart/new/<edit_id> or /chart/<chart_id>/edit/<edit_id>) via chartEditId.
  • Only one chart or chart edit ID is allowed per request; if you have both, prefer chartEditId.
  • Results will include data for the chart and errors if it fails.

RESPONSE FORMAT: Returns {isCsvResponse: bool, csvResponse or jsonResponse, definition}. Only ONE response type present. Check the isCsvResponse flag to determine which response format to parse

CRITICAL — NON-ADDITIVE METRICS (uniques, pct_dau):

  • These metrics cannot be summed across intervals. The chart UI plots per-interval values, not a running total.
  • Additive metrics (totals, sums) CAN be summed across intervals.

How to read the JSON response, by metric type:

1. COUNT metrics ("uniques"):

  • Use "overallSeries" — it is the TRUE deduped unique count across the full date range.
  • Do NOT sum "timeSeries" values — that overstates the count due to user overlap across intervals.

2. RATIO metrics ("pct_dau" only):

  • Use "timeSeriesAverage" (mean of per-interval values) — this matches what the chart UI displays.

For "current" reporting, also consider the most recent N intervals from "timeSeries".

  • Do NOT use "overallSeries" for pct_dau over multi-interval ranges. For pct_dau, "overallSeries"

is a long-range aggregate (deduped numerator over the full range / deduped denominator over the full range). Over many intervals the denominator dedupes a much larger pool than the numerator, which compresses the ratio — typically reporting roughly half of the per-interval values the chart shows. This is mathematically valid as a long-range aggregate but is NOT what users see in the chart.

  • Do NOT sum "timeSeries" values — ratios cannot be summed.

CSV Response Structure (when isCsvResponse is true):

  • Header rows: The top rows contain metadata including chart name, description, events, formulas, and other chart configuration details
  • Data header row: A single row containing column labels for the data points below (typically includes dates or time periods)
  • Data rows: Each row contains:
    • Label columns: First few columns contain row labels identifying the data series
    • Value columns: Numerical data organized under the corresponding date/time columns from the data header row
    • Parse by: Skip metadata rows, identify the data header row, then extract labels from first columns and values from remaining columns
    • Cells in the CSV response are delimited by commas and may be prepended with a character

Example below measures uniques of custom event "Valuable Tweaking" over 3 days (2025-08-23, 2025-08-24, 2025-08-25) for all users. The data points are 614, 1769, and 4132 for the 3 days respectively. IMPORTANT: The overall unique users is 5642 (NOT 614+1769+4132=6515), because users overlap across days. data: " Example chart name" " Formula"," UNIQUES(A)" " A:"," [Custom] 'Valuable Tweaking'"

" Segment"," 2025-08-23"," 2025-08-24"," 2025-08-25" " All Non-Amplitude Users","614","1769","4132" definition: { "app": "APP_ID", "params": { "countGroup": "User", "end": 1756166399, "events": [ { "event_type": "ce:'Valuable Tweaking'", "filters": [], "group_by": [] } ], "groupBy": [], "interval": 1, "metric": "uniques", "segments": [], "start": 1755907200, }, "type": "eventsSegmentation", }

JSON Response Structure (when isCsvResponse is false):

  • Parse using the following structure:
    • timeSeries: Array of arrays, each containing data points for a given time period with a "value" property
    • overallSeries: Array of arrays, each containing the overall data point across the entire range under the "value" property.

IMPORTANT — interpretation depends on the metric:

  • For "uniques" (count): this is the TRUE deduped unique count over the full date range. Use this.
  • For "pct_dau" (ratio): this is a long-range aggregate ratio (deduped numerator

over range / deduped denominator over range). It does NOT match the per-interval values the chart UI plots and is typically much smaller. Do NOT report it as the headline number — use "timeSeriesAverage" instead.

  • timeSeriesAverage: Present only for "pct_dau". Array of arrays, one per series, each

containing a single {value} that is the mean of "timeSeries" values for that series. Use this as the headline ratio when the chart spans multiple intervals — it matches what users see in the chart UI.

  • seriesMetadata: Array of objects containing metadata for each series
  • xValuesForTimeSeries: Array of strings representing the x-axis values (dates) for the time series
  • Use the dataset definition to be able to parse referenced events, properties, and segments.

Example below is a JSON response is for the same query as the CSV example above. { "timeSeries": [[{"value": 614}, {"value": 1769}, {"value": 4132}]], "overallSeries": [[{"value": 5642}]], "seriesMetadata": [{"segmentIndex": 0, "formulaIndex": 0, "formula": "UNIQUES(A)"}], "xValuesForTimeSeries": ["2025-08-23T00:00:00", "2025-08-24T00:00:00", "2025-08-25T00:00:00"] } Note: 614+1769+4132=6515, but overallSeries shows 5642. This is because unique users overlap across days. For "uniques", always use overallSeries for the total.

Example below is a "pct_dau" query over 3 weeks (a ratio metric): { "timeSeries": [[{"value": 0.1402}, {"value": 0.1421}, {"value": 0.1444}]], "overallSeries": [[{"value": 0.0712}]], "timeSeriesAverage": [[{"value": 0.1422}]], "seriesMetadata": [{"segmentIndex": 0, "formulaIndex": 0, "formula": "PCT_DAU(A)"}], "xValuesForTimeSeries": ["2026-04-06T00:00:00", "2026-04-13T00:00:00", "2026-04-20T00:00:00"] } Note: the chart UI shows ~14% per week. timeSeriesAverage (14.22%) matches that. overallSeries (7.12%) is the deduped 3-week aggregate ratio and would HALVE the reported value if used as the headline — never report it as "the number" for "pct_dau". Always use timeSeriesAverage for "pct_dau".

Parameters (0 required, 5 optional)
Optional
chartEditIdstring

Chart edit ID to query data for

chartIdstring

Saved chart ID to query data for

excludeIncompleteDatapointsboolean

Optional flag to exclude incomplete data points from results. When true, the current time interval will be excluded from the results to avoid incomplete data points. Defaults to false.

Default: False
groupByLimitinteger

Maximum number of group by values to return (1-1000, defaults to 10)

Default: 10
rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Analyzing charts

query_charts
Full Description

Query up to 3 charts concurrently given their IDs.

RULES:

  • Users want to know references for analyses in order to validate the data.
  • ALWAYS REFERENCE CHARTS TO THE USER BY THEIR LINK WHEN QUERIED AND USED IN ANALYSES.

WHEN TO USE:

  • You want to query multiple charts to get their data efficiently.
  • Maximum of 3 charts can be queried in a single request.

PREREQUISITES (required):

  • You MUST have at least one concrete chartIds or chartEditIds entry before calling this tool. Do not call it speculatively.
  • If you do not already have any, resolve them FIRST via:
    • search with entityTypes: ["CHART"] to find saved charts by name.
    • get_from_url when the user has shared Amplitude chart URLs.
    • query_dataset if the user wants an ad-hoc analysis rather than an existing chart.
    • If the user has not provided chart references and none of the above apply, STOP and ask the user which charts to query.

INSTRUCTIONS:

  • Provide saved charts via chartIds and chart edits (links ending in /chart/new/<edit_id> or /chart/<chart_id>/edit/<edit_id>) via chartEditIds.
  • Chart edit IDs take precedence over chart IDs when both are available for a given chart.
  • Use this tool to query up to 3 charts + chart edits (combined total).
  • Results will include data for each successfully queried chart and errors for any failed charts.

RESPONSE FORMAT: Returns {isCsvResponse: bool, csvResponse or jsonResponse, definition}. Only ONE response type present. Check the isCsvResponse flag to determine which response format to parse

CRITICAL — NON-ADDITIVE METRICS (uniques, pct_dau):

  • These metrics cannot be summed across intervals. The chart UI plots per-interval values, not a running total.
  • Additive metrics (totals, sums) CAN be summed across intervals.

How to read the JSON response, by metric type:

1. COUNT metrics ("uniques"):

  • Use "overallSeries" — it is the TRUE deduped unique count across the full date range.
  • Do NOT sum "timeSeries" values — that overstates the count due to user overlap across intervals.

2. RATIO metrics ("pct_dau" only):

  • Use "timeSeriesAverage" (mean of per-interval values) — this matches what the chart UI displays.

For "current" reporting, also consider the most recent N intervals from "timeSeries".

  • Do NOT use "overallSeries" for pct_dau over multi-interval ranges. For pct_dau, "overallSeries"

is a long-range aggregate (deduped numerator over the full range / deduped denominator over the full range). Over many intervals the denominator dedupes a much larger pool than the numerator, which compresses the ratio — typically reporting roughly half of the per-interval values the chart shows. This is mathematically valid as a long-range aggregate but is NOT what users see in the chart.

  • Do NOT sum "timeSeries" values — ratios cannot be summed.

CSV Response Structure (when isCsvResponse is true):

  • Header rows: The top rows contain metadata including chart name, description, events, formulas, and other chart configuration details
  • Data header row: A single row containing column labels for the data points below (typically includes dates or time periods)
  • Data rows: Each row contains:
    • Label columns: First few columns contain row labels identifying the data series
    • Value columns: Numerical data organized under the corresponding date/time columns from the data header row
    • Parse by: Skip metadata rows, identify the data header row, then extract labels from first columns and values from remaining columns
    • Cells in the CSV response are delimited by commas and may be prepended with a character

Example below measures uniques of custom event "Valuable Tweaking" over 3 days (2025-08-23, 2025-08-24, 2025-08-25) for all users. The data points are 614, 1769, and 4132 for the 3 days respectively. IMPORTANT: The overall unique users is 5642 (NOT 614+1769+4132=6515), because users overlap across days. data: " Example chart name" " Formula"," UNIQUES(A)" " A:"," [Custom] 'Valuable Tweaking'"

" Segment"," 2025-08-23"," 2025-08-24"," 2025-08-25" " All Non-Amplitude Users","614","1769","4132" definition: { "app": "APP_ID", "params": { "countGroup": "User", "end": 1756166399, "events": [ { "event_type": "ce:'Valuable Tweaking'", "filters": [], "group_by": [] } ], "groupBy": [], "interval": 1, "metric": "uniques", "segments": [], "start": 1755907200, }, "type": "eventsSegmentation", }

JSON Response Structure (when isCsvResponse is false):

  • Parse using the following structure:
    • timeSeries: Array of arrays, each containing data points for a given time period with a "value" property
    • overallSeries: Array of arrays, each containing the overall data point across the entire range under the "value" property.

IMPORTANT — interpretation depends on the metric:

  • For "uniques" (count): this is the TRUE deduped unique count over the full date range. Use this.
  • For "pct_dau" (ratio): this is a long-range aggregate ratio (deduped numerator

over range / deduped denominator over range). It does NOT match the per-interval values the chart UI plots and is typically much smaller. Do NOT report it as the headline number — use "timeSeriesAverage" instead.

  • timeSeriesAverage: Present only for "pct_dau". Array of arrays, one per series, each

containing a single {value} that is the mean of "timeSeries" values for that series. Use this as the headline ratio when the chart spans multiple intervals — it matches what users see in the chart UI.

  • seriesMetadata: Array of objects containing metadata for each series
  • xValuesForTimeSeries: Array of strings representing the x-axis values (dates) for the time series
  • Use the dataset definition to be able to parse referenced events, properties, and segments.

Example below is a JSON response is for the same query as the CSV example above. { "timeSeries": [[{"value": 614}, {"value": 1769}, {"value": 4132}]], "overallSeries": [[{"value": 5642}]], "seriesMetadata": [{"segmentIndex": 0, "formulaIndex": 0, "formula": "UNIQUES(A)"}], "xValuesForTimeSeries": ["2025-08-23T00:00:00", "2025-08-24T00:00:00", "2025-08-25T00:00:00"] } Note: 614+1769+4132=6515, but overallSeries shows 5642. This is because unique users overlap across days. For "uniques", always use overallSeries for the total.

Example below is a "pct_dau" query over 3 weeks (a ratio metric): { "timeSeries": [[{"value": 0.1402}, {"value": 0.1421}, {"value": 0.1444}]], "overallSeries": [[{"value": 0.0712}]], "timeSeriesAverage": [[{"value": 0.1422}]], "seriesMetadata": [{"segmentIndex": 0, "formulaIndex": 0, "formula": "PCT_DAU(A)"}], "xValuesForTimeSeries": ["2026-04-06T00:00:00", "2026-04-13T00:00:00", "2026-04-20T00:00:00"] } Note: the chart UI shows ~14% per week. timeSeriesAverage (14.22%) matches that. overallSeries (7.12%) is the deduped 3-week aggregate ratio and would HALVE the reported value if used as the headline — never report it as "the number" for "pct_dau". Always use timeSeriesAverage for "pct_dau".

Event Segmentation with Insights (anomaly detection / confidence intervals):

  • When params.insights.isOn is true, Event Segmentation charts queried via query_charts or query_dataset

return BOTH chartConfig (Highcharts) AND jsonResponse with joinable band data.

  • jsonResponse.seriesIntervals maps stringified seriesMetadata keys to { low, high, yhat } arrays

(parallel to xValuesForTimeSeries). Use seriesMetadata + xValuesForTimeSeries to join bands to series.

  • Metric Explorer charts with Insights return seriesIntervals inside each data[] entry instead.
Parameters (0 required, 8 optional)
Optional
chartEditIdsarray

Array of chart edit IDs to query data for (max 3)

chartIdsarray

Array of saved chart IDs to query data for (max 3)

excludeIncompleteDatapointsboolean

Optional flag to exclude incomplete data points from results. When true, the current time interval will be excluded from the results to avoid incomplete data points. Defaults to false.

Default: False
groupByLimitinteger

Maximum number of group by values to return (1-1000, defaults to 10)

Default: 10
rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

themestring

Fetch only this theme of an eventsSegmentation Highcharts config. Used by the chart widget for active-theme-first rendering.

Options:lightdark
timeSeriesLimitinteger

Maximum number of group-by values that include per-interval time-series rows in the CSV response. All group-by values always include their aggregate "Total" row. Groups beyond this limit only return their Total row, which dramatically reduces response size for charts with many group-by values over long date ranges. Defaults to 6 to prevent excessively large responses, but we recommend setting to 0 (totals-only) unless you specifically need time-series breakdowns for trend analysis.

Default: 6
visstring

Override the eventsSegmentation visualization type (line, area, bar, pie, stackedbar). Used by the chart widget vis switcher.

Options:lineareabarpiestackedbar

Query Dataset

query_dataset
Full Description

Execute a data query using the dataset endpoint for more complex queries.

WHEN TO USE

  • You want to query data to form an ad hoc analysis within a project that does not already exist as a chart, metric, or experiment.
  • You want to tweak an existing chart to glean more information from it (e.g. add a group by, change the time range, etc.)

STRATEGIES

1. Use the 'search' tool to find existing charts that relate to the data you want to query. 2. Use the 'get_charts' tool to understand the events, properties, and dataset schema generally. 3. Optionally use the 'search' tool again to find additional events, user properties, etc. needed for the query. 4. Optionally use the 'get_event_properties' tool to get properties on individual events. 3. Use this tool to query the ad hoc analysis.

GENERAL GUIDELINES

  • Don't assume or guess properties, events, or schema. Use the tools provided to you to understand the data before running a dataset query.
  • When running into query failures, try searching for existing charts to understand the data taxonomy and dataset schema.
  • When you receive a 400 error response the schema is likely incorrect or the events/properties do not exist.

AMPLITUDE WIDE META EVENTS TYPES

Special system events available for analysis. Events are passed in the "event_type" field:

  • "_active": Any active event useful for tracking 'active users' like DAU, MAU(events not marked as inactive)
  • "_all": Any event being tracked in Amplitude
  • "_new": Events triggered by new users within the time interval. Useful for tracking 'new users'.
  • "_any_revenue_event": Any revenue-generating event. Useful for tracking 'revenue'.
  • "$popularEvents": Top events by volume (dynamically computed). Useful for more meta taxonomy analyses like 'what are the most common events'.

PROPERTY TYPES:

  • AMPLITUDE CORE PROPERTIES: Built-in properties automatically tracked by Amplitude
  • Have source: "AMPLITUDE"
  • Use standard naming (lowercase, underscores)
  • Available for all events and users
  • CUSTOM PROPERTIES: Organization-defined properties
  • Have source: "CUSTOMER"
  • ALWAYS prefixed with "gp:" (e.g., "gp:email", "gp:full name")
  • Include experiment flags like "gp:[Experiment] feature-name"

COMPLETE LIST OF AMPLITUDE CORE PROPERTIES:

User & Session Identification:

  • user_id: Primary user identifier
  • amplitude_id: Amplitude's internal user ID
  • device_id: Unique device identifier
  • session_id: Session identifier
  • event_id: Unique event identifier

Geographic Properties:

  • ip_address: User's IP address
  • country: Country (from GeoIP)
  • city: City (from GeoIP)
  • region: State/region (from GeoIP)
  • dma: Designated Market Area
  • $postal_code: Postal/ZIP code
  • location_lat: Latitude coordinate
  • location_lng: Longitude coordinate

Device & Platform Properties:

  • platform: Device platform (iOS, Android, Web, etc.)
  • device: Device family name
  • device_type: Type of device (mobile, tablet, desktop)
  • os: Operating system
  • language: Device language setting
  • carrier: Mobile carrier

Application Properties:

  • version: Current app version
  • start_version: Version when user first used the app
  • library: SDK library used to send data
  • server_upload_time: When data was received by Amplitude

Business Properties:

  • paying: Whether user is a paying customer

RESPONSE FORMAT: Returns {isCsvResponse: bool, csvResponse or jsonResponse, definition}. Only ONE response type present. Check the isCsvResponse flag to determine which response format to parse

CSV Response Structure (when isCsvResponse is true):

  • Header rows: The top rows contain metadata including chart name, description, events, formulas, and other chart configuration details
  • Data header row: A single row containing column labels for the data points below (typically includes dates or time periods)
  • Data rows: Each row contains:
    • Label columns: First few columns contain row labels identifying the data series
    • Value columns: Numerical data organized under the corresponding date/time columns from the data header row
    • Parse by: Skip metadata rows, identify the data header row, then extract labels from first columns and values from remaining columns
    • Cells in the CSV response are delimited by commas and may be prepended with a character

Example below measures uniques of custom event "Valuable Tweaking" over 3 days (2025-08-23, 2025-08-24, 2025-08-25) for all users. The data points are 614, 1769, and 4132 for the 3 days respectively. data: " Example chart name" " Formula"," UNIQUES(A)" " A:"," [Custom] 'Valuable Tweaking'"

" Segment"," 2025-08-23"," 2025-08-24"," 2025-08-25" " All Non-Amplitude Users","614","1769","4132" definition: { "app": "APP_ID", "params": { "countGroup": "User", "end": 1756166399, "events": [ { "event_type": "ce:'Valuable Tweaking'", "filters": [], "group_by": [] } ], "groupBy": [], "interval": 1, "metric": "uniques", "segments": [], "start": 1755907200, }, "type": "eventsSegmentation", }

JSON Response Structure (when isCsvResponse is false):

  • Parse using the following structure:
    • timeSeries: Array of arrays, each containing data point for a given time period with a "value" property
    • overallSeries: Array of arrays, each containing data the overall data point (across the entire range) under the "value" property
    • seriesMetadata: Array of objects containing metadata for each series
    • xValuesForTimeSeries: Array of strings representing the x-axis values (dates) for the time series
    • Use the dataset definition to be able to parse referenced events, properties, and segments.

Example below is a JSON response is for the same query as the CSV example above. { "timeSeries": [[{"value": 614}, {"value": 1769}, {"value": 4132}]], "overallSeries": [[{"value": 5642}]], "seriesMetadata": [{"segmentIndex": 0, "formulaIndex": 0, "formula": "UNIQUES(A)"}], "xValuesForTimeSeries": ["2025-08-23T00:00:00", "2025-08-24T00:00:00", "2025-08-25T00:00:00"] }

Parameters (2 required, 1 optional)
Required
definitionobject

Chart definition object. ## EVENTS SEGMENTATION (trend analysis) Required params: {"range": "Last 30 Days", "events": [{"event_type": "Event", "filters": [], "group_by": []}], "metric": "totals", "countGroup": "User", "groupBy": [], "interval": 1, "segments": [{"conditions": []}]} - metric: "uniques" (unique users), "totals" (event count), "average" (per user), "pct_dau" (% DAU), "frequency" (distribution), "sums"/"value_avg" (property aggregation, requires property in event group_by), "prop_count" (distinct property values) - nthTimeLookbackWindow: Days for nth-time analysis (default: 365) EXAMPLES: - Event count: {"type": "eventsSegmentation", "app": "123", "params": {"range": "Last 30 Days", "events": [{"event_type": "Button Clicked", "filters": [], "group_by": []}], "metric": "totals", "countGroup": "User", "groupBy": [], "interval": 1, "segments": [{"conditions": []}]}} - Active users: {"type": "eventsSegmentation", "app": "123", "params": {"range": "Last 30 Days", "events": [{"event_type": "_active", "filters": [], "group_by": []}], "metric": "uniques", "countGroup": "User", "groupBy": [], "interval": 1, "segments": [{"conditions": []}]}} - Property sum: {"type": "eventsSegmentation", "app": "123", "params": {"range": "Last 30 Days", "events": [{"event_type": "Purchase", "filters": [], "group_by": [{"type": "event", "value": "revenue"}]}], "metric": "sums", "countGroup": "User", "groupBy": [], "interval": 1, "segments": [{"conditions": []}]}} ## FUNNELS (Conversion analysis through event sequence) Purpose: Analyze user progression through steps, identify drop-offs. Common for sign-up flows, purchase funnels, onboarding. Base: {"type": "funnels", "app": "projectId", "params": {"range": "Last 30 Days", "events": [{"event_type": "Step1", "filters": [], "group_by": []}, {"event_type": "Step2", "filters": [], "group_by": []}], "countGroup": "User", "segments": [{"conditions": []}]}} KEY PARAMS: - conversionWindow: Time limit for funnel completion (e.g., {"value": 1, "unit": "day"}) - order: "this_order" (default, must be ordered but other events can occur between), "any_order" (any sequence), "exact_order" (must be exact sequence with no other events between) - exclusionSteps: Array of events that disqualify users if triggered between steps EXAMPLES: - Basic funnel: {"type": "funnels", "app": "123", "params": {"range": "Last 30 Days", "events": [{"event_type": "View Product", "filters": [], "group_by": []}, {"event_type": "Add to Cart", "filters": [], "group_by": []}, {"event_type": "Purchase", "filters": [], "group_by": []}], "countGroup": "User", "segments": [{"conditions": []}]}} - Any order: {"type": "funnels", "app": "123", "params": {"range": "Last 30 Days", "events": [{"event_type": "View Product", "filters": [], "group_by": []}, {"event_type": "Add to Cart", "filters": [], "group_by": []}, {"event_type": "Purchase", "filters": [], "group_by": []}], "countGroup": "User", "order": "any_order", "segments": [{"conditions": []}]}} ## RETENTION (Cohort retention analysis over time) Purpose: Measure how well product retains users by tracking % who return after initial interaction. Essential for engagement patterns, churn, and product stickiness. Base: {"type": "retention", "app": "projectId", "params": {"range": "Last 30 Days", "startEvent": {"event_type": "_new", "filters": [], "group_by": []}, "retentionEvents": [{"event_type": "_active", "filters": [], "group_by": []}], "retentionMethod": "nday", "countGroup": "User", "interval": 1, "segments": [{"conditions": []}]}} KEY PARAMS: - startEvent: Use "_new" for first-time user retention, specific events (e.g., "Sign Up", "Purchase") for milestone retention - retentionMethod: "nday" (specific day return), "rolling" (return on or after day), "bracket" (custom interval ranges) - retentionBrackets: Array of [start, end] day ranges for bracket retention (e.g., [[0,1],[1,5],[5,12],[12,21]]) EXAMPLES: - Weekly retention: {"type": "retention", "app": "123", "params": {"range": "Last 90 Days", "startEvent": {"event_type": "Sign Up", "filters": [], "group_by": []}, "retentionEvents": [{"event_type": "_active", "filters": [], "group_by": []}], "retentionMethod": "nday", "countGroup": "User", "interval": 7, "segments": [{"conditions": []}]}} - Bracket retention: {"type": "retention", "app": "123", "params": {"range": "Last 90 Days", "startEvent": {"event_type": "_new", "filters": [], "group_by": []}, "retentionEvents": [{"event_type": "_active", "filters": [], "group_by": []}], "retentionMethod": "bracket", "countGroup": "User", "interval": 1, "retentionBrackets": [[0,1],[1,5],[5,12],[12,21]], "segments": [{"conditions": []}]}} ## SESSIONS (Session-based metrics and analysis) Purpose: Analyze user sessions to understand engagement depth, duration, frequency, and patterns. Useful for time spent, sessions per user, and quality. Base: {"type": "sessions", "app": "projectId", "params": {"range": "Last 30 Days", "sessions": [{"filters": [], "group_by": []}], "countGroup": "User", "sessionType": "average", "segments": [{"conditions": []}]}} KEY PARAMS: - sessionType: "average" (avg length in seconds, default), "totalSessions" (total count), "peruser" (avg per user), "averageTimePerUser" (avg time per user in sec), "totalTime" (total across all sessions in sec), "length" (distribution histogram) EXAMPLES: - Avg session length: {"type": "sessions", "app": "123", "params": {"range": "Last 30 Days", "sessions": [{"filters": [], "group_by": []}], "countGroup": "User", "sessionType": "average", "segments": [{"conditions": []}]}} ## COMMON PARAMETERS (All Chart Types) TIME RANGE (Required - choose one): - range: "Last N Days/Weeks/Months" (e.g., "Last 7 Days", "Last 30 Days", "Last 90 Days") or "This Week/Month/Quarter/Year". Note: Very large ranges (e.g., "Last 2 Years") may fail with daily interval - use start/end instead - start/end: Unix timestamps or ISO 8601 dates (e.g., {"start": 1727740800, "end": 1730419199} or {"start": "2025-11-07", "end": "2025-11-08"}). Use for multi-year ranges or precise boundaries COUNTING & AGGREGATION (Required): - countGroup: "User" (default - unique users, tracks distinct people), "Event" (event occurrences regardless of who), or custom groups ("org id", "Company", "Account", "Store") FILTERING & GROUPING (Optional): - segments: [{"conditions": []}] = all users. User filter: [{"conditions": [{"type": "property", "group_type": "User", "prop_type": "user", "prop": "country", "op": "is", "values": ["United States"]}]}]. Group filter: [{"conditions": [{"type": "property", "group_type": "org id", "prop_type": "group", "prop": "grp:plan", "op": "is", "values": ["enterprise"]}]}] - groupBy: Compare by property [{"type": "user", "value": "country", "group_type": "User"}] or [{"type": "event", "value": "platform", "group_type": "Event"}]. Caution: increases result size EVENT-LEVEL FILTERING & GROUPING (Optional): - filters (in event): Filter specific events by properties. Event property: [{"group_type": "User", "subprop_key": "source", "subprop_op": "is", "subprop_type": "event", "subprop_value": ["dashboard"]}]. User property: [{"group_type": "User", "subprop_key": "country", "subprop_op": "is", "subprop_type": "user", "subprop_value": ["US"]}] - group_by (in event): Group event by properties for dimension breakdown. Event property: [{"type": "event", "value": "platform"}]. User property: [{"type": "user", "value": "country"}]. Example: {"event_type": "Button Clicked", "filters": [], "group_by": [{"type": "event", "value": "button_name"}]} TIME BUCKETING (Optional): - interval: -3600000 (hourly), 1 (daily, default), 7 (weekly), 30 (monthly), 90 (quarterly). Only these specific values valid - arbitrary intervals like 2, 3, 14 will error

projectIdstring

Project ID to query data from

Optional
groupByLimitnumber

Optional limit for group by results

Analyzing dataset

query_dataset_chatgpt
Full Description

Run analytics queries to answer data questions about users, events, funnels, and retention.

Chart definitions are validated inline before querying. When validation fails, the response includes chartTypeSchema (parameter schema, valid enums, working example, coercion rules) so you can fix the definition and retry.

Optional: call verify_chart_definition first for a dry-run validation without executing a query.

WHEN TO USE

  • Answer questions like:
    • "How many active users did we have last week?"
    • "Show me a funnel from sign up to purchase"
    • "What is the retention rate for new users?"
    • "How many users completed checkout yesterday?"
    • Any question asking for metrics, counts, trends, funnels, or retention analysis

DO NOT USE FOR:

  • Listing or checking which properties exist on an event (e.g. "what/which properties are on the checkout event?") → use 'get_properties' (propertyType="event", pass eventType). Do NOT run queries to discover a schema.
  • Finding existing charts/dashboards → use 'search' instead
  • Getting valid chart definition structure → use 'get_chart_definition_params' (or fix from chartTypeSchema in a validation-error response)
  • If you need more information about existing charts in the project as an example → use 'get_charts' instead
  • Project settings (timezone, currency) → use 'get_project_context' instead

STRATEGIES

1. Use the 'search' tool to find if there are charts with properties that relate to the data you want to query. 2. Use 'get_chart_definition_params' when you need the full schema before building a definition (optional — validation errors also return chartTypeSchema). 3. Use the 'get_charts' tool to find examples of existing charts in the project to understand the events, properties, and dataset schema generally. 4. Optionally use the 'search' tool again to find additional events, user properties, etc. needed for the query. 5. Optionally use the 'get_properties' tool (propertyType="event", pass eventType) to get properties on individual events. 6. Use this tool to query the ad hoc analysis — definitions are validated and auto-corrected inline.

GENERAL GUIDELINES

  • Don't assume or guess properties, events, or schema. Use the tools provided to you to understand the data before running a dataset query.
  • When running into query failures, try searching for existing charts to understand the data taxonomy and dataset schema.
  • When you receive a validation error, use the returned chartTypeSchema to fix the definition.
  • ALWAYS include a descriptive "name" field in the definition object. This name will be displayed as the chart title. Examples: "Active Users Last 7 Days", "Sign Up to Purchase Funnel", "New User Retention".

AMPLITUDE WIDE META EVENTS TYPES

Special system events available for analysis. Events are passed in the "event_type" field:

  • "_active": Any active event useful for tracking 'active users' like DAU, MAU(events not marked as inactive)
  • "_all": Any event being tracked in Amplitude
  • "_new": Events triggered by new users within the time interval. Useful for tracking 'new users'.
  • "_any_revenue_event": Any revenue-generating event. Useful for tracking 'revenue'.
  • "$popularEvents": Top events by volume (dynamically computed). Useful for more meta taxonomy analyses like 'what are the most common events'.

PROPERTY TYPES:

  • Amplitude core properties are built-in and use standard names like "country", "platform", "device_id", "user_id"
  • Custom properties are organization-defined and are typically prefixed with "gp:"
  • Derived/formula properties (from TMS) must use prop_type and group_by.type of "derivedV2" in segments and group_by — not "user" or legacy "derived". Use get_properties with propertyType "derived" to list them.
  • Hidden properties are intentionally excluded from get_properties; do not use them. Prefer derived replacements named in project context.
  • If you are unsure which properties exist, use get_properties (propertyType="event", pass eventType) first — this is the direct way to list an event's properties. search/get_charts are fallbacks for discovering related events or example charts.

Supported chart types: eventsSegmentation, funnels, metricExplorer, retention, revenueLtv, sessions, stickiness

RESPONSE FORMAT: Returns {isCsvResponse: bool, csvResponse or jsonResponse, definition}. Only ONE response type present. Check the isCsvResponse flag to determine which response format to parse

CRITICAL — NON-ADDITIVE METRICS (uniques, pct_dau):

  • These metrics cannot be summed across intervals. The chart UI plots per-interval values, not a running total.
  • Additive metrics (totals, sums) CAN be summed across intervals.

How to read the JSON response, by metric type:

1. COUNT metrics ("uniques"):

  • Use "overallSeries" — it is the TRUE deduped unique count across the full date range.
  • Do NOT sum "timeSeries" values — that overstates the count due to user overlap across intervals.

2. RATIO metrics ("pct_dau" only):

  • Use "timeSeriesAverage" (mean of per-interval values) — this matches what the chart UI displays.

For "current" reporting, also consider the most recent N intervals from "timeSeries".

  • Do NOT use "overallSeries" for pct_dau over multi-interval ranges. For pct_dau, "overallSeries"

is a long-range aggregate (deduped numerator over the full range / deduped denominator over the full range). Over many intervals the denominator dedupes a much larger pool than the numerator, which compresses the ratio — typically reporting roughly half of the per-interval values the chart shows. This is mathematically valid as a long-range aggregate but is NOT what users see in the chart.

  • Do NOT sum "timeSeries" values — ratios cannot be summed.

CSV Response Structure (when isCsvResponse is true):

  • Header rows: The top rows contain metadata including chart name, description, events, formulas, and other chart configuration details
  • Data header row: A single row containing column labels for the data points below (typically includes dates or time periods)
  • Data rows: Each row contains:
    • Label columns: First few columns contain row labels identifying the data series
    • Value columns: Numerical data organized under the corresponding date/time columns from the data header row
    • Parse by: Skip metadata rows, identify the data header row, then extract labels from first columns and values from remaining columns
    • Cells in the CSV response are delimited by commas and may be prepended with a character

Example below measures uniques of custom event "Valuable Tweaking" over 3 days (2025-08-23, 2025-08-24, 2025-08-25) for all users. The data points are 614, 1769, and 4132 for the 3 days respectively. IMPORTANT: The overall unique users is 5642 (NOT 614+1769+4132=6515), because users overlap across days. data: " Example chart name" " Formula"," UNIQUES(A)" " A:"," [Custom] 'Valuable Tweaking'"

" Segment"," 2025-08-23"," 2025-08-24"," 2025-08-25" " All Non-Amplitude Users","614","1769","4132" definition: { "app": "APP_ID", "params": { "countGroup": "User", "end": 1756166399, "events": [ { "event_type": "ce:'Valuable Tweaking'", "filters": [], "group_by": [] } ], "groupBy": [], "interval": 1, "metric": "uniques", "segments": [], "start": 1755907200, }, "type": "eventsSegmentation", }

JSON Response Structure (when isCsvResponse is false):

  • Parse using the following structure:
    • timeSeries: Array of arrays, each containing data points for a given time period with a "value" property
    • overallSeries: Array of arrays, each containing the overall data point across the entire range under the "value" property.

IMPORTANT — interpretation depends on the metric:

  • For "uniques" (count): this is the TRUE deduped unique count over the full date range. Use this.
  • For "pct_dau" (ratio): this is a long-range aggregate ratio (deduped numerator

over range / deduped denominator over range). It does NOT match the per-interval values the chart UI plots and is typically much smaller. Do NOT report it as the headline number — use "timeSeriesAverage" instead.

  • timeSeriesAverage: Present only for "pct_dau". Array of arrays, one per series, each

containing a single {value} that is the mean of "timeSeries" values for that series. Use this as the headline ratio when the chart spans multiple intervals — it matches what users see in the chart UI.

  • seriesMetadata: Array of objects containing metadata for each series
  • xValuesForTimeSeries: Array of strings representing the x-axis values (dates) for the time series
  • Use the dataset definition to be able to parse referenced events, properties, and segments.

Example below is a JSON response is for the same query as the CSV example above. { "timeSeries": [[{"value": 614}, {"value": 1769}, {"value": 4132}]], "overallSeries": [[{"value": 5642}]], "seriesMetadata": [{"segmentIndex": 0, "formulaIndex": 0, "formula": "UNIQUES(A)"}], "xValuesForTimeSeries": ["2025-08-23T00:00:00", "2025-08-24T00:00:00", "2025-08-25T00:00:00"] } Note: 614+1769+4132=6515, but overallSeries shows 5642. This is because unique users overlap across days. For "uniques", always use overallSeries for the total.

Example below is a "pct_dau" query over 3 weeks (a ratio metric): { "timeSeries": [[{"value": 0.1402}, {"value": 0.1421}, {"value": 0.1444}]], "overallSeries": [[{"value": 0.0712}]], "timeSeriesAverage": [[{"value": 0.1422}]], "seriesMetadata": [{"segmentIndex": 0, "formulaIndex": 0, "formula": "PCT_DAU(A)"}], "xValuesForTimeSeries": ["2026-04-06T00:00:00", "2026-04-13T00:00:00", "2026-04-20T00:00:00"] } Note: the chart UI shows ~14% per week. timeSeriesAverage (14.22%) matches that. overallSeries (7.12%) is the deduped 3-week aggregate ratio and would HALVE the reported value if used as the headline — never report it as "the number" for "pct_dau". Always use timeSeriesAverage for "pct_dau".

Event Segmentation with Insights (anomaly detection / confidence intervals):

  • When params.insights.isOn is true, Event Segmentation charts queried via query_charts or query_dataset

return BOTH chartConfig (Highcharts) AND jsonResponse with joinable band data.

  • jsonResponse.seriesIntervals maps stringified seriesMetadata keys to { low, high, yhat } arrays

(parallel to xValuesForTimeSeries). Use seriesMetadata + xValuesForTimeSeries to join bands to series.

  • Metric Explorer charts with Insights return seriesIntervals inside each data[] entry instead.
Parameters (2 required, 5 optional)
Required
definitionobject

Chart definition to query. Validated inline — on failure the response includes chartTypeSchema (params, enums, example, coercion rules). Optional: call get_chart_definition_params first for the full schema. Use canonical chart types only: - "eventsSegmentation" - "funnels" - "retention" - "sessions" - "revenueLtv" - "dataTableV2" Do not use aliases like: - "segmentation" - "event_segmentation" - "events" - "funnel" TIME RANGE — three accepted shapes, mutually exclusive with each other: - "range" preset (e.g. "Last 30 Days", "Last 12 Weeks", "This Month", "Yesterday") - "start" + "end" for a bounded custom range - "start" alone for an open-ended "since <date>" range (renders as Amplitude's "Since" view) - Timestamps may be Unix seconds, ISO 8601 strings, or relative strings like "now-7d" / "now" - Do not combine "range" with "start"/"end". Do not provide "end" without "start" - Do not use invalid placeholders like "Custom", "Daily", or "All Time" VISUALIZATION TYPE (top-level "vis", optional): - Set "vis" when the user explicitly asks for a specific chart shape (e.g. "as a bar chart", "show as a pie", "stacked bar by country"). Otherwise omit and the system picks a sensible default. - Valid values for eventsSegmentation: "line" (default trend), "area", "bar" (vertical), "column" (horizontal), "stackedbar", "pie", "kpi" (single number). - Valid values for funnels: "line", "bar". - Valid values for sessions: "line", "bar", "totalSessions", "average". - "vis" goes at the TOP LEVEL of the definition, NOT inside "params". COMMON GUARDRAILS: - "dataTableV2" requires "params.table" - "sessions" requires "params.sessions" - "customerJourney" has a maximum of 5 steps when using PATH_TREE or SINGLE_PATH visualization - event lists should use canonical event objects with "event_type", "filters", and "group_by" - include a descriptive top-level "name" whenever possible MINIMAL EXAMPLES: - eventsSegmentation (default line): {"type":"eventsSegmentation","app":"123","name":"Active Users Last 30 Days","params":{"range":"Last 30 Days","events":[{"event_type":"_active","filters":[],"group_by":[]}],"metric":"uniques","countGroup":"User","groupBy":[],"interval":1,"segments":[{"conditions":[]}]}} - eventsSegmentation as bar chart (user said "show as a bar chart"): {"type":"eventsSegmentation","app":"123","name":"Purchases by Country","vis":"bar","params":{"range":"Last 30 Days","events":[{"event_type":"Purchase","filters":[],"group_by":[{"type":"event","value":"country"}]}],"metric":"totals","countGroup":"User","groupBy":[],"interval":1,"segments":[{"conditions":[]}]}} - funnels: {"type":"funnels","app":"123","name":"Signup Funnel","params":{"range":"Last 30 Days","events":[{"event_type":"View Signup","filters":[],"group_by":[]},{"event_type":"Complete Signup","filters":[],"group_by":[]}],"countGroup":"User","segments":[{"conditions":[]}]}} - revenueLtv (cumulative revenue from users NEW in the selected date range — empty results usually mean no new users were acquired in the period, not broken revenue instrumentation): {"type":"revenueLtv","app":"123","name":"Revenue LTV - Total Revenue","vis":"line","params":{"range":"Last 90 Days","metric":"2","event":{"event_type":"_any_revenue_event","filters":[],"group_by":[]},"revenueProperty":"$revenue","groupBy":[],"countGroup":"User","interval":1,"segments":[{"conditions":[]}]}}

projectIdstring

Project ID to query data from

Optional
chartIdstring

Optional parent chart ID for modify/fork. When provided, the parent chart's params (segments, filters, countGroup, groupBy, etc.) are used as defaults — only params you explicitly provide will override. Typical modify flow: get_amplitude_charts include='typed' → edit `chart` → query_amplitude_data({ chart, chartId }).

excludeIncompleteDatapointsboolean

Optional flag to exclude incomplete data points from results. When true, the current time interval will be excluded from the results to avoid incomplete data points. Defaults to false.

Default: False
groupByLimitnumber

Maximum number of group by values to return (1-1000, defaults to 10)

Default: 10
rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

timeSeriesLimitinteger

Maximum number of group-by values that include per-interval time-series rows in the CSV response. All group-by values always include their aggregate "Total" row. Groups beyond this limit only return their Total row, which dramatically reduces response size for charts with many group-by values over long date ranges. Set to 0 for totals-only. Defaults to 3.

Default: 6

Analyzing experiment

query_experiment
Full Description

Query an experiment analysis.

CRITICAL: Do NOT pass metricIds unless user explicitly requests specific metrics or requests analysis on secondary metrics. Omit metricIds for primary metric only (cleaner, focused results).

RULES:

  • Users want to know references for analyses in order to validate the data.
  • ALWAYS REFERENCE EXPERIMENTS TO THE USER BY THEIR LINK WHEN QUERIED AND USED IN ANALYSES.

WHEN TO USE:

  • You want to query a experiment for analysis.

INSTRUCTIONS:

  • Use the search tool to find the ID of the experiment you want to query.
  • You may want to use the get_experiments tool to get more context about the experiment (i.e. state, variants, etc.)
  • Use this tool to query the experiment analysis.

EXAMPLE: groupBy: [{"type": "user", "value": "device type", "group_type": "User"}]

Parameters (1 required, 5 optional)
Required
idstring

ID of the experiment to query

Optional
filtersarray

Filters to apply to the metric (optional)

Default: []
groupByarray

Group by user (optional) - Example: [{"type": "user", "value": "device type", "group_type": "User"}]

Default: []
groupByLimitinteger

Maximum number of group by values to return (1-1000, defaults to 10)

Default: 10
metricIdsarray

ONLY provide if user explicitly requests specific metrics or all metrics. If omitted, returns primary/recommended metric only for cleaner, focused results. Default behavior is preferred.

rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Analyzing metric

query_metric
Full Description

Query metric data using the dataset endpoint with metric references

RULES:

  • Users want to know references for analyses in order to validate the data.
  • ALWAYS REFERENCE METRICS TO THE USER BY THEIR LINK WHEN QUERIED AND USED IN ANALYSES.

WHEN TO USE:

  • You want to query a metric to get its data.

INSTRUCTIONS:

  • Use the search tool to find the ID of the metric you want to query.
  • Use this tool to query the metric.

RESPONSE FORMAT: Returns {isCsvResponse: bool, csvResponse or jsonResponse, definition}. Only ONE response type present. Check the isCsvResponse flag to determine which response format to parse

CRITICAL — NON-ADDITIVE METRICS (uniques, pct_dau):

  • These metrics cannot be summed across intervals. The chart UI plots per-interval values, not a running total.
  • Additive metrics (totals, sums) CAN be summed across intervals.

How to read the JSON response, by metric type:

1. COUNT metrics ("uniques"):

  • Use "overallSeries" — it is the TRUE deduped unique count across the full date range.
  • Do NOT sum "timeSeries" values — that overstates the count due to user overlap across intervals.

2. RATIO metrics ("pct_dau" only):

  • Use "timeSeriesAverage" (mean of per-interval values) — this matches what the chart UI displays.

For "current" reporting, also consider the most recent N intervals from "timeSeries".

  • Do NOT use "overallSeries" for pct_dau over multi-interval ranges. For pct_dau, "overallSeries"

is a long-range aggregate (deduped numerator over the full range / deduped denominator over the full range). Over many intervals the denominator dedupes a much larger pool than the numerator, which compresses the ratio — typically reporting roughly half of the per-interval values the chart shows. This is mathematically valid as a long-range aggregate but is NOT what users see in the chart.

  • Do NOT sum "timeSeries" values — ratios cannot be summed.

CSV Response Structure (when isCsvResponse is true):

  • Header rows: The top rows contain metadata including chart name, description, events, formulas, and other chart configuration details
  • Data header row: A single row containing column labels for the data points below (typically includes dates or time periods)
  • Data rows: Each row contains:
    • Label columns: First few columns contain row labels identifying the data series
    • Value columns: Numerical data organized under the corresponding date/time columns from the data header row
    • Parse by: Skip metadata rows, identify the data header row, then extract labels from first columns and values from remaining columns
    • Cells in the CSV response are delimited by commas and may be prepended with a character

Example below measures uniques of custom event "Valuable Tweaking" over 3 days (2025-08-23, 2025-08-24, 2025-08-25) for all users. The data points are 614, 1769, and 4132 for the 3 days respectively. IMPORTANT: The overall unique users is 5642 (NOT 614+1769+4132=6515), because users overlap across days. data: " Example chart name" " Formula"," UNIQUES(A)" " A:"," [Custom] 'Valuable Tweaking'"

" Segment"," 2025-08-23"," 2025-08-24"," 2025-08-25" " All Non-Amplitude Users","614","1769","4132" definition: { "app": "APP_ID", "params": { "countGroup": "User", "end": 1756166399, "events": [ { "event_type": "ce:'Valuable Tweaking'", "filters": [], "group_by": [] } ], "groupBy": [], "interval": 1, "metric": "uniques", "segments": [], "start": 1755907200, }, "type": "eventsSegmentation", }

JSON Response Structure (when isCsvResponse is false):

  • Parse using the following structure:
    • timeSeries: Array of arrays, each containing data points for a given time period with a "value" property
    • overallSeries: Array of arrays, each containing the overall data point across the entire range under the "value" property.

IMPORTANT — interpretation depends on the metric:

  • For "uniques" (count): this is the TRUE deduped unique count over the full date range. Use this.
  • For "pct_dau" (ratio): this is a long-range aggregate ratio (deduped numerator

over range / deduped denominator over range). It does NOT match the per-interval values the chart UI plots and is typically much smaller. Do NOT report it as the headline number — use "timeSeriesAverage" instead.

  • timeSeriesAverage: Present only for "pct_dau". Array of arrays, one per series, each

containing a single {value} that is the mean of "timeSeries" values for that series. Use this as the headline ratio when the chart spans multiple intervals — it matches what users see in the chart UI.

  • seriesMetadata: Array of objects containing metadata for each series
  • xValuesForTimeSeries: Array of strings representing the x-axis values (dates) for the time series
  • Use the dataset definition to be able to parse referenced events, properties, and segments.

Example below is a JSON response is for the same query as the CSV example above. { "timeSeries": [[{"value": 614}, {"value": 1769}, {"value": 4132}]], "overallSeries": [[{"value": 5642}]], "seriesMetadata": [{"segmentIndex": 0, "formulaIndex": 0, "formula": "UNIQUES(A)"}], "xValuesForTimeSeries": ["2025-08-23T00:00:00", "2025-08-24T00:00:00", "2025-08-25T00:00:00"] } Note: 614+1769+4132=6515, but overallSeries shows 5642. This is because unique users overlap across days. For "uniques", always use overallSeries for the total.

Example below is a "pct_dau" query over 3 weeks (a ratio metric): { "timeSeries": [[{"value": 0.1402}, {"value": 0.1421}, {"value": 0.1444}]], "overallSeries": [[{"value": 0.0712}]], "timeSeriesAverage": [[{"value": 0.1422}]], "seriesMetadata": [{"segmentIndex": 0, "formulaIndex": 0, "formula": "PCT_DAU(A)"}], "xValuesForTimeSeries": ["2026-04-06T00:00:00", "2026-04-13T00:00:00", "2026-04-20T00:00:00"] } Note: the chart UI shows ~14% per week. timeSeriesAverage (14.22%) matches that. overallSeries (7.12%) is the deduped 3-week aggregate ratio and would HALVE the reported value if used as the headline — never report it as "the number" for "pct_dau". Always use timeSeriesAverage for "pct_dau".

Event Segmentation with Insights (anomaly detection / confidence intervals):

  • When params.insights.isOn is true, Event Segmentation charts queried via query_charts or query_dataset

return BOTH chartConfig (Highcharts) AND jsonResponse with joinable band data.

  • jsonResponse.seriesIntervals maps stringified seriesMetadata keys to { low, high, yhat } arrays

(parallel to xValuesForTimeSeries). Use seriesMetadata + xValuesForTimeSeries to join bands to series.

  • Metric Explorer charts with Insights return seriesIntervals inside each data[] entry instead.
Parameters (2 required, 9 optional)
Required
metricIdstring

ID of the metric to query

projectIdstring

Project ID to query metric data from

Optional
countGroupstring

What to count: "User" for users, "Event" for events

Options:UserEvent
Default: User
excludeIncompleteDatapointsboolean

Optional flag to exclude incomplete data points from results. When true, the current time interval will be excluded from the results to avoid incomplete data points. Defaults to false.

Default: False
filtersarray

Filters to apply to the metric (optional)

Default: []
groupByarray

Group by properties (optional)

Default: []
groupByLimitinteger

Maximum number of group by values to return (1-1000, defaults to 10)

Default: 10
intervalnumber

Time interval (optional, defaults to 1)

Default: 1
rangestring

Time range like "Last 30 Days", "Last 7 Days", etc.

Default: Last 30 Days
rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

segmentsarray

User segments (optional)

Default: [{'conditions': []}]

Saving chart edits

save_chart_edits
Full Description

Save temporary chart edits as permanent charts

WHEN TO USE:

  • You have chart edit IDs from query_dataset and want to save them as permanent charts
  • You need to add charts to dashboards or notebooks (which require saved chart IDs)

WORKFLOW: 1. Use query_dataset to create ad-hoc analyses (returns editId) 2. Use save_chart_edits to convert editIds into permanent chartIds 3. Use chartIds in create_dashboard or create_notebook

IMPORTANT:

  • All AI-generated charts are saved as unpublished in your personal space
  • Charts require human review before publishing to shared spaces
  • Use bulk saving to reduce tool calls when creating multiple charts
Parameters (1 required, 1 optional)
Required
chartsarray

Array of chart edits to save with name and description for each

Optional
rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Searching for content

search
Full Description

Search for dashboards, charts, notebooks, experiments, and other content in Amplitude.

INSTRUCTIONS:

  • Use this as your primary tool to discover and explore available analytics content before diving into specific analyses.
  • If you are not sure what to search for, use the default search query.
  • Do not specify appIds/projectIds in the input unless the user explicitly asks to search within a specific app/project.
  • When searching for taxonomy entities like events, properties, etc. use higher limits (e.g. 100-200) to get more results as there are more important entities to search through.
  • When searching for events, use the get_properties tool (propertyType="event") to get event properties on an individual event.
  • To search Amplitude's official product documentation (SDK setup guides, API reference, help articles), include 'AMPLITUDE_DOCS' in entityTypes. This searches the public docs corpus — NOT your org's content — and returns doc pages with browsable URLs. Pair it with a natural-language query (e.g. "how to track revenue in the browser SDK").

DO NOT USE FOR:

  • AI agent results, agent analyses, or agent runs → use 'get_agent_results' instead
  • Getting full dashboard definitions with chart details → use 'get_dashboard' with the IDs from search results
  • Running queries or analysis → use 'query_dataset' or 'query_charts'

ADDITIONAL INFORMATION:

  • Results are personalized to the user you are making the request on behalf of.
  • Results do not include the full object definition. You will need to use other tools to get the full object definition when needed.
  • Best practice is to query for a single entity type, unless the user's request is open ended.
  • The response includes an isOfficial flag in contentMeta to identify content that has been marked as official by the organization.
Parameters (0 required, 18 optional)
Optional
appIdsarray

Array of app/project IDs to search within. If not provided, search will be for all apps the user has access to.

entityTypesarray

Types of entities to search for. Will be converted to camelCase internally for entityRef field access. 'AMPLITUDE_DOCS' is special: it searches Amplitude's public product documentation (via the docs search endpoint) instead of your org's content, and can be combined with org entity types in a single call.

Default: ['CHART', 'DASHBOARD', 'NOTEBOOK', 'EXPERIMENT']
excludeOwnersarray

Filter out content by specific owners (array of login IDs)

includeArchivedboolean

Whether to include archived entities

Default: False
includeGeneratedboolean

Whether to include AI-generated entites

Default: False
isOfficialboolean

Filter by official content only

lastModifiedAfternumber

Filter to entities modified after this epoch timestamp (in seconds). Useful for finding recently active content, e.g. charts modified in the last 7 days.

lastViewedBeforenumber

Filter to entities last viewed before this epoch timestamp (in seconds). Useful for finding stale or unused content.

limitnumber

Maximum number of results to return. Start with narrow searches and increase the limit if needed.

Default: 50
limitPerQuerynumber

Maximum number of results to return per query. Results from multiple queries are deduplicated before being returned. We recommend starting with the default of 50, even if you are using multiple queries.

Default: 50
ownersarray

Filter by owners (array of login IDs)

queriesarray

Array of search query strings. If not provided or empty, search will return results based on relevance to the user. Multiple queries are executed in parallel and results are deduplicated using Reciprocal Rank Fusion (RRF).

Default: []
querystring

Search query string. If the search is not provided then the results will be based on relevance to the user.

rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

search_goalstring

What you are looking for and what you plan to do with the results. Example: "Find the main retention dashboard to answer a question about churn."

semanticSearchboolean

Whether to use semantic search in addition to keyword search

Default: False
sortDirectionstring

Sort direction for results

Options:ASCDESC
Default: DESC
sortOrderstring

Sort order for results

Options:relevancelastModifiedviewCountname

Searching entity relationships

search_entity_relationships
Full Description

Find relationships for any Amplitude entity - shows what charts, experiments, cohorts, and other entities are connected to or use the specified source entity.

WHEN TO USE:

  • You want to understand dependencies and relationships for a specific Amplitude entity.
  • You need to see what content references a specific entity before making changes.
  • You're analyzing the impact of modifying or archiving an entity.
  • You want to find all entities that use a particular event, property, cohort, chart, etc.

INSTRUCTIONS:

  • Provide the app ID and specify a source entity with its type and name.
  • The tool searches for relationships to a fixed set of target entity types (metrics, segments, cohorts, connections, predictions, experiments, flags, custom events, derived properties, lookup properties).
  • Results are split into separate searches for charts vs other entities to prevent charts from crowding out other entity types.
  • The response shows all entities that reference or are related to the specified source entity, organized by entity type.
  • Use this to understand entity adoption and potential impact of changes.

SUPPORTED ENTITY TYPES:

  • event
  • custom_event
  • event_property
  • user_property
  • derived_property
  • lookup_property
  • channel_classifier
  • cohort
  • prediction
  • metric

RESPONSE FORMAT:

  • results: Combined list of all related entities
  • resultsByType: Results organized by entity type (charts, cohorts, metrics, etc.)
  • counts: Count of results for each entity type
  • totalHits: Total number of matching entities across both searches
  • chartHits/nonChartHits: Separate hit counts for chart vs non-chart searches

EXAMPLES:

  • Find all charts using event "Login" in app 187520
  • Analyze which experiments are targeting a specific cohort id in an app
  • Understand what content uses a particular custom event before archiving it
  • Find all entities that reference a specific event_property
Parameters (2 required, 2 optional)
Required
appIdstring

App ID containing the entity

sourceEntityobject

Source entity to find relationships for

Optional
limitnumber

Maximum number of results to return per entity type

Default: 50
rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Updating chart alert subscription

subscribe_chart_alert
Full Description

Subscribe or unsubscribe the current user or a channel to chart alerts for a monitor.

WHEN TO USE:

  • The user wants to subscribe or unsubscribe from chart alerts.
  • Use get_chart_monitor first if you need the monitorId or want to inspect existing subscribers.

INSTRUCTIONS:

  • Provide monitorId, action, and deliveryMethod.
  • For email delivery, this tool only manages the current user's own email subscription.
  • For Slack or Teams delivery, provide deliveryChannel.
  • deliveryWorkspaceId is optional workspace context for Slack or Teams channels when needed.
  • If adding the first subscriber to a disabled monitor, this tool re-enables the monitor automatically.
  • If removing the last subscriber, this tool disables the monitor automatically.

EXAMPLES:

  • {"monitorId":"mon_123","action":"subscribe","deliveryMethod":"email"}
  • {"monitorId":"mon_123","action":"subscribe","deliveryMethod":"slack","deliveryChannel":"C024BE91L"}
  • {"monitorId":"mon_123","action":"unsubscribe","deliveryMethod":"teams","deliveryChannel":"19:channel-id@thread.tacv2","deliveryWorkspaceId":"tenant-id:team-id"}

NOTES:

  • Do not use this to edit thresholds or other monitor settings. Use update_chart_monitor for that.
Parameters (3 required, 3 optional)
Required
actionstring

Whether to add or remove a subscription.

Options:subscribeunsubscribe
deliveryMethodstring

Delivery method: email, slack, or teams.

Options:emailslackteams
monitorIdstring

Monitor ID to update subscriptions for.

Optional
deliveryChannelstring

Slack channel ID or Teams conversation ID. Leave empty for email subscriptions.

deliveryWorkspaceIdstring

Optional workspace or tenant context for Slack or Teams channel subscriptions.

rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Updating chart monitor

update_chart_monitor
Full Description

Enable or disable an existing chart monitor.

WHEN TO USE:

  • The user wants to turn a chart alert monitor on or off.
  • Use get_chart_monitor first if you need to inspect the current monitor state.

INSTRUCTIONS:

  • Provide monitorId.
  • enabled=true turns the monitor on.
  • enabled=false turns the monitor off.

EXAMPLES:

  • {"monitorId":"mon_123","enabled":true}
  • {"monitorId":"mon_123","enabled":false}

NOTES:

  • This tool only changes the enabled state.
  • Use subscribe_chart_alert to manage recipients and get_chart_monitor to inspect thresholds and subscribers.
Parameters (2 required, 1 optional)
Required
enabledboolean

Whether the monitor should be enabled.

monitorIdstring

Monitor ID to enable or disable.

Optional
rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

Using Amplitude metrics

use_amplitude_metrics
Full Description

Unified entry point for metric definitions, goals, and goal alerts in a project. Replaces get_metrics, create_metric, update_metric, delete_metric, get_metric_goals, the five goal write tools, and the four goal-alert CRUD tools.

WHEN TO USE:

  • Anything about defining metrics, setting targets on metrics, listing goals/pacing, or configuring goal alerts.
  • NOT for querying metric *values* over time — use query_metric or query_dataset instead.

INSTRUCTIONS:

  • Select the operation with action.
  • Metric defs: resolve metricIds with search first; create_metric needs projectId, name, and metricType plus type-specific fields (same rules as the legacy create_metric tool).
  • Goals: use get_goals to discover goalIds before update / archive / restore / delete / alert actions.
  • update_metric may be two-step when changing a metric definition with dependents; delete_metric and delete_goal may also be two-step when dependents exist. For any of these operations, first call without confirmed, show the returned dependency payload to the user, then retry with confirmed: true only after user confirmation.
  • get_goals accepts either metricId OR projectId, not both.

DO NOT USE FOR:

  • Chart or experiment metric *values* → query_metric / query_dataset.
  • Experiments and flags → get_experiments / get_flags / create_experiment.
Parameters (1 required, 36 optional)
Required
actionstring

What to do — metric defs: 'get_metrics', 'create_metric', 'update_metric', 'delete_metric'; goals: 'get_goals', 'create_goal', 'update_goal', 'archive_goal', 'restore_goal', 'delete_goal'; alerts: 'get_goal_alert', 'create_goal_alert', 'update_goal_alert', 'delete_goal_alert'.

Options:get_metricscreate_metricupdate_metricdelete_metricget_goalscreate_goalupdate_goalarchive_goalrestore_goaldelete_goalget_goal_alertcreate_goal_alertupdate_goal_alertdelete_goal_alert
Optional
aggregationPropertyobject

Property to aggregate for PROPSUM and PROPAVG metrics. Specifies which numeric event/user/group property to compute the aggregation on.

alertDeliveryobject

Full replacement of alert delivery channels. Omit to preserve delivery, pass null to clear all channels, or pass an object containing every desired channel.

comparatorstring

Success direction: "gte" = metric should be at or above targetValue, "lte" = at or below.

Options:gtelte
confirmedboolean

update_metric when changing a metric definition with dependents / delete_metric / delete_goal: set true only after the user confirms.

conversionSecondsinteger

Maximum time window to complete the funnel, in seconds (e.g. 86400 = 1 day, 604800 = 7 days).

countGroupstring

What to count. "User" for unique users (default), "Event" for event totals.

descriptionstring

Description of what this metric measures

dipThresholdPctinteger

Metric dip percentage that triggers an alert. Required when shouldAlertOnDip is true.

endsAtinteger

End of the goal timeframe, as a Unix timestamp in seconds. Must be after startsAt.

eventobject

Event definition for single-event metrics (UNIQUES, TOTALS, PROPSUM, PROPAVG).

eventsarray

Array of event definitions for FORMULA metrics. Each event is referenced by letter (A, B, C...) in the formula.

formulastring

Formula string for FORMULA metrics. Reference events by letter: A, B, C... Available functions: UNIQUES(A), TOTALS(A), PROPSUM(A), PROPAVG(A), PROPMIN(A), PROPMAX(A), PROPCOUNT(A), PROPCOUNTAVG(A), REVENUETOTAL(A). Example: "TOTALS(B)/TOTALS(A)"

funnelComputePropertyobject

CONVERSION only: numeric property on the last funnel step to aggregate (e.g. revenue). Use with funnelComputePropFunction.

funnelComputePropFunctionstring

CONVERSION only: how to aggregate funnelComputeProperty on the last step — "SUM" (default when property set) or "AVG".

Options:SUMAVG
funnelConstantPropertiesarray

CONVERSION only: properties held constant across funnel steps (same as funnel "holding constant" in the UI).

funnelEventsarray

Ordered funnel steps for CONVERSION metrics (minimum 2 events). Each step is an event with optional filters. Not used for FORMULA — use "events" for formula metrics.

funnelModestring

How funnel steps relate: "ordered" (this order), "unordered" (any order), "sequential" (exact order).

Options:orderedunorderedsequential
funnelPathsToCollectstring

CONVERSION only: "UNIQUES" measures unique users who complete the funnel; "TOTALS" measures total conversion path counts.

Options:UNIQUESTOTALS
goalIdstring

Goal-scoped actions and goal alert actions.

includeArchivedboolean

get_goals: include archived goals when metricId is set.

isExperimentMetricboolean

Set to true when this metric is intended for use in an experiment. Enables experiment-specific formula validation rules.

isOfficialboolean

Whether to mark this metric as official. Requires elevated permissions.

metricIdstring

update_metric / delete_metric: target metric. get_goals: list goals on one metric. create_goal: metric to attach the goal to.

metricIdsarray

get_metrics: metric IDs to fetch (required for get_metrics).

metricTypestring

Type of metric. UNIQUES: unique users who performed the event. TOTALS: total event count. FORMULA: custom formula combining multiple events (supports PROPCOUNT, PROPMIN, PROPMAX, etc. as formula terms). PROPSUM: sum of a numeric property. PROPAVG: average of a numeric property. RETENTION: retention metrics. CONVERSION: funnel / multi-step conversion metrics.

Options:UNIQUESTOTALSFORMULAPROPSUMPROPAVGRETENTIONCONVERSION
namestring

Human-readable name for the metric

projectIdstring

create_metric / update_metric / delete_metric: project ID. get_goals: list all goals in project (mutually exclusive with metricId).

rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.

returnEventobject

Return event definition for RETENTION metrics.

returnOninteger

Number of days to return on for RETENTION metrics (1–30).

returnOnIntervalinteger

1 is for daily retention, 7 is for weekly retention, 30 is for monthly retention.

shouldAlertOnDipboolean

Send an alert when the metric dips by the configured threshold.

shouldAlertOnGoalReachedboolean

Send an alert when the goal target is reached.

startEventobject

Start event definition for RETENTION metrics.

startsAtinteger

Start of the goal timeframe, as a Unix timestamp in seconds.

targetValuenumber

The numeric value the metric should hit over the timeframe.

Verifying chart definition

verify_chart_definition
Full Description

Validate and auto-correct a chart definition before passing it to query_dataset.

WHEN TO USE:

  • After constructing a chart definition, to verify it is valid before querying.
  • When you want to catch and auto-fix common mistakes (wrong enum values, wrong field names).
  • The tool will auto-coerce known LLM mistakes and return the corrected definition.
  • Validates event types and properties exist in the project taxonomy.

WHAT IT DOES:

  • Validates required fields (type, app, params) and chart-type-specific parameters.
  • Auto-coerces known mistakes: wrong funnel mode names (this_order → ordered), conversionWindow objects → conversionSeconds, ISO date strings → Unix timestamps, string events → {event_type, filters, group_by}.
  • Validates that referenced event types exist in the project.
  • Validates that referenced properties exist on their event types.
  • Validates user and derived properties in segments/group_by: hidden properties are rejected, and derived formula properties must use prop_type/group_by type derivedV2 (not user or legacy derived).
  • Returns the corrected definition ready to pass to query_dataset.

SUPPORTED CHART TYPES: eventsSegmentation, funnels, metricExplorer, retention, revenueLtv, sessions, stickiness Unsupported types pass through with a warning (not an error) — you can still send them to query_dataset.

Parameters (1 required, 2 optional)
Required
definitionobject

The chart definition object to validate. Can be a JSON object or a JSON string.

Optional
correction_contextstring

What went wrong in the prior attempt that led to calling this tool. Example: "query_dataset returned an error about invalid event type."

rationalestring

Brief explanation of why you are calling this tool and what you expect to learn from the result.