io.github.pavellunev/appmetrica-mcp
NPM · APPMETRICA-MCP
AppMetrica (Yandex) analytics: reports, funnels, segments, dashboards, logs export, push
Available components
Last scanned (10 hours ago)
Scores higher than 58% of npm servers
Category Data and Analytics
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 34 of 107 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 19 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability82
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 7336 tokens (~163/item across 45 items; 45 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management67
- Stability observed for 20 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_segment" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 45 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 23 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.
- 21 Oct 26 0
- Security disclosure: fail → unverified ▼ functional
- 20 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.
- 19 Oct 26 0
- Security disclosure: unverified → fail ▼ functional
- 18 Oct 26 +1
- Security disclosure: fail → unverified ▼ functional
- 16 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.
- 14 Oct 26 +5
- Stability: unverified → 0.37 ▲ functional
- 12 Oct 26 0
- Security disclosure: unverified → fail ▼ functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 23 Oct 2026 · Analysed npm/appmetrica-mcp@0.3.1
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 107 packages
| Packages resolved | 107 |
|---|---|
| Stale | 34 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
audit_events ~303
Audit the client-event instrumentation of an application (read-only): compares event names registered in AppMetrica (list_events) with event volumes of a period (ym:ce:allEvents / ym:ce:devices by ym:ce:eventLabel). Each event is classified as active (has data in the period), zero_volume (registered but no data in the period) or missing (in expected_events but neither registered nor active). With expected_events (e.g. names found in the app's source code) every event carries expected=true/false, so active events with expected=false are the unexpected ones. System events (appmetrica_*, com.yandex.*) are listed separately in system_events and excluded from the counts. findings are plain-language heuristics: missing / zero-volume / low-volume (<=5 devices) events, mixed snake_case and CamelCase naming, and no event resembling first launch / onboarding, registration or purchase. Two requests: /v1/traffic/sources/events and /stat/v1/data.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| date_from | string | yes | Start date in YYYY-MM-DD format |
| date_to | string | yes | End date in YYYY-MM-DD format |
| expected_events | array | – | Event names the app is expected to report (e.g. collected from source code) |
| limit | number | – | Max events requested from the report, by volume (default 500) |
No output schema declared.
No examples provided.
create_funnel ~301
Create a saved funnel in AppMetrica (visible in the web "Funnels" report and in list_funnels). Requires APPMETRICA_ALLOW_WRITE=true. Verify the steps with get_funnel_report(steps=...) first. Steps must be representable in the web funnel editor: client events (several names = any of them; at most ONE event_params entry per step, applied to every event of the step) or kind "install". Other step kinds (crash, purchase, session_start, ...) are rejected — use get_funnel_report for those ad-hoc. Options: foreground_only (default true), single_session (default false), events_between_steps (default true; false is saved as a "next"-joined pattern without funnel_restriction, which the API does not store — unverified, prefer the default). Returns {id, name, steps, pattern, next}.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| comment | string | – | Funnel comment |
| events_between_steps | boolean | – | Allow other events between steps (default true) |
| foreground_only | boolean | – | Count only foreground sessions (default true) |
| name | string | yes | Funnel name |
| single_session | boolean | – | All steps within one session (default false) |
| steps | array | yes | Funnel steps, e.g. [{"events":["app_open"]},{"events":["purchase"]}] (event names from list_events) |
No output schema declared.
No examples provided.
create_push_campaign ~89
Create a new push notification campaign in AppMetrica. Requires APPMETRICA_ALLOW_WRITE=true to be set.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| audience | object | – | Audience targeting options |
| message | object | yes | Push notification message content |
| name | string | yes | Campaign name |
| schedule | object | – | Schedule options for the campaign |
No output schema declared.
No examples provided.
create_segment ~195
Create a saved segment in AppMetrica (shown in the web UI; pass its segment_id to get_report / get_report_bytime / get_funnel_report / get_dashboard). Requires APPMETRICA_ALLOW_WRITE=true. Condition: events — users who did ALL the listed client events (expression "exists ym:ce:device with (eventLabel=='X')" AND-joined; editable in the web segment editor). The API derives the expression from the editor filter JSON, so other condition types (device, geo, version, profile…) must be created in the web UI; for ad-hoc filtering use the filters parameter of the report tools instead. Returns {segment_id, name, expression, edit_access}.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| events | array | yes | Client event names; users who did all of them (list_events) |
| name | string | yes | Segment name |
No output schema declared.
No examples provided.
delete_funnel ~59
Delete a saved funnel from AppMetrica (irreversible). Requires APPMETRICA_ALLOW_WRITE=true.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| funnel_id | number | yes | Funnel ID from list_funnels |
No output schema declared.
No examples provided.
delete_segment ~67
Delete a saved segment from AppMetrica (irreversible; reports and dashboards using its segment_id will fail). Requires APPMETRICA_ALLOW_WRITE=true.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| segment_id | number | yes | Segment ID from list_segments |
No output schema declared.
No examples provided.
delete_workspace ~38
Delete a local workspace by name (local file operation only; nothing is changed in AppMetrica).
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Workspace name |
No output schema declared.
No examples provided.
export_crashes ~207
Export raw crash logs from AppMetrica for a given application and time range. Use this for per-crash-name breakdowns — get_report only exposes the total ym:cr:crashes count. Same async/rate-limit behaviour as export_events: the wrapper re-polls 202 (default ~150s budget), honours Retry-After on 429, and backs off. Run sequentially and avoid rapid retries — wide ranges may need a manual retry after a few minutes.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| date_from | string | yes | Start date YYYY-MM-DD |
| date_to | string | yes | End date YYYY-MM-DD |
| fields | string | – | Comma-separated fields to return. Defaults: crash_name,crash_datetime,crash_receive_datetime,appmetrica_device_id,app_version_name,os_version,device_model,country_iso_code |
| limit | number | – | Maximum number of crash records to return |
No output schema declared.
No examples provided.
export_events ~362
Export raw event logs from AppMetrica Logs API. Revenue and in-app purchase data is stored in the event_json field as structured JSON. Default fields: event_name, event_datetime, event_json, appmetrica_device_id, app_version_name, os_version, device_model, country_iso_code, city. To get subscription/purchase data: filter by event_name (e.g. "subscription_purchase") and parse event_json field. Logs API is asynchronous — the first request usually returns "data not ready" (HTTP 202) and the wrapper re-polls the same query (default budget ~150s, tunable via APPMETRICA_MAX_WAIT_MS). A busy or wide query may still need a manual retry after a few minutes; re-running the identical query resumes the same server-side export. Start with 1-day windows; multi-day exports take noticeably longer to materialise. Run export_events strictly sequentially and avoid rapid retries — the Logs API has a low export-request quota; on HTTP 429 the wrapper honours Retry-After and backs off, but exhausting the quota also blocks the AppMetrica web UI for a few minutes.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| date_from | string | yes | Start date YYYY-MM-DD |
| date_to | string | yes | End date YYYY-MM-DD |
| event_name | string | – | Filter by specific event name (e.g. subscription_purchase) |
| fields | string | – | Comma-separated fields to return. Defaults: event_name,event_datetime,event_json,appmetrica_device_id,app_version_name,os_version,device_model,country_iso_code,city |
| limit | number | – | Maximum number of events to return (default 1000) |
No output schema declared.
No examples provided.
export_installations ~179
Export raw installation logs from AppMetrica for a given application and time range. Same async/rate-limit behaviour as export_events: the wrapper re-polls 202 (default ~150s budget), honours Retry-After on 429, and backs off. Run sequentially and avoid rapid retries — wide ranges may need a manual retry after a few minutes.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| date_from | string | yes | Start date YYYY-MM-DD |
| date_to | string | yes | End date YYYY-MM-DD |
| fields | string | – | Comma-separated fields to return. Defaults: installation_id,install_datetime,appmetrica_device_id,app_version_name,os_version,device_model,country_iso_code,city |
| limit | number | – | Maximum number of installation records to return |
No output schema declared.
No examples provided.
export_logs ~267
Export raw rows from any Logs API table: clicks, installations, postbacks, events, ecommerce_events, profiles_v2, revenue_events, ad_revenue_events, deeplinks, crashes, errors, push_tokens, sessions_starts. Field names per table come from the official AppMetrica docs; unknown fields are rejected with the list of allowed ones. Default fields = all fields of the table. date_from/date_to (YYYY-MM-DD) are required for every table except push_tokens, which takes no dates. Same async/rate-limit behaviour as export_events: the wrapper re-polls 202 and honours Retry-After on 429. Run sequentially, start with 1-day windows and select only the fields you need. If exports keep queuing, check get_logs_api_status.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| date_from | string | – | Start date YYYY-MM-DD (not used for push_tokens) |
| date_to | string | – | End date YYYY-MM-DD (not used for push_tokens) |
| fields | array | – | Fields to return (default: all fields of the table) |
| limit | number | – | Maximum number of rows to return (default 1000) |
| table | string | yes | Logs API table |
No output schema declared.
No examples provided.
get_application ~37
Get detailed information about a specific AppMetrica application by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
No output schema declared.
No examples provided.
get_dashboard ~416
Dashboard: a set of widgets computed from the public Reporting API, similar to the AppMetrica web "Обзор". The web workspaces/dashboards themselves are NOT accessible via the public API (internal cookie-auth endpoint), so dashboards are composed from presets or from a locally saved workspace (save_workspace). Presets: audience, installs, installs_by_country, engagement, app_versions, events, crashes, errors, anr, revenue, ad_revenue, ad_revenue_by_type, conversions, traffic, push, funnels, retention. Default set: audience, installs, engagement, crashes, events. See list_dashboard_presets for the metrics of each preset. Pass either widgets (preset names) or workspace (name of a locally saved workspace, which defines the widgets and may define a default app_id) — not both. With neither, the default set is used. Each widget costs one Reporting API request, run sequentially (quota: 30 requests/second, 5000/day); the 'funnels' preset costs one request per saved funnel. A failing widget returns {name, error} and does not fail the whole dashboard. Namespaces are never mixed within a request. group (day|week|month) turns widgets without breakdown into time series (no period-wide total then). segment_id (list_segments) is ANDed with each widget's own filters/segment. currency (default USD) applies to revenue widgets.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | – | AppMetrica application ID (optional only when the workspace defines app_id) |
| currency | string | – | Currency for revenue widgets (default USD) |
| date_from | string | yes | Start date in YYYY-MM-DD format |
| date_to | string | yes | End date in YYYY-MM-DD format |
| group | string | – | Time bucket for widgets without breakdown |
| segment_id | number | – | Saved segment ID applied to all widgets |
| widgets | array | – | Preset widget names |
| workspace | string | – | Name of a saved local workspace |
No output schema declared.
No examples provided.
get_drilldown ~140
Retrieve drilldown statistics for a specific parent dimension value in AppMetrica. Useful for hierarchical data exploration.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| date_from | string | yes | Start date in YYYY-MM-DD format |
| date_to | string | yes | End date in YYYY-MM-DD format |
| dimensions | array | – | Dimension keys for the drilldown levels |
| filters | string | – | Segmentation filter expression |
| limit | number | – | Maximum number of rows to return |
| metrics | array | yes | Metric keys to retrieve |
| parent_id | string | yes | Parent dimension value ID for drilldown |
No output schema declared.
No examples provided.
get_funnel_report ~499
Funnel report — the web "Funnels" report via the Reporting API: devices reaching each step in sequence, with absolute (% of step 1) and relative (% of previous step) conversion. Provide exactly one of: funnel_id (saved funnel from list_funnels — its pattern is used verbatim and the options below are ignored) or steps (ad-hoc funnel, e.g. [{"events":["app_open"]},{"events":["purchase"]}]; event names from list_events). Ad-hoc options: foreground_only (default true, count only foreground sessions), single_session (default false; true = all steps within one session), events_between_steps (default true; false = steps must follow each other directly). window_seconds limits the time from first to last step. Under the hood: ym:uf:devicesInStepN (ym:sf: for single-session) with funnel_pattern / funnel_restriction params, one request. dimensions break the funnel down (full keys or bare suffixes such as 'date', 'appVersion', 'operatingSystemInfo', 'regionCountry'); group (day|week|month) adds a time series via one extra /bytime request. filters / segment_id restrict the audience (segment expression is ANDed with filters).
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| date_from | string | yes | Start date in YYYY-MM-DD format |
| date_to | string | yes | End date in YYYY-MM-DD format |
| dimensions | array | – | Breakdown dimensions, full keys or bare suffixes (prefixed with ym:uf:/ym:sf:) |
| events_between_steps | boolean | – | Ad-hoc: allow other events between steps (default true) |
| filters | string | – | Segmentation filter expression |
| foreground_only | boolean | – | Ad-hoc: count only foreground sessions (default true) |
| funnel_id | number | – | Saved funnel ID (list_funnels) |
| group | string | – | Add a per-interval series (extra bytime request) |
| limit | number | – | Max dimension rows (default 50) |
| segment_id | number | – | Saved segment ID (list_segments); ANDed with filters |
| single_session | boolean | – | Ad-hoc: all steps within one session (default false) |
| steps | array | – | Ad-hoc funnel steps |
| window_seconds | integer | – | Max seconds from first to last step |
No output schema declared.
No examples provided.
get_logs_api_status ~56
Check whether the Logs API is enabled for the account ("enabled" / "disabled"). When it is disabled, export_events / export_logs keep returning 202 (queued) or 429 — this is how to find out why.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_push_stats ~52
Get summary statistics for a specific push notification campaign in AppMetrica.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| campaign_id | number | yes | Push campaign (group) ID |
No output schema declared.
No examples provided.
get_report ~527
Retrieve aggregated statistics from AppMetrica (/stat/v1/data). Call list_metrics first (overview) or list_metrics with search/namespace to find exact keys. Quick reference: ym:u:* users · ym:s:* sessions · ym:ce:* client events · ym:cr2:* crashes · ym:i:* installs · ym:r2:* revenue · ym:pc:* push. Revenue metrics carry a literal <currency> placeholder (e.g. ym:r2:revenue<currency>) — pass currency (RUB|USD|EUR|YND) alongside. Funnel step metrics (ym:uf:*) need a funnel pattern — use get_funnel_report instead. Keep one namespace prefix per call. Known non-existent keys (4002): ym:u:sessions, ym:u:crashes, ym:u:revenue, ym:r2:revenue without <currency>. Filters use the segmentation syntax, e.g. "ym:u:operatingSystemInfo=='iOS'"; segment_id (from list_segments) ANDs a saved segment expression into filters. A sporadic 400 "Запрос слишком сложный" means: retry, narrow the date range, or pass accuracy (e.g. 0.1, sampled result).
| Name | Type | Req | Description |
|---|---|---|---|
| accuracy | string | – | Sampling accuracy, e.g. '0.1' (faster, sampled result) |
| app_id | number | yes | AppMetrica application ID |
| currency | string | – | Currency for <currency>-parametrised revenue metrics |
| date_from | string | yes | Start date in YYYY-MM-DD format |
| date_to | string | yes | End date in YYYY-MM-DD format |
| dimensions | array | – | Dimension keys for breakdown, e.g. ['ym:u:date', 'ym:u:appVersion'] |
| filters | string | – | Segmentation filter expression, e.g. "ym:u:operatingSystemInfo=='iOS'" |
| include_undefined | boolean | – | Include rows with undefined dimension values |
| lang | string | – | Language of dimension names |
| limit | number | – | Maximum number of rows to return |
| metrics | array | yes | Metric keys to retrieve, e.g. ['ym:u:users', 'ym:s:sessions'] |
| offset | number | – | Row offset for paging |
| segment_id | number | – | Saved segment ID (see list_segments); its expression is ANDed with filters |
| sort | string | – | Sort by a metric/dimension: '-ym:u:users' descending, 'ym:u:users' ascending |
No output schema declared.
No examples provided.
get_report_bytime ~350
Retrieve AppMetrica statistics as a time series (/stat/v1/data/bytime): the same metrics/dimensions as get_report, split by day/week/month/hour or a single interval (group=all). Response: data[i].metrics[m][t] arrays aligned with time_intervals, plus totals. IMPORTANT: use ONE namespace prefix per call (all metrics and dimensions ym:u:*, or all ym:s:*, ...). Mixing prefixes fails with error 4011 — issue one call per namespace. Revenue metrics with a <currency> placeholder need the currency param. segment_id (from list_segments) is ANDed with filters. A sporadic 400 "Запрос слишком сложный" means: retry, narrow the date range, or pass accuracy (e.g. 0.1).
| Name | Type | Req | Description |
|---|---|---|---|
| accuracy | string | – | Sampling accuracy, e.g. '0.1' |
| app_id | number | yes | AppMetrica application ID |
| currency | string | – | Currency for <currency>-parametrised revenue metrics |
| date_from | string | yes | Start date in YYYY-MM-DD format |
| date_to | string | yes | End date in YYYY-MM-DD format |
| dimensions | array | – | Dimension keys (same namespace as metrics) |
| filters | string | – | Segmentation filter expression |
| group | string | – | Time bucket size (default day) |
| limit | number | – | Maximum number of dimension rows |
| metrics | array | yes | Metric keys (single namespace), e.g. ['ym:u:users', 'ym:u:newUsers'] |
| segment_id | number | – | Saved segment ID (see list_segments); its expression is ANDed with filters |
No output schema declared.
No examples provided.
get_segment ~67
Get a saved segment of an AppMetrica application with all fields (segment_id, api_key, name, params, expression, owner, edit_access).
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| segment_id | number | yes | Segment ID from list_segments |
No output schema declared.
No examples provided.
get_workspace ~28
Get a locally saved workspace with its full widget specs.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Workspace name |
No output schema declared.
No examples provided.
list_applications ~34
List all AppMetrica applications available to the authenticated user. Returns application IDs, names, platforms, and creation dates.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_conversions ~68
List conversions (attributed-event definitions) configured for an AppMetrica application: id, name, event_type, attribution_rule, status, mandatory, etc. Conversion metrics are in the ym:ae2:* namespace.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
No output schema declared.
No examples provided.
list_dashboard_presets ~47
List the preset dashboard widgets usable in get_dashboard / save_workspace: name, title, namespace, metrics, breakdown dimensions, limit, whether a currency is needed, and the default set.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_events ~58
List the client event names reported by an AppMetrica application (Management API "events list"). Use these names as steps in get_funnel_report or as eventLabel filters.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
No output schema declared.
No examples provided.
list_funnels ~85
List saved funnels of an AppMetrica application (funnel reports from the web UI): id, name, comment, decoded steps (title, events, kind), single_session, events_between_steps, grouping and the raw API pattern. Pass funnel_id to get_funnel_report to compute a saved funnel.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
No output schema declared.
No examples provided.
list_metrics ~223
Catalogue of AppMetrica Reporting API metric and dimension keys, built from the official docs (scripts/update-catalog.mjs): 197 metrics, 188 dimensions. Without search/namespace returns a compact overview: namespaces table, keys verified live, known non-existent keys (traps) and recipes for analytics that need a special tool. With search (case-insensitive substring over key/name/description) and/or namespace (e.g. 'ym:u:' or 'u') returns matching entries, truncated to limit with a total count. Metrics are listed with full keys (some contain placeholders like <currency>); dimensions are listed by suffix plus the namespaces where they exist (key = namespace + suffix, e.g. ym:u: + appVersion).
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | What to list (default all) |
| limit | number | – | Max entries per kind (default 50) |
| namespace | string | – | Namespace filter, e.g. 'ym:u:' or 'u' |
| search | string | – | Case-insensitive substring over key/name/description |
No output schema declared.
No examples provided.
list_push_campaigns ~64
List push notification campaigns (groups) for an AppMetrica application. Optionally filter by campaign status.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| status | string | – | Filter campaigns by status: active, paused, or finished |
No output schema declared.
No examples provided.
list_segments ~86
List saved segments of an AppMetrica application (the segments from the web UI). Returns segment_id, name, expression and edit_access. Pass segment_id to get_report / get_report_bytime / get_funnel_report / get_dashboard to restrict the report to a segment (its expression is ANDed into filters).
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
No output schema declared.
No examples provided.
list_workspaces ~69
List locally saved workspaces (named widget sets) from /tmp/.config/appmetrica-mcp/workspaces.json (override with APPMETRICA_WORKSPACES_FILE). These are the MCP's own local workspaces — AppMetrica web workspaces are not exposed by the public API.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
save_workspace ~203
Create or update (upsert) a local workspace: a named set of dashboard widgets stored in /tmp/.config/appmetrica-mcp/workspaces.json. Local file operation only — nothing is written to AppMetrica, so it is not gated by APPMETRICA_ALLOW_WRITE. Each widget has a name and exactly one of: preset (audience, installs, installs_by_country, engagement, app_versions, events, crashes, errors, anr, revenue, ad_revenue, ad_revenue_by_type, conversions, traffic, push, funnels, retention), metrics (custom, single namespace; optional dimensions/filters/segment_id/limit) or funnel_id (saved funnel). Use it later via get_dashboard(workspace=name).
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | – | Default app_id for get_dashboard(workspace=...) |
| description | string | – | Free-text description |
| name | string | yes | Workspace name |
| widgets | array | yes | Widget specs |
No output schema declared.
No examples provided.
update_funnel ~208
Update a saved funnel in AppMetrica. Requires APPMETRICA_ALLOW_WRITE=true. Only name/comment given: the saved pattern is kept verbatim. If steps or any of foreground_only / single_session / events_between_steps is given, pattern and frontend_pattern are rebuilt from the existing steps (or the new steps) merged with the given options; steps the web editor cannot represent are rejected (see create_funnel). Returns {id, name, steps, pattern, next}.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| comment | string | – | New funnel comment |
| events_between_steps | boolean | – | Allow other events between steps |
| foreground_only | boolean | – | Count only foreground sessions |
| funnel_id | number | yes | Funnel ID from list_funnels |
| name | string | – | New funnel name |
| single_session | boolean | – | All steps within one session |
| steps | array | – | New funnel steps (replace all existing steps) |
No output schema declared.
No examples provided.
update_segment ~131
Update a saved segment in AppMetrica: fetches the segment, merges the given fields and saves it. Requires APPMETRICA_ALLOW_WRITE=true. Give name and/or events (new condition: users who did all listed client events). Omitted fields keep their saved values. Returns {segment_id, name, expression, edit_access}.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| events | array | – | New condition: users who did all these client events |
| name | string | – | New segment name |
| segment_id | number | yes | Segment ID from list_segments |
No output schema declared.
No examples provided.
web_add_header ~137
[Experimental web session] Add a section header row to an AppMetrica workspace. position is the 0-based index among the groups (default: append). Uses the unofficial AppMetrica web API through a headless Chrome session: run `npx appmetrica-mcp login` once to log in to Yandex. Requires APPMETRICA_ALLOW_WRITE=true.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| dashboard_id | string | yes | Dashboard ID from web_list_workspaces |
| position | integer | – | 0-based index among groups |
| title | string | yes | Header text |
No output schema declared.
No examples provided.
web_add_widgets ~186
[Experimental web session] Add one group (a row of widgets) to an existing AppMetrica workspace. A widget is exactly one of: preset (web preset id), funnel_id (saved funnel), or metrics (custom widget: namespace derived from the metric prefix, metric/dimension ids validated against the namespace). position is the 0-based index among the groups (default: append). Uses the unofficial AppMetrica web API through a headless Chrome session: run `npx appmetrica-mcp login` once to log in to Yandex. Requires APPMETRICA_ALLOW_WRITE=true.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| dashboard_id | string | yes | Dashboard ID from web_list_workspaces |
| position | integer | – | 0-based index among groups |
| widgets | array | yes | Widgets of the new row |
No output schema declared.
No examples provided.
web_create_workspace ~220
[Experimental web session] Create a workspace (dashboard) in AppMetrica itself in one call. groups is an ordered list of rows; a group is {header?: string, widgets?: WidgetInput[]} (header and widgets in one group become a header row followed by a widgets row). A widget is exactly one of: preset (web preset id), funnel_id (saved funnel), or metrics (custom widget: namespace derived from the metric prefix, metric/dimension ids validated against the namespace). Limits: 20 dashboards per app, 20 widgets and 40 groups per dashboard. Returns {dashboard_id, name, url, groups}. Uses the unofficial AppMetrica web API through a headless Chrome session: run `npx appmetrica-mcp login` once to log in to Yandex. Requires APPMETRICA_ALLOW_WRITE=true.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| groups | array | – | Initial groups (rows) of the workspace |
| name | string | yes | Workspace name |
No output schema declared.
No examples provided.
web_delete_workspace ~110
[Experimental web session] Delete a custom AppMetrica workspace. System dashboards (id like "<appId>/General") are refused. Uses the unofficial AppMetrica web API through a headless Chrome session: run `npx appmetrica-mcp login` once to log in to Yandex. Requires APPMETRICA_ALLOW_WRITE=true.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| dashboard_id | string | yes | Dashboard ID from web_list_workspaces |
No output schema declared.
No examples provided.
web_get_workspace ~118
[Experimental web session] Get one AppMetrica web workspace: groups with headers and widgets (dashboard_widget_id, widget_id, view kind, funnel_id), enriched with the widget name, namespace, metrics and dimensions. Uses the unofficial AppMetrica web API through a headless Chrome session: run `npx appmetrica-mcp login` once to log in to Yandex.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| dashboard_id | string | yes | Dashboard ID from web_list_workspaces |
No output schema declared.
No examples provided.
web_list_report_namespaces ~135
[Experimental web session] List report namespaces of the web constructor (id, name, Reporting API prefix, e.g. Audience = ym:u:). With namespace_id: the metrics and dimensions (id, title; first 200 each) valid for custom widgets of that namespace. Uses the unofficial AppMetrica web API through a headless Chrome session: run `npx appmetrica-mcp login` once to log in to Yandex.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| namespace_id | string | – | Namespace id, e.g. Audience, Revenue, Events |
No output schema declared.
No examples provided.
web_list_widget_presets ~120
[Experimental web session] List the web preset widgets usable in web_create_workspace / web_add_widgets (widget_id is the `preset` value): name, namespace, categories, metrics, dimensions, default view kind. Uses the unofficial AppMetrica web API through a headless Chrome session: run `npx appmetrica-mcp login` once to log in to Yandex.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| category | string | – | Only presets of this category, e.g. Product |
No output schema declared.
No examples provided.
web_list_workspaces ~121
[Experimental web session] List the app's AppMetrica web workspaces (dashboards): system ones (id "<appId>/General" = Overview, "<appId>/Audience", ...) and custom ones. Returns dashboard_id, name, is_system, preset_kind, number of groups and widgets. Uses the unofficial AppMetrica web API through a headless Chrome session: run `npx appmetrica-mcp login` once to log in to Yandex.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
No output schema declared.
No examples provided.
web_push_workspace ~350
[Experimental web session] Create an AppMetrica workspace from a LOCAL workspace (save_workspace / list_workspaces). Each local widget becomes a header row (its name) plus a row of web widgets. Local presets map to web presets where there is a clear counterpart (audience -> AudienceMulti, installs -> Installs, engagement -> UserTimeSpent + AvgSessionTime + UserSessionsCount, app_versions -> AppVersion, crashes -> CrashFreeSessions + Crashes, errors -> ErrorLogsIos + ErrorLogsAndroid, revenue -> RevenueTotal + RevenuePurchases, ad_revenue -> AdRevenue + AdRevenueARPU + AdRevenueECPM, traffic -> Clicks + Installs + InstallConversion, push -> PushSent + PushReceived + PushOpened, retention -> RetentionDynamics, funnels -> one Funnels widget per saved funnel); the rest (installs_by_country, events, conversions, anr, ad_revenue_by_type) and local custom metrics become custom widgets; funnel_id widgets become Funnels widgets. Widgets that cannot be created (unknown metric ids, no saved funnels) are skipped and listed in "skipped". Returns {dashboard_id, name, url, groups, skipped?, notes?}. Uses the unofficial AppMetrica web API through a headless Chrome session: run `npx appmetrica-mcp login` once to log in to Yandex. Requires APPMETRICA_ALLOW_WRITE=true.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID to create the workspace in |
| name | string | – | Name of the AppMetrica workspace (default: the local workspace name) |
| workspace | string | yes | Name of the local workspace |
No output schema declared.
No examples provided.
web_remove_widget ~123
[Experimental web session] Remove one widget from an AppMetrica workspace by dashboard_widget_id (see web_get_workspace). Uses the unofficial AppMetrica web API through a headless Chrome session: run `npx appmetrica-mcp login` once to log in to Yandex. Requires APPMETRICA_ALLOW_WRITE=true.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| dashboard_id | string | yes | Dashboard ID from web_list_workspaces |
| dashboard_widget_id | string | yes | dashboard_widget_id from web_get_workspace |
No output schema declared.
No examples provided.
web_rename_workspace ~105
[Experimental web session] Rename an AppMetrica workspace. Uses the unofficial AppMetrica web API through a headless Chrome session: run `npx appmetrica-mcp login` once to log in to Yandex. Requires APPMETRICA_ALLOW_WRITE=true.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | number | yes | AppMetrica application ID |
| dashboard_id | string | yes | Dashboard ID from web_list_workspaces |
| name | string | yes | New name |
No output schema declared.
No examples provided.
web_session_status ~96
[Experimental web session] Check the AppMetrica web session (Chrome profile with a Yandex login) used by the web_* tools: logged_in, Yandex login, profile directory. Starts headless Chrome on first use (about 7 seconds). Uses the unofficial AppMetrica web API through a headless Chrome session: run `npx appmetrica-mcp login` once to log in to Yandex.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
How do I install the io.github.pavellunev/appmetrica-mcp server?
io.github.pavellunev/appmetrica-mcp runs locally as an npm package, launched with npx -y appmetrica-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · appmetrica-mcp
claude mcp add pavellunev-appmetrica-mcp -- npx -y appmetrica-mcp
What is the io.github.pavellunev/appmetrica-mcp server?
io.github.pavellunev/appmetrica-mcp is listed in the public MCP registry as io.github.pavellunev/appmetrica-mcp. AppMetrica (Yandex) analytics: reports, funnels, segments, dashboards, logs export, push. This page covers its npm package (appmetrica-mcp).
Is the io.github.pavellunev/appmetrica-mcp server safe to use?
io.github.pavellunev/appmetrica-mcp scores 79 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 23 October 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.pavellunev/appmetrica-mcp server expose?
io.github.pavellunev/appmetrica-mcp exposes 45 tools: list_applications, get_application, list_events, list_conversions, get_logs_api_status, and 40 more. Their descriptions and schemas cost roughly 7,336 tokens of context every time the server is loaded.
Is the io.github.pavellunev/appmetrica-mcp server still maintained?
io.github.pavellunev/appmetrica-mcp is still listed as active in the MCP registry. We last reached this channel on 23 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.pavellunev/appmetrica-mcp server under?
io.github.pavellunev/appmetrica-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.