MCP server over CourtListener (Free Law Project) for free U.S. legal research: case-law and docket search, a free citator check (who cites this case), tables of authorities, RECAP docket filing histories, oral-argument audio, judges, and citation verification that catches fabricated cites. Built for legal aid, tenant defense, pro-se litigants, and public-interest lawyers.
mcp-courtwatch demonstrates solid tool design with 11 well-named, read-only legal research tools. All tools have clear descriptions (100-250 chars) and complete input schemas with typed parameters and enums where appropriate. Naming follows verb_noun convention (opinion_search, docket_lookup, case_detail). Pagination is properly implemented via next_cursor. However, output schemas are not explicitly documented in the source, only inferred from descriptions. Error handling is present but minimal (no recovery guidance or actionable error messages visible). Tool annotations (readOnlyHint) are absent. No tool composition guidance or chaining documentation.
Retrieve the table of authorities (cited cases) for an opinion, with citation depth and treatment classification.
Retrieve full details of a case (cluster) or opinion: case name, citations, judges, full opinion text (capped at 50,000 chars), and related opinions.
Verify citations in text: extract citations, check if they resolve to real cases, and flag fabricated or malformed citations. Returns found citations with case details and not-found citations.
Find all opinions that cite a given opinion (citator). Returns citing opinions with case names, dates, and treatment classification (if available).
List U.S. courts by jurisdiction (Federal, State, Appellate, etc.) and optional name filter. Returns court IDs, full names, and jurisdictions.
Retrieve RECAP docket filing history for a federal docket: documents, filing dates, descriptions, and download URLs.
Output schemas not documented in source code. Tool descriptions infer structure but no explicit return type definitions visible. LLMs cannot reliably plan downstream tool calls without knowing what fields to expect.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are read-only but this is not formally declared in the schema, forcing LLMs to infer safety from descriptions alone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Search federal court dockets by keyword, court, and date range. Returns paginated results with case names, docket numbers, and filing dates.
Search judges and court personnel by name, court, and date range. Returns names, IDs, and court assignments.
Search U.S. case-law opinions by keyword, court, date range, and citation count. Returns paginated results with case names, dates, courts, and citation counts.
Retrieve the transcript of an oral-argument audio recording. Returns paginated transcript text with speaker labels and timestamps.
Search oral-argument audio by keyword, court, and date range. Returns audio metadata including duration, judges, and case names.
Error handling lacks recovery guidance. No visible error messages that tell LLMs what to do next (e.g., 'Citation not found. Try citation_lookup() with a different text sample.'). Raw API errors would not guide agent recovery.
No tool composition guidance. court_list returns court IDs but no documentation on how to chain them into opinion_search or docket_lookup. judge_lookup returns judge IDs with no guidance on downstream usage.
Parameter descriptions lack format/constraint details. 'court' parameter accepts strings like 'scotus', 'ny', 'ca9' but no description specifies the format or lists valid values. LLMs may hallucinate invalid court codes.