Free Law Project's CourtListener API (free, no auth required for basic access)
CourtListener MCP has clear, well-structured tool definitions with good naming (verb_noun pattern) and reasonable descriptions (150-200 chars). All three tools have complete input schemas with typed properties and required fields. However, parameter descriptions lack actionable constraints (no enums, ranges, or format guidance), output schemas are not formally documented, and error handling is minimal. The server strips API verbosity well but does not guide LLM recovery on failures. Composition is sound, three focused, single-responsibility tools with clear chaining potential (search → get_opinion).
Get a specific court opinion by its CourtListener ID. Returns the full opinion text, author, date, and download link.
Search US court dockets by keyword. Returns case name, court, filing date, docket number, nature of suit, and assigned judge. Covers PACER and RECAP archives.
Search US court opinions by keyword (e.g., "qualified immunity", "Fourth Amendment"). Returns case name, court, date, docket number, and text snippet. Covers federal and state courts.
Parameter descriptions lack actionable constraints. 'court' param accepts free-form strings (e.g., 'scotus', 'ca9', 'nysd') but no enum, pattern, or list of valid values is provided. LLMs will hallucinate invalid court codes.
Output schemas are not formally documented. Callers cannot see what fields search_opinions/search_dockets return (opinions vs dockets array structure, field types). LLMs must infer structure from implementation.
Error handling provides no recovery guidance. Errors like 'CourtListener API error: 404' or 'opinion {id} not found' do not suggest next steps (e.g., 'Try search_opinions() first to find valid IDs').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
date_after parameter lacks format specification. Description says 'YYYY-MM-DD' but no validation or error message guides LLMs if they pass '2024/01/15' or '01-15-2024'.
No pagination limit documented. search_opinions and search_dockets return data.results.length items but do not cap results or document max. Large result sets could exhaust context.