All-in-one MCP server for local LLMs (web/doc/scholar/calc) no API keys required.
Tool4lm provides 22 tools across 11 functional areas (calc, web, doc, schema, wiki). Most tools have descriptions and visible schemas. However, several critical gaps emerge: (1) tool naming mixes dot and underscore conventions creating duplicate aliases rather than genuine alternatives; (2) descriptions are terse (10-50 chars) and lack 'when to use' guidance; (3) parameter descriptions are sparse or missing entirely; (4) error handling is absent from visible code; (5) output schemas are completely undocumented, we see tools return JSON but cannot verify structure from source. The server shows effort toward definition quality but falls short of production readiness. Average per-tool score: 62/100.
Evaluate math expression (no external calls).
Alias of calc.eval
Search local documents within sandbox directory. Builds index if missing.
Read a file from sandbox directory (text or pdf).
Alias of doc.find
Alias of doc.read
Build MiniSearch index for documents in sandbox directory.
Underscore aliases are not genuine alternatives, they duplicate dot-notation tools without added value. This creates 22 tools where 11 would suffice, wasting the LLM's reasoning on equivalent options.
Tool descriptions are extremely terse (10 - 50 chars) and lack actionable guidance. 'Evaluate math expression (no external calls)' does not explain when to use calc.eval vs alternatives, what constraints exist, or what the output format is.
Output schemas are completely undocumented. Tools return JSON (e.g. { content: [{ type: 'text', text: JSON.stringify(res) }] }) but the structure of 'res' is never specified. LLMs cannot reliably extract fields from responses without a documented schema.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 40 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 41 | - | v1 |
Alias of index.build
Get scholarly metadata by DOI/arXivId/URL.
Academic-first search (arXiv + Crossref + Wikipedia).
Alias of sch.get
Alias of sch.search
Fetch a URL with size/time limits and anti-SSRF.
Extract readable content from given HTML (or pass html from web.fetch).
Multi-engine web search (SearXNG + DuckDuckGo HTML).
Alias of web.fetch
Alias of web.read
Alias of web.search
Wikipedia summary by title.
Wikipedia title search (public API).
Alias of wiki.get
Alias of wiki.search
Parameter descriptions are missing or trivial. 'max' in web.search has description 'Maximum number of results' but does not state the default, valid range, or what happens if omitted. 'engines' array is listed but no enum values or documentation of supported engines provided.
No error handling or recovery guidance visible in code. web.fetch has anti-SSRF and timeout features mentioned in description but no code showing what errors are returned, how to retry, or what the LLM should do on failure.
Parameter 'max_bytes' in web.fetch is listed in schema but never used in the handler code shown. This indicates incomplete implementation or outdated schema definitions.