Weekly + monthly stats across registries. Updated 7m ago.
Your registry co-pilot • Powered by Ollama
Voice server not detected
To enable voice, run this once:
PORT=11435 npx @mcptoolshop/voice-soundboard-mcp It auto-downloads the TTS model (~310 MB) on first run. After that, add it to startup for hands-free operation.
Read-only token for mcp-tool-shop-org. Stored locally, never sent anywhere except GitHub API.
Wikipedia works automatically for knowledge questions. Install SearXNG locally for broader web search.
Grand totals across all registries.
Growth signals and data reliability at a glance.
56 Top 5 packages drive 56% of weekly downloads. 3 accelerating, 2 stabilizing.
Per-registry weekly downloads and 30-day activity.
Aggregate npm daily downloads.
Forecasting, anomaly detection, and automated recommendations.
@ai-rpg-engine/modules, @world-forge/schema, @world-forge/export-ai-rpg and 6 more show sustained decline. Consider: release updates, fix open issues, or update documentation.
Gini coefficient 0.84 indicates downloads are heavily concentrated in a few packages. Diversify promotion efforts across the portfolio.
Multiple download spikes detected for @ai-rpg-engine/asset-registry. Could indicate bot activity, viral posts, or dependency adoption.
backpropagate, mcpt, headless-wheel-builder, voice-soundboard, venvkit scored below 20/100.
Gini coefficient 0.84 β downloads are concentrated in a few packages.
Portfolio intelligence β from activity to insight.
Registry split β’ anomaly flags β’ 7d moving average
Weekly distribution with absolute + delta.
Distribution β’ median/P90 β’ Gini concentration.
Downloads + velocity + rank movement.
7-day growth rate per package with trend sparklines.
Sorted by total. Hover for details. Anomalies flagged.
Sorted by downloads. npm/PyPI = weekly; VS Code/NuGet/Docker = all-time total. Trend = last 7 vs prior 7 (npm only).
| # | Package | Registry | Downloads | Month | 30d | Trend |
|---|---|---|---|---|---|---|
| 1 | backpropagate | PyPI | 353 | 375 | β | π New (+353) |
| 2 | @mcptoolshop/xrpl-camp | npm | 127 | 463 | | β² 122.8% |
| 3 | @mcptoolshop/xrpl-lab | npm | 111 | 910 | | β² 85% |
| 4 | mcpt | PyPI | 68 | 236 | β | π New (+68) |
| 5 | @mcptoolshop/site-theme | npm | 50 | 751 | | βΌ 29.6% |
| 6 | @mcptoolshop/npm-launcher | npm | 29 | 358 | | π Emerging (+11) |
| 7 | @ai-rpg-engine/asset-registry | npm | 20 | 146 | | βΌ 73.3% |
| 8 | @ai-rpg-engine/starter-cyberpunk | npm | 19 | 610 | | βΌ 90% |
| 9 | @ai-rpg-engine/modules | npm | 18 | 704 | | βΌ 93.1% |
| 10 | headless-wheel-builder | PyPI | 17 | 95 | β | π New (+17) |
| 11 | @ai-rpg-engine/ollama | npm | 15 | 237 | | βΌ 69.4% |
| 12 | @ai-rpg-engine/terminal-ui | npm | 14 | 242 | | βΌ 74.5% |
| 13 | voice-soundboard | PyPI | 14 | 174 | β | π New (+14) |
| 14 | @world-forge/schema | npm | 13 | 411 | | βΌ 88.2% |
| 15 | @world-forge/editor | npm | 13 | 265 | | βΌ 84% |
| 16 | venvkit | PyPI | 13 | 18 | β | π New (+13) |
| 17 | @world-forge/renderer-2d | npm | 12 | 299 | | βΌ 85.5% |
| 18 | @ai-rpg-engine/presentation | npm | 12 | 139 | | βΌ 77.8% |
| 19 | @ai-rpg-engine/core | npm | 11 | 471 | | βΌ 78% |
| 20 | @ai-rpg-engine/equipment | npm | 11 | 464 | | βΌ 85.3% |
| 21 | @world-forge/export-ai-rpg | npm | 11 | 375 | | βΌ 89.2% |
| 22 | @ai-rpg-engine/starter-detective | npm | 10 | 448 | | βΌ 93.5% |
| 23 | @ai-rpg-engine/character-creation | npm | 10 | 422 | | βΌ 79.6% |
| 24 | file-compass | PyPI | 10 | 170 | β | π New (+10) |
| 25 | @mcptoolshop/claude-guardian | npm | 10 | 92 | | βΌ 60% |
| 26 | @mcptoolshop/escape-the-valley | npm | 9 | 511 | | βΌ 83.6% |
| 27 | @ai-rpg-engine/starter-zombie | npm | 9 | 506 | | βΌ 95.3% |
| 28 | @ai-rpg-engine/content-schema | npm | 9 | 433 | | βΌ 77.5% |
| 29 | @ai-rpg-engine/starter-fantasy | npm | 9 | 351 | | βΌ 89% |
| 30 | @mcptoolshop/registry-stats | npm | 9 | 244 | | βΌ 76.9% |
| 31 | @mcptoolshop/polyglot-mcp | npm | 9 | 230 | | βΌ 77.5% |
| 32 | @ai-rpg-engine/character-profile | npm | 8 | 431 | | βΌ 86% |
| 33 | @ai-rpg-engine/starter-colony | npm | 8 | 367 | | βΌ 86% |
| 34 | a11y-lint | PyPI | 8 | 178 | β | π New (+8) |
| 35 | nexus-control | PyPI | 7 | 134 | β | π New (+7) |
| 36 | aspire-ai | PyPI | 7 | 48 | β | π New (+7) |
| 37 | payroll-engine | PyPI | 7 | 40 | β | π New (+7) |
| 38 | @mcptoolshop/claude-sfx | npm | 6 | 520 | | βΌ 70% |
| 39 | @mcptoolshop/sovereignty | npm | 6 | 373 | | βΌ 90% |
| 40 | @mcptoolshop/civility-kernel | npm | 6 | 200 | | βΌ 78.6% |
| 41 | codebatch | PyPI | 6 | 132 | β | π New (+6) |
| 42 | polyglot-gpu | PyPI | 6 | 130 | β | π New (+6) |
| 43 | flexiflow | PyPI | 6 | 122 | β | π New (+6) |
| 44 | nullout-mcp | PyPI | 6 | 118 | β | π New (+6) |
| 45 | @ai-rpg-engine/starter-pirate | npm | 5 | 428 | | βΌ 96.4% |
| 46 | @mcptoolshop/registry-sync | npm | 5 | 322 | | βΌ 86.8% |
| 47 | @ai-rpg-engine/image-gen | npm | 5 | 258 | | βΌ 92.4% |
| 48 | tool-scan | PyPI | 5 | 64 | β | π New (+5) |
| 49 | nexus-attest | PyPI | 5 | 32 | β | π New (+5) |
| 50 | integradio | PyPI | 5 | 30 | β | π New (+5) |
| 51 | mcpt-pathway | PyPI | 5 | 26 | β | π New (+5) |
| 52 | nexus-router-adapter-http | PyPI | 5 | 21 | β | π New (+5) |
| 53 | @ai-rpg-engine/starter-weird-west | npm | 4 | 387 | | βΌ 97.1% |
| 54 | @mcptoolshop/synthesis | npm | 4 | 303 | | βΌ 90.2% |
| 55 | @ai-rpg-engine/campaign-memory | npm | 4 | 296 | | βΌ 95.6% |
| 56 | @ai-rpg-engine/cli | npm | 4 | 290 | | βΌ 93.8% |
| 57 | @ai-rpg-engine/soundpack-core | npm | 4 | 130 | | βΌ 93.8% |
| 58 | @mcptoolshop/ai-loadout | npm | 4 | 88 | | βΌ 86.2% |
| 59 | nexus-router | PyPI | 4 | 77 | β | π New (+4) |
| 60 | a11y-assist | PyPI | 4 | 54 | β | π New (+4) |
| 61 | audiobooker-ai | PyPI | 4 | 52 | β | π New (+4) |
| 62 | mcp-stress-test | PyPI | 4 | 47 | β | π New (+4) |
| 63 | xrpl-camp | PyPI | 4 | 47 | β | π New (+4) |
| 64 | mcp-select | PyPI | 4 | 40 | β | π New (+4) |
| 65 | tool-compass | PyPI | 4 | 37 | β | π New (+4) |
| 66 | mcp-bouncer | PyPI | 4 | 19 | β | π New (+4) |
| 67 | @ai-rpg-engine/audio-director | npm | 3 | 271 | | βΌ 96.3% |
| 68 | @ai-rpg-engine/rumor-system | npm | 3 | 203 | | βΌ 92.3% |
| 69 | @ai-rpg-engine/pack-registry | npm | 3 | 196 | | βΌ 94.1% |
| 70 | @mcptoolshop/websketch-ir | npm | 3 | 86 | | π Emerging (+0) |
| 71 | @mcptoolshop/shipcheck | npm | 3 | 38 | | π Emerging (+0) |
| 72 | nexus-router-adapter-stdout | PyPI | 3 | 22 | β | π New (+3) |
| 73 | code-covered | PyPI | 3 | 20 | β | π New (+3) |
| 74 | scalarscope | PyPI | 3 | 18 | β | π New (+3) |
| 75 | a11y-ci | PyPI | 2 | 90 | β | π New (+2) |
| 76 | brain-dev | PyPI | 2 | 40 | β | π New (+2) |
| 77 | cwm-mcp | PyPI | 2 | 36 | β | π New (+2) |
| 78 | ally-demo-python | PyPI | 2 | 30 | β | π New (+2) |
| 79 | @mcptoolshop/repomesh | npm | 1 | 124 | | π Emerging (+0) |
| 80 | comfy-headless | PyPI | 1 | 24 | β | π New (+1) |
| 81 | escape-the-valley | PyPI | 1 | 15 | β | π New (+1) |
| 82 | voice-soundboard-plugin | PyPI | 0 | 65 | β | β |
| 83 | zip-meta-map | PyPI | 0 | 59 | β | β |
| 84 | mcp-kv-context | PyPI | 0 | 30 | β | β |
| 85 | xrpl-witness | PyPI | 0 | 23 | β | β |
| 86 | sovereignty-game | PyPI | 0 | 18 | β | β |
| 87 | codeclone-cli | PyPI | 0 | 1 | β | β |
| 88 | MouseTrainer.Domain | NuGet | 558 | 0 | β | β |
| 89 | MouseTrainer.Simulation | NuGet | 495 | 0 | β | β |
| 90 | MouseTrainer.Audio | NuGet | 479 | 0 | β | β |
| 91 | InControl.Core | NuGet | 420 | 0 | β | β |
| 92 | LinuxDevTyper.Core | NuGet | 393 | 0 | β | β |
| 93 | DevOpTyper.Content | NuGet | 389 | 0 | β | β |
| 94 | CursorAssist.Canon | NuGet | 347 | 0 | β | β |
| 95 | Attestia.Core | NuGet | 341 | 0 | β | β |
| 96 | Gov.Protocol | NuGet | 340 | 0 | β | β |
| 97 | CursorAssist.Trace | NuGet | 333 | 0 | β | β |
| 98 | Soundboard.Client | NuGet | 330 | 0 | β | β |
| 99 | Gov.Common | NuGet | 318 | 0 | β | β |
| 100 | CodeClone.Domain | NuGet | 311 | 0 | β | β |
| 101 | CursorAssist.Engine | NuGet | 302 | 0 | β | β |
| 102 | Attestia.Client | NuGet | 300 | 0 | β | β |
| 103 | RunForgeDesktop.Core | NuGet | 299 | 0 | β | β |
| 104 | CursorAssist.Policy | NuGet | 293 | 0 | β | β |
| 105 | Attestia.Sidecar | NuGet | 291 | 0 | β | β |
| 106 | CodeTeam.Core | NuGet | 254 | 0 | β | β |
| 107 | CodeTeam.Crypto | NuGet | 223 | 0 | β | β |
| 108 | VortexKit | NuGet | 217 | 0 | β | β |
| 109 | InControl.Inference | NuGet | 203 | 0 | β | β |
| 110 | ClaimLedger | NuGet | 200 | 0 | β | β |
| 111 | CreatorLedger | NuGet | 198 | 0 | β | β |
| 112 | Soundboard.Maui.Audio | NuGet | 198 | 0 | β | β |
| 113 | CodeTeam.Packaging | NuGet | 182 | 0 | β | β |
| 114 | CodeTeam | NuGet | 120 | 0 | β | β |
| 115 | mcp-tool-shop.codecomfy-vscode | VS Code | 119 | 0 | β | β |
| 116 | mcp-tool-shop.runforge | VS Code | 98 | 0 | β | β |
| 117 | mcp-tool-shop.vscode-voice-soundboard | VS Code | 40 | 0 | β | β |
| 118 | mcp-tool-shop.polyglot-vscode | VS Code | 11 | 0 | β | β |
| 119 | mcp-tool-shop.registry-stats-vscode | VS Code | 10 | 0 | β | β |
| 120 | mcp-tool-shop.websketch-vscode | VS Code | 5 | 0 | β | β |
| 121 | @mcptoolshop/backprop | npm | 0 | 0 | | π Emerging (+0) |
| 122 | @mcptoolshop/ai-jam-sessions | npm | 0 | 0 | | π Emerging (+0) |
| 123 | @mcptoolshop/brand | npm | 0 | 0 | | π Emerging (+0) |
| 124 | @mcptoolshop/consensus-os | npm | 0 | 0 | | π Emerging (+0) |
| 125 | @mcptoolshop/toolshopstudio | npm | 0 | 0 | | π Emerging (+0) |
| 126 | @mcptoolshop/prov-engine-js | npm | 0 | 0 | | π Emerging (+0) |
| 127 | @mcptoolshop/voice-soundboard-mcp | npm | 0 | 0 | | π Emerging (+0) |
| 128 | @mcptoolshop/mcp-tool-registry | npm | 0 | 0 | | π Emerging (+0) |
| 129 | @mcptoolshop/mcp-aside | npm | 0 | 0 | | π Emerging (+0) |
| 130 | @mcptoolshop/game-dev-mcp | npm | 0 | 0 | | π Emerging (+0) |
| 131 | @mcptoolshop/venvkit | npm | 0 | 0 | | π Emerging (+0) |
| 132 | @mcptoolshop/websketch | npm | 0 | 0 | | π Emerging (+0) |
| 133 | @accessibility-suite/mcp-tools | npm | 0 | 0 | | π Emerging (+0) |
| 134 | @mcptoolshop/vocal-synth-engine | npm | 0 | 0 | | π Emerging (+0) |
| 135 | @mcptoolshop/repo-crawler-mcp | npm | 0 | 0 | | π Emerging (+0) |
| 136 | @accessibility-suite/core | npm | 0 | 0 | | π Emerging (+0) |
| 137 | @mcptoolshop/file-forge | npm | 0 | 0 | | π Emerging (+0) |
| 138 | @accessibility-suite/evidence-engine | npm | 0 | 0 | | π Emerging (+0) |
| 139 | @mcptoolshop/claude-session-copilot | npm | 0 | 0 | | π Emerging (+0) |
| 140 | @mcptoolshop/logo-studio | npm | 0 | 0 | | π Emerging (+0) |
| 141 | @mcptoolshop/logo-presets | npm | 0 | 0 | | π Emerging (+0) |
| 142 | @mcptoolshop/throttleai | npm | 0 | 0 | | π Emerging (+0) |
| 143 | @mcptoolshop/websketch-mcp | npm | 0 | 0 | | π Emerging (+0) |
| 144 | @mcptoolshop/registrum | npm | 0 | 0 | | π Emerging (+0) |
| 145 | @mcptoolshop/promo-kit | npm | 0 | 0 | | π Emerging (+0) |
| 146 | @accessibility-suite/ci | npm | 0 | 0 | | π Emerging (+0) |
| 147 | @mcptoolshop/voice-soundboard-core | npm | 0 | 0 | | π Emerging (+0) |
| 148 | @mcptoolshop/voice-engine-dsp | npm | 0 | 0 | | π Emerging (+0) |
| 149 | @mcptoolshop/prov-engine | npm | 0 | 0 | | π Emerging (+0) |
| 150 | @attestia/types | npm | 0 | 0 | | π Emerging (+0) |
| 151 | @attestia/verify | npm | 0 | 0 | | π Emerging (+0) |
| 152 | @attestia/registrum | npm | 0 | 0 | | π Emerging (+0) |
| 153 | @attestia/ledger | npm | 0 | 0 | | π Emerging (+0) |
| 154 | @attestia/chain-observer | npm | 0 | 0 | | π Emerging (+0) |
| 155 | @attestia/proof | npm | 0 | 0 | | π Emerging (+0) |
| 156 | @attestia/sdk | npm | 0 | 0 | | π Emerging (+0) |
| 157 | @attestia/node | npm | 0 | 0 | | π Emerging (+0) |
| 158 | @attestia/event-store | npm | 0 | 0 | | π Emerging (+0) |
| 159 | @attestia/vault | npm | 0 | 0 | | π Emerging (+0) |
| 160 | @attestia/treasury | npm | 0 | 0 | | π Emerging (+0) |
| 161 | @attestia/reconciler | npm | 0 | 0 | | π Emerging (+0) |
| 162 | @attestia/witness | npm | 0 | 0 | | π Emerging (+0) |
| 163 | @mcptoolshop/claude-memories | npm | 0 | 0 | | π Emerging (+0) |
| 164 | @mcptoolshop/claude-rules | npm | 0 | 0 | | π Emerging (+0) |
| 165 | @mcptoolshop/artifact | npm | 0 | 0 | | π Emerging (+0) |
| 166 | @mcptoolshop/ai-ui | npm | 0 | 0 | | π Emerging (+0) |
| 167 | ai-rpg-engine | npm | 0 | 0 | | π Emerging (+0) |
| 168 | world-forge | npm | 0 | 0 | | π Emerging (+0) |
The landing view with the executive snapshot (total downloads, weekly change, health score, diversity) and the Registry Assistant — an AI chat powered by a local Ollama model that can answer questions about your data.
Six interactive charts: 30-Day Trend (toggle between aggregate, per-registry, and top-5 views), Registry Share (polar area), Portfolio Risk (distribution histogram with Gini & P90), Top 10 Momentum (bar chart colour-coded by velocity), Velocity Tracker (sparkline list sorted by growth rate), and 30-Day Heatmap (per-package daily grid with spike detection).
Every package ranked by weekly downloads with inline 30-day sparklines and a smart trend badge that avoids misleading percentages for low-volume packages.
(curr − prev) / √(prev + k). It rewards genuine acceleration while keeping tiny-base packages from dominating. Used in Momentum, Velocity Tracker, and Leaderboard columns.The Analytics tab includes a built-in inference engine that runs at build time — no ML runtime, no external APIs, pure math. It powers four capabilities:
The Registry Assistant on the Home tab talks to a local Ollama instance on localhost:11434. It automatically injects a snapshot of your registry data into every prompt so the model can answer questions like:
Requirements: Ollama running locally with at least one model pulled (e.g., ollama pull llama3.2). If Ollama is offline the chat shows a friendly fallback message — everything else works normally.
Desired-state sync engine for multi-registry publishing. Detects drift, missing packages, and orphaned entries. Use registry-sync audit to check and registry-sync plan to preview changes.
When served inside the .NET MAUI host the dashboard auto-refreshes from a local cache. The window.__registryStatsBridge API lets the native layer push fresh snapshots.
The pipeline runs each time you build the site (or on a schedule in CI):
The engine queries five registries in parallel: npm (weekly + 30-day range), PyPI (weekly), VS Code Marketplace (installs), NuGet (total), and Docker Hub (pulls). Each provider has retries with exponential back-off.