{"id":6344,"plugin_id":"plugin_asdk_app_6a4d5a687f0881918be3cb8b4b93773d","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T22:48:09.220Z","digest":"74753b82ca74207696a6b4f631223927436803ed3310c266618f7404fc44504e","against":null,"payload":{"name":"reviewing-analytics","description":"Use when reporting on docs traffic, search quality, AI assistant usage, feedback, or billing-period usage through the Mintlify Admin MCP — questions like \"what are people searching for\", \"which pages are popular\", \"how many chat messages this month\", or \"what gets zero results\".","included_files":[],"skill_md_contents":"---\nname: reviewing-analytics\ndescription: Use when reporting on docs traffic, search quality, AI assistant usage, feedback, or billing-period usage through the Mintlify Admin MCP — questions like \"what are people searching for\", \"which pages are popular\", \"how many chat messages this month\", or \"what gets zero results\".\n---\n\n# Reviewing Analytics\n\n## Overview\n\nAll analytics live in the code-mode `analytics` namespace (`execute_code`, no checkout, all read-only, scope `analytics:read`). Most methods take `dateFrom`/`dateTo` as ISO or `YYYY-MM-DD` strings; list endpoints are cursor-paginated.\n\n**REQUIRED BACKGROUND:** the `using-code-mode` skill covers return semantics and `{ subdomain }` targeting.\n\n## Method map\n\n| Question | Methods |\n|----------|---------|\n| Overall traffic/engagement | `getInsights({})`, `getKpi`, `getPopularPages({ dateFrom, dateTo, trafficSource? })`, `getReferrals`, `getTopAgents` |\n| What are people searching | `getSearchAnalytics({ dateFrom, dateTo, limit?, cursor? })`, `getTotalSearches`, `getUniqueSearchQueries`, `getSearchTimeSeries`, `getSearchClickThroughRate` |\n| Search gaps | `getZeroResultSearches`, `getZeroResultSearchCount` |\n| MCP search traffic | `getMcpSearchAnalytics`, `getMcpSearchTimeSeries`, `getMcpSearchTotalSearches` |\n| AI assistant usage | `getAssistantAggregate`, `getAssistantCallerStats`, `getAssistantUsageSummary`, `getChat` (conversation list) |\n| Reader feedback | `getFeedback` (thumbs aggregate), `getDetailedFeedback`, `getDetailedFeedbackSummary`, `getDetailedFeedbackById` |\n| Billing-period usage | `getUsageSummary({ usageType })`, `getUsageHistory` — usageType: `CHAT_MESSAGE`, `PDF_PAGE`, `TRANSLATION_TOKEN_INPUT`, `TRANSLATION_TOKEN_OUTPUT` |\n\n`getUsageSummary` takes only `usageType` (no dates) and always reports the **current billing period** — quota, period usage, and remainder. `getAssistantUsageSummary` is the assistant-specific view of the same billing meter, while `getAssistantAggregate`/`getChat` are date-ranged analytics windows — use the usage methods for \"how much of my quota\", the analytics methods for \"what happened between these dates\".\n\n`trafficSource` on traffic methods is `'all' | 'ai' | 'human'` — useful for splitting agent vs human readership.\n\n## Example: monthly search-quality report\n\n```\nconst range = { dateFrom: '2026-06-01', dateTo: '2026-06-30' };\nconst top = await analytics.getSearchAnalytics({ ...range, limit: 50 });\nconst zero = await analytics.getZeroResultSearches(range);\nconst ctr = await analytics.getSearchClickThroughRate(range);\n({ top, zero, ctr });\n```\n\n## Common mistakes\n\n- Guessing parameter names — `getChat` uses `currentDateFrom`/`currentDateTo` (not `dateFrom`); verify with `search_code_operations { namespace: 'analytics', query: ... }`.\n- Ignoring `cursor` on list endpoints and reporting a truncated picture.\n- Requesting huge ranges in one call and hitting `truncated: true` — page or narrow the range.\n- Comparing AI vs human traffic without setting `trafficSource`.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}