- Upstream calls pass
apify_proxy_groups: [] so the estimator uses Apify auto proxy groups. Omitting the key let the upstream input-schema default (a proxy group name that does not exist on most accounts) apply, which sent Apple and Play requests out unproxied.
- Upstream call is bounded by this run's remaining time; an unfinished upstream run is aborted and reported as
ok: false.
- Upstream sample/demo records are dropped; when no live records remain, or the upstream finishes FAILED/TIMED-OUT with nothing, the tool returns
ok: false with the reason.
- Batch entries that are not objects, have no
tool, or have non-object args now emit an error record each instead of being skipped silently.
- Review-ask and related-actor lines load directly from
related_actors.py (stdlib-only), so they print on this image.
Initial release. MCP server wrapper for app-store-revenue-estimator exposing
four typed tools to AI agents:
estimate_app - modeled download/revenue band for one app (iOS id/URL or Play package/URL) with confidence, methodology, and caveats.
compare_apps - estimate 2 to 10 apps and rank them by download-band midpoint with a leader/trailer comparison summary.
get_publisher_portfolio - all of a publisher's apps with per-app estimates plus one combined portfolio band.
get_top_chart_estimates - top N apps of a country's chart (top-free or top-paid) with an estimate per app, ranked by chart position (Apple feeds only, top_n cap 50).
Estimates are order-of-magnitude bands with stated confidence, not measurements;
they tighten when the upstream runs on a schedule and accumulates ratings-velocity
history. Not affiliated with Apple, Google, or Sensor Tower.
Run modes: list_tools (free catalog), call_tool, batch (max 10 calls/run).
Billing: $0.005 per mcp_tool_call plus upstream app-store-revenue-estimator
pass-through events (app_record $0.010, estimate_enrichment $0.020,
publisher_rollup $0.030). x402 (USDC on Base) and Skyfire agentic-payment ready.
In-run budget guard: 5 tool-call hard cap, $0.05 low-revenue abort after 5
attempts, 600s runtime cap.