GNOME + macOS panel for Claude Code plan usage. Exposes plan-usage data through the Model Context Protocol, allowing MCP clients to query Claude plan usage and manage multiple named accounts.
Claude Usage Panel provides 6 tools for managing Claude Code account usage and credentials. Tools follow verb-noun naming consistently (get_usage, list_accounts, switch_account, save_account, remove_account, refresh_account). Tool descriptions are substantial and context-rich (average ~240 chars), explaining not just WHAT but WHY and WHEN. Input schemas are present for all tools with proper JSON Schema structure. However, several tools lack output schemas in the visible source code, and some parameter descriptions are minimal or absent. The server handles security-sensitive operations (credential storage, account switching) with documented file permissions (0600) and careful token handling. Error handling and recovery guidance are not visible in the provided code excerpt. Tool compositions are sound, account discovery, switching, and credential refresh form a logical chain.
Current Claude plan usage: session, weekly, and per-model limits - percent used, severity, and reset time for each, from the official Anthropic usage endpoint (same numbers as /usage). A per-model limit (scoped:true, e.g. Fable) caps a share of the weekly all-models pool and draws from it - it is not extra quota. When enough local history exists, each limit also carries a `pace` projection: %/hour burn rate, the projected 100% instant, and whether that lands before the reset. Every limit with a reset also carries `vsClock`: how much of its window has gone and whether usage is running ahead of that clock. `extraUsage` reports prepaid credits charged beyond the plan, when the account has them enabled. Also reports `lastPing` (when a scheduled session ping last opened a 5-hour window) and `sessions`: today's local Claude Code sessions ranked by the tokens they spent, each with the shell command that resumes it. `account` names the saved account these numbers belong to (see list_accounts), null when the current login was never saved.
The Claude Code logins saved under a name (e.g. PRO, PERSO) with each one's plan usage, which one is active, and whether its stored login is still usable. Usage for a non-active account is read with its own stored token (refreshed when needed); nothing is switched.
Refresh the stored access token for a saved account using its refresh token. The refreshed credentials are written back to storage.
Forget a saved Claude Code account. The stored credentials are deleted and cannot be recovered.
Output schemas missing or incomplete for list_accounts, remove_account, and refresh_account. Only get_usage has a partially visible output schema in the excerpt. Without documented output shapes, LLMs cannot reliably chain tools or extract expected fields.
Parameter descriptions are minimal or absent for some critical fields. The 'force' parameter in save_account and 'name' in several tools lack detailed guidance on expected format, constraints, or side effects.
No visible error handling or recovery guidance in the tool definitions or implementation excerpt. Tools that modify credentials (save_account, refresh_account, remove_account) should guide the LLM on what to do if operations fail (e.g., 'If refresh fails due to expired refresh token, call remove_account and prompt user to re-authenticate').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2025-06-18+ | v2 |
Save the currently active Claude Code login under a name (e.g. PRO, PERSO). The login is kept under the panel's state directory with file mode 0600.
Switch the active Claude Code login to a named saved account without a browser. Running Claude Code sessions keep their old login until restarted.
Destructive operation (remove_account) lacks confirmation or dry-run pattern. Agents should not irreversibly delete credentials without an explicit warning or confirmation step.
Tool descriptions reference features (e.g., 'peak trend', 'pace projection', 'vsClock') but the visible render functions (renderCards, renderExtraUsage) do not show full output schema coverage. Incomplete output documentation makes it hard for LLMs to understand available fields.