Skip to main content
Glama
anchetadev

AI Impact MCP

by anchetadev

👁 Mata — see your AI footprint

An MCP server that estimates the environmental footprint of your AI use — energy (kWh), miles driven in a gas car, water used for cooling, and CO₂ — plus a prompt-efficiency coach. It works with any AI client (Claude, Codex, others) because it measures token usage, not a specific vendor.

Mata is Tagalog for eye — in the spirit of seeing what's there.

The impact math is a TypeScript port of the EcoLogits life-cycle methodology (CC BY-SA 4.0). See METHODOLOGY.md for sources and attribution.


What we're building (explained simply)

The problem: Every time you talk to an AI like Claude, a powerful computer in a big warehouse (a "data center") does the thinking. That computer burns electricity. Making electricity usually creates pollution (carbon), and the computer gets hot, so the data center uses water to cool it down. Most people have no idea how much — it's invisible.

Mata makes it visible. Like a fitness tracker for your AI use: it counts the AI's words and turns them into:

  • Energy used (in kWh, like your electric bill)

  • 🚗 Miles driven in a gas car that would pollute the same amount

  • 💧 Water used to cool the computers

  • 🔤 Words in and out (tokens)

Bonus — a prompt coach. If you ask the AI to "make a thing" then correct it five times, that wasted energy. Mata scores how efficiently you set up your work (0–100) and gives tips to get more done in fewer prompts.

Why it's different: it doesn't care which AI you use — it watches the words, so it works across Claude, Codex, and more. Everything stays on your machine, and it stores word-counts, never your chats.

Related MCP server: Regen Compute

The tech stack (explained simply)

A kitchen that turns raw ingredients (AI word-counts) into a finished meal (the impact numbers):

Part

What it is

Kitchen analogy

TypeScript

The language it's written in

The language the cooks speak

MCP

The standard plug that lets AI apps use the tool

The outlet every appliance fits

Impact engine (EcoLogits port)

The math: words → energy/carbon/water

The recipe, from expert scientists

Data files

Facts about each model + each country's grid

The cookbook of ingredient facts

SQLite (built into Node)

Local database of your usage

The fridge

Collectors

Watch your AI tools and record usage

The eyes 👁

Node.js

Runs all of it

The stove

Runs without AI (overhead ≈ 0)

A tool that measures AI's footprint shouldn't burn AI to do it. Mata's entire pipeline — capturing usage, doing the math, scoring efficiency, drawing the dashboard — is deterministic. Nothing in the data path calls an LLM.

Part

What it does

AI calls?

Impact engine, reporting, store

Arithmetic + lookup tables

None

Efficiency scorer

Regex + heuristics

None

Log tailer / scan_logs

JSONL parsing

None

Proxy collector

Relays your traffic, reads usage off it

None of its own

Web estimator

gpt-tokenizer (a local, offline token counter — not a model)

None

Dashboard

Plain HTML + SVG

None

Runtime dependencies are just @modelcontextprotocol/sdk, gpt-tokenizer, and zod — none of which make AI or network calls.

Run it with zero AI in the loop. The three standalone binaries need no LLM host:

ai-impact-tail        # watch Claude Code logs and record usage
ai-impact-proxy       # capture exact usage from API clients
ai-impact-dashboard   # render the HTML dashboard

One honest caveat: if you talk to Mata through an AI assistant ("show me my report"), that chat turn is the host's LLM call — Mata's own tools add nothing. Fittingly, Mata would measure that turn too. 🙂


Installation

Requires Node ≥ 22.5 (uses the built-in node:sqlite — no native build step).

git clone https://github.com/anchetadev/mata.git
cd mata
npm install
npm run build
npm test          # 36 tests

Add to an MCP host

Claude Desktop (claude_desktop_config.json) or Claude Code (.mcp.json / claude mcp add):

{
  "mcpServers": {
    "mata": { "command": "node", "args": ["/absolute/path/to/mata/dist/server.js"] }
  }
}

The same dist/server.js works in any MCP-compatible host (Cursor, Cline, etc.).

Optional collectors (run alongside)

node dist/tail-server.js       # watch Claude Code logs, record EXACT usage live
node dist/proxy-server.js      # local proxy: capture EXACT usage from API clients
node dist/dashboard-server.js  # write a static HTML dashboard file
node dist/serve-server.js      # live dashboard at http://localhost:8799 (auto-updates)

For the proxy, point a client at it:

ANTHROPIC_BASE_URL=http://localhost:8788   # Claude Code, Anthropic SDK
OPENAI_BASE_URL=http://localhost:8788/v1   # Codex, OpenAI SDK

Quick start

Already installed and built? Two commands get you from zero to seeing your footprint:

node dist/tail-server.js     # backfills your Claude Code history, then watches live
node dist/serve-server.js    # opens a live dashboard at http://localhost:8799

The first reads your existing ~/.claude logs (token counts only — never your messages) and keeps recording new activity. The second opens your browser to an always-current dashboard. That's ~90% of the value.

Prefer to drive it from your AI host? If you added Mata as an MCP server, just say:

  • "Scan my Claude Code logs" → backfill your history

  • "Serve my live dashboard" → get a live localhost URL

  • "Show my AI impact this week" → a text report

  • "How efficient were my last 5 sessions?" → prompt coaching

Want to capture non-Claude-Code tools too? Run the proxy and point a client at it:

node dist/proxy-server.js    # then set ANTHROPIC_BASE_URL / OPENAI_BASE_URL=http://localhost:8788

Stopping a server. tail, serve, and proxy run in the foreground — press Ctrl+C in their terminal to stop them cleanly. If you started one in the background, stop it by its port (8799 = dashboard, 8788 = proxy):

# Windows (PowerShell)
Get-Process -Id (Get-NetTCPConnection -LocalPort 8799).OwningProcess | Stop-Process

# macOS / Linux
kill $(lsof -ti:8799)

If you installed globally (npm link or npm i -g), use the bare commands instead — ai-impact-tail, ai-impact-serve, ai-impact-proxy.


Usage

Once connected, ask your host things like "estimate the impact of a 2000-token reply from claude-opus-4-5" or "show my AI impact report for this week."

Tools

Tool

What it does

Try saying

estimate_impact

Impact of one request from token counts

"Estimate impact of 8k in / 2k out on gpt-4o"

log_usage

Manually record a usage event

"Log 500 output tokens from claude-haiku-4-5"

report

Totals for today/week/month/all, by model

"Show my AI impact this week"

scan_logs

Backfill exact usage from Claude Code logs

"Scan my Claude Code logs"

analyze_efficiency

Coach your recent real sessions

"How efficient were my last 5 sessions?"

efficiency_score

Score a conversation you pass in

"Score the efficiency of this chat"

record_web_chat

Record estimated usage for claude.ai chat

"Record this web conversation's impact"

generate_dashboard

Build a standalone HTML dashboard file

"Generate my impact dashboard"

serve_dashboard

Start a live, always-current dashboard server

"Serve my live dashboard"

set_scenario

conservative / midpoint / high estimate

"Set the scenario to conservative"

Resource: impact://methodology — how the numbers are derived.

CLI binaries

Command

Purpose

ai-impact-mcp

The MCP server (stdio)

ai-impact-tail

Backfill + watch Claude Code logs

ai-impact-proxy

Local LLM proxy collector

ai-impact-dashboard

Generate a static HTML dashboard file

ai-impact-serve

Live, always-current dashboard web server (auto-opens browser)


How invasive is it?

Short answer: as little as possible, and entirely on your machine. Mata stores token counts and metadata — never the content of your messages — in a local SQLite file at ~/.ai-impact/usage.db. No telemetry, no network calls except the proxy forwarding to the provider you chose.

Each capture method is opt-in and differs in what it can see:

Method

What it reads

What it does NOT do

Fidelity

Claude Code tailer (scan_logs, ai-impact-tail)

~/.claude/projects/*.jsonl — model, token counts, timestamps

Store your prompts/replies; send anything anywhere

Exact

Local proxy (ai-impact-proxy)

Usage from API traffic you route through it

Intercept anything you don't point at it; alter responses

Exact

Efficiency coach (analyze_efficiency)

Transcript text, on-demand, to detect rework/clarifications

Persist the text — it's read, scored, and discarded

Exact tokens

Web estimator (record_web_chat)

Conversation text you/the host pass in

Auto-read your browser; access anything unprompted

Estimated (re-tokenized)

What it cannot see: the Claude desktop/web apps talk to Anthropic directly, so Mata can't passively read them — the web estimator only sees what you choose to hand it. The proxy only sees clients you explicitly repoint.

Every record is tagged exact or estimated, and estimates use a public BPE tokenizer as a stand-in (Claude's isn't public), so they carry ~±10% error.


Accuracy & honesty

These are order-of-magnitude estimates, good for "which of my habits cost the most" — not carbon accounting. Closed-model parameters are inferred; consumer surfaces are re-tokenized. The tool shows its assumptions in every result and ships full sources in METHODOLOGY.md.

License

Dual-licensed (see LICENSE and NOTICE):

  • Original code (server, collectors, scorer, dashboard) — MIT.

  • Impact engine + vendored data (ported from EcoLogits) — CC BY-SA 4.0 (attribution + share-alike).

Publishing guidance for your own fork: PUBLISHING.md.

Available Tools

9 tools
analyze_efficiencyAnalyze prompt efficiency of recent sessionsA

Run the efficiency coach over your most recent Claude Code sessions (reads transcript text on-demand, never stores it). Returns per-session scores, an average, wasted-rework tokens, and your top recurring tips.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many recent sessions to analyze.
dirNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that data is read on-demand and never stored, which is important for privacy. No annotations provided, so description carries full burden. Lacks details on authentication or rate limits but covers key behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences: first states action and key behavioral note, second lists return values. No unnecessary words, front-loaded with important information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Describes purpose, behavior, and return values adequately for a simple tool, but misses documenting the 'dir' parameter and does not clarify how sessions are selected or what 'recent' means relative to limit. With no output schema, return values are listed but not detailed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (limit has description, dir lacks it). Description does not explain the 'dir' parameter, leaving ambiguity. It adds context for limit through 'recent sessions' but insufficient for overall parameter clarity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool runs an efficiency coach over recent Claude Code sessions, reads transcript text on-demand without storing, and returns specific metrics. Distinguishes from siblings by focusing on session analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for analyzing recent sessions with a limit parameter, but does not explicitly state when not to use or compare with siblings like efficiency_score or estimate_impact.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

efficiency_scorePrompt-efficiency scoreA

Score how efficiently a conversation was set up (fewest prompts/rework). Pass the conversation turns. Returns a 0–100 score, grade, and actionable tips.

ParametersJSON Schema
NameRequiredDescriptionDefault
turnsYesConversation turns in order.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses the output format (score, grade, actionable tips) but does not mention potential side effects, mutability, permissions, or error behavior. The transparency is adequate 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no redundant information. Every word contributes to explaining the tool's function, input, and output. It is appropriately sized and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one required parameter, no output schema), the description covers the core behavior adequately: it returns a score, grade, and tips. However, it lacks context on how the grade is interpreted or any scenario guidance relative to siblings, which would enhance completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already defines the 'turns' parameter with properties. The description merely restates that the tool takes conversation turns, adding no new semantic detail beyond the schema. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'scores' the efficiency of conversation setup, specifying the input (conversation turns) and output (score, grade, tips). It is specific enough to differentiate from siblings like 'analyze_efficiency', though that sibling might have a similar purpose without further details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes the instruction 'Pass the conversation turns', which provides basic usage guidance. However, it does not elaborate on when to use this tool versus alternatives (e.g., when to use 'analyze_efficiency' instead) or mention any prerequisites or limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estimate_impactEstimate AI environmental impactA

Estimate the environmental impact (energy kWh, miles driven in a gas car, water for cooling, CO2e) for a single AI request given its token counts. Uses the EcoLogits life-cycle methodology.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesModel id, e.g. "claude-opus-4-5", "gpt-4o".
input_tokensNo
output_tokensYesOutput/completion tokens — the main energy driver.
scenarioNoConfidence scenario; defaults to the configured one.
zoneNoElectricity zone override (ISO3 / WOR), e.g. FRA, USA.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral traits. It discloses the methodology (EcoLogits) but does not explicitly state read-only nature, side effects, or limitations. The word 'estimate' implies computation without mutation, which is helpful but not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loading the output and input in the first sentence and methodology in the second. Every sentence is substantive with no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description mentions the key output metrics (kWh, miles, water, CO2e), which is important context. However, it does not specify the return format, structure, or error handling. For a tool with 5 parameters, it is fairly complete but leaves minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 80%, so baseline is 3. The description adds minimal semantic value beyond the schema, only mentioning 'token counts' generally. It does not elaborate on model, scenario, or zone parameters, which are already described in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool estimates environmental impact (energy kWh, miles, water, CO2e) for a single AI request given token counts. It specifies the methodology (EcoLogits). However, it does not explicitly differentiate from siblings like analyze_efficiency or efficiency_score, which may have overlapping purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for estimating impact of a single request based on token counts, but does not provide explicit guidance on when to use vs alternatives. There are no when-not or exclusion criteria mentioned, leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_dashboardGenerate visual dashboardB

Build a standalone HTML dashboard (charts of energy/carbon/water over time and by model) from your recorded usage. Returns the file path to open in a browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoOutput .html path. Defaults to ~/.ai-impact/dashboard.html.
scenarioNo
daysNo

TDQS

B3.4/5.0
Behavior2/5

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 generates an HTML dashboard and returns a file path, but does not mention any side effects, authentication requirements, or whether it modifies state. Minimal behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, front-loaded with the core action and result. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 parameters, no annotations, and no output schema, the description covers the main function and output but misses preconditions (e.g., having recorded usage) and parameter details. It is minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% (only 'path' has description). The description does not explain the parameters beyond the implied output path. It does not clarify 'scenario' or 'days' meaning, leaving gaps for an agent to infer.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: building a standalone HTML dashboard from recorded usage data, and returns a file path. The verb 'Build' and resource 'dashboard' are specific, and it distinguishes itself from siblings like 'analyze_efficiency' or 'estimate_impact'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a visual dashboard is needed, but does not explicitly guide when to use this tool versus alternatives (e.g., for efficiency analysis vs. impact estimation). No when-not-to-use or alternative tools mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

log_usageRecord an AI usage eventB

Record one AI request's token usage into the local store so it shows up in reports. Use this to manually log usage from any client.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYes
input_tokensNo
output_tokensNo
cached_input_tokensNo
sourceNoWhere it came from: "claude-code", "codex", "web", "manual"...manual
session_idNo
fidelityNoexact

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It only states the action and effect (record into local store), but does not disclose potential side effects like overwriting or idempotency beyond what is obvious.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with key information. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 7 parameters, no output schema, and low schema coverage, the description is too minimal. It does not guide on parameter usage, constraints, or return values, leaving significant gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 14%, and the description adds no parameter-specific meaning. For example, 'model' is required but unexplained; defaults like input_tokens=0 are unaddressed. The description fails to compensate for low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'record' and resource 'token usage', with the purpose of making it show up in reports. It distinguishes from siblings by mentioning manual logging.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'Use this to manually log usage from any client', indicating when to use the tool. Does not provide exclusions or alternatives, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record_web_chatRecord consumer chat (estimated)A

Record ESTIMATED usage for a Claude desktop/web conversation that doesn't expose token counts. Preferred: pass structured turns (the host extracts them from the page). Fallback: pass raw page_text and it will be parsed best-effort. Tokens are estimated with a BPE proxy and tagged 'estimated'.

ParametersJSON Schema
NameRequiredDescriptionDefault
turnsNoConversation turns in order (reliable input).
page_textNoRaw flattened transcript text (fallback if turns unavailable).
modelNoModel the chat used; defaults to a Sonnet-class model.
conversation_idNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description does well by disclosing token estimation via BPE proxy, the tagging as 'estimated', the two input modes, and the model default. It does not mention failure behavior or side effects, but for a logging tool this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose, no wasted words. Every sentence adds value (purpose, preferred input, fallback, estimation detail).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (estimation, two input modes, optional params) and no output schema, the description covers the key aspects. Minor gap: behavior when both turns and page_text are provided is unspecified, and conversation_id is not explained. Otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75% (3 of 4 params described), and the description adds significant meaning by explaining the two input methods (preferred vs fallback) and estimation behavior. The conversation_id param lacks description in both schema and description, but overall value is above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it records estimated usage for Claude web chats, distinguishes between structured turns and fallback page_text input, and mentions token estimation. This is specific and distinct from sibling tools that analyze or score data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context on when to use (for conversations without token counts) and gives a preferred method with a fallback. However, no explicit when-not-to-use or alternatives are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reportAI impact reportC

Summarize recorded AI usage and its environmental impact over a period (today, week, month, all), broken down by model.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoweek
scenarioNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavioral traits. It mentions 'recorded AI usage' suggesting read-only, but does not state whether it modifies data, requires permissions, or has rate limits. Minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, efficient and front-loaded with the main action. No redundant information, but could benefit from clearer structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema; description does not specify return format or content beyond 'breakdown by model'. Given two parameters and no sibling differentiation, the description is insufficient for an agent to fully understand the tool's output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description adds no meaning beyond the schema for 'period' (already enumerated) and fails to explain the 'scenario' parameter (conservative, midpoint, high) which is critical for understanding impact calculations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool summarizes recorded AI usage and environmental impact broken down by model, which is a specific verb+resource. However, it does not differentiate from siblings like 'estimate_impact' which also deals with impact.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'estimate_impact' or 'scan_logs'. The description implies it's for summarizing recorded data, but lacks explicit context for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scan_logsScan Claude Code logsA

Backfill exact AI usage from Claude Code's local session transcripts (~/.claude/projects). Reads only token counts + metadata, never message content. Idempotent — safe to run repeatedly.

ParametersJSON Schema
NameRequiredDescriptionDefault
dirNoOverride the Claude Code projects directory.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully discloses behavior: it reads token counts and metadata, never message content, is idempotent, and safe to run repeatedly. It could briefly mention permission requirements (e.g., read access to ~/.claude/projects), but overall good transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no wasted words: first sentence states purpose, second adds scope and constraints, third confirms idempotency. Information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a simple tool with 1 optional parameter and no output schema, the description covers purpose, input, behavioral constraints, and safety. Sibling tools are sufficiently distinct, so no further context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for a single optional parameter 'dir'. The description adds the default directory path (~/.claude/projects) and the meaning 'override the Claude Code projects directory', providing more context than the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'Backfill', the resource 'exact AI usage from Claude Code's local session transcripts', and scope 'reads only token counts + metadata, never message content'. It differentiates from siblings like analyze_efficiency by focusing on raw log scanning rather than analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description explains when to use (backfill exact AI usage) and emphasizes it is idempotent and safe to run repeatedly. It specifies what it reads (token counts + metadata) and crucially what it does not read (message content), but does not explicitly mention when not to use or alternatives among sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_scenarioSet default scenarioA

Set the default confidence scenario for future estimates. conservative = lowest (min active params), midpoint = mean, high = max.

ParametersJSON Schema
NameRequiredDescriptionDefault
scenarioYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explains the effect on future estimates and defines each option, but does not disclose scope (e.g., session persistence), side effects, or whether it overwrites previous settings. No annotations are present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff, critical details front-loaded. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple setter with one parameter and no output schema, the description is largely complete. It explains the effect and options, though it could mention the return value or confirmation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning to the enum parameter by explicitly defining each value ('conservative = lowest...', etc.), compensating for zero schema description coverage. The definitions are clear and concise.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool sets the default confidence scenario for future estimates, with a clear verb ('Set') and resource ('default scenario'). It distinguishes itself from sibling tools, which focus on analysis, scoring, or logging.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage before making estimates, but lacks explicit guidance on when to use or avoid this tool. No alternatives are mentioned, though no sibling directly conflicts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 9 tool updatesv0.1.0
    • First observedanalyze_efficiency
    • First observedefficiency_score
    • First observedestimate_impact
    • First observedgenerate_dashboard
    • First observedlog_usage
    • First observedrecord_web_chat
    • First observedreport
    • First observedscan_logs
    • First observedset_scenario

TDQS

A3.6/5.0
Disambiguation4/5

Most tools have clearly distinct purposes (e.g., estimate_impact vs. log_usage), but some overlap exists: efficiency_score and analyze_efficiency both address efficiency, and record_web_chat and log_usage both handle logging. Descriptions mitigate confusion.

Naming Consistency4/5

Names consistently use lowercase with underscores (e.g., analyze_efficiency, set_scenario). Most follow a verb_noun pattern, but efficiency_score is noun_verb, and verbs vary (analyze, estimate, log, scan). Minor inconsistency.

Tool Count5/5

9 tools is well-scoped for tracking AI usage, estimating environmental impact, and reporting. Each tool has a clear role, with no obvious bloat or deficiency.

Completeness4/5

Covers core logging (manual, web, session scans), estimation, efficiency analysis, reporting, and scenarios. Missing CRUD for logged records (e.g., delete or edit) and export, but primary workflows are present.

Maintenance

ActivityStale
ResponsivenessNo issues

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

Related MCP Servers

Latest Blog Posts

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/anchetadev/mata'

If you have feedback or need assistance with the MCP directory API, please join our Discord server