The contestation layer for last30days: turn engagement-ranked evidence into a consensus/confidence map an AI agent can act on.
Single tool 'crowd_check' has a well-structured schema with all parameters typed and described. Tool name is clear and action-oriented. Description is comprehensive (280+ chars) and explains the tool's purpose, return value, and critical usage guidance. Schema includes proper enums for 'source' parameter and sensible defaults. However, output schema is not formally documented, the description mentions JSON fields but no structured schema is provided. Error handling is absent; no guidance on what happens if the claim is invalid, API fails, or demo mode is unavailable. The tool is read-only (good for safety) but lacks explicit error recovery patterns.
Map who agrees/disputes a claim and how sure the signal is. Args: claim: the assertion to check, e.g. "AI agents will replace most junior dev jobs by 2027". recency_days: evidence window in days (default 30). source: "auto" (default), "native" (Reddit+HN+market, no keys), or "last30days" for broader coverage (X, YouTube, TikTok) when that engine is installed. demo: use bundled offline sample evidence (no API keys needed). Returns: JSON contestation map: consensus, confidence, leaning, read, positions[], market_signal, coverage, evidence[]. NOT a verdict.
Output schema not formally documented. Description mentions 'JSON contestation map: consensus, confidence, leaning, read, positions[], market_signal, coverage, evidence[]' but no structured schema definition is provided. LLMs cannot reliably parse or chain on undocumented output.
No error handling or recovery guidance. Tool description does not explain what happens if the claim is invalid, API keys are missing, or the demo mode fails. LLMs have no guidance on retryability or next steps on failure.
Parameter 'source' enum includes 'last30days' which requires an external engine to be installed, but this dependency is not validated or documented in the tool. LLMs may select this option without knowing it will fail if the engine is absent.
Tool returns JSON as a string (via json.dumps) rather than a structured object. This forces LLMs to parse JSON text, increasing error likelihood and token waste. Return structured output directly.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
STDIO transport only. Server is not remotely accessible and cannot be used by hosted MCP clients. This is a hard architectural limitation.