Look up and verify legal citations found in a block of text using CourtListener's Citation Lookup API
domain: courtlistener.com · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Authenticate with Token Authentication, sending your token in the Authorization header
POST to the v4 citation-lookup endpoint with either a single volume/reporter/page citation or a text field containing a block of text to parse
For text-block lookups, the API runs Eyecite (CourtListener's own citation-parsing engine) to extract and match every citation found in the passage
Read each result's status field to distinguish successfully matched citations from unresolved ones, and inspect normalized_citations when a citation contains a typo or non-canonical reporter abbreviation
Cap text-block requests at 64,000 characters (roughly 50 pages) — longer submissions are rejected outright rather than truncated
Cap citations per request at 250 — citations beyond that limit are still parsed but returned with a per-citation status of 429 ('too many citations requested') instead of being matched
Known gotchas
The API explicitly does not resolve statutes, law journal citations, "id." citations, or "supra" citations — only case citations are matched against CourtListener's database
The 64,000-character text limit and 250-citation-per-request cap are hard per-request limits, not account-level rate limits — long briefs must be chunked
A citation past the 250-per-request cap gets a 429 status embedded in that specific citation's result object, not an HTTP-level 429 on the whole response — callers checking only the top-level HTTP status will miss this per-citation failure
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?