io.github.Kevinx702/legalcite
Verify legal case citations against real court records; flag fake/hallucinated cites.
Open source Open in the app JSON README (API)
About
Verify legal case citations against real court records; flag fake/hallucinated cites.
Details
- Kind
- MCP servers
- Topic
- Government & public data
- Publisher
- kevinx702
- Origin
- official
- Category
- ferramentas
- Transport
- local
- Version
- 0.1.0
- Last push
- 2026-06-27T00:13:12Z
- Repository state
- ativo
- Language
- JavaScript
- Added
- 2026-08-29 03:02:00
- Updated
- 2026-08-29 03:02:00
- Origin id
io.github.Kevinx702/legalcite
README
# LegalCite
**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"`; also `POST {text}`)
- **MCP:** `verify_citations(text)` → npm `legalcite-mcp`
- **Data:** [CourtListener](https://www.courtlistener.com) (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
1. **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).
2. **Token mode (optional):** set `COURTLISTENER_TOKEN` (free) → uses CourtListener's `citation-lookup` endpoint (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.