MCP server for the AI Incident Database (AIID), a community-curated record of harms caused by deployed AI systems. Provides search, retrieval, and taxonomy browsing capabilities.
Server defines 4 tools with clear verb-noun naming (search_, get_, list_). All tools have descriptions (avg 95 chars, within baseline 34-392). Input schemas present with type declarations. However, critical gaps: (1) Most parameters lack descriptions, 'limit' and 'offset' in search_incidents have minimal guidance; (2) No output schema documentation, callers cannot predict response structure; (3) No enum constraints on parameters like 'limit' ranges (1-200, 1-50) are stated in descriptions but not enforced in schema; (4) Error handling is minimal, graphql() throws generic errors without recovery guidance; (5) No parameter validation rules documented (e.g., date format YYYY-MM-DD is stated but not validated). search_incidents and get_incident are well-named and described, but lack parameter-level detail. list_recent and list_taxonomies are minimal. Overall: functional but below production baseline for agent-facing tools.
Fetch a full AI Incident Database record by numeric incident_id; returns title, date, description, alleged deployer/developer/harmed parties, and all linked news report URLs.
Most recently added incidents.
Taxonomies used to classify incidents (CSET-AIID, GMF, RAIC).
Search the AI Incident Database. Combines free-text with date range filters. Returns incident IDs, titles, dates, and a short blurb.
No output schema documentation. Callers cannot predict response structure (fields, types, nesting). LLMs must infer from examples or fail.
Parameter descriptions are minimal or missing. 'limit' and 'offset' in search_incidents lack guidance on valid ranges, defaults, or side effects. 'query' lacks examples of what free-text searches match.
No enum constraints in schema. Descriptions state '1-200 (default 25)' and '1-50 (default 10)' but schema has no minimum/maximum or enum. LLMs may pass invalid values.
Error handling lacks recovery guidance. graphql() throws generic 'AIID error' or 'AIID GraphQL error' without actionable next steps. LLM cannot self-correct or retry intelligently.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Date format validation missing. Descriptions state 'YYYY-MM-DD' but reqNum() only validates numbers, not date strings. Invalid dates (e.g. '2024-13-45') will be passed to GraphQL and fail opaquely.