Search and fetch documentation from multiple library sources using DuckDuckGo, with dynamic library registration
DocSearch has 3 tools with explicit FastMCP registration and visible input schemas, but significant description and schema quality gaps limit confidence. Tool naming follows verb-noun convention (register_, list_, search_) which is good, but descriptions lack crucial LLM guidance. Two tools have minimal parameter descriptions, and output schemas are not formally documented. Error handling exists but is generic. The server would benefit from richer parameter documentation, explicit output schema definitions, and more actionable error messages.
Return a list of all currently supported library names.
Dynamically add a new library documentation source to the registry. Example: name="fastapi", base_url="https://fastapi.tiangolo.com"
Search the latest official documentations for a given query and library. Supports langchain, openai, llama-index. Args: query: The query to search for (e.g. "Chroma DB") library: The library to search in (e.g. "langchain") Returns: Concatenated text content of top linked pages or list of URLs if fetch fails
list_supported_libraries has a generic, minimal description ('Return a list of all currently supported library names.') that lacks context for when to call it vs other tools. Missing information about what to do with the returned list.
search_docs parameter 'library' lacks guidance on valid values. The description says it supports 'langchain, openai, llama-index' but does not state these are examples or the complete set, or that unknown libraries trigger auto-discovery via DuckDuckGo. This creates ambiguity about expected input.
Output schemas are not formally documented for any tool. search_docs returns a string ('Concatenated text content' or error messages), but the caller has no structured expectation of what fields are present. register_new_library returns a plain string. List tools should document total_count or pagination metadata.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 71 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 43 | - | v1 |
search_docs description includes inline example values ('Chroma DB', 'langchain') that LLMs may reuse literally. Should use parameter constraints and structured guidance instead.
register_new_library description states 'Example: name="fastapi", base_url="https://fastapi.tiangolo.com"', example values in descriptions encourage LLMs to replicate them. Remove examples and use enum/pattern constraints in schema instead.
Error responses in search_docs are generic strings ('No results found.', 'Error: not found...') rather than structured objects with error codes and recovery guidance. Agents cannot distinguish retryable from user-fixable errors.
register_new_library accepts any string as base_url without validation. No check for valid URL format, reachable host, or duplication warning if library already registered. LLMs could pass malformed URLs.
search_docs has a critical dependency on registry state (auto-discovery fallback if library not registered). This creates non-deterministic behavior, same input may behave differently if registry has been modified. Dependency should be documented and idempotency reconsidered.