mcp-token-saver
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-token-savershould I proceed with this large task?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-token-saver
Real-time Claude.ai/Codex subscription awareness for AI coding assistants. Surfaces your live
Session 5hrandWeekly 7dayutilization, forecasts when you'll hit the limit, gates expensive operations before they run, and measures real per-task cost — all without leaving your machine.
Why
Claude Code, Cursor,Codex and friends burn through your subscription quietly. The IDE
sidebar shows Session 5hr 75% / Weekly 7day 45%, but the model itself can't
see those numbers — so it has no way to know it's about to push you over the
limit on a single big task.
mcp-token-saver exposes that information (and acts on it):
usage_status— reads your live Claude.ai utilization from the same private endpoint Claude Code uses (/api/oauth/usage).usage_forecast— logs snapshots over time, computes burn rate, tells you whether you'll hit 100% before the next reset.should_proceed— given a task size, decidesproceed/downgrade/abortbased on current usage. Replaces guesswork with a guard rail.usage_delta— mark a baseline before a task, measure the real % of your session/weekly limit it consumed. Real cost, not estimates.cache_stats— reads your Claude Code session log and computes the actual prompt-cache hit rate. Low hit rate = wasted tokens.
No telemetry, no API keys (uses your existing OAuth token), no remote services.
Related MCP server: Token Analyzer MCP
Table of contents
Features
Live subscription numbers. Same data as the Claude Code IDE bar — utilization %, reset timestamps, extra-credits balance.
Burn-rate forecast. Logs each snapshot and computes pct-per-hour and ETA to 100%.
Pre-flight gating.
should_proceedblocks huge operations when usage is hot.Real per-task cost.
usage_deltameasures what a task actually consumed.Cache observability.
cache_statsparses Claude Code's session JSONL to surface real cache hit rate.Adaptive output compression. Optional hook directive that tells the model to write tighter responses when usage gets hot (>60%), tersest when critical (>95%), and stay normal when cool. No always-on caveman-speak — only compresses when it matters.
Zero configuration. Reads OAuth token from
~/.claude/.credentials.json. If you've runclaude login, you're done.Local-only. No telemetry. No external services. The only network call is to
api.anthropic.comwith your own token.
How it works
┌──────────────────┐ "should I do this big task?" ┌──────────────────┐
│ Claude Code │ ────────────────────────────────▶ │ mcp-token-saver │
│ (or any MCP │ │ (stdio server) │
│ client) │ ◀─────────────────────────────── │ │
└──────────────────┘ { decision: "downgrade", └──────────────────┘
│ reason: "5h at 92%, switch │
│ to Haiku or shorten" } │
│ │
│ ┌────┴──────────┐
│ │ /api/oauth/ │
│ │ usage │
│ │ (api.anthr…) │
│ └───────────────┘
▼
downgrade / proceed usage_history.jsonl
based on real limits ~/.mcp-token-saver/The OAuth token comes from ~/.claude/.credentials.json, written by
claude login. The endpoint is the same one Claude Code's IDE bar polls
(anthropic-beta: oauth-2025-04-20).
Quick start
1. Add to Claude Code
In your project's .mcp.json (or ~/.claude/settings.json for global):
{
"mcpServers": {
"token-saver": {
"command": "npx",
"args": ["-y", "mcp-token-saver"]
}
}
}2. Or clone and run locally
git clone https://github.com/Talap-creator/mcp-token-saver.git
cd mcp-token-saver
npm install && npm run buildThen point .mcp.json at dist/index.js:
{"mcpServers":{"token-saver":{"command":"node","args":["C:/path/to/mcp-token-saver/dist/index.js"]}}}3. Activate the protocol
Copy src/prompts/system.md into your project's CLAUDE.md. Without this step the model sees the tools but is not told to use them.
4. Restart your MCP client
Reload the window. On the next prompt the model can see your real subscription usage.
Tools API
usage_status
Live snapshot of your Claude.ai subscription usage. Auto-logs to history.
Input: none.
Output
{
"subscription": "pro",
"rate_limit_tier": "default_claude_ai",
"five_hour": { "utilization_pct": 75, "resets_at": "2026-04-28T23:20:00Z" },
"seven_day": { "utilization_pct": 45, "resets_at": "2026-05-03T18:00:00Z" },
"seven_day_sonnet": null,
"extra_usage": { "enabled": false, "monthly_limit": null, "used_credits": null, "utilization_pct": null },
"fetched_at": "2026-04-28T19:26:28Z"
}usage_forecast
Burn-rate forecast based on the snapshot history written by usage_status.
Input: none.
Output
{
"five_hour": {
"current_pct": 75,
"resets_at": "2026-04-28T23:20:00Z",
"burn_rate_pct_per_hour": 18.4,
"eta_to_100_pct_iso": "2026-04-28T22:50:00Z",
"will_hit_limit_before_reset": true,
"samples_used": 12
},
"seven_day": { "current_pct": 45, "burn_rate_pct_per_hour": 0.8, "eta_to_100_pct_iso": null, "will_hit_limit_before_reset": false, "samples_used": 12 }
}Needs at least 2 snapshots in the current bucket to forecast — call
usage_statusperiodically (or use the auto-inject hook below) to build history.
should_proceed
Pre-flight check before producing a long response or doing a big read.
Input
Field | Type | Description |
|
| Rough output size. small ~<500 tok, medium ~2k, large ~8k, huge >8k. |
|
| Free-text label for the decision log. |
Output
{
"decision": "downgrade",
"reason": "usage hot (5h 92%, 7d 47%). Switch to Haiku or shorten response.",
"current": { "five_hour_pct": 92, "seven_day_pct": 47 },
"projected": { "five_hour_pct": 98, "seven_day_pct": 53 },
"task_size": "large"
}decision is one of proceed, downgrade, abort. The model should treat this as a hard gate.
usage_delta
Measure the real cost of a task in % of your subscription, not in fake dollars.
Input
Field | Type | Description |
|
|
|
|
| Tag for the baseline. |
Output (action=measure)
{
"label": "refactor-auth",
"elapsed_seconds": 412,
"five_hour": { "before": 71, "after": 78.5, "delta_pct": 7.5 },
"seven_day": { "before": 44, "after": 45, "delta_pct": 1 }
}cache_stats
Real prompt-cache hit rate from Claude Code's session log.
Input
Field | Type | Description |
|
| Project working directory. Defaults to most recently modified project log. |
|
| Recent assistant messages to analyze. Default 20. |
Output
{
"session_log": "/.../553db191-....jsonl",
"messages_analyzed": 20,
"cache_hit_rate_pct": 96.4,
"tokens": { "cache_read": 1564240, "cache_creation": 12810, "fresh_input": 38, "output": 6210 },
"warning": null
}A warning appears if hit rate <40%, which usually means the system prompt or tool list changed mid-session.
Auto-inject usage into every prompt
To make the model always see your current usage without calling a tool,
register a UserPromptSubmit hook. Save this as ~/.claude/hooks/usage_status.js:
#!/usr/bin/env node
const fs = require("fs"), os = require("os"), path = require("path");
(async () => {
try {
const c = JSON.parse(fs.readFileSync(path.join(os.homedir(), ".claude/.credentials.json"), "utf8"));
const t = c?.claudeAiOauth?.accessToken;
if (!t || (c.claudeAiOauth.expiresAt && c.claudeAiOauth.expiresAt < Date.now())) return;
const ctrl = new AbortController(); setTimeout(() => ctrl.abort(), 4000);
const r = await fetch("https://api.anthropic.com/api/oauth/usage", {
headers: {
Authorization: `Bearer ${t}`,
"Content-Type": "application/json",
"anthropic-beta": "oauth-2025-04-20",
"x-app": "vscode",
},
signal: ctrl.signal,
});
if (!r.ok) return;
const u = await r.json();
const pct = b => b?.utilization != null ? `${b.utilization.toFixed(0)}%` : "—";
process.stdout.write(`[claude-usage] session(5h): ${pct(u.five_hour)} | weekly(7d): ${pct(u.seven_day)}\n`);
// Adaptive output compression — hotter session = terser response.
const hot = Math.max(u.five_hour?.utilization ?? 0, u.seven_day?.utilization ?? 0);
let d = null;
if (hot >= 95) d = "ONE-LINE ANSWERS ONLY. Code or value, no prose.";
else if (hot >= 80) d = "MINIMUM TOKENS. Code over prose. No preamble, no summary.";
else if (hot >= 60) d = "Respond tersely. Drop filler, hedging, pleasantries.";
if (d) process.stdout.write(`[claude-usage-directive] ${d}\n`);
} catch {}
})();The [claude-usage-directive] line is an adaptive output-compression
hint — it tells the model to write tighter responses when your session is
hot, and stay normal when it's cool. Add this rule to your CLAUDE.md so the
model treats it as binding:
When a
[claude-usage-directive]line appears in your context, treat it as a binding style override for the turn — drop filler, shorten explanation, prefer code over prose to the level it specifies.
Then in ~/.claude/settings.json:
{
"hooks": {
"UserPromptSubmit": [
{ "hooks": [{ "type": "command", "command": "node \"$HOME/.claude/hooks/usage_status.js\"", "timeout": 5 }] }
]
}
}The hook fails silently if the token is missing or the endpoint is down — it will never block your prompt. Output is injected as additional context for the next assistant turn.
Activating the protocol
Models won't call optional tools without instruction. You have two options:
Global (recommended) — ~/.claude/CLAUDE.md
Paste the protocol below into ~/.claude/CLAUDE.md (Claude Code's user-level
memory file). It's then loaded into every project automatically — you only
write it once, and the model uses the tools across all your repos.
Per-project — <repo>/CLAUDE.md
If you only want the protocol in specific projects, paste it into the
project's CLAUDE.md instead.
The protocol
You have access to the `token-saver` MCP server with five tools:
`usage_status`, `usage_forecast`, `should_proceed`, `usage_delta`,
`cache_stats`. They expose real Claude.ai subscription utilization.
You MUST follow this protocol:
1. Before producing a long response or doing a large file/codebase read,
call `should_proceed` with an honest `task_size` ("small" / "medium" /
"large" / "huge"). If `decision: "downgrade"`, switch to a shorter
answer or recommend Haiku. If `decision: "abort"`, refuse and tell the
user to wait for the reset (quote `resets_at`).
2. For multi-step tasks, call `usage_delta` with `action: "mark"` at the
start and `action: "measure"` at the end. Quote the real delta to the
user (e.g. "this task burned 7.5% of your 5h session").
3. When the user asks how much they have left, when it resets, or "am I
close to the cap" — call `usage_status` (current) or `usage_forecast`
(with ETA).
4. Every ~10–20 turns call `cache_stats`. If `cache_hit_rate_pct < 40` or
a `warning` is set, surface it to the user — something invalidated the
prompt cache and they're paying full input on every turn.
5. If a tool returns "OAuth token expired", tell the user to run
`claude login` and proceed without usage gating for this turn.
6. If a `[claude-usage]` line in your context shows `session(5h) >= 80%`,
mention it before starting the task. Don't silently proceed into a
large task on a hot session.
Treat these calls as mandatory infrastructure, not optional helpers.Architecture
src/
├── index.ts # stdio entrypoint
├── server.ts # tool registration (McpServer)
├── tools/
│ ├── usageStatus.ts # live /api/oauth/usage call + history append
│ ├── usageForecast.ts # burn-rate + ETA from history
│ ├── shouldProceed.ts # gating decision: proceed/downgrade/abort
│ ├── usageDelta.ts # mark/measure baseline diff
│ └── cacheStats.ts # parses ~/.claude/projects/*.jsonl for cache hit rate
└── utils/
├── anthropicUsage.ts # OAuth token reader + /api/oauth/usage fetch
└── history.ts # append/read ~/.mcp-token-saver/usage_history.jsonlStack: Node ≥18, TypeScript strict, ESM, @modelcontextprotocol/sdk, zod for input schemas.
State files (all under ~/.mcp-token-saver/, override with env vars):
usage_history.jsonl— append-only snapshot log (MCP_TOKEN_SAVER_HISTORY)delta_mark.json— current baseline forusage_delta(MCP_TOKEN_SAVER_DELTA_MARK)
Development
npm run dev # tsc --watch
npm test # vitest run
npm run inspector # launch MCP inspector against local buildSmoke-test via raw stdio:
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"smoke","version":"0"}}}' \
'{"jsonrpc":"2.0","method":"notifications/initialized"}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
| node dist/index.jsFAQ
Is /api/oauth/usage an official Anthropic API?
No. It's the same endpoint Claude Code's IDE sidebar uses internally
(anthropic-beta: oauth-2025-04-20). Not documented, may change without notice.
Does it send my code anywhere?
No. The only outbound call is to api.anthropic.com/api/oauth/usage with your
own OAuth token.
Can the model actually use these tools without me prompting?
Only if your CLAUDE.md (or system prompt) explicitly orders it to — see
Activating the protocol. Optional helpers get ignored.
What if my claude login token expires?
The tools return { "error": "OAuth token expired — run 'claude login'." }.
Re-run claude login to refresh.
v0.1 had estimate_tokens / optimize_context / check_budget — where did they go?
v0.2 dropped them. They were estimates and a fake local-USD counter that didn't
correspond to your real subscription. The new tools use real Anthropic numbers
instead. Pin to mcp-token-saver@0.1.x if you need the old behavior.
License
MIT © 2026
Available Tools
5 toolscache_statsA
Compute Anthropic prompt cache hit rate from the latest Claude Code session log. Low hit rate signals wasted tokens — usually caused by reordering tools or system prompt mid-session.
| Name | Required | Description | Default |
|---|---|---|---|
| project_dir | No | Project working directory. Defaults to process.cwd() of the MCP server. | |
| last_n | No | Number of recent assistant messages to consider. Default 20. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that it reads the latest session log and interprets the hit rate, which is sufficient for a compute-only tool. It does not mention side effects or error conditions, but none are expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action, and no extraneous words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the purpose and signal interpretation, but does not specify the output format (e.g., percentage, numeric value) or how 'latest' is determined. With no output schema, this leaves a gap for an agent to know what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond what the schema already provides for the two parameters. Description does not elaborate on project_dir or last_n.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool computes Anthropic prompt cache hit rate from Claude Code session logs, with a specific verb and resource. It distinguishes from sibling tools which focus on other usage metrics (proceed, delta, forecast, status).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives context on when low hit rate indicates wasted tokens, implying use for efficiency analysis. However, it does not explicitly state when to use this tool versus alternatives, or provide exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
should_proceedA
Decide whether to proceed with a task given current usage. Returns proceed/downgrade/abort. Call BEFORE producing large responses, doing huge file reads, or starting expensive operations.
| Name | Required | Description | Default |
|---|---|---|---|
| task_size | Yes | Rough size of the planned response. small ~<500 out tokens, medium ~2k, large ~8k, huge >8k or large file reads. | |
| description | No | Free-text task description, only used for the explanation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It discloses that the tool returns 'proceed/downgrade/abort', but does not explain the criteria for each outcome (e.g., based on current usage thresholds). This is adequate but could be more explicit about the decision logic.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose and return values, followed by usage timing. Every sentence earns its place with zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two parameters, no output schema, and no annotations, the description covers the essentials: purpose, return values, and when to use. It could include a brief note about the decision mechanism or an example, but it is largely complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the schema already thoroughly documenting both parameters (task_size enum values with token estimates, description as free-text). The main description adds no additional parameter meaning beyond 'Call BEFORE...', which is usage, not parameter semantics. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Decide whether to proceed with a task given current usage. Returns proceed/downgrade/abort.' It identifies the specific verb 'decide' and the resource 'proceed/downgrade/abort', making it distinct from sibling tools which are informational (cache_stats, usage_delta, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists when to use the tool: 'Call BEFORE producing large responses, doing huge file reads, or starting expensive operations.' This provides clear context and implies when not to use (small tasks), though it does not explicitly exclude or name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usage_deltaA
Track real cost of a single task. action='mark' saves baseline, action='measure' returns delta in % of session/weekly used. Replaces theoretical cost estimates with real ones.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | 'mark' saves a snapshot as the baseline. 'measure' returns the delta since the last mark. | |
| label | No | Optional label for the marked baseline. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries burden. It explains the two actions but doesn't disclose persistence of baseline, side effects (e.g., overwrite), or rate limits. Some transparency but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. Efficiently conveys action and purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema, no annotations), the description covers the main behavior. Missing output format and error cases, but adequate for a basic tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both action and label. Description adds no new meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it tracks real cost of a single task, with specific actions 'mark' and 'measure', and distinguishes itself from theoretical estimates. This is specific and helpful.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs siblings like usage_forecast or usage_status. The mention of replacing theoretical costs implies use case but lacks clear context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usage_forecastA
Compute burn rate and ETA to 100% based on logged usage history. Tells you whether you'll hit the limit before the next reset.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It explains what the tool does but does not mention whether it is read-only, what data it reads, or any side effects. For a zero-parameter tool, this is acceptable but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with key information. Every word adds value, no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is fairly complete for a simple tool with no parameters and no output schema. It explains the core function and the decision it enables, though it could be more specific about terms like 'burn rate' or time horizon.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the schema is empty. The description adds meaning by explaining the computation and output without needing parameters, which is a baseline of 4 because the schema provides no additional info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('compute', 'tells you') and clearly identifies the resource ('usage history', 'limit'). It distinguishes from sibling tools like usage_status and usage_delta by focusing on forecasting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives like usage_status or usage_delta. However, the purpose implies it is for future projections, so usage is implied but not clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usage_statusA
Fetch real-time Claude.ai subscription usage (5h session and 7d weekly utilization, reset times, extra credits) from the same endpoint Claude Code's IDE bar uses. Reads OAuth token from ~/.claude/.credentials.json. Auto-logs to history.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses auth behavior (reads OAuth token), logging behavior (auto-logs to history), and data source (same endpoint as IDE bar), but does not mention read-only nature, rate limits, or potential side effects beyond logging.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise at two sentences, each adding essential information: purpose with specific data types, and technical details (auth source, logging). No redundant or vague phrases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and low complexity, the description adequately explains return values (session, weekly usage, reset times, extra credits) and covers auth and logging. It lacks mention of error conditions or prerequisites beyond the token file, but is otherwise complete for a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and 100% schema description coverage, so baseline is 4. The description adds context by detailing the returned data types and auth mechanism, going beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches real-time Claude.ai subscription usage, specifies the data types (5h session, 7d weekly utilization, reset times, extra credits), and distinguishes itself from sibling tools like usage_delta and usage_forecast by referencing the same endpoint as Claude Code's IDE bar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions reading OAuth token and auto-logging to history, providing some context on setup and side effects, but does not explicitly compare with sibling tools or state when to use vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: cache_stats analyzes cache hit rates, should_proceed makes decisions, usage_delta tracks task costs, usage_forecast predicts limits, and usage_status provides real-time data. No two tools have overlapping functionality.
Three tools follow a 'usage_' prefix pattern (usage_delta, usage_forecast, usage_status), but cache_stats and should_proceed break the pattern. The mix of noun_noun and verb_verb naming creates inconsistency.
Five tools is well-scoped for the token management domain. Each tool serves a necessary function without redundancy or bloat.
The tool set covers all key aspects of token saving: cache analysis, real-time status, forecasting, task cost tracking, and decision guidance. No obvious gaps for the stated purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Exact Claude API cost calc with real cache economics, plus a tiktoken-misuse scanner.
Track, analyze, and act on your streaming and SaaS subscriptions from any AI agent.
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Budget & cost control for AI agents — per-agent spend caps + rate limits before each call.
Related MCP Servers
- FlicenseBqualityNot gradedmaintenanceProvides comprehensive telemetry and usage analytics for Claude Code sessions, including token usage tracking, cost monitoring, and tool usage patterns. Enables users to monitor their Claude usage with detailed metrics, warnings, and trend analysis.12
- FlicenseNot gradedqualityNot gradedmaintenanceProvides intelligent analysis of token usage patterns and optimization recommendations to improve efficiency and reduce costs in Claude Code sessions. Offers real-time analysis, cost metrics, and actionable insights for better context window and tool usage optimization.3
- AlicenseAqualityFmaintenanceAI coding usage analytics — track spend, model usage, and costs across Cursor and Claude Code sessions.17428MIT
- AlicenseAqualityNot gradedmaintenanceProvides real-time visibility into Claude Pro and Max subscription usage limits directly within Claude Code by utilizing local OAuth tokens. It enables users to monitor session and weekly usage across different models and receive alerts regarding rate-limiting status.4
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Talap-creator/mcp-token-saver'
If you have feedback or need assistance with the MCP directory API, please join our Discord server