Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/grovs-io/mcp/grovs-analyticsnpx skills add grovs-io/mcp --skill grovs-analyticsgit clone --depth 1 https://github.com/grovs-io/mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/grovs-io/mcp/grovs-analytics)<a href="https://agentmods.dev/skills/grovs-io/mcp/grovs-analytics"><img src="https://agentmods.dev/badge/skills/grovs-io/mcp/grovs-analytics.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00062 | $0.00773 |
| Opus 5 | $0.00031 | $0.00387 |
| Sonnet 5 | $0.00012 | $0.00155 |
| Haiku 4.5 | $0.00006 | $0.00077 |
Grade A, and why
grovs-analytics scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 66 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Grovs: View Analytics
Three tools, three levels
| Tool | What it answers | Returns |
|---|---|---|
get_analytics_overview |
"How's the project doing?" | Current vs previous period totals (views, opens, installs, revenue, users) |
get_top_links |
"What's performing best?" | Ranked list by views (no other sort) |
get_link_analytics |
"How's this specific link doing?" | Daily breakdowns — you must sum for totals |
Start with get_analytics_overview. Only call others if the user asks to drill down.
Non-obvious behavior
- Overview auto-compares periods. If you request Apr 1–8, it also returns Mar 24–31. Mention the comparison — that's the point.
- Link analytics are daily rows, not totals. Response looks like
"2026-04-01": {view: 100, ...}. Sum them yourself if the user asks for "total views." - Top links sorts by views only. If user asks "top by installs" — get top links then sort the results yourself, or use
search_linkswithsort_by: "installs". - Campaign metrics aren't here. "How's my Summer Sale campaign?" → use
list_campaignswithterm: "Summer Sale", not analytics tools.
Date ranges
- No range specified → tools default to last 30 days (don't pass dates)
- "This week" → Monday through today
- "This month" → 1st of current month through today
- "Last month" → 1st to last day of previous month
Example
User: "How are my links doing this month?"
get_analytics_overview(project_id: "p_m9f", start_date: "2026-04-01", end_date: "2026-04-08")
→ Current: 1,200 views, 400 opens, 80 installs
→ Previous (auto): 900 views, 300 opens, 60 installs
→ "Views are up 33% compared to the previous period."
User: "Which link is getting the most traffic?"
get_top_links(project_id: "p_m9f", start_date: "2026-04-01", end_date: "2026-04-08")
→ 1. Summer Sale — 600 views, 200 opens
User: "Show me the daily breakdown for that one"
get_link_analytics(project_id: "p_m9f", path: "https://foodies.grovs.io/summer-sale", start_date: "2026-04-01", end_date: "2026-04-08")
→ Daily rows. Sum if user wants totals.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago First seen · 66 lines · 62 tokens per session scan A 113bf26506f7
grovs-analytics is a skill published in the GitHub repository grovs-io/mcp (2 stars, last pushed 3mo ago), licensed MIT. It adds 62 tokens to every session and 773 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
collection
Choose which SkillNote skill collection is active for this Codex project. Use when the user says "change collection", "switch skills", "use frontend skills", or "show collections".
chatcrystal-debug-recall
Recall ChatCrystal memories for debugging tasks involving failing tests, compiler errors, runtime exceptions, dependency issues, environment breakage, or performance regressions. Use when historical root causes, fixes, or pitfalls may accelerate diagnosis before proposing a fix.
verify
Fact-check claims encountered during reading — dates, names, events, citations. Use when encountering historical facts or disputed claims.
expert
Base expert skill.
alpha
Alpha skill.
megalinter-check
Collect MegaLinter lint errors for the current repository. Use when the user wants to know if the code passes linting, why the MegaLinter CI job fails, or before/after fixing lint errors. Two modes - watch a CI job (GitHub Actions, GitLab CI, Azure Pipelines, Bitbucket Pipelines) and parse its logs, or run MegaLinter…