MeshMind
Allows performing cross-source research on Bluesky for topics, returning aggregated results with relevance ranking and entity extraction.
Allows performing cross-source research on Dev.to for topics, returning aggregated results with relevance ranking and entity extraction.
Allows performing cross-source research on GitHub (including issues) for topics, returning aggregated results with relevance ranking and entity extraction.
Allows performing cross-source research on Lemmy for topics, returning aggregated results with relevance ranking and entity extraction.
Allows performing cross-source research on Lobsters for topics, returning aggregated results with relevance ranking and entity extraction.
Allows performing cross-source research on Mastodon for topics, returning aggregated results with relevance ranking and entity extraction.
Allows performing cross-source research on YouTube via Piped for topics, returning aggregated results with relevance ranking and entity extraction.
Allows performing cross-source research on Reddit for topics, returning aggregated results with relevance ranking and entity extraction.
Allows performing cross-source research on Stack Overflow for topics, returning aggregated results with relevance ranking and entity extraction.
Allows performing cross-source research on YouTube for topics, returning aggregated results with relevance ranking and entity extraction.
πΈοΈ MeshMind
One MCP server. Three superpowers for your AI agent β keyless, local-first, no setup.
Built for AI engineers, senior devs, and power users who want their coding agent to understand large codebases, stay current with fast-moving topics, and stop wasting the context window.
π¬ See it in action
Ask your agent in plain language β MeshMind picks the right tool:
You: "Map this repo and show me hub modules and import cycles."
Agent: Scanning 87 files⦠(AST: 71, regex: 16)
π¦ 4 communities detected
π Hub nodes: server.ts (degree 12), mapper.ts (degree 9)
β οΈ Import cycle: crusher.ts β server.ts β crusher.ts
Summary: 312 edges, 6 orphan files, 2 god nodesYou: "What's the latest on Bun vs Node in the last 30 days?"
Agent: Researched 12 sources (847 results β 42 after fusion + dedup)
π₯ Top corroborated theme: Bun 1.2 HTTP perf benchmarks
Sources: HN (score 847), Reddit r/javascript, Dev.to (3 posts)
π Entities: Bun, Node 22, Deno, WinterTC
π‘ Diverging signal: GitHub issues show Node winning on compatibilityYou: "I have ~400 tokens of room left. Crush this 8k-line log to fit."
Agent: crush_file β targetTokens=400 (auto-escalation)
[strip,whitespace,line-dedup,json-min] β 6,210 tok
[+stopwords] β 4,980 tok
[+summarize] β 1,520 tok
[+truncate maxLines=44] β 353 tok β
53,000 tokens β 353 tokens (-99.3%)
ref: cf_a3f9β¦ (persisted β retrieve anytime, even tomorrow)Related MCP server: kontexta
β‘ Three superpowers
π§ MAP YOUR CODE π° RESEARCH WHAT'S NEW ποΈ CRUSH THE TOKENS
βββββββββββββββββββββ ββββββββββββββββββββββββββ βββββββββββββββββββββββββ
Real AST dependency Last-N-days signal from Reversible compression
& call graph 12 keyless public sources with exact BPE counts
TS/JS via TypeScript HN Β· Reddit Β· GitHub 7 composable algorithms
compiler API Lobsters Β· Bluesky strip Β· dedup Β· truncate
Stack Overflow Β· Lemmy json-min Β· stopwords
Python/Go/Rust via Dev.to Β· Mastodon summarize (host LLM)
ast-grep/tree-sitter YouTube (via Piped)
Community clustering Cross-source fusion LRU-bounded reversible
Cycle/hub detection Relevance reranking cache β get originals
Mermaid/JSON export Entity extraction back anytime via refThe killer combo: pipe research output straight through the compressor β agent reads the signal, not the token bill.
π― Who this is for
Use MeshMind if you are:
An AI engineer or developer who uses Claude Code, Cursor, or a similar coding agent daily
Working on large or unfamiliar codebases where the agent needs structural context fast
Researching fast-moving topics (new frameworks, API changes, community debates) without paying for search APIs
Hitting context window limits and want reversible, measurable compression
When NOT to use MeshMind:
You need real-time data (research window is 30 days by default, not live search)
You need authenticated sources (all 12 sources are public/keyless β no paywalled content)
You need code execution or modification (MeshMind is read-only: maps, reads, compresses)
Your codebase is gigantic (100k+ files) β use
maxFilesto scope it, or a dedicated code-index tool
β‘ Quick start (60 seconds)
# Claude Code β one command, done:
claude mcp add meshmind -- npx -y meshmindNo API keys. No build step. npx fetches it on first run. For other clients see Install in an MCP client below.
π Security & privacy
Everything runs locally. Nothing is stored. Nothing is sent to third parties.
Codebase mapping β reads files on your machine, builds graph in memory, returns summary. No data leaves the process.
Research β fetches public URLs (HN, Reddit, GitHub, etc.) the same way your browser would. No auth tokens required or stored.
Compression β runs entirely in-process. The
refcache is in-memory only and cleared when the process exits.Summarization β when
summarize: true, your text is sent to your own MCP client's LLM via standard MCP sampling (i.e. the same model your agent already uses). If your client doesn't support sampling, MeshMind falls back to local extractive summarization β nothing leaves the process.
MeshMind intentionally skips .env files, secrets-pattern filenames, node_modules, and dotdirs during codebase scans. Full threat model: SECURITY.md.
Tools
scan_local_codebase
{ path, raw?, maxFiles? } β dependency graph with real AST extraction.
TS/JS/TSX/JSX β TypeScript compiler API (true AST, not regex)
Python, Go, Rust β ast-grep / tree-sitter grammars
Everything else β regex fallback
Edges carry
EXTRACTED / INFERRED / AMBIGUOUSconfidence labelsCommunity clustering (label propagation), hub/god node detection, import cycle detection, orphan detection
Skips
node_modules, build dirs, dotdirs, secrets-pattern filesDefault: compact summary with
ast=Ncoverage;raw: truereturns full JSON
Example output:
{
"fileCount": 87,
"astFiles": 71,
"edges": 312,
"analysis": {
"hubs": ["server.ts", "mapper.ts"],
"cycles": [["crusher.ts", "server.ts"]],
"orphans": ["legacy/old-api.ts"],
"communityCount": 4
}
}export_codebase_graph
{ path, format? } β export the dependency graph.
"mermaid"β paste directly into docs, GitHub, or Obsidian"json"β nodes + edges for D3, Obsidian Canvas, or custom tooling
Example Mermaid output:
graph LR
server.ts --> mapper.ts
server.ts --> crusher.ts
mapper.ts --> astgrep.ts
crusher.ts -.-> server.tsresearch_last_30_days
{ topic, windowDays?, sources?, perSource?, compress? } β multi-source community signal.
12 keyless sources:
hackernews,reddit,github,github_issues,web,lobsters,bluesky,stackoverflow,lemmy,devto,mastodon,youtubeEntity extraction β surfaces salient names, libs, keywords
Cross-source fusion β clusters results into themes, boosts items corroborated by β₯2 independent sources
Fail-soft β a blocked source returns nothing instead of crashing the run
compress: trueβ pipes result through the crusher before returning
Example output (truncated):
{
"topic": "Bun vs Node",
"totalResults": 42,
"themes": [
{
"label": "Bun 1.2 HTTP performance benchmarks",
"sources": ["hackernews", "reddit", "devto"],
"topItem": { "title": "Bun 1.2 is faster than Node on HTTP", "score": 847 }
}
],
"entities": ["Bun", "Node 22", "Deno", "WinterTC"]
}get_optimized_context
{ text? | filePath?, mode?, targetTokens?, algorithms?, maxLines?, summarize?, preview? } β reversible compression.
Three ways to drive it:
Budget mode β set
targetTokensand MeshMind auto-escalates the pipeline (lossless-ish β stopwords β summarize β truncate) until the output fits. Returns an escalation log so you see how it got there.Explicit β pick your own
algorithms.Default β leave both for the sensible lossless-ish pipeline.
Other options:
Algorithms (composable):
stripΒ·whitespaceΒ·line-dedupΒ·json-minΒ·truncateΒ·stopwordsΒ·summarizeModes:
codeΒ·webΒ·autosummarize: trueβ delegates to host LLM via MCP sampling; falls back to local extractivepreview: trueβ per-step savings breakdown without storing a ref or touching stats
Example output (budget mode):
[meshmind] budget=400 tok β 353 tok β within budget | 52999β353 (-99.3%) | ref=cf_a3f9β¦
Escalation:
[strip,whitespace,line-dedup,json-min] β 6210 tok
[+stopwords] β 4980 tok
[+stopwords,summarize] β 1520 tok
[+truncate maxLines=44] β 353 tokcrush_file
{ path, targetTokens?, mode? } β read a file and compress it in one call.
The shortcut for "this file is too big to read." With targetTokens, auto-escalates until it fits; otherwise applies the default pipeline. Returns compressed payload + exact BPE savings + a reversible ref.
retrieve_context
{ ref } β recover the original uncompressed text from a ref.
Persistent: refs are stored on disk under MESHMIND_HOME (default ~/.meshmind), so you can retrieve a blob you compressed in a previous session β even after a restart. LRU-bounded (default 500 entries; tune via MESHMIND_CACHE_MAX).
context_stats
{} β token savings, both session (this process) and lifetime (persisted across restarts).
{
"session": { "calls": 14, "originalTokens": 84200, "crushedTokens": 12300, "savedPercent": 85.4, "cachedRefs": 312 },
"lifetime": { "calls": 1840, "originalTokens": 9_400_000, "crushedTokens": 1_900_000, "savedPercent": 79.8, "cachedRefs": 312, "firstSeen": "2026-05-01Tβ¦", "lastSeen": "2026-06-16Tβ¦" }
}Recipes
You say⦠| MeshMind does⦠|
"Map this repo and flag hub modules and import cycles." |
|
"Export the dependency graph as Mermaid so I can paste it in the docs." |
|
"What did people say about |
|
"Research Rust async, but compress it before you read it." |
|
"This stack trace is huge β dedupe and trim it before reading." |
|
"Summarize this 20-page doc into the key facts." |
|
"Give me back the full original of that compressed blob." |
|
"How many tokens have we saved this session?" |
|
Tip: chain them. "Research X, compress it, and tell me the 3 corroborated themes" hits research β fusion β compression in one turn, and the agent only reads the crushed output.
Install in an MCP client
MeshMind is on npm: https://www.npmjs.com/package/meshmind. No clone or build needed β npx fetches and runs it. The command is always npx -y meshmind; only the config location differs per client.
Claude Code (CLI β registers it for you):
claude mcp add meshmind -- npx -y meshmindCursor β ~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": {
"meshmind": { "command": "npx", "args": ["-y", "meshmind"] }
}
}Claude Desktop β claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"meshmind": { "command": "npx", "args": ["-y", "meshmind"] }
}
}VS Code (Copilot/MCP) β .vscode/mcp.json:
{
"servers": {
"meshmind": { "type": "stdio", "command": "npx", "args": ["-y", "meshmind"] }
}
}Any other MCP host (Codex, Gemini CLI, Windsurf, Zed, β¦) uses the same command + args pair in its own config format. See mcp.example.json for the canonical block.
Prefer a pinned global binary? npm i -g meshmind, then use meshmind as the command instead of npx -y meshmind.
From source (for development)
git clone https://github.com/AntoniovanDijck/meshmind.git
cd meshmind
npm install && npm run build # runnable server at build/server.jsThen point the client at node /ABS/PATH/TO/meshmind/build/server.js.
Benchmarks
Real numbers from npm run benchmark (Node 22, Apple Silicon) on representative
payloads β not mocked. Default pipeline is deliberately conservative
(lossless-ish: strip/whitespace/line-dedup/json-min):
Fixture | Orig tokens | Crushed | Saved | Time |
HTML listing (1k rows) | 37,091 | 7,001 | 81.1% | 5 ms |
Source code (this repo) | 28,194 | 22,745 | 19.3% | 20 ms |
Verbose log (2k lines) | 52,999 | 45,399 | 14.3% | 26 ms |
JSON array (2k objects) | 149,998 | 146,002 | 2.7% | 33 ms |
RAG concat (200 chunks) | 18,000 | 17,800 | 1.1% | 5 ms |
The default pipeline only removes provably-safe noise β that's why structured JSON and near-duplicate prose barely move. Budget mode is where the savings live: it escalates through lossy stages until your target is hit.
Target | Result | Hit? | Time |
2,000 | 1,715 | β | 132 ms |
1,000 | 868 | β | 130 ms |
400 | 353 | β | 131 ms |
150 | 126 | β | 113 ms |
(52,999-token verbose log β any budget you ask for.) Reproduce with
npm run benchmark.
Build & test
npm install
npm run build # tsc β build/
npm test # offline: unit tests + MCP integration (no network)
npm run test:network # also exercises the live research sources
npm run benchmark # reproduce the compression benchmarks aboveLive network sources are opt-in (RUN_NETWORK_TESTS=1) so the default suite is deterministic and CI-safe.
Architecture
src/
crusher.ts # compression pipeline + budget escalation β headroom
store.ts # persistent reversible store + lifetime stats
mapper.ts # collect β extract β graph β cluster/analyze β graphify
astgrep.ts # multi-language AST (Python/Go/Rust) β graphify
recency_engine.ts # parallel keyless source fetchers + fusion β last30days
server.ts # MCP server: registers the 7 tools
benchmark.ts # reproducible compression benchmarks
test-unit.ts # deterministic offline unit tests
test-client.ts # MCP integration tests over stdioRuntime dependencies: @modelcontextprotocol/sdk, zod, gpt-tokenizer (exact BPE counts), typescript (TS/JS AST), @ast-grep/napi + @ast-grep/lang-{python,go,rust} (multi-language AST). Networking uses the Node stdlib fetch. Summarization delegates to the host LLM via MCP sampling β no ONNX, no model downloads.
FAQ
Do I need any API keys? No. Every research source is keyless/public, and compression + mapping are fully local.
Which languages does the codebase mapper understand?
TS/JS/TSX/JSX via the TypeScript compiler API. Python, Go, Rust via ast-grep (tree-sitter). Everything else falls back to regex. The summary's ast=N tells you how many files got a real AST.
Is the compression lossy? Can I get the original back?
Lossy steps exist (strip, dedupe, summarize), but every compression is stored under a ref. Call retrieve_context with that ref to recover the exact original. Refs are persisted to disk under MESHMIND_HOME (default ~/.meshmind), so they survive restarts β retrieve a blob you compressed yesterday. LRU-bounded (default 500 entries β tune via MESHMIND_CACHE_MAX). If the disk is unavailable, the store falls back to in-memory for the session.
A research source returned nothing / errored. Sources are fail-soft: a blocked or rate-limited source returns nothing instead of crashing the run. The result lists per-source errors so you know what was skipped.
Does summarize send my data anywhere?
Only to your own MCP client's LLM, via standard MCP sampling. If the client doesn't support sampling, MeshMind falls back to local extractive summarization. See SECURITY.md.
Can it read files outside my project?
It reads whatever path you give it, with the privileges of the process. Run it in a sandbox if you need to constrain that β details in SECURITY.md.
Why "MeshMind"? It meshes three separate context tools into one mind for your agent. πΈοΈπ§
Credits & License
MeshMind is MIT-licensed. Its three pillars are conceptually derived from
graphify,
headroom, and
last30days-skill β see
CREDITS.md for full attribution. Contributions welcome β see
CONTRIBUTING.md.
Available Tools
7 toolscontext_statsCompression statsA
Return token-savings stats: session (this process) and lifetime (persisted across restarts under MESHMIND_HOME) β compress calls, original vs. crushed tokens, percent saved, cached refs, first/last seen.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, description fully explains behavior: returns two categories of stats (session and lifetime), lists fields, and notes persistence under MESHMIND_HOME. No side effects or permissions needed are implied, which is sufficient for a read-only stats tool.
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?
Single sentence is efficient but slightly dense. Front-loaded with the main action, but could be broken into two sentences for clarity.
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 zero-parameter, no-output-schema tool, description adequately explains return values (session vs. lifetime fields). Covers all listed fields, making it usable for an agent to interpret results.
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?
No parameters exist; description does not need to add param info. Baseline score of 4 is appropriate as schema coverage is 100% and description adds value by explaining return structure.
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 returns token-savings stats with specific fields (session and lifetime scopes). It distinguishes from sibling tools like crush_file and get_optimized_context by focusing on statistics rather than compression or retrieval.
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 guidance on when to use this tool over alternatives. It does not mention prerequisites, complementary tools, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crush_fileCrush a file to a token budgetA
Shortcut for the common 'this file is too big to read' case: reads a local file and compresses it in one call. With targetTokens, auto-escalates the pipeline until it fits; otherwise applies the default lossless-ish pipeline. Returns the compressed payload, exact BPE savings, and a reversible ref.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Local file to read and compress. | |
| targetTokens | No | Token budget β auto-escalate until output fits. | |
| mode | No | Compression regime (default auto). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses auto-escalation behavior, default lossless-ish pipeline, return payload, BPE savings, and reversible ref. Does not cover auth, size limits, or side effects, but provides sufficient behavioral context for safe invocation.
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?
Three sentences, front-loaded with purpose, each sentence adds distinct value. No 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?
Given no output schema and three parameters, the description explains the main use case, optional behaviors, and return values. Lacks file type support notes but is sufficient for typical use.
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 good parameter descriptions. The tool description adds context about auto-escalation for targetTokens, but largely overlaps with schema. 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 verb ('reads and compresses') and the resource ('local file'), and positions it as a shortcut for 'this file is too big to read'. It distinguishes from siblings by focusing on compression, which is not covered by other tool names.
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 explains the typical use case (too-big file) and the auto-escalation behavior with targetTokens, but does not explicitly state when NOT to use the tool or mention alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_codebase_graphExport codebase graphA
Scan a directory and export its dependency graph as either a Mermaid diagram (format='mermaid') or a D3/Obsidian-friendly nodes+edges JSON (format='json').
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Directory to scan and export. | |
| format | No | Output format (default mermaid). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the scanning and export behavior, and specifies output formats, but does not mention potential side effects, performance impact, or limitations like directory depth or file exclusions.
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?
A single, clear sentence that front-loads the core purpose and includes critical details (format options). No 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 and no output schema, the description adequately covers purpose and output options. However, it lacks details on the shape of the JSON output or any return value structure, which could be helpful for agents.
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 both parameters are already documented. The description adds context about output format specifics (Mermaid vs JSON) but does not significantly exceed schema detail.
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 states a specific verb ('scan and export') and resource ('codebase graph'), clearly distinguishing it from sibling tools, which focus on context retrieval and file operations.
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 versus alternatives like 'scan_local_codebase' or 'retrieve_context'. The usage is implied through the specific output formats, but lacks when-not-to-use or prerequisite information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_optimized_contextGet optimized (compressed) contextA
Reversible token-reduction pipeline. Accepts raw text OR a filePath. Three modes of use: (1) set targetTokens and MeshMind auto-escalates algorithms until the output fits your budget; (2) set explicit algorithms; (3) leave both for sensible defaults. Algorithms: strip, whitespace, line-dedup, json-min, truncate, stopwords, summarize. Set summarize=true for an abstractive summary via the host LLM (MCP sampling), extractive fallback. preview=true shows the per-step savings WITHOUT storing a ref. Returns compressed payload, exact BPE savings, and a ref for retrieve_context. Provide exactly one of text or filePath.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Raw text/code/HTML to compress. | |
| filePath | No | Local file to read and compress. | |
| mode | No | Compression regime (default auto). | |
| targetTokens | No | Token budget β auto-escalate the pipeline until output fits. | |
| algorithms | No | Override the algorithm pipeline (ignored if targetTokens set). | |
| maxLines | No | truncate: line budget. | |
| summarize | No | Abstractive summary via host LLM (sampling), extractive fallback. | |
| preview | No | Show per-step savings without storing a ref or recording stats. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses reversibility, preview mode behavior (no ref stored), return values (compressed payload, BPE savings, ref), and use of MCP sampling for summarization. Missing details on error conditions or rate limits, but adequate given complexity.
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 a single dense paragraph, structuring information logically with numbered modes and algorithm list. No wasted words, though could benefit from explicit sections for readability.
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?
Without output schema, description explains return values (compressed payload, BPE savings, ref) and preview mode. Covers all 8 parameters. Lacks explicit error information but is otherwise comprehensive for a complex 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%, so baseline 3. The description adds value by explaining parameter interactions (e.g., targetTokens auto-escalates, algorithms ignored when targetTokens set, summarize flag behavior) beyond the schema definitions.
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 it is a 'Reversible token-reduction pipeline' that accepts raw text or a file path, distinguishing it from sibling tools like context_stats or retrieve_context.
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 explains three modes of use (targetTokens, algorithms, or both) and that exactly one of text or filePath must be provided, but does not explicitly guide when to use this tool versus siblings like crush_file or retrieve_context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_last_30_daysResearch the last 30 daysA
Fetch recent community/social signal on a topic from keyless public sources (Hacker News + comment enrichment, Reddit w/ RSS fallback, GitHub, Web, Lobsters, Bluesky, Stack Overflow, Lemmy), filtered to a trailing window. Results are relevance-reranked and deduped. Set compress=true to pipe the result through the token-reduction pipeline.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | Topic or query to research. | |
| windowDays | No | Trailing window (default 30). | |
| sources | No | Subset of sources (default: all). | |
| perSource | No | Max items per source (default 10). | |
| compress | No | Pipe output through get_optimized_context. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses multi-source fetching, trailing window, relevance-reranking, deduplication, and a compress option. It does not cover rate limits, authentication, or output format, but the key behaviors are well-described.
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 the main purpose and key features. Every sentence adds value with no redundancy.
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?
Despite tool complexity (multiple sources, parameters, no output schema), the description lacks details on output format, return values, or limits. It mentions reranking and dedup but does not explain what the results look like, making it incomplete for an agent to fully understand the tool's behavior.
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%, so each parameter has a schema description. The tool description adds general behavioral context (e.g., reranking, dedup) but does not significantly enhance parameter understanding beyond what the schema already provides.
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 specifies the verb 'Fetch' and the resource 'recent community/social signal on a topic' from a defined set of sources. It distinguishes from siblings by listing specific sources and mentioning a trailing window filter, which is unique among the sibling tool names.
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 implies usage for fetching recent social signals on a topic but does not explicitly state when to use this tool versus siblings like 'retrieve_context' or 'scan_local_codebase'. No 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.
retrieve_contextRetrieve original (uncompressed) contextA
Recover the original, uncompressed text for a ref returned by a prior get_optimized_context or compressed research call (reversible / CCR).
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | The cf_β¦ ref to recover. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool is reversible, implying a safe read operation, but does not disclose error behaviors, rate limits, or authentication needs. This is minimally adequate for a simple retrieval tool.
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 a single concise sentence, front-loaded with the action (recover) and key information. Every word contributes value; no wasted text.
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 has one parameter, no output schema, and no annotations, the description sufficiently explains its purpose and relation to other tools. It lacks details on return values or error handling, but for a simple retrieval tool, it is fairly complete.
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% for the single parameter 'ref', with a brief schema description. The tool description adds no additional meaning beyond the schema, so the baseline score of 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 recovers the original uncompressed text for a ref returned by prior get_optimized_context or compressed research calls. It specifies the verb (recover), resource (uncompressed text), and source (ref), distinguishing it from siblings like get_optimized_context.
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 indicates when to use the toolβafter a prior get_optimized_context or compressed research callβand mentions it's reversible. However, it does not provide explicit when-not-to-use or alternative tools, though context makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_local_codebaseScan local codebaseA
Recursively scan a directory and build a dependency graph: files, top-level symbols, import edges, an inferred call graph (with EXTRACTED/INFERRED/AMBIGUOUS confidence), community clustering, and structural analysis (hub/god nodes, import cycles, orphans). Default returns a compact summary; raw=true returns the full JSON map.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute or relative directory to scan. | |
| raw | No | Return full JSON map instead of summary. | |
| maxFiles | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the output types (compact summary vs. full JSON map) and lists the analysis components. It does not cover performance or permissions, but for a read-only scan tool, the transparency is strong.
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: the first lists the analysis features, the second explains output options. It is concise and front-loaded with the main action, though the dense list of components could be slightly reorganized for clarity.
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 complexity of the tool (dependency graph with many features) and the absence of an output schema, the description provides a good overview. It covers the key outputs and options, though it does not detail how to interpret specific analyses (e.g., confidence levels).
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 67% (2 of 3 parameters have descriptions). The description adds context for the 'raw' parameter by explaining its effect, but does not elaborate on 'path' (beyond schema) or 'maxFiles'. This adds some value but is not comprehensive.
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: recursively scan a directory and build a dependency graph. It uses a specific verb ('scan') and resource ('local codebase'), and the listing of components (symbols, call graph, etc.) distinguishes it from sibling tools like export_codebase_graph.
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 implies usage for analyzing code structure but does not provide explicit guidance on when to use this tool versus alternatives like export_codebase_graph or context_stats. It mentions default vs. raw output but lacks when-not or prerequisite conditions.
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.
7 tool updates
v1.1.0- First observed
context_stats - First observed
crush_file - First observed
export_codebase_graph - First observed
get_optimized_context - First observed
research_last_30_days - First observed
retrieve_context - First observed
scan_local_codebase
TDQS
Tools have largely distinct purposes, with some overlap between crush_file and get_optimized_context as both compress, but they target different use cases (file shortcut vs. general pipeline). export_codebase_graph and scan_local_codebase are related but differ in output format and depth. Overall, agents can distinguish most tools.
All tool names use snake_case with a consistent verb_noun or descriptive pattern (e.g., crush_file, get_optimized_context, research_last_30_days). No mixing of conventions, making naming predictable and clear.
Seven tools cover the advertised functionalityβcontext compression, codebase analysis, and researchβwithout being excessive. Each tool has a defined role, and the count is appropriate for the server's purpose.
The tool set covers key operations: compression, decompression, stats, codebase scanning, graph export, and research. Minor gaps exist, such as no tool to list or manage stored refs, and no direct configuration update, but core workflows are well-supported.
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
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
An MCP server that gives your AI access to the source code and docs of all public github repos
MCP server for AI dialogue using various LLM models via AceDataCloud
Cloud-hosted MCP server for durable AI memory
Related MCP Servers
- AlicenseBqualityFmaintenanceA zero-cost MCP server that forces AI to self-correct code using prompt injection and context isolation.411MIT
- AlicenseAqualityAmaintenanceA local-first MCP server that gives AI coding agents persistent memory and controlled commands. Features a git-backed markdown knowledge vault with FTS5 search, surgical section edits, token-aware context budgeting, and a sandboxed command engine with human approval gates. Works with Claude Code, Cursor, Copilot, Gemini, and more.53101Apache 2.0
- -licenseNot gradedqualityNot gradedmaintenanceAn MCP server that enables multiple AI models (Claude, ChatGPT, Gemini) to share and persist context via a local-first vault of markdown files and SQLite index, allowing seamless cross-AI memory.-
- AlicenseAqualityAmaintenanceLocal-first MCP server that gives any AI coding agent per-project memory, workflow intelligence, and always-on, lossless token & context optimization.37183MIT
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/AntoniovanDijck/meshmind'
If you have feedback or need assistance with the MCP directory API, please join our Discord server