get_wakelock_rate
Monitor background wakelock rates in Android apps to identify excessive battery usage and avoid Play Store penalties by analyzing stuck wakelock data from Android Vitals.
Instructions
Fetch stuck background wake lock rate from Android Vitals.
Returns daily stuckBackgroundWakelockRate and distinctUsers by version code. Excessive wakelock holding (>1 hour in background) may be penalized.
Args: package_name: Package name, e.g. com.example.myapp days: Past days to include (default 7, max 30). version_code: Optional version code filter.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | ||
| days | No | ||
| version_code | No |
Implementation Reference
- src/google_play_mcp/server.py:696-741 (handler)The implementation of the get_wakelock_rate tool handler, which queries Android Vitals via _reporting().query_wakelock_rate and formats the output.
def get_wakelock_rate( package_name: str, days: int = 7, version_code: str = "", ) -> str: """Fetch stuck background wake lock rate from Android Vitals. Returns daily stuckBackgroundWakelockRate and distinctUsers by version code. Excessive wakelock holding (>1 hour in background) may be penalized. Args: package_name: Package name, e.g. com.example.myapp days: Past days to include (default 7, max 30). version_code: Optional version code filter. """ days = max(1, min(days, 30)) try: raw = _reporting().query_wakelock_rate( package_name=package_name, days=days, version_code=version_code or None, ) rows = _parse_reporting_rows(raw.get("rows", [])) if not rows: return json.dumps( { "packageName": package_name, "message": ( "No stuck wakelock data available. Data may lag up to 2 days " "or the app has no wakelock violations in this period." ), "rows": [], }, indent=2, ) return json.dumps( { "packageName": package_name, "periodDays": days, "totalRows": len(rows), "rows": rows, }, indent=2, ) except Exception as exc: return json.dumps({"success": False, "error": str(exc)}, indent=2)