forgemcp
Provides tools for searching GitHub repositories and code, retrieving repository overviews, files, and trees, enabling code discovery and intelligence.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@forgemcpfind the best retry with backoff implementation"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐ฅ GeniusMCP
Quality-aware code intelligence that turns GitHub search into ranked, explainable, import-ready recommendations.
Not another grep. An intelligence layer.
Quick Start ยท How It Works ยท Soul ยท Tools ยท Architecture

The Problem
Every code search tool answers "where is this string?"
None of them answer "what is the best implementation, why, and can I safely use it?"
When you ask genius.hunt("retry with backoff"), GeniusMCP returns:
Archetype 1 โ Minimal inline helper
โ
12 LOC, zero deps, copy-paste ready
Exemplar: owner/repo โ score 0.87 (battle_tested)
Why: test-adjacent, MIT license, 3 years stable
Archetype 2 โ Configurable utility
โ
Options-driven, max attempts + jitter strategy
Exemplar: owner/repo2 โ score 0.82
Why: 14K stars, active maintenance, comprehensive docs
Archetype 3 โ Middleware pattern
โ
Express/Fastify compatible, interceptor-based
Exemplar: owner/repo3 โ score 0.79
Tradeoff: framework-coupled
Coverage: 3 sources searched, 2 blind spots, confidence: 0.83That's the gap GeniusMCP fills.
Related MCP server: Smart Code Search MCP Server
โจ Key Features
Feature | What it does |
๐ฏ Archetype Search | Finds 3-5 structural families, not 200 raw matches |
๐ 6-Bucket Quality Scoring | queryFit ยท durability ยท vitality ยท importability ยท codeQuality ยท evidenceConfidence |
๐ Multi-Source Discovery | grep.app (free, 1M repos) + GitHub Code Search (200M repos) + searchcode (75B lines) |
๐งฌ 3-Level Dedup | Exact SHA โ normalized AST hash โ winnowing fingerprint families |
๐ Provenance-First Import | License gate ยท dependency closure ยท policy checks ยท attribution |
๐ง Persistent Memory | Every search enriches local evidence graph. Session 50 is smarter than session 1. |
๐ช Auto-Capture Hooks | Claude Code hooks capture patterns from every file you read/write |
๐ Pre-Prompt Injection | Relevant memories injected BEFORE the AI responds |
๐๏ธ 7 Archetype Categories | minimal ยท configurable ยท middleware ยท context-aware ยท distributed ยท enterprise ยท wrapper |
๐ Transparent Uncertainty | Every result shows blind spots + evidence confidence |
โก Tiered Responses | L1 (80 tokens) / L2 (300) / L3 (2000) โ adaptive detail level per result count |
๐ก๏ธ Circuit Breakers | Per-source fault isolation: GitHub/grep.app/searchcode fail independently |
๐ฐ Thompson Sampling | Multi-armed bandit learns which sources produce best results per query type |
๐ค SAC Matching |
|
๐ฆ Signature Compression | Repomix-style 70% token reduction โ strips bodies, keeps signatures |
๐ Dynamic Discovery |
|
๐ Why GeniusMCP
GitHub MCP | grep.app MCP | DeusData | GeniusMCP | |
Multi-source search | 1 source | 1 source | local only | 3 sources |
Quality scoring | no | no | no | 6-bucket |
License verification | no | no | no | yes |
Import with provenance | no | no | no | yes |
Persistent memory | no | no | knowledge graph | Bayesian + decay |
Cross-convention matching | no | no | no | SAC algorithm |
Fault tolerance | no | no | no | circuit breakers |
Token efficiency | no | no | no | L1/L2/L3 tiers |
๐ Quick Start
# 1. Clone and install
git clone https://github.com/geniussigmaskibidi-gif/geniusmcp
cd geniusmcp && pnpm install && pnpm build
# 2. Optional: GitHub auth (enables GitHub Code Search + metadata)
export GITHUB_TOKEN=ghp_your_tokenAdd to Claude Code (.mcp.json in your project root)
{
"mcpServers": {
"forgemcp": {
"command": "node",
"args": ["/path/to/forgemcp/apps/mcp-server/dist/index.js"],
"env": { "GITHUB_TOKEN": "ghp_your_token" }
}
}
}Server auto-indexes your project on start. code.reach, code.map, code.symbols work immediately.
Optional: Claude Code Hooks (auto-capture + injection)
{
"hooks": {
"PostToolUse": [
{ "matcher": "Read|Write|Edit", "command": "node hooks/genius-capture.js" }
],
"UserPromptSubmit": [
{ "command": "node hooks/genius-inject.js" }
]
}
}๐ก Usage Examples
Find the best implementation of a concept
You: "Find me a good rate limiter implementation"
Agent calls: genius.hunt("rate limiter", language: "typescript", tier: "L1")
โ 5 ranked archetypes in 130 tokens, with stars/license/test signalsImport code with license verification
You: "Import that circuit breaker from the best result"
Agent calls: import.extract("owner/repo", "src/circuit-breaker.ts", symbol: "CircuitBreaker")
โ Full code + MIT license verified + provenance hash + attribution commentCompare approaches across repos
You: "Should I use Zod or Ajv for validation?"
Agent calls: research.deep_compare("validation", ["colinhacks/zod", "ajv-validator/ajv"])
โ Side-by-side: Zod 42K stars vs Ajv 14K, both MIT+CI, structured quality signalsRemember and recall across sessions
Session 1: genius.hunt("retry backoff") โ auto-stores top 3 results
Session 2: memory.recall("retry") โ instant recall, no API calls neededExplore unfamiliar repository
You: "How does Hono handle errors?"
Agent calls: research.archaeology("honojs/hono", "error handling")
โ Found .onError() handler, JWT error middleware, 29K stars, TypeScriptRead soul.md for the complete AI agent reasoning guide โ search strategies, anti-patterns, and token budget optimization.
๐ How It Works
graph TD
Q["genius.hunt('retry backoff')"] --> C[QueryCompiler]
C --> |grep.app queries| G[grep.app MCP]
C --> |GitHub queries| GH[GitHub Code Search]
C --> |hydration queries| SC[searchcode.com]
G --> D[Dedup Engine]
GH --> D
SC --> D
D --> |"180 hits โ 60 blobs"| E[Symbol Extractor]
E --> F[Winnowing Fingerprint]
F --> |"60 โ 8 families"| CL[Archetype Classifier]
CL --> R[Quality Scorer]
R --> |"6-bucket ranking"| OUT["3-5 ranked archetypes<br/>with explanations"]
OUT --> MEM[(Evidence Graph<br/>SQLite)]
MEM --> |"next search: instant recall"| QThe Magic Loop
Session 1: "Find best rate limiter" โ searches 3 sources โ 60 unique blobs โ 5 archetypes
โ Results cached in evidence graph
Session 2: "Rate limiter for Express" โ local memory: 40 instant hits + 20 new
โ Faster, smarter, more relevant
Session 10: "Throttle middleware" โ 120 cached patterns, <100ms response
โ Compound intelligence๐ ๏ธ Tools (28 MCP Tools)
๐ฏ Hunt Intelligence (flagship)
Tool | Description |
| Find best implementations with archetype clustering, quality scoring, coverage report |
| Full signal breakdown: why this ranked #1 |
| Head-to-head comparison with bucket deltas |
| Policy-aware import with provenance manifest |
๐ง Memory (compound intelligence)
Tool | Description |
| Search past patterns by concept |
| Save pattern to persistent memory |
| Create improved version linked to parent |
| Find connected patterns |
| Create relationships between patterns |
| Memory size, coverage, confidence distribution |
| Remove outdated patterns |
๐งญ Code Navigation (1 call = 10 Read/Greps)
Tool | Description |
| Jump to symbol with full context: callers, callees, deps |
| Instant project architecture map |
| Call chain between functions |
| Compressed module understanding |
| All exports with signatures |
๐ฌ Research (persistent reasoning chains)
Tool | Description |
| Trace code evolution |
| Structured comparison with metrics |
| Begin research thread |
| Record reasoning step |
| Mark chain completed |
| Search past research |
๐ GitHub
Tool | Description |
| Search by query, language, stars |
| Code search across GitHub |
| Stars, CI, license, health |
| Get file content |
| Recursive file tree |
๐๏ธ Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ GeniusMCP Server โ
โ โ
โ Layer 1: DISCOVERY โ
โ grep.app MCP ยท GitHub Code Search API โ
โ โ
โ Layer 2: HYDRATION โ
โ GitHub Trees/Contents ยท searchcode analysis โ
โ โ
โ Layer 3: EVIDENCE GRAPH โ
โ SourceHit โ Blob โ SymbolSlice โ PatternFamily โ
โ โ
โ Layer 4: PATTERN INTELLIGENCE โ
โ 3-level dedup ยท archetype classifier ยท scorer โ
โ โ
โ Layer 5: IMPORT & POLICY โ
โ License gate ยท provenance ยท dep closure โ
โ โ
โ Layer 6: EVALUATION โ
โ Coverage confidence ยท blind spots ยท metrics โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโQuality Scoring (RFC v2)
overall = 0.35 ร queryFit + 0.50 ร qualityComposite + 0.15 ร evidenceConfidence
qualityComposite = weights[preset] ร {durability, vitality, importability, codeQuality}Presets: battle_tested ยท modern_active ยท minimal_dependency ยท teaching_quality
Hard caps: snippet_only โ evidence โค 0.60 ยท archived โ vitality โค 0.20 ยท license_unknown โ importability โค 0.20
๐ฆ Monorepo Structure
forgemcp/
packages/
core/ โ Types, config, errors (Zod-validated)
db/ โ SQLite WAL, blob store, search index, evidence graph
ast-intelligence/ โ Symbol extraction, call graph, architecture detection
repo-memory/ โ Bayesian confidence + Ebbinghaus decay engine
github-gateway/ โ Octokit + 4-bucket rate governor + ETag cache
data-sources/ โ grep.app + searchcode + source orchestrator
hunt-engine/ โ Winnowing, clustering, scoring, archetype classifier
importer/ โ License policy + provenance + style adaptation
apps/
mcp-server/ โ MCP server + 5 skill modules + hook daemon + dynamic tools
hooks/ โ Claude Code auto-capture scripts
tests/ โ 252 tests (vitest)
.github/workflows/ โ CI (Node 20/22, build + typecheck + test)๐งช Testing
npx vitest run
# 22 test suites, 252 tests, all passing (<1s)Suite | Tests | What it covers |
foundation | 19 | ForgeResult, Logger, Health, Context |
blob-store | 10 | Content-addressable storage, dedup, file refs |
blob-lifecycle | 11 | GC, pinning, integrity scrub |
symbol-extractor | 13 | TypeScript, Python, Go extraction + fingerprinting |
parser-registry | 6 | Multi-backend precision routing |
search-index | 4 | FTS5 trigram, BM25, RRF fusion |
simhash | 14 | Near-duplicate detection, Hamming distance |
chunker | 8 | Semantic code chunking, symbol boundaries |
query-planner | 14 | Query classification, lane planning |
ranking-v2 | 13 | BM25F weights, retrieval scoring, lexical+structural |
memory-engine | 15 | Store, recall, capture, Bayesian confidence, Ebbinghaus decay |
memory-v2 | 6 | L1/L2/L3 capsule builder, token estimation |
call-graph | 9 | 2-pass resolution, BFS reachability, path tracing |
winnowing | 12 | Fingerprints, Jaccard similarity, clone clustering |
policy-engine | 11 | 4-mode import policy, license gates, provenance |
evidence-graph | 8 | v2 schema: query runs, slices, families, versioned scores |
job-queue | 10 | Durable job queue, priority, backoff, dead-letter |
circuit-breaker | 19 | Circuit breaker state machine, bulkhead, resilient search |
token-budget | 22 | Token estimation, tier selection, truncation, compression |
source-selector | 5 | Thompson Sampling, convergence, discounting |
early-terminator | 6 | Welford online stats, adaptive saturation |
sac | 17 | Subword Affine Canonicalization, cross-convention matching |
๐ฏ Design Principles
Evidence, not opinions โ every score has signals you can inspect
Local-first โ works offline for indexed repos
Zero ML in core โ lexical + structural, semantic is opt-in
Provenance always โ every import traced to source + license
Progressive learning โ every search enriches the evidence graph
Transparent uncertainty โ blind spots shown, not hidden
๐ Tech Stack
Component | Technology |
Protocol | MCP SDK 1.28 (stdio + Streamable HTTP) |
Database | SQLite (WAL mode, better-sqlite3) |
Search | FTS5 trigram + BM25F + Reciprocal Rank Fusion |
AST | Regex multi-language + ast-grep upgrade path |
Dedup | Winnowing fingerprints (Schleimer 2003) + Jaccard clustering |
GitHub | Octokit + throttling + retry + 4-bucket rate governor |
External | grep.app MCP + searchcode.com |
Validation | Zod |
Resilience | Circuit breakers + bulkheads + decorrelated jitter |
Ranking | SAC cross-convention matching + Thompson Sampling source routing |
Token Efficiency | L1/L2/L3 tiered responses + signature compression |
Tests | Vitest (252 tests, <1s) |
Monorepo | pnpm + Turborepo |
๐ License
MIT
Built for AI agents that never forget.
Available Tools
30 toolscode.mapC
Get instant project architecture map โ modules, dependencies, hot paths, entry point. Understands MVC, layered, microservices patterns automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | Root path to analyze | . |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'Instant' and 'understands MVC, layered, microservices patterns automatically' hint at speed and zero-config behavior, but it never discloses permissions, cost/scale limits on large repositories, or whether the scan touches the filesystem beyond reading.
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 tight sentences with the primary output list front-loaded and the pattern-recognition capability appended. Little waste, though the trailing clause is slightly promotional.
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 read-oriented mapping tool with no annotations and no output schema, the description conveys what is returned at a high level (modules, dependencies, hot paths, entry point) but omits the shape/format of the map and any limits, leaving the agent only minimally equipped.
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 the single 'root' parameter is already fully documented. The description adds no parameter semantics beyond that, which matches the baseline 3 for high-coverage schemas.
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?
States a specific verb ('Get') and resource ('project architecture map') and enumerates the concrete outputs (modules, dependencies, hot paths, entry point), so an agent knows exactly what it produces. It does not, however, distinguish itself from code-focused siblings like code.understand, code.symbols, or code.trace.
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?
There is no explicit when-to-use, when-not-to-use, or named alternative. Given several overlapping code-analysis siblings (code.understand, code.reach, code.trace), the description leaves the agent to infer which one to pick. Only 'instant' hints at a speed-oriented use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code.reachA
Jump to any symbol โ returns definition, signature, callers, callees, deps in ONE call. Replaces 5-10 Read/Grep calls.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max candidates if name is ambiguous | |
| scope | No | Path prefix to narrow search (e.g. 'src/auth/') | |
| symbol | Yes | Symbol name to find |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose the returned content set (definition, signature, callers, callees, deps) and implies a read-only lookup, but says nothing about cost, rate limits, permission needs, or how ambiguous/truncated results behave.
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 short, front-loaded sentences with no waste; the core capability comes first and the efficiency claim second. Every clause earns its place.
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?
With no output schema and no annotations, the description usefully summarizes the return payload and the reason to prefer it over raw Read/Grep. It is nearly complete for a 3-param lookup tool, only missing notes on ambiguity/limit handling and permissions.
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 symbol, scope, and limit are already documented in the schema. The description adds no syntax, format, or default-behavior detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (jump to) and resource (any symbol) and enumerates the payload it returns: definition, signature, callers, callees, deps. An agent can distinguish it from read-only lookups like code.symbols or code.map, though it never explicitly names those siblings.
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?
'Replaces 5-10 Read/Grep calls' implies the intended situation โ when you want full context on one symbol without multiple round trips โ but there is no explicit when-to-use/when-not and no named alternative among code.symbols, code.trace, code.understand, etc.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code.symbolsB
List all exported symbols (functions, classes, types) in a path scope with signatures
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| scope | Yes | Path prefix (e.g. 'src/auth/' or 'src/') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose a meaningful behavioral trait โ only exported symbols are returned โ and states that signatures are included in the result, which is useful given the absence of an output schema. However, it says nothing about ordering, pagination/limit behavior, or what happens with an invalid or empty scope.
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 front-loaded sentence with no filler; the core action and resource come first. It is perhaps slightly under-specified rather than over-long, which keeps it from being wasteful but also leaves gaps.
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 two-parameter read tool with no annotations and no output schema, the description conveys purpose, scope semantics, and return content adequately. It falls short on sibling differentiation and on limit/pagination behavior, which is the main missing piece.
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 50%: 'scope' is documented in the schema and the description reinforces it as a path prefix, but 'limit' (default 50) is undescribed in both schema and description. The description adds the notion that scope is a path prefix and that results carry signatures, but does not compensate for the undocumented limit parameter.
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 gives a specific verb ('List') plus resource ('exported symbols (functions, classes, types)') scoped to a path, which is far more concrete than a name restatement. It does not, however, distinguish this from close siblings like code.map, code.trace, or code.understand, which an agent would need in order to choose correctly.
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?
There is no when-to-use guidance, no prerequisites, and no mention of the sibling tools (code.map, code.understand, code.reach) that a caller would compare against. Usage can only be inferred from the word 'List' and the path scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code.traceB
Trace a call chain from one function to another. Shows the shortest path through the call graph.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Target function name | |
| from | Yes | Source function name | |
| maxDepth | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the traversal semantics (shortest path through the call graph), which is a real behavioral trait, but says nothing about the read-only nature, what happens when no path exists, or any depth/performance limits.
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 short sentences, front-loaded with the core operation and then the key behavioral detail. No filler and nothing redundant.
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?
With no output schema and no annotations, the description is adequate to know the tool's job but thin on the details an agent needs: maxDepth semantics, no-path behavior, and read-only confirmation are all absent. It is minimally complete rather than fully 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 coverage is 67%: from and to are documented in the schema, while maxDepth has only a default and no description. The description adds no parameter detail and does not compensate for the undocumented maxDepth, so it neither helps nor hurts beyond the schema baseline.
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 (trace) and resource (call chain between two functions) and adds the algorithmic detail of shortest path over the call graph. It is clear on its own, but it never names or contrasts against closely related siblings like code.reach or code.map, so an agent cannot easily distinguish which tool to pick.
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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as code.reach or code.map. The agent must infer the context entirely from the one-line purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code.understandA
Get compressed understanding of a file or directory โ purpose, key exports, data flow, dependencies, complexity hotspots. Replaces reading 10+ files.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File or directory path to understand |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It discloses that the output is compressed and what it includes, and 'Get' implies a read-style operation, but it does not explicitly confirm that the tool is read-only or non-destructive, nor does it mention permissions, rate limits, or performance trade-offs. It adds some useful behavioral context beyond the schema, but key operational traits remain unstated.
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 with no filler: the first states the core value and the second quantifies the benefit. It is front-loaded with the most important information and every clause earns its place.
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 single-parameter read-oriented tool with no output schema, the description is nearly complete: it explains what the tool returns and why it is useful. It could be stronger by stating that it is read-only or by clarifying directory recursion behavior, but the core information an agent needs to invoke it correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single 'path' parameter at 100% coverage, including that it can be a file or directory. The description says 'a file or directory' but adds no format, syntax, or constraint details beyond what the schema already provides. The baseline of 3 is appropriate when the schema does the heavy lifting.
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 gives a specific verb and resource: compressed understanding of a file or directory. It also enumerates the output categories (purpose, key exports, data flow, dependencies, complexity hotspots), making the tool's function clear. It does not, however, differentiate itself from sibling tools such as code.map, code.symbols, or code.trace, so an agent cannot fully separate them based on this description alone.
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 phrase 'Replaces reading 10+ files' implies a usage context: use this instead of manually reading many files for an overview. However, the description does not explicitly state when to use this tool versus code.map, code.symbols, or code.trace, nor does it give any when-not conditions or prerequisites. Usage is therefore implied but not well specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forge_describeA
Get full input schema and usage example for a ForgeMCP tool. Call forge_discover first to find tool names.
| Name | Required | Description | Default |
|---|---|---|---|
| tool_name | Yes | Exact tool name from forge_discover |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the return content (full input schema and usage example) and the prerequisite parameter source, which is useful context. However, it does not describe error behavior for invalid tool names, response format, or any limitations, leaving meaningful gaps.
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 tight sentences with no waste. The core action is front-loaded, followed immediately by the prerequisite, making it easy to scan and act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, requires one parameter, has full schema coverage, and no output schema. The description states what is returned (schema and usage example) and how to obtain the required input, so it is complete enough for correct invocation.
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%, and the schema already documents that 'tool_name' is the exact tool name from forge_discover. The description reinforces this prerequisite but adds no new parameter detail beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.
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 and resource: getting the full input schema and usage example for a ForgeMCP tool. It clearly distinguishes itself from the sibling forge_discover by explaining that discovery comes first. An agent can identify exactly what this tool returns without opening the schema.
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?
It gives clear context and a prerequisite: 'Call forge_discover first to find tool names.' This tells the agent when this tool is applicable. It does not explicitly name when not to use it or present alternative paths, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forge_discoverA
Search ForgeMCP capabilities by intent. Returns matching tool names with one-line descriptions. Example: forge_discover('find rate limiter code') โ genius.hunt, genius.find_best
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What you want to do โ natural language |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It usefully states the return shape (matching tool names with one-line descriptions), but says nothing about result limits, ranking, or failure behavior. It is a read-only discovery operation by nature, so the safety profile is low-risk, but the disclosure is partial.
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 tight sentences plus a one-line example, with the core purpose front-loaded and no filler. Every element contributes: purpose, return shape, and a concrete usage instance.
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?
There is no output schema, and the description compensates by explaining the return format (names plus one-line descriptions). Given the tool's simplicity (one required string parameter), this is close to complete; only result-volume or ranking behavior is unaddressed.
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 query parameter, so the baseline of 3 applies. The inline example ('find rate limiter code') illustrates the expected natural-language phrasing, adding mild value beyond the schema's own 'natural language' note.
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 (search) and resource (ForgeMCP capabilities) and further clarifies the intent-based search model, which is distinct from the lookup behavior of a sibling like forge_describe. It clearly conveys what the tool returns, but does not explicitly name or contrast with that sibling, so it falls just short of full differentiation.
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 phrase 'search ... by intent' plus a concrete natural-language example gives implied usage guidance for when this tool applies. However, there is no explicit 'when to use this vs forge_describe' statement or any exclusion, leaving the routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
genius.explainB
Explain why a code result ranked where it did. Full signal breakdown with per-factor scores.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within repository | |
| repo | Yes | Repository (owner/name) | |
| query | Yes | The search query to score against | |
| preset | No | battle_tested | |
| snippet | No | Code snippet to analyze (if available) | |
| language | No | Language of the code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It does add useful output context ('full signal breakdown with per-factor scores') in the absence of an output schema, and 'explain' implies a non-destructive read, but it omits any auth prerequisites, rate limits, or side effects that a no-annotation tool should ideally disclose.
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 tight sentences with the core purpose front-loaded and zero filler. Efficient and readable, though it could be marginally denser by folding in the ranking context.
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 six-parameter tool, the description conveys what is returned (useful given no output schema) but says nothing about the preset enum's effect or how the input result should be supplied. Coverage is adequate but thin for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83% (>80%), so the schema already documents five of the six parameters, including repo, path, query, snippet, and language. The description adds no parameter-level meaning (e.g., how 'preset' alters scoring), so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Explain') and a defined resource ('why a code result ranked where it did'), and adds the deliverable ('full signal breakdown with per-factor scores'). An agent can grasp the purpose quickly, though it never names or contrasts the closely related sibling genius.find_best, so differentiation is left to inference.
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?
Usage is only implied: the tool is clearly meant to be applied to an already-ranked code result, but there is no explicit when-to-use, when-not-to-use, or pointer to the sibling that produces the ranking (genius.find_best). The agent must infer the workflow context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
genius.find_bestA
Find the best implementations of a concept across GitHub. Returns ranked archetypes with explanations, not raw search results. Example: genius.find_best('rate limiter', language: 'typescript')
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| preset | No | battle_tested | |
| concept | Yes | What to find (e.g. 'rate limiter', 'retry with backoff') | |
| language | No | Programming language filter | |
| minStars | No | Minimum repo stars |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the return shape (ranked archetypes with explanations) and implicitly that this is a read-only lookup, but says nothing about rate limits, auth needs, latency, or result staleness.
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, followed by the distinguishing output trait and a concrete call example. No filler; each sentence adds distinct information.
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?
With no output schema the description correctly covers the return shape, which is helpful. But for a 5-parameter tool it leaves the preset enum and result-set controls unexplained, so an agent cannot fully predict behavior for non-default invocations.
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 60%, and the description reinforces 'concept' and adds syntax for 'language' via the example. It does not explain the 'preset' enum values (battle_tested, modern_active, minimal_dependency, teaching_quality), which are undocumented in the schema and therefore opaque, nor the limit/minStars semantics.
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?
States a specific verb and resource ('find the best implementations of a concept across GitHub') and explicitly distinguishes the output from siblings ('Returns ranked archetypes with explanations, not raw search results'), which separates it from github.search_code/github.search_repos.
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 example shows one invocation and implies use when you want curated, ranked implementations rather than raw code hits. However, it never states when to prefer this over github.search_repos or genius.hunt, nor any exclusions or prerequisites, so routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
genius.huntB
Find the best implementations of a concept across GitHub, grep.app, and searchcode. Returns ranked archetypes (not raw search results) with quality explanations. Example: genius.hunt('rate limiter', language: 'typescript')
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | fast: local+grep (<1.5s), balanced: full discovery (<6s), deep: wider hydration | balanced |
| tier | No | Response detail level: L1=compact cards, L2=descriptions, L3=full code, auto=adaptive | auto |
| query | Yes | What to find: 'retry with backoff', 'rate limiter' | |
| preset | No | battle_tested | |
| language | No | Filter by language | |
| maxArchetypes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses the useful trait that output is ranked archetypes with quality explanations rather than raw hits, and identifies its data sources, but says nothing about permissions, latency, result limits, or how quality is judged. Adequate but incomplete for an unannotated 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?
Three sentences, front-loaded with purpose, followed by a return-value clarification and a concrete example. Nothing is padded, though the example could arguably be folded into the schema or dropped for further tightness.
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 six-parameter discovery tool with no output schema, the description should explain returns more fully. It names the archetype concept but leaves 'quality explanations', the preset semantics, and cross-source aggregation behavior unspecified. Reasonable but with clear gaps given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, with mode and tier already self-documented in the schema and preset and maxArchetypes undocumented. The description adds only a single example using query and language, giving no meaning to the preset choices or maxArchetypes behavior. Roughly a baseline score given the schema does most of the work.
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 gives a specific verb ('Find'), an explicit resource ('best implementations of a concept'), and names the three sources (GitHub, grep.app, searchcode). It further distinguishes itself by stating it returns 'ranked archetypes (not raw search results)'. It does not, however, differentiate itself from the very similar sibling genius.find_best or github.search_code.
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?
There is no explicit when-to-use, when-not-to-use, or alternative routing guidance. The parenthetical 'not raw search results' hints at a contrast with search tools, but the agent is left to infer when this beats genius.find_best or github.search_code. An example invocation is given but that is invocation syntax, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github.compareC
Compare implementations from different repos side-by-side with quality breakdown
| Name | Required | Description | Default |
|---|---|---|---|
| repos | Yes | Repos to compare (owner/repo) | |
| concept | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does not state whether the operation is read-only, what 'quality breakdown' includes, whether authentication or rate limits apply, or how results are returned. Only the basic comparison action is disclosed.
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 front-loaded sentence with no filler, which is structurally efficient. However, it is arguably too terse for a tool with two required parameters and a nuanced comparison output.
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 annotations, no output schema, two required parameters, and only 50% schema coverage, the description is not complete enough for reliable invocation. It omits parameter semantics and behavioral details needed to use the tool correctly.
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 50%: the 'repos' parameter is described, but the required 'concept' parameter has no schema description. The tool description does not compensate by explaining the meaning or expected format of 'concept', so agents must infer its role.
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 and resource: compare implementations from different repos side-by-side with quality breakdown. This is clear and distinguishable from general code search or repo overview tools. It does not explicitly name sibling alternatives, so it falls 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as github.search_code, github.repo_overview, or research.deep_compare. Usage is only implied by the word 'Compare', and no prerequisites or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github.repo_fileC
Get file content from a GitHub repo
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Branch, tag, or commit SHA | |
| path | Yes | File path within repo | |
| repo | Yes | owner/repo |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden but only says it retrieves content. It omits whether auth is required, whether it works on private repos, how binary/large files are handled, and encoding or truncation behavior โ meaningful gaps for a file-fetch 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?
A single front-loaded sentence with no waste. It is efficient, though its brevity borders on under-specification given the missing behavioral and usage detail.
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?
With no annotations and no output schema, the description is the only place behavioral context could live, yet it provides essentially none. For a read tool with three parameters and a rich sibling set, more detail about return format and behavior would be expected.
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% (repo='owner/repo', path='File path within repo', ref='Branch, tag, or commit SHA'), so the schema already documents all three parameters. The description adds no further meaning, which is the baseline expectation when coverage is complete.
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?
States a specific verb (Get) and resource (file content) scoped to a GitHub repo, which is clear and actionable. However, it does not differentiate itself from siblings like github.repo_tree or github.repo_overview, leaving the agent to infer that this fetches contents rather than metadata or listings.
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?
There is no guidance on when to use this tool versus github.repo_tree (to list files) or github.search_code (to find content). No prerequisites or conditions are stated, so selection among the tight github sibling set is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github.repo_overviewC
Get comprehensive repo intelligence: stars, health, CI, topics, license
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | owner/repo format |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read-only aggregation but says nothing about auth requirements, rate limits, latency, or whether the data is cached/live. For a tool with zero annotation coverage this is a notable gap.
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 front-loaded sentence with a compact colon-list of returned fields; every token earns its place. It is efficient, though terse enough that it sacrifices some clarifying context for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is low complexity (one required param) and has no output schema, so enumerating returned fields (stars, health, CI, topics, license) partially compensates. Still, with no annotations and no output schema, the description leaves behavior and return shape only partially covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single 'repo' parameter is fully documented in the schema (100% coverage, 'owner/repo format'), so the baseline is 3. The description adds no further meaning about the parameter, such as handling of private repos or org/repo variants.
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?
States a specific verb and resource ('Get comprehensive repo intelligence') and enumerates the payload (stars, health, CI, topics, license), making its scope distinct from siblings like github.repo_file or github.repo_tree. It does not, however, explicitly contrast itself with github.search_repos or github.compare.
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?
There is no when-to-use guidance, no prerequisites, and no named alternatives. An agent can infer it is a per-repo aggregator, but the description never states when to reach for it over github.compare or github.search_repos.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github.repo_treeC
Get file tree of a GitHub repo (recursive)
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | owner/repo | |
| maxDepth | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it discloses only that traversal is recursive. It omits auth/permission requirements, whether private repos work, rate-limit or size concerns for large trees, and how maxDepth interacts with the advertised recursion. Note that 'recursive' is slightly misleading given a default maxDepth of 3.
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 short, front-loaded sentence with zero filler; the verb and resource lead. It is efficient, though its brevity borders on under-specification, which is penalized under other dimensions.
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 tool with an undocumented non-obvious parameter, no output schema, and no annotations, this is too thin. There is no indication of return shape (paths? nested nodes?), size limits, or how maxDepth governs the result, leaving an agent to guess.
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 50%: 'repo' is documented as owner/repo, but maxDepth has no schema description and the description adds nothing about it. The word 'recursive' arguably implies depth control but never explains that maxDepth truncates traversal (default 3), so it does not compensate for the gap.
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?
Specific verb + resource: 'Get file tree of a GitHub repo' clearly states it returns a directory structure. It contrasts implicitly with github.repo_file (single file) and github.repo_overview, but never names or distinguishes them explicitly, so an agent must infer the split.
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 when-to-use guidance, no prerequisites, and no mention of alternatives such as github.repo_file or github.repo_overview despite their presence as siblings. '(recursive)' hints at scope but not at when this is the right tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github.search_codeC
Search code across GitHub. Returns file matches with text fragments.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Scope to specific repo (owner/name) | |
| limit | No | ||
| query | Yes | ||
| language | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, but it only hints at the return (file matches with fragments). It says nothing about authentication needs, rate limits, pagination, match ordering, or whether the search is exact vs fuzzy โ all material for a search 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?
Two short sentences, front-loaded with the core action and immediately followed by the key output detail. No filler or 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?
For a four-parameter search tool with no annotations, no output schema, and low schema coverage, the description is too thin. An agent gets the gist but lacks the query/filter semantics and behavioral context needed to invoke it confidently.
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 only 25% (only 'repo' is documented), so the description should compensate. Instead it says nothing about query syntax, the repo filter, language filtering, the limit default/max, or that query is required, leaving three of four parameters unexplained.
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?
States a specific verb and resource ('Search code across GitHub') and adds the return shape ('file matches with text fragments'), which lets an agent distinguish it from a repo-level search. It stops short of explicitly contrasting with siblings like github.search_repos or code.symbols, so it is clear but not fully differentiated.
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?
There is no guidance on when to use this versus the many adjacent tools (github.search_repos, code.symbols, code.reach). Usage is only implied by the verb 'Search code', with no context, prerequisites, or exclusions offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github.search_reposC
Search GitHub repositories by query, language, stars, topics
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | stars | |
| limit | No | ||
| query | Yes | ||
| language | No | ||
| minStars | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, yet it only says what is searched. It does not mention authentication, rate limits, result ordering defaults, or pagination behavior for what is clearly a network-bound read 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?
A single front-loaded sentence with the verb and resource first and no filler. Efficient, though the trailing 'topics' term is inaccurate and slightly muddies the concision.
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 fairly simple search tool with no output schema the description is minimally adequate, but with five undocumented parameters, no annotations, and no explanation of default sort or the 30-result cap, an agent lacks enough to invoke it optimally.
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 0%, so the description must compensate, but it only gestures at query, language, and stars while omitting sort and limit entirely. It also advertises 'topics,' which is not in the schema, adding confusion rather than clarity.
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?
States a specific verb (search) plus the resource (GitHub repositories) and its main filter dimensions, so the agent can distinguish it from github.search_code at a glance. The mention of 'topics' is slightly misleading since no topics parameter exists, but the core purpose is unambiguous.
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 versus github.search_code or github.repo_overview, and no prerequisites or conditions given. The description only restates capability, leaving selection entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import.extractA
Extract a function/module from a GitHub repo with provenance. License-checked, dependency-resolved, style-adapted. Returns ready-to-paste code with attribution.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Branch/tag/commit | |
| path | Yes | File path in the repo | |
| repo | Yes | owner/repo | |
| symbol | No | Specific function/class to extract | |
| adaptStyle | No | Adapt to your project's style |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose real behavioral traits beyond the schema: it license-checks, resolves dependencies, adapts style, and returns code with attribution. It stops short of stating auth requirements, failure modes (e.g. what happens when a license check fails), or whether the extraction is read-only/harmless.
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 short, front-loaded sentences with zero filler; the core action and its differentiators are stated immediately and the return value is placed last. Every fragment earns its place.
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 5-parameter tool with no annotations and no output schema, the description covers the action, its transformation pipeline, and the shape of the return (ready-to-paste code with attribution). It is nearly sufficient, only missing failure/edge behavior and auth context.
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 all five parameters (ref, path, repo, symbol, adaptStyle) are already documented in the schema. The description only loosely alludes to adaptStyle ("style-adapted") and adds no syntax or format detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ("Extract") and resource ("a function/module from a GitHub repo") and enumerates the tool's distinctive pipeline: provenance, license-checking, dependency resolution, style adaptation. It is clearly understandable on its own, though it does not name any sibling (e.g. github.repo_file or code.symbols) to differentiate itself explicitly.
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?
Usage is only implied: "Returns ready-to-paste code with attribution" suggests the use case of pulling external code into your project. There is no explicit when-to-use vs alternatives guidance, no mention of prerequisites (auth, rate limits), and no statement of 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.
memory.evolveC
Create an improved version of an existing pattern (links to parent)
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The improved code | |
| parentId | Yes | ID of the pattern to evolve | |
| description | No | What changed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it is thin. It conveys that a new pattern is created and linked to a parent, but says nothing about whether the parent is modified, what permissions or auth are needed, or what the returned value contains.
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 efficient sentence with the core action front-loaded. No waste, though it is perhaps too terse to carry the required behavioral context.
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 mutation tool with no annotations and no output schema, the description covers the essential action and relationship but omits side effects, permissions, and verification behavior. Adequate but with clear gaps.
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 the schema already documents code, parentId, and description. The parenthetical '(links to parent)' adds marginal meaning to parentId, but nothing beyond the schema baseline.
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?
States a specific verb ('Create') and resource ('improved version of an existing pattern'), and the parenthetical '(links to parent)' clarifies the relationship. It implicitly distinguishes from siblings like memory.store, but never names them directly.
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 when-to-use guidance, no conditions distinguishing it from memory.store, memory.link, or memory.related, and no prerequisites or exclusions stated. The agent must infer that 'evolve' means creating a derived version rather than storing or linking an existing one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory.forgetA
Remove a pattern from memory (cascades to tags, links, embeddings)
| Name | Required | Description | Default |
|---|---|---|---|
| patternId | Yes |
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 that removal cascades to tags, links, and embeddings, which is valuable behavioral context. However, it omits critical details: whether removal is permanent or reversible, required permissions, and what happens if the pattern doesn't exist. The cascade hint is useful but insufficient for a destructive operation.
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, front-loaded sentence that efficiently conveys the core action and its cascading effect. No wasted words; the parenthetical adds essential context without bloat.
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 destructive operation with no annotations, no output schema, and 0% schema coverage, the description should do more. It lacks information on reversibility, error conditions, and permissions. The cascade hint is helpful but the definition remains incomplete for an agent to invoke this tool safely and confidently.
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?
With one parameter and 0% schema description coverage, the baseline is 4. The description doesn't add meaning to 'patternId' beyond what's implied by the tool's purpose, but with only one required parameter of type integer, the schema is self-explanatory enough that no additional parameter guidance is strictly necessary.
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?
States a specific verb ('Remove') and resource ('a pattern from memory'), and the parenthetical clarifies the blast radius (cascades to tags, links, embeddings). This clearly distinguishes it from siblings like memory.store, memory.recall, and memory.evolve, which operate on different aspects of memory.
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 provides no guidance on when to use this tool versus alternatives (e.g., memory.evolve might also modify patterns). It does not state prerequisites or conditions for use, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory.linkC
Create a relationship between two patterns
| Name | Required | Description | Default |
|---|---|---|---|
| toId | Yes | ||
| fromId | Yes | ||
| relation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. It does not state whether links are directional, whether duplicates are rejected or silently merged, whether invalid ids error, or whether the relation is symmetric. For a mutation tool with zero annotation coverage, this is a substantial gap.
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 short sentence with no wasted words, so it is concise. The brevity comes at the cost of under-specification rather than tight editing, leaving it merely adequate.
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?
A three-parameter mutation tool with no annotations, no output schema, and 0% parameter documentation needs far more than one sentence. Missing are directionality of the link, duplicate/error behavior, and the meaning or availability of the relation types, all of which an agent needs to invoke it correctly.
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 0%, so the description must compensate and does not: fromId, toId, and relation are never explained. The phrase 'between two patterns' hints at two endpoints but gives no directionality semantics, which matters for asymmetric relations like depends_on or evolved_from. The six enum values in the schema carry the relation meaning entirely on their own.
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 names a clear verb ('Create') and resource ('relationship between two patterns'), so the basic operation is identifiable. However, 'patterns' is never defined, and it does not distinguish itself from sibling memory.related, which presumably reads the same relationships. Purpose is stated but non-specific about what a 'pattern' is or how this differs from related tools.
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?
There is no guidance on when to create a link versus when to read existing links (memory.related) or evolve/store patterns. No prerequisites, no mention of what happens if the relationship already exists. The agent must infer all usage context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory.recallC
Search code memory for patterns, solutions, and insights from past sessions
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results | |
| query | Yes | What to search for | |
| language | No | Filter by language | |
| minConfidence | No | Minimum confidence threshold |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only search but says nothing about how results are ranked, whether minConfidence affects ordering, whether this reads across all sessions or is scoped, or any auth/rate constraints โ a significant gap for a search 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?
A single tightly-worded sentence that front-loads the verb and resource with zero filler. Appropriately sized for a simple search tool.
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?
No output schema exists, so the description should ideally explain what a result looks like (e.g., pattern/insight objects with confidence scores, matched sessions), but it does not. Combined with zero annotations and no usage guidance, the definition is thin for a 4-parameter search 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 description coverage is 100%, so the baseline is 3; the four parameters (query, limit, language, minConfidence) are all documented in the schema itself. The description adds no additional meaning beyond the schema, so it neither exceeds nor falls below the baseline.
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 (Search) and resource (code memory) and clarifies the content type returned (patterns, solutions, insights from past sessions). It distinguishes the tool's domain from retrieval-only siblings like code.* and github.*, though it does not name a specific sibling alternative.
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?
There is no explicit guidance on when to use this tool versus alternatives such as memory.related, memory.stats, or github.search_code, nor any stated preconditions or exclusions. The agent must infer usage purely from the purpose statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory.statsA
Show code memory statistics: size, coverage, top patterns
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden; 'Show' implies a non-mutating read, and it discloses what the payload contains (size, coverage, top patterns), which is genuinely useful. However it says nothing about read-only guarantees, scope, or freshness of the stats.
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 front-loaded sentence with no filler; the returned fields are packed into the same line.
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?
With no parameters, no annotations, and no output schema, the description usefully enumerates the returned metrics. It is nearly self-sufficient, only missing a note on scope or refresh 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?
The tool takes zero parameters, so the baseline of 4 applies; there is nothing for the description to disambiguate.
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?
States a specific verb ('Show') and resource ('code memory statistics') and enumerates the content (size, coverage, top patterns), which separates it from siblings like memory.recall or code.map. It does not explicitly name a sibling, so it falls just short of 5.
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 reach for this versus memory.recall, code.map, or code.symbols, and no prerequisites stated. Usage is only implied by the word 'statistics'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory.storeC
Save a code pattern, solution, or insight to persistent memory
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | The code itself | |
| kind | Yes | ||
| name | Yes | Pattern name | |
| tags | No | ||
| language | No | ||
| signature | No | ||
| sourcePath | No | ||
| sourceRepo | No | ||
| description | No | ||
| sourceCommitSha | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden, yet it only asserts that storage is 'persistent'. It does not disclose overwrite/dedup behavior, key uniqueness on 'name', failure modes, or what happens when a pattern already exists. For a mutation-equivalent persistence tool this is a significant gap.
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 well-formed sentence with the verb front-loaded and zero filler. Efficient, though its brevity is also the source of the coverage gaps rather than a sign of completeness.
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?
A 10-parameter, 2-required persistence tool with no annotations and no output schema gets only one sentence. The agent lacks the information needed to populate the eight optional fields or to understand storage semantics and return 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 only 20%, so most of the 10 parameters (tags, language, signature, sourcePath, sourceRepo, sourceCommitSha, description, code) are undocumented. The description mentions three enum kinds ('pattern, solution, insight') but adds no format, required-field, or field-selection meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Save') and resource ('code pattern, solution, or insight') plus the destination ('persistent memory'). It implicitly distinguishes itself from read-side siblings like memory.recall, but never explicitly names any alternative. Clear purpose, weak sibling routing.
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 when-to-use guidance, no conditions, no exclusions, and no mention of alternatives such as memory.recall, memory.evolve, or memory.link. The agent must infer that 'store' is the write counterpart in the memory family.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research.add_stepC
Add a reasoning step to an active research chain. Records: what you searched, what you found, key insight, decision made.
| Name | Required | Description | Default |
|---|---|---|---|
| chainId | Yes | ||
| sources | No | JSON: [{url, title}] | |
| queryText | Yes | What was asked/searched | |
| queryType | Yes | ||
| keyInsight | No | The non-obvious takeaway | |
| resultFull | No | Full output if needed | |
| decisionMade | No | Decision resulting from this step | |
| resultSummary | Yes | Compressed finding (<500 chars) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It implies a mutation (add) and a precondition (chain must be active), but does not disclose what happens on a non-existent/inactive chain, whether steps are immutable or editable, or any permission/rate constraints.
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 short sentences, front-loaded with the core action and followed by a compact field list. Slightly redundant with the schema's field descriptions but no wasted prose.
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 an 8-parameter mutation tool with no annotations and no output schema, the description covers purpose but omits error behavior, the meaning of chainId, and how queryType enum values should be chosen. Adequate but with clear gaps.
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 75%, so most parameters are documented. The description loosely maps to queryText, resultSummary, keyInsight, and decisionMade, adding semantic framing, but the required chainId and queryType (and its enum) are not addressed. 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 states a specific verb ('Add') and resource ('a reasoning step to an active research chain') and enumerates what the step records. It implicitly distinguishes itself from research.start_chain and research.conclude by operating on an already-active chain, though it doesn't name those siblings.
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 phrase 'to an active research chain' implies a prerequisite, but there is no explicit when-to-use guidance or routing to alternatives like research.start_chain (to begin) or research.conclude (to finish). The agent must infer the workflow position.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research.archaeologyB
Trace how a concept evolved in a repo over time. Analyzes git commit history and code changes. No external AI required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | owner/repo | |
| limit | No | Max commits to analyze | |
| aspect | Yes | What to trace: 'error handling', 'auth flow', 'caching strategy' | |
| pathHint | No | Narrow to directory: 'src/auth/' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the data source (git commit history, code changes) and that no external AI is required, which is useful context, but says nothing about read-only safety, permissions, cost/latency, or output format for a multi-commit analysis.
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 short, front-loaded sentences with no filler. The second sentence ("Analyzes git commit history and code changes") is mildly redundant with the first but still clarifies mechanism.
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?
Reasonable for a 4-param analysis tool with full schema coverage, but with no annotations and no output schema, the description should say more about what comes back (timeline, commit list, summary) or any bounds on the analysis.
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 repo, limit, aspect, and pathHint are already documented in the schema, and the description adds no format or usage detail beyond them. Baseline 3 holds when the schema does the heavy lifting.
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?
States a specific verb and resource: "trace how a concept evolved in a repo over time", with git history and code changes as the mechanism. This is clearly distinct from generic siblings like code.trace or github.repo_overview, though no sibling is named explicitly to sharpen the boundary.
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 when-to-use guidance, no conditions, and no alternatives named. The agent must infer that this is for historical/evolution questions versus a static code lookup in code.trace or code.map. Nothing routes it against the ~30 siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research.concludeC
Mark a research chain as completed with final synthesis.
| Name | Required | Description | Default |
|---|---|---|---|
| chainId | Yes | ||
| conclusion | Yes | Final synthesis / decision |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden but says nothing about whether the chain becomes immutable, whether it requires an existing chain, or whether it fails on an already-concluded chain. 'Mark as completed' hints at a state mutation but no consequences are disclosed.
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 9-word sentence with no waste and the key action front-loaded. It is efficient, though its brevity contributes to the gaps elsewhere.
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 terminal mutation tool with no annotations, no output schema, and incomplete parameter coverage, the description is too thin. It omits preconditions, state effects, and error behavior that an agent would need.
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 50%: the 'conclusion' parameter is documented in the schema, but 'chainId' is not. The description adds nothing about parameter formats or constraints, so it relies entirely on the schema's partial documentation.
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?
States a verb and a resource ('mark a research chain as completed') with some scope ('final synthesis'), but it does not distinguish this from siblings like research.add_step or research.recall_chain beyond the word 'completed'. An agent could confuse it with simply adding a finishing step.
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 when-to-use guidance, no mention of when not to call it, and no pointer to sibling tools such as research.add_step or research.recall_chain. The agent must infer the terminal nature of this operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research.deep_compareC
Deep comparison of implementations across repos. Returns structured metrics and quality signals for the calling LLM to reason about.
| Name | Required | Description | Default |
|---|---|---|---|
| repos | Yes | ||
| concept | Yes | ||
| language | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries full burden. It mentions returning structured metrics and quality signals, but gives no detail on cost, latency, the 5-repo cap, or how deep 'deep' actually is. For an unannotated research tool, this is thin.
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 compact sentences, purpose front-loaded. No redundancy, though it is arguably too short for the ambiguity it needs to resolve.
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?
A multi-repo research tool with no annotations, no output schema, and 0% schema coverage whose description addresses none of the parameter or behavioral gaps. The agent is left under-informed on inputs, limits, and semantics.
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 0% and the description mentions zero parameters. The agent gets no clue what concept or repos should contain, how language interacts, or that repos is capped at 5.
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?
States the tool compares implementations across repos, which is a clear verb+resource. But it does not distinguish itself from siblings like github.compare or genius.find_best, leaving the agent to guess which comparison tool applies.
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 when-to-use or when-not-to-use guidance. With multiple sibling comparison tools (github.compare, genius.find_best), the description gives no signal for choosing this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research.recall_chainB
Search past research chains by topic. Answer questions like 'why did we choose Orama?' from stored reasoning.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Topic to search: 'Orama vs Elasticsearch' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read-only search over stored reasoning but says nothing about scope (all chains vs. current session), how many results are returned by default, ranking behavior, or what a result contains. For a recall tool with zero annotation coverage this is a meaningful gap.
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 short sentences, front-loaded with the core action before the illustrative example. No filler. Slightly under-specified rather than verbose, but structurally sound.
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?
With no output schema, no annotations, and one undocumented parameter, the description should say more about what a recalled chain looks like and how results are bounded. It conveys the retrieval intent adequately but leaves the agent guessing about return shape and scope.
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 50%: the schema already documents 'query' with its own example, while 'limit' is entirely undocumented in both schema and description. The description's 'by topic' framing duplicates rather than extends the schema, and the accidental-looking overlap between the schema's 'Orama vs Elasticsearch' example and the description's question adds no new meaning.
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?
States a specific verb and resource: 'Search past research chains by topic.' Clearly a read/lookup operation, which implicitly separates it from the research.start_chain / add_step / conclude write-side siblings. It stops short of naming sibling alternatives like research.archaeology, so an agent must infer the distinction.
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 worked example ('why did we choose Orama?') gives a concrete scenario, which is useful implied guidance for retrieval-style questions. However, it never states when to prefer this over research.archaeology, memory.recall, or research.deep_compare, nor any preconditions for chains existing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research.start_chainA
Start a new research chain to track reasoning across multiple steps. Chains persist across sessions for future recall.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Research topic: 'ForgeMCP Architecture Design' | |
| intent | Yes | Goal: 'Design code intelligence OS architecture' | |
| modelUsed | No | Which AI model was used for research |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and it does disclose a real behavioral trait: chains persist across sessions for future recall. However, it omits other key behaviors such as whether the new chain returns an identifier needed by research.add_step, and any auth or lifecycle constraints.
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 short sentences, both front-loaded and load-bearing: the first states what it does, the second states the persistence trait. No filler or repetition of the tool name.
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?
There is no output schema, so the description should ideally explain what starting a chain yields (an ID/handle needed by research.add_step). It covers intent and persistence but leaves that return-value gap, making it only adequately complete for a creator 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 description coverage is 100% and each parameter (title, intent, modelUsed) already carries an example in the schema. The description adds no syntax, format, or constraint detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Start a new research chain') plus the purpose (track reasoning across multiple steps), which distinguishes it from siblings like research.add_step and research.recall_chain. It is clear but never names those siblings explicitly, so the differentiation is implicit rather than stated.
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 persistence note hints at why one would create a chain (future recall) but gives no explicit when-to-use or when-not-to-use guidance, nor does it point to alternatives such as research.add_step for extending an existing chain. Usage must be inferred from the surrounding toolset.
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.
30 tool updates
v0.1.0- First observed
code.map - First observed
code.reach - First observed
code.symbols - First observed
code.trace - First observed
code.understand - First observed
forge_describe - First observed
forge_discover - First observed
genius.explain - First observed
genius.find_best - First observed
genius.hunt - First observed
github.compare - First observed
github.repo_file - First observed
github.repo_overview - First observed
github.repo_tree - First observed
github.search_code - First observed
github.search_repos - First observed
import.extract - First observed
memory.evolve - First observed
memory.forget - First observed
memory.link - First observed
memory.recall - First observed
memory.related - First observed
memory.stats - First observed
memory.store - First observed
research.add_step - First observed
research.archaeology - First observed
research.conclude - First observed
research.deep_compare - First observed
research.recall_chain - First observed
research.start_chain
TDQS
Scored across 30 tools
Multiple tools have overlapping purposes with near-identical descriptions: genius.find_best vs genius.hunt, github.compare vs research.deep_compare, and code.reach vs code.understand are easy to confuse. While some descriptions contain differentiating details, several boundaries remain unclear enough that an agent could misselect.
Most tools use dot-namespaced names (memory.recall, github.search_code, code.reach), but the pattern is broken by forge_discover/forge_describe and subcommands mix single words, verbs, and snake_case (e.g., research.archaeology vs research.deep_compare). Readable but not fully consistent.
With 30 tools, this exceeds the 25+ threshold for 'too many'. Several tools are redundant variations (e.g., two 'find best implementations' tools, two comparison tools), suggesting the surface could be consolidated rather than each tool earning its place.
The surface covers code memory CRUD (store, recall, evolve, forget, link, related, stats), research chain lifecycle, GitHub search/retrieval, local code understanding, and implementation discovery. Minor gaps like local full-text code search or exact-ID memory retrieval are workable, but not fatal.
Maintenance
Related MCP Connectors
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Code intelligence platform for AI agents. 20 tools for architecture, security & impact analysis.
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Finds real, maintained open-source repos that fit your project. MCP grounding for coding agents.
Related MCP Servers
- AlicenseAqualityAmaintenanceAI-powered code assistant that provides advanced search and discovery capabilities across GitHub and NPM ecosystems, helping users understand code patterns, implementations, and connections between repositories.13526 npm932TypeScriptMIT
- AlicenseNot gradedqualityDmaintenanceEnables semantic code search across projects using AI embeddings to find code by meaning rather than just text matching. Provides fast intelligent search, symbol analysis, and code similarity detection with multi-language support.MIT
- AlicenseAqualityFmaintenanceProvides code repository indexing and semantic search capabilities, allowing natural language queries to find relevant code snippets with automatic incremental indexing and multi-language support.18 npm359ISC
- FlicenseNot gradedqualityCmaintenanceEnables searching and retrieving knowledge extracted from GitHub PR reviews to help developers avoid repeating mistakes.-