Single tool 'fast-search' has a well-structured JSON Schema with comprehensive parameter definitions and clear descriptions. The tool name uses a verb (search) and is action-oriented. Descriptions are present and detailed at both tool and parameter levels. However, the output schema is documented in prose (parameters section of docstring) rather than as a formal JSON Schema return type, which reduces clarity for automated parsing. The tool is read-only (no state-modifying side effects), reducing error-handling complexity. No tool annotations (readOnlyHint) are present in the code despite the tool being safe. Parameter descriptions are detailed and include constraints (max values, format hints), meeting the pattern:constrained-input baseline. The server uses context-based API key injection (X-Nosible-Api-Key header via ContextVar), correctly avoiding secret exposure as tool parameters.
Run a web search using the NOSIBLE search engine. It is highly recommended to use expansions to boost recall, along with your search.
Output schema not formalized as JSON Schema; documented only in prose within docstring parameters section. Automated tools cannot parse expected response structure, reducing composability and requiring manual LLM reasoning about returned fields.
Tool lacks annotation hints in code. Despite being read-only and safe to retry, no @mcp.tool(readOnlyHint=true) or similar annotation is present. This forces LLMs to infer safety from descriptions alone.
Parameter 'expansions' is optional (defaults to None) but docstring recommends using it ('highly recommended'). Missing clear guidance on consequences of omitting it (recall reduction). Should either default to sensible fallback or be required.
Multiple geography parameters (continent, region, country) have unclear interaction/precedence. Documentation does not state whether specifying 'country' overrides 'continent', or if all are ANDed together.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 79 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 54 | - | v1 |
No pagination parameters visible (limit, offset, page, cursor). Tool returns up to n_results items but no guidance on handling large result sets or breaking output into pages. At scale, this risks context window exhaustion.
Error handling relies on exceptions (ValueError for missing API key). No enumeration of failure modes, recovery guidance, or per-result error reporting for partial failures. LLMs cannot distinguish transient from fatal errors.