MCP + docs retrieval bridge with safe condensation. Keeps LLM context small by connecting to MCP servers, calling tools, condensing outputs under a strict token budget, and integrating selected direct APIs.
Skillhub defines 20 tools with moderate-to-poor quality. Naming is inconsistent (verb_noun for some, API-centric for others). Descriptions are present but often generic and lack actionable context. Input schemas are visible and well-structured in most cases, but parameter descriptions are terse and lack guidance on constraints, dependencies, or error recovery. Output schemas are not documented. The server conflates MCP scaffolding tools (mcp_verify, mcp_list_tools, mcp_call) with domain-specific integrations (Exa, Firecrawl, Vercel), creating a confusing mental model. Error handling is absent, no guidance on what to do when a call fails. Security is weak: token parameters are exposed directly (exa API token in vercel_list_projects, Firecrawl auth not shown but likely similar), and no error classification (retryable vs fatal). Parameter descriptions lack format constraints, allowed ranges, or examples. Many parameters (extra_json, user_query, token_budget, cache, save_raw) appear across tools with minimal context, suggesting a kitchen-sink approach to parameter passing rather than thoughtful API design.
Condense a saved raw payload
POST /answer - Get an LLM answer informed by Exa search results
POST /contents - Retrieve contents for a list of URLs
POST /context - Search Exa Code context
POST /findSimilar - Find links semantically similar to a URL
POST /research/v1 - Create an asynchronous research task
GET /research/v1/{id} - Get research task result
Token/API credentials exposed as tool parameters (e.g., Vercel token in vercel_list_projects). Credentials must be injected server-side via environment variables or vault, never as parameters. Agent traces and prompt history will log these.
Output schemas not documented. LLMs cannot plan downstream tool calls or extract data without knowing what fields will be returned. Every tool should document its return structure.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 31 | - | v1 |
GET /research/v1 - List research tasks
POST /search - Search the web
Verify Exa config
Start a crawl job
Start an extract job
Map URLs for a site
Scrape a single URL
Search the web
Verify Firecrawl config
Call a tool on an MCP server
List tools for a server
Verify an MCP server
List Vercel projects
Parameter descriptions are generic or missing context. 'extra_json' appears in many tools with minimal explanation. Parameters lack format constraints, ranges, or examples. E.g., 'include_domain' accepts array but no guidance on URL format or max items. 'num_results' (exa_search) has no min/max bounds.
No error handling or recovery guidance. Tools do not document what errors are retryable, which require user intervention, or which are fatal. LLMs cannot self-correct or escalate appropriately.
Mutating tools (mcp_call with confirm flag, exa_research_create, firecrawl_crawl, firecrawl_extract) lack confirmation workflows. A 'confirm' parameter is present but descriptions do not clarify the UX, does the tool block until confirmed, or return a pending state? No dry-run mode offered.
Ambiguous parameter semantics. 'user_query' and 'token_budget' appear across many tools without a clear explanation of their role. 'extra_json' is a dumping ground for undocumented parameters. 'save_raw' and 'cache' flags exist on nearly every tool but lack clear cache invalidation or eviction policy.
Naming conflates infrastructure (mcp_*) with domain services (exa_*, firecrawl_*). An LLM must reason about two distinct tool categories without a clear mental model. Consider renaming MCP tools to mcp_server_* or moving them into a separate 'admin' namespace.
No tool annotations present (readOnlyHint, destructiveHint, idempotentHint per MCP spec 2026-07-28). This prevents clients from inferring tool semantics and adapting UI or orchestration without reading descriptions.
Pagination not implemented. Tools like mcp_list_tools, exa_research_list may return unbounded result sets. No limit, offset, or next_cursor parameters; no total count in response. Large result sets blow context windows.