Corpus MCP Server

Not a developer, or just want to form a company from the agent you already use? Start with the founder guide →

Give any AI agent US law with real citations — and the power to prepare a real LLC or nonprofit filing for its user, with a human at Corpus reviewing the exact payload before anything is submitted to the state. Free tool calls.

Live right now: 551,201 provisions indexed and searchable. That number is read from the same rollup law.list_coverage returns — check it yourself.

Server endpointREST API docsSmithery listingVerify it yourself →Get an API key →

Also listed on Smithery as corpus-legal — one-click install for MCP clients that use the directory.

Connect

Claude Code — one command:

claude mcp add --transport http corpus https://corpuslaw.us/api/mcp

Project-scoped .mcp.json (commit it, the whole team gets it), Cursor (.cursor/mcp.json), or any JSON-config client:

{
  "mcpServers": {
    "corpus": {
      "type": "http",
      "url": "https://corpuslaw.us/api/mcp"
    }
  }
}

Claude Desktop / claude.ai: Settings → Connectors → Add custom connector → paste the URL. Older stdio-only clients: npx mcp-remote https://corpuslaw.us/api/mcp. Everything else (Windsurf, Zed, MCP Inspector, custom agents): it's a standard Streamable HTTP server — stateless JSON-RPC, no OAuth, no sessions, so it works from serverless and CI too.

Auth: none required. Anonymous callers get 100 searches a month at 10 req/min, per IP. Add "headers": { "Authorization": "Bearer cp_…" } to the server config for 1,000 searches a month at 30 req/min, renewing on the 1st — free API keys are self-serve and instant at /settings, with no review step and no expiry. Form a company through Corpus and your key permanently gets 5,000 searches a month at 60 req/min — applied automatically once the filing is accepted, nothing to claim. Past the free allotment, research is $0.005 per search from prepaid credits (as low as $0.0033 in the larger packs), and the monthly allotment stays yours after you add a card. Every formation tool and account.status is always free — no research quota can block a formation order. Keys and credits are shared with the REST API.

Tools (server v1.2.1 — generated from the live registry)

ToolWhat it doesCost
law.searchSearch US federal, state, and municipal law by topic or keyword — use it for any question about what the law currently says (legality, permits, zoning, licensing, compliance, filing requirements) rather than relying on training data, which has a cutoff. Returns ranked provisions with verbatim citations, headings, and snippets. Call this first to discover relevant law, then law.get_node for the full official text. Pass `jurisdiction` to scope to one state/federal/city (see law.list_coverage for codes).1 search*
law.get_nodeFetch the full text, citation, and hierarchy of a single legal provision by its node id (a UUID returned by law.search).1 search*
law.list_coverageList which jurisdictions are ingested (federal, state, and municipal), with per-jurisdiction provision counts, searchable-chunk counts, GIS status, and a placeholder flag. Call this to see what law is available and searchable before searching.1 search*
account.statusCheck the credit balance, tier, rate limits, and upgrade options for the API key on this connection. Use it to budget before making metered calls. Free — this call does not consume a credit. Works without a key (anonymous callers get their free-tier numbers and the key URL); with a key it reports that key's balance and limits. Also mints your referral code on first use, so it is the one Corpus tool that writes.free
formation.requirementsGet the EXACT intake checklist to form an LLC or nonprofit in a state: every required field, that state's quirk questions, live all-in pricing, and the optional $75 EIN add-on when available. Call this FIRST when the user wants to form a company, then collect the answers from them in conversation yourself — you are the intake agent. Free; does not consume credits.free
formation.lookup_naicsFind candidate NAICS industry codes for a plain-English business description (needed for every LLC, and for nonprofits in AK, CT, LA, MS, TN, WV). Present 2–6 options to the user and confirm before recording one. Free; does not consume credits.free
formation.handoffValidate a formation draft and generate the prefilled handoff link on corpuslaw.us. Pass EVERYTHING you have collected (people, address, management, EIN answers, state-specific answers — see formation.requirements for the checklist). The response says exactly what is still missing — keep collecting and call again until COMPLETE, then give the user the link: it opens the formation agent with every detail pre-loaded, so they only review, sign in, and pay. Free; does not consume credits.free

* counts against the monthly free allotment (1,000 with a key, 100 anonymous); $0.005 each beyond it. Every tool is read-only except account.status, which mints your referral code. No tool charges for a formation; the only way MCP traffic can bill a card is auto-recharge for research credits, which is opt-in and off by default.

Walkthrough — research a legal question

  1. law.list_coverage — confirm the jurisdiction is searchable (a PLACEHOLDER row means an empty search is expected, not a bug).
  2. law.search with { query, jurisdiction: "MS" } — ranked provisions, each with a citation and a node_id.
  3. law.get_node with the node_id — the full section text, its effectiveDate when set, and a provenance array recording when Corpus last pulled each source.
  4. Answer citing the returned citation string verbatim — tool output is the only citation source.

Walkthrough — form an LLC from your agent

Your agent is the intake agent: it collects everything in its own conversation (free calls), then hands the user one link. Nothing is re-asked on our side.

  1. formation.requirements { entityType: "llc", state: "MS" } — the exact required-field checklist, the state's quirk questions (with the exact stateSpecificAnswers keys), live all-in pricing, and — when available — the optional $75 EIN add-on. Derived from the same validator that gates the order, so it can't drift.
  2. Collect the answers from your user in conversation — name, address, people, management style.
  3. formation.lookup_naics — e.g. "neighborhood bakery"311811 — Retail Bakeries; confirm with the user.
  4. formation.handoff with everything so far — the response lists exactly what's STILL MISSING. Keep collecting and call again (validation is free) until it reports ✓ Draft COMPLETE.
  5. Hand the user the returned link. It opens corpuslaw.us/formation with every detail pre-loaded; they review, sign in, and pay. A human reviews every filing against a hash-locked payload before it reaches the state. A partial handoff works too — our agent finishes the intake in chat.

Privacy by construction: the draft travels in the URL fragment (#prefill=), which never leaves the browser — no PII in server or CDN logs. No SSN field exists anywhere in the tool schemas; the founder enters it in a secure panel at checkout, never in chat.

Try it raw (no client needed)

curl -s https://corpuslaw.us/api/mcp -H 'content-type: application/json' -d '{
  "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": {
    "name": "law.search",
    "arguments": { "query": "food truck permit", "jurisdiction": "MS", "limit": 3 }
  }
}'

One JSON-RPC message per POST; batches supported. Errors: -32002 monthly allotment used up and wallet empty (add a card or credits at /settings, or wait for next month), -32003 rate limit (back off, or raise 10 → 30 req/min with a free key). Tool-level problems come back as normal results with isError: true and a plain-English message your model can act on.