Real-time global intelligence across 30+ domains with 100+ MCP tools for OSINT, markets, geopolitical analysis, and more
Scoring was not performed
6 tools have empty or missing input schemas ({}). Tools intel_alert_digest, intel_weekly_trends, classify_event, extract_entities have no visible parameter definitions. This violates the critical rule that every parameter needs type and description.
Duplicate tools reduce composition clarity: fetch_classify_event is a thin wrapper around classify_event; fetch_entity_extraction wraps extract_entities. This violates the single-responsibility principle and forces LLMs to reason about redundant tools.
No output schemas documented for any tool. The visible code shows tool implementations but no schema definitions for return types. LLMs cannot predict what fields to extract from responses or what to pass to downstream tools. This violates the documented-output requirement.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 33 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 49 | - | v1 |
Descriptions for intel_alert_digest and intel_weekly_trends are under 80 characters and lack actionable detail. They do not explain WHEN to use each tool or what distinguishes them from similar tools (e.g., when to call intel_alert_digest vs fetch_alert_digest if both exist).
No error handling guidance visible. The code has try-except blocks but tools do not specify what errors they can return, how to recover, or what the LLM should do next. The _safe_fetch helper logs warnings but the public tool interface provides no error categorization.
Parameter descriptions for simulate_cascade, detect_convergence, and fetch_news_clusters mention enum values (e.g., 'Corridor names from infrastructure.CABLE_CORRIDORS') but do not explicitly declare enums in schema. LLMs cannot self-validate against a list they must infer from text.
Parameter descriptions lack clarity on constraints and formats. fetch_country_dossier accepts 'ISO-2 or ISO-3 country code' but does not specify min/max length, pattern, or how the tool behaves if given an invalid code. fetch_company_profile accepts both 'Ticker symbol' and 'company name' but does not explain disambiguation logic.
No pagination or result-limiting pattern visible in tool definitions. Tools like fetch_news_clusters, fetch_country_dossier, and intel_alert_digest do not declare max_results or limit parameters. If they return unbounded lists, context window exhaustion is a risk.