Skip to main content
Glama
JacobBhatt12

ATR (Automation for Token Reduction)

by JacobBhatt12

ATR: Automation for Token Reduction

ATR makes your AI use fewer tokens when it works with tools. Fewer tokens means lower bills and fewer "usage limit reached" messages.

It works with Claude Code, Codex, Claude Desktop, Cursor, Windsurf, claude.ai and ChatGPT. It's free and runs on your own computer.

ATR demo: 1,000 GitHub issues go from 329,732 tokens to 1,442, and the tool list from 12,376 to 1,438

The problem

When an AI uses tools (GitHub, a browser, a database, your test runner), two things waste tokens:

  1. Every tool's instructions are sent on every message, even tools the AI never uses. Ten MCP servers can mean 10,000+ tokens before you've typed anything.

  2. Tool results are huge. A list of GitHub issues, a web page or a test run can be tens of thousands of tokens, and all of it goes into the chat.

Related MCP server: Refract

What ATR does

ATR sits between your AI app and your tools:

  • It hides the tool list. The AI sees a few small ATR tools and searches for the tool it needs when it needs it.

  • It shrinks results. Before the AI sees a result, ATR removes the noise and keeps what matters. A failing test run keeps the failures and drops the passing tests. A web page keeps its text and links and drops the layout.

  • Nothing is lost. When ATR cuts something, it keeps the full result, and the AI can ask for any part of it.

  Your AI app (Claude Code, Codex, Claude Desktop, …)
          │  sees a few small ATR tools instead of every tool
          ▼
        ATR  ← finds the right tool, runs it, shrinks the result
          │
          ▼
  Your MCP servers (GitHub, Playwright, Postgres, Slack, …)

Get started

You need Python 3.11 or newer.

pip install atr-mcp
atr setup

atr setup finds the AI apps on your computer, shows you what it will change, and asks first. Then it:

  1. moves your MCP servers behind ATR, and

  2. adds ATR to each app.

Restart your apps and you're done.

Command

What it does

atr setup --dry-run

Shows the plan without changing anything

atr setup --undo

Puts every app back exactly how it was

pip install --upgrade atr-mcp

Updates ATR

Every file atr setup changes also gets a backup copy (.atr-backup).

Just want to try it?

The demo connects a fake server with 50 tools (GitHub, Slack, logs, a database). Nothing leaves your computer.

claude mcp add atr -- atr serve --demo        # Claude Code
codex mcp add atr -- atr serve --demo         # Codex

Ask your AI to "list the open GitHub issues", then "show ATR stats" to see how many tokens it saved.


How much it saves

Live tests

We gave AI agents the same browser task with and without ATR: open Hacker News, click "new", then open a GitHub issues page. Each setup ran 3 times, and every answer was correct.

Agent

Without ATR

With ATR

Claude Code

$0.237 per task, 13 turns

$0.110 per task, 10 turns (54% cheaper)

Codex

84k tokens (33k at full price)

134k tokens (18k at full price)

Codex is mixed: with ATR it sends about half as many full-price tokens, but more tokens overall.

Single results

What the AI receives, in tokens, measured with python -m benchmarks.bench_atr:

Result

Without ATR

With ATR

Saved

1,000 GitHub issues

429,203

879

99.8%

2,000-line server log

61,072

208

99.7%

git diff with a lockfile change

22,294

207

99.1%

Web page in a browser (Hacker News)

12,023

4,046

66%

50 tools' instructions, on every message

12,056

1,508

87.5%

pytest -v, 303 tests, 3 failing

6,685

675

90%

pip install, 60 packages

5,977

697

88%

In each case, the parts that matter are kept: errors, failing tests, changed code lines, page text and links.

When ATR helps, and when it doesn't

  • Helps most: you use MCP servers that return big results, like GitHub, browsers (Playwright), databases, logs or web pages.

  • Helps a little: plain coding in Claude Code or Codex with no MCP servers. Those apps already trim their own commands, so in our test ATR made no difference there.

  • Can't help: your chat history and the AI's own replies. An MCP server only sees tool calls, never the conversation.


ATR's tools

The AI uses these. You don't need to call them yourself.

For your MCP servers

Tool

What it does

atr_find_tools

Searches all your servers' tools and returns the few that fit the task

atr_read

Runs a tool that only reads, and shrinks the result

atr_call

Runs a tool that changes something (your app can ask you first)

atr_query

Reads more of a result that was cut, such as one page, one field or a search

For coding

Tool

Instead of

atr_repo_map

Opening files one by one to learn a project

atr_search_code

Pages of search results

atr_read_file

Reading a whole file to see one function. It also says "unchanged" if the AI reads the same part twice

atr_diff

A git diff full of lockfiles

atr_run

Thousands of lines of test or build output

atr_stats

Shows how many tokens ATR has saved


Safety

  • Secrets are never read, searched or shown, including .env files, private keys, cloud credentials, and files named like api_keys.json. This also applies to tools behind ATR and to atr_diff.

  • Reading and changing are separate. Tools that only read go through atr_read. Anything that changes something goes through atr_call, so your app can ask you before it runs. atr_run (shell commands) always asks.

  • Files stay in allowed folders. File tools only see the folders listed in your settings.


Using ATR in claude.ai or ChatGPT

These apps can only reach servers on the internet, so ATR needs a public link.

pip install "atr-mcp[http]"
atr serve --http                               # prints a link with a secret in it
tailscale funnel --bg 8789                     # a permanent public https link (or: cloudflared tunnel --url http://127.0.0.1:8789)

Add https://<your-link>/mcp/<secret> as a connector:

  • claude.ai: Settings → Connectors → Add custom connector (no sign-in)

  • ChatGPT: Settings → Apps & Connectors → developer mode → create a connector (no sign-in)

Keep the link private. Anyone who has it can use your tools. File reading and shell commands are off over the internet unless you turn them on with --read-files and --allow-run. To change the secret, delete ~/.atr/http_token.


Settings

atr setup writes these for you. You can also edit ~/.atr/config.json yourself:

{
  "servers": {                          // the MCP servers ATR runs for you
    "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"] }
  },
  "budget": 1500,                       // most tokens one result may use
  "level": 2,                           // 1 = keep almost everything, 3 = shrink hard
  "pin": ["github__create_issue"],      // tools to always show (skips the search step)
  "read_only": ["github__list_*"],      // tools that only read, if a server doesn't say so itself
  "read_roots": ["~"]                   // folders the file tools may open
}

More

No MCP at all? atr compress shrinks a file or your clipboard before you paste it into any chat:

atr compress dump.json --copy
pbpaste | atr compress --copy

Set up by hand: atr init writes the settings file, and atr snippet prints the entry to add to your app's MCP config.

"No module named 'atr'" on macOS: run chflags nohidden .venv*/lib/python*/site-packages/*.pth, or use the entry from atr snippet.

Limits:

  • Online servers that need a sign-in (OAuth) can't go behind ATR yet, so atr setup leaves them in your app.

  • ATR lowers what each message costs. It doesn't change your plan's limits.


For developers

git clone https://github.com/JacobBhatt12/atr && cd atr
pip install -e ".[dev]"
python -m pytest atr/tests -c /dev/null       # 44 tests
python -m benchmarks.bench_atr                # the savings table above

File

What's in it

atr/server.py

The MCP server your app talks to

atr/remote.py

The same server over the internet (atr serve --http)

atr/downstream.py

Talks to the MCP servers behind ATR

atr/compress.py

Shrinks results

atr/stash.py

Keeps full results for atr_query

atr/router.py

Tool search

atr/code.py

Coding tools

atr/setup.py

atr setup

Next up: remembering repeated tool calls so the same result isn't sent twice, sign-in support for online servers, and a small local model that summarizes long text when cutting would lose meaning.

License: MIT

Available Tools

10 tools
atr_callC
Destructive

Run a tool that changes something ([w] in atr_find_tools). Result is compressed.

NameRequiredDescriptionDefault
toolYes
budgetNoMax tokens for the result (default from config).
argumentsNo

TDQS

C2.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, so safety is covered structurally. The description adds the non-obvious fact that results are compressed (and that a token budget applies), but says nothing about irreversibility, confirmation needs, or what happens when the target tool fails.

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

Conciseness3/5

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

Two short sentences with no padding, but the cryptic bracketed notation and unexplained 'compressed' term trade clarity for brevity rather than earning it. Front-loading the mutation semantics is correct.

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?

For a destructive open-world dispatcher with a nested arguments object and no output schema, the description omits argument forwarding, error behavior, and compression/budget semantics. An agent cannot reliably call this without inspecting atr_find_tools or guessing.

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%, and only the budget parameter is documented in the schema. The description never explains that 'tool' expects a name from atr_find_tools or that the nested 'arguments' object is forwarded as the target tool's arguments — the single most important thing to know for this dispatcher.

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

Purpose3/5

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

The description states the tool dispatches another tool that mutates state, which distinguishes it from atr_read in principle. But 'Run a tool that changes something' is loose, and the '[w] in atr_find_tools' notation is unexplained jargon an agent must guess at.

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?

It hints that mutation targets come from atr_find_tools marked [w], but never states when to use this versus atr_read, atr_run, or atr_query. There are no explicit exclusions or decision criteria despite nine siblings.

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

atr_diffA
Read-only

What changed, compactly: git diff with 1 line of context, lockfiles/generated/binary files listed but not shown. Default: uncommitted changes. Use instead of git diff.

NameRequiredDescriptionDefault
refNoCompare with this commit/branch, e.g. main or HEAD~1.
fileNoOnly this file (path from the repo root).
pathNoFolder inside the repo (default: the project).
budgetNo
stagedNoOnly staged changes.

TDQS

A4.7/5.0
Behavior5/5

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

While annotations confirm safety (readOnlyHint: true), the description adds critical behavioral details beyond the structured data, such as its output format ('1 line of context') and specific filtering behavior for non-source files ('lockfiles/generated/binary files listed but not shown').

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 extremely concise and efficient. It manages to convey the core function, formatting constraints, and usage context in a single, punchy sentence.

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 the tool's function as a specialized git diff utility, the description is highly complete. It addresses both the functional behavior and the constraints (like context lines and file type filtering).

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?

With 80% schema coverage, the input parameters are mostly well-defined in the schema itself. The description focuses heavily on behavioral context (the diff output style and scope) rather than defining individual parameters.

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 defines the tool's purpose as performing a 'compact git diff'. It distinguishes itself by specifying formatting constraints (1 line of context) and explicitly stating its intended role (Use instead of `git diff`).

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

Usage Guidelines5/5

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

The description provides clear guidance on usage by defining the default state ('Default: uncommitted changes') and explicitly directing the user to replace the standard 'git diff' command with this tool.

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

atr_find_toolsA
Read-only

Find tools on the connected servers for a task. Returns compact signatures (* = required).

NameRequiredDescriptionDefault
kNoHow many tools (default 5).
queryYesWhat you want to do, in a few words.
detailNoAlso return the parameter schemas.

TDQS

A3.6/5.0
Behavior3/5

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

The annotations already establish that this is a non-destructive, read-only, non-open-world operation. The description adds scope (connected servers) and return format details (compact signatures with * marking required parameters), but does not cover rate limits, pagination, or other 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 short sentences with no wasted words, and the main purpose is front-loaded. The return-format note is compact and useful.

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 that the schema is fully documented and annotations cover safety, the description is nearly complete for this simple discovery tool. It could better explain how the tool relates to atr_call or what 'compact signatures' look like, but it gives enough context to invoke and interpret results.

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 100%, so the parameter semantics are adequately documented in the schema itself. The description does not add meaningful detail about query, k, or detail beyond what is already structured.

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 states a specific verb and resource: finding tools on connected servers for a task. It is clear enough to distinguish discovery from execution tools like atr_call, but it does not explicitly name or differentiate itself from any sibling.

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 phrase 'for a task' implies the discovery use case, but the description does not say when to use this instead of atr_call or other siblings. No explicit prerequisites, exclusions, or alternatives are provided.

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

atr_queryB
Read-only

Read part of a stashed result by ref. Data: path/where/fields/group_by. Text: search (regex).

NameRequiredDescriptionDefault
refYes
pathNoDotted path, e.g. data.items or items.*.user
limitNo
whereNoFilters: key=v, key!=v, key>n, key<n, key~regex
fieldsNo
offsetNo
searchNo
group_byNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description is consistent and adds that it reads 'part of a stashed result,' but it does not disclose behavior around invalid refs, pagination, or result size.

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?

The description is compact and front-loaded, with clear Data/Text labels. The fragmentary style is efficient but slightly cryptic, which keeps it from being a perfect 5 on 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?

For an eight-parameter tool with only 25% schema coverage and no output schema, the description is too thin. It omits pagination semantics (limit/offset), ref behavior, group_by details, and sibling differentiation from atr_read.

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 only 25%, so the description must compensate. It names five of eight parameters and categorizes them as data-oriented (path, where, fields, group_by) or text-oriented (search regex), but it leaves limit, offset, ref, and group_by semantics unexplained.

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 states a specific verb and resource: 'Read part of a stashed result by ref.' That is clear enough to distinguish it from generic read tools, but it does not explicitly differentiate it from the sibling atr_read, which likely also reads stashed results.

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 'Data: path/where/fields/group_by' and 'Text: search (regex)' labels imply how to choose parameters for structured vs. text queries. However, there is no explicit guidance on when to use this tool instead of atr_read or atr_search_code, and no exclusions are stated.

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

atr_readB
Read-only

Run a read-only tool ([r] in atr_find_tools). Result is compressed; big ones are stashed.

NameRequiredDescriptionDefault
toolYes
budgetNoMax tokens for the result (default from config).
argumentsNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavior — results are compressed and large ones are stashed — but leaves the critical follow-up unexplained: how or where an agent retrieves a stashed result.

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?

Two compact clauses with no filler, and the read-only constraint plus the atr_find_tools pointer come first. It is arguably over-terse given the tool's dispatch complexity, but nothing is wasted.

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 a nested 'arguments' object, a low parameter coverage, and no output schema, the description carries most of the burden and falls short. It never explains how arguments are forwarded, what the compressed result looks like, or how to unpack a stashed result, all of which an agent needs to use this dispatch tool correctly.

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 33%: only 'budget' is documented. The description adds no meaning for 'tool' (presumably a tool name from atr_find_tools) or for the nested 'arguments' object, which is almost certainly a pass-through payload to the target tool — a semantics gap with real invocation consequences.

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?

States a specific verb and resource: it runs a read-only tool (marked [r] in atr_find_tools), returning compressed results. This distinguishes it from atr_find_tools, but it never contrasts itself with atr_call, atr_query, or other siblings that an agent might pick instead.

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 parenthetical '([r] in atr_find_tools)' implies a discover-then-read workflow, but the description never states when to use atr_read versus atr_call (presumably for write tools) or atr_query. Usage is inferable from the sibling naming convention rather than stated.

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

atr_read_fileA
Read-only

Read part of a local file. Pass lines= (e.g. from a search hit) or search= to get only what you need; with just a path, big code files return an outline instead of the whole file.

NameRequiredDescriptionDefault
pathYes
freshNoSend the full text even if you read it before.
linesNoLine range, e.g. 120-180.
budgetNo
searchNoRegex: only matching lines, with line numbers.
contextNoLines around each search match (default 0).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish read-only, non-destructive, closed-world behavior. Beyond that, the description usefully discloses the non-obvious default that large code files may return an outline instead of full text when only a path is supplied.

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 tightly written sentences front-load the main action and key usage modes. There is no redundant restatement of annotations or schema details.

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?

The description covers the core read behavior, partial-read modes, and outline fallback, which are the main things an agent needs. Without an output schema, it could say more about return formats and the undocumented budget parameter, but overall it is sufficiently complete.

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 67%, and the description adds meaning for lines, search, and the path-only outline behavior. It still leaves budget undocumented in both schema and description, and context is only explained 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 states a specific verb and resource: read part of a local file. It clarifies scope through lines/search/outline behavior, but it does not explicitly differentiate this tool from sibling file-search or read tools such as atr_read or atr_search_code.

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?

It gives practical usage hints, such as passing lines from a search hit or using search to narrow results. However, it does not state when to use this tool versus siblings like atr_read, atr_search_code, or atr_query, nor does it give explicit exclusions.

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

atr_repo_mapA
Read-only

Project layout with each code file's top-level functions/classes. Start here in a codebase.

NameRequiredDescriptionDefault
pathNoFolder (default: the project).
budgetNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint:false, and destructiveHint:false, so safety is fully covered structurally. The description adds no behavioral context of its own — nothing about output size, truncation, or what the budget parameter does to the result. With annotations doing the work, this is adequate but thin.

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 short sentences, zero waste, with the highest-value routing cue ('Start here') placed where the agent will see it. Nothing extraneous to trim.

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?

For a read-only two-parameter tool with no output schema, the description covers purpose and entry-point role but leaves the result shape vague (tree? flat list? per-file) and the budget parameter unexplained. An agent knows when to call it but not what it will get back or how to size the response.

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 50%: 'path' is documented in the schema, but 'budget' has no description anywhere. That is the single most consequential parameter here (it presumably controls output volume for a tool that returns an entire repo layout), and the description never mentions it, so it does not compensate for the coverage gap.

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?

States a specific resource and payload: 'Project layout with each code file's top-level functions/classes.' An agent can distinguish it from atr_read_file or atr_search_code because it declares structure-level (symbol outline) output rather than raw file contents. Lacks an explicit verb and no sibling is named, so it stops short of a 5.

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?

'Start here in a codebase' is an explicit routing instruction that tells the agent this is the entry point before drilling into files. It gives clear positive context but contains no exclusions — nothing says to prefer atr_search_code when the agent already knows the symbol name.

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

atr_runB
Destructive

Run a shell command (tests, build, lint) and get compressed output: failures kept, noise cut.

NameRequiredDescriptionDefault
cwdNoFolder (default: the project).
budgetNo
commandYes
timeoutNoSeconds (default 300).

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already flag this as open-world and destructive, and "run a shell command" is consistent with that. The description adds genuinely new behavioral context — that output is filtered so only failures are kept — but omits that arbitrary commands execute with side effects, that output may be lossy, and how the compression budget behaves.

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?

A single front-loaded sentence with no filler; the use-case examples and the output guarantee are both packed in, and nothing is redundant.

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?

For an open-world command executor with no output schema, the description does well to characterize the returned output. But with a destructive, side-effecting tool and an entirely undocumented `budget` parameter, an agent still lacks enough to call it confidently or predict the full result.

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 50%: `cwd` and `timeout` are documented in the schema, but `command` and especially `budget` are bare. The description never explains what `budget` controls, even though "compressed output" strongly implies it caps the returned size — the one place the description could have added real value.

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?

"Run a shell command" is a specific verb+resource, and the parenthetical (tests, build, lint) plus "compressed output: failures kept, noise cut" tells the agent exactly what it gets back. It is clearly distinct from every sibling (read/find/query/diff/stats tools), though it never says so explicitly.

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 examples (tests, build, lint) imply the intended context, but there is no explicit when-to-use vs. when-not, no mention of the sibling tools it might be confused with, and no guidance on when to prefer atr_read_file or atr_search_code over shelling out.

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

atr_search_codeA
Read-only

Find where something is defined or used, before reading any file. Regex, grouped by file (path:line: text); context=3 shows the lines around each hit, often enough to answer.

NameRequiredDescriptionDefault
globNoOnly these files, e.g. *.py or src/**/*.ts
pathNoFolder (default: the project).
budgetNo
contextNoLines to show around each match (default 0, try 3).
patternYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and non-destructive, so the description doesn't need to re-establish safety. It adds real value by disclosing the output shape (grouped by file, path:line: text) and how context expands results, though it says nothing about regex dialect, match limits, or what budget does.

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 tight sentences with the primary action and the read-avoidance rationale front-loaded; every clause carries information an agent needs.

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?

Covers purpose, output format, and the key context tactic despite there being no output schema. The main gap is the undocumented budget parameter and any hint about result caps or regex flavor.

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 60%; 'Regex' clarifies that pattern is a regular expression rather than a literal string, which is useful. The context explanation largely restates the schema text, and budget has no description in either place.

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?

States a specific verb and resource: find where something is defined or used. The phrase 'before reading any file' implicitly contrasts it with atr_read/atr_read_file, but no sibling is named directly, so differentiation is inferred rather than explicit.

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?

'before reading any file' gives clear situational guidance and 'often enough to answer' tells the agent it may not need a follow-up read. No explicit exclusions or alternatives are named beyond that implication.

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

atr_statsB
Read-only

Tokens ATR has saved in this session.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered and the bar is lower. The description does add one useful non-obvious fact — that the figures are scoped to the current session rather than lifetime totals — but it says nothing about units, aggregation window, or whether the value resets.

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?

A single short sentence with no filler, and the session scoping is stated immediately. It is slightly under-specified rather than padded, with undefined jargon (ATR) consuming part of an already tiny budget.

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?

For a no-param, read-only counter this is close to sufficient, especially since annotations carry the safety profile. However, no output schema exists and the description doesn't indicate the shape of the result (a single number, a breakdown by tool, units), leaving the agent guessing about the return value.

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 tool takes zero parameters, so there are no parameter semantics to document and the baseline is 4. Nothing in the description contradicts or confuses the empty schema.

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

Purpose3/5

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

The description names the reported resource (tokens saved) and the scope (this session), but it is a noun phrase with no verb and never explains what "ATR" is, so an agent must infer that this is a session-metrics reporting tool. It also does nothing to separate it from siblings such as atr_query or atr_run, which could plausibly return stats too.

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?

There is no statement of when to call this tool, when not to, or which sibling to use instead. The only hint is the phrase "in this session", which implies scope but not a selection rule.

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.

  1. 10 tool updatesv1.0.0
    • First observedatr_call
    • First observedatr_diff
    • First observedatr_find_tools
    • First observedatr_query
    • First observedatr_read
    • First observedatr_read_file
    • First observedatr_repo_map
    • First observedatr_run
    • First observedatr_search_code
    • First observedatr_stats

TDQS

A3.5/5.0

Scored across 10 tools

Disambiguation4/5

Most tools have clearly distinct purposes: discovery, read-only execution, write execution, stashed-result querying, local file reading, code search, repo mapping, diffing, shell running, and stats. There is some potential confusion between atr_read and atr_read_file, and between atr_call and atr_run, but the descriptions mostly clarify the boundaries.

Naming Consistency4/5

All tools use a consistent atr_ prefix and snake_case naming, which makes the set easy to scan. The only minor deviation is that a few names like atr_repo_map and atr_stats are noun-oriented rather than strict verb_noun forms, but the overall convention is predictable.

Tool Count5/5

Ten tools is well within the appropriate range for this server. Each tool covers a distinct part of the token-reduction workflow, and none appear redundant or trivial.

Completeness4/5

The set covers tool discovery, read/write execution, stashed result querying, file reading, code search, repo mapping, diff inspection, shell execution, and savings stats, which is strong lifecycle coverage for the stated purpose. Minor gaps exist around explicit stash management or direct local file editing, though agents can likely work around these via shell or connected tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    A proxy server that wraps existing MCP servers to significantly reduce token consumption by compressing tool descriptions into a two-step interface. It enables users to integrate extensive toolsets without exceeding context limits or incurring high API costs.
    137
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    MCP proxy that compresses tool schemas on the fly. Up to 98% token reduction, 100% signal preserved verified after every compression. Zero LLM calls, fully deterministic.
    5
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Intelligent MCP proxy server that reduces context bloat by serving only the tools your AI actually needs through semantic search and a fixed two-tool surface.
    13
    MIT