About legalcite
LegalCite verifies case citations in legal text against CourtListener records and flags missing or mismatched cases. It serves legal-text workflows through a REST API and an MCP server.
Key features
- 01Citation extraction from text
- 02CourtListener case lookup
- 03Real, not-found, and mismatch verdicts
- 04Optional richer metadata lookup
- 05REST API and MCP tool
Use cases
- 01Checking citations in AI-generated legal text
- 02Finding fabricated or misattributed cases
- 03Reviewing case references in legal documents
MCP support
The MCP server exposes the `verify_citations(text)` tool, which checks legal citations against CourtListener records.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
1Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| text | string | Yes | text containing one or more legal citations to verify, e.g. a paragraph from a brief or "410 U.S. 113" |
Details
From the project READMELegalCite
Stop your AI from citing fake cases. LegalCite checks every case citation in legal text against real court records (CourtListener) and flags hallucinated/fake or misattributed cites. A REST API + an MCP server.
- Live: https://legalcite-one.vercel.app
- Verify API:
GET /api/verify?text=<paragraph>(or?citation="410 U.S. 113"; alsoPOST {text}) - MCP:
verify_citations(text)→ npmlegalcite-mcp - Data: CourtListener (Free Law Project) — free public U.S. court records.
Verdicts
| verdict | meaning |
|---|---|
real | the case exists and (if named) the name matches |
not-found | no such case — likely hallucinated |
mismatch | citation is real, but the case name in the text is wrong |
How it resolves
- Token-free (default): reporter-aware regex extracts citations → each resolved via CourtListener's public
/c/{reporter}/{vol}/{page}/finder (redirects to the opinion when real, 404 when not). - Token mode (optional): set
COURTLISTENER_TOKEN(free) → uses CourtListener'scitation-lookupendpoint (Eyecite extraction + full metadata).
It never fabricates — an unresolved citation is reported not-found, never invented.
Layout
api/verify.js REST endpoint (quota + verify)
api/health.js liveness + CourtListener check
api/checkout|key|stripe-webhook.js Stripe Pro billing
lib/verify.js citation extraction + CourtListener resolution (core)
lib/store.js Redis quota + key store (fail-open without REDIS_URL)
lib/stripe.js lazy Stripe client
mcp/server.js MCP stdio server — verify_citations tool
public/ landing, docs, pricing, llms.txt
scripts/setup-stripe-product.js one-time Stripe product/price (test key)
Config (Vercel env — all optional for the MVP)
COURTLISTENER_TOKEN— free; enables richer citation-lookup + metadata.REDIS_URL— Upstash; enables hard daily quota + caching (fail-open without it).STRIPE_SECRET_KEY/STRIPE_PRICE_ID/STRIPE_WEBHOOK_SECRET— Pro billing.
Pricing
Free: 20 checks/day by IP. Pro: 2,000/day, $19/mo, 7-day trial.
Not legal advice. Verifies citation existence/metadata only — not legal correctness or good-law status.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.