Search and cite US law from official sources, then form an LLC or nonprofit with free agent tools.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Reports the credit balance, tier, rate limits, and upgrade options for the API key on this connection, or the free-tier allowance and the key URL for an anonymous caller. Free — this call does not consume a credit. Also mints or returns a referral code; `referral_code` on later calls keeps the same referral identity.
An active referral code returned by an earlier account.status call; it keeps the same referral identity. An inactive code is replaced with a new one.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Reports the credit balance, tier, rate limits, and upgrade options for the API key on this connection, or the free-tier allowance and the key URL for an anonymous caller. Free — this call does not consume a credit. Also mints or returns a referral code; `referral_code` on later calls keeps the same referral identity.
| Argument | Type | Description |
|---|---|---|
| referral_code | string | An active referral code returned by an earlier account.status call; it keeps the same referral identity. An inactive code is replaced with a new one. |
{
"type": "object",
"properties": {
"referral_code": {
"type": "string",
"description": "An active referral code returned by an earlier account.status call; it keeps the same referral identity. An inactive code is replaced with a new one."
}
}
}Creates the founder's formation order and a USDC (Solana) payment request — no API key, no Corpus sign-in. Payment is USDC on Solana ONLY. The first call takes the complete draft, the founder's contactEmail, an idempotencyKey (the same order is returned on retry), and consent { version, registeredAgentAcknowledgements: true }, which records that the founder accepted the registered-agent acknowledgements. A queue-lane order first returns a submission promise, accepted with a second call { orderId, trackingToken, acceptPromise: { termDays } }. The payment response includes a payPageUrl: an ordinary https link to a Corpus page with a QR code to scan with a phone camera, a button that opens a Solana wallet, and the address and exact amount for a manual send. The founder pays the exact amount from a self-custody wallet (never an exchange withdrawal; refunds go only to the sending wallet) and must click the confirmation link Corpus emails within 48 hours, or the order is refunded. Nothing is filed before that confirmation, and then Corpus's human review, unless the founder chose to skip review on an expedited order (offered only where formation.requirements shows a SKIP REVIEW line). The tax-ID add-on is not sold here. Free; does not consume credits.
| Argument | Type | Description |
|---|---|---|
| draft | object | First call: the complete formation draft, the same shape formation.handoff takes. |
| consent | object | First call: the founder's attestation to the registered-agent acknowledgements, which the founder heard verbatim. `version` is the consentVersion formation.requirements shows. |
| orderId | string | Second call (or to refresh an expired charge): the orderId returned earlier. |
| contactEmail | string | First call: the founder's email. The confirmation link is sent here; nothing files until they click it. |
| acceptPromise | object | Second call, queue lane only: the founder accepted the submission promise with this many days. |
| trackingToken | string | Second call: the trackingToken returned with the orderId. |
| idempotencyKey | string | A random id, one per order and reused on every retry; the same key returns the same order for 24 hours. |
{
"type": "object",
"properties": {
"draft": {
"type": "object",
"required": [
"entityType",
"state"
],
"properties": {
"ein": {
"type": "object",
"properties": {
"wanted": {
"type": "boolean"
},
"gambling": {
"type": "boolean"
},
"trucking": {
"type": "boolean"
},
"exciseTax": {
"type": "boolean"
},
"startDate": {
"type": "string",
"description": "Company start date, MM/DD/YYYY."
},
"hasEmployees": {
"type": "boolean",
"description": "W-2 employees expected in the next 12 months."
},
"otherEmployees": {
"type": "number"
},
"numberOfMembers": {
"type": "number"
},
"responsibleParty": {
"type": "object",
"properties": {
"phone": {
"type": "string"
},
"fullName": {
"type": "string"
}
}
},
"principalActivity": {
"type": "string",
"description": "Principal business activity in a few plain words."
},
"firstDateWagesPaid": {
"type": "string",
"description": "MM/DD/YYYY — only when hasEmployees."
},
"agriculturalEmployees": {
"type": "number"
},
"taxLiabilityUnder1000": {
"type": "boolean"
},
"sellsTobaccoAlcoholFirearms": {
"type": "boolean"
}
},
"description": "Optional EIN (federal tax ID) add-on, when available — formation.requirements states whether it can currently be sold and at what price. `wanted` records the founder's decision. No Social Security Number is accepted here: the founder enters it in a secure panel on corpuslaw.us."
},
"state": {
"type": "string",
"description": "Two-letter US state code, e.g. 'MS', 'WY', 'DE'."
},
"parties": {
"type": "array",
"items": {
"type": "object",
"required": [
"role",
"fullName"
],
"properties": {
"role": {
"enum": [
"organizer",
"member",
"manager",
"director",
"incorporator",
"president",
"secretary",
"treasurer"
],
"type": "string"
},
"email": {
"type": "string",
"maxLength": 254
},
"fullName": {
"type": "string",
"maxLength": 120
}
}
},
"description": "The people. LLC: at least one 'member' and an 'organizer' (one person holding both roles appears as two entries). Nonprofit: an 'incorporator' and at least 3 'director' entries (plus officers where the state requires them)."
},
"expedite": {
"type": "boolean",
"description": "Optional expedited state filing, available only in states where formation.requirements lists an EXPEDITE line (the price and listed days are in that line). true records that the founder chose it."
},
"naicsCode": {
"type": "string",
"pattern": "^\\d{2,6}$",
"description": "NAICS industry code, 2–6 digits (formation.lookup_naics returns candidates)."
},
"nonprofit": {
"type": "object",
"properties": {
"exemptionIntent": {
"enum": [
"none",
"501c3_later",
"501c3_now"
],
"type": "string"
},
"purposeStatement": {
"type": "string",
"description": "At least 20 characters."
},
"hasDissolutionClause": {
"type": "boolean"
}
},
"description": "Nonprofit-only fields."
},
"entityType": {
"enum": [
"llc",
"nonprofit"
],
"type": "string",
"description": "Entity type to form."
},
"management": {
"enum": [
"member_managed",
"manager_managed"
],
"type": "string",
"description": "LLC management type."
},
"contactEmail": {
"type": "string",
"maxLength": 254,
"description": "Founder contact email."
},
"proposedName": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Proposed company name."
},
"principalOffice": {
"type": "object",
"properties": {
"city": {
"type": "string"
},
"line1": {
"type": "string"
},
"line2": {
"type": "string"
},
"state": {
"type": "string"
},
"postalCode": {
"type": "string"
}
},
"description": "Principal office address (street, city, state required for a complete draft)."
},
"businessActivity": {
"type": "string",
"maxLength": 500,
"description": "In one plain sentence, what the business actually does, in the founder's words (not the company name). Corpus researches the licenses and permits that apply from this."
},
"expediteSkipReview": {
"type": "boolean",
"description": "Optional, with expedite: true, where formation.requirements shows a SKIP REVIEW line. true records that the founder heard that SKIP REVIEW sentence verbatim and explicitly agreed. It takes effect only on an order an agent pays for directly, where the founder's email confirmation page shows the choice again before anything is filed. A handoff link ignores it: on the page the founder ticks it themselves."
},
"stateSpecificAnswers": {
"type": "object",
"description": "Per-state quirk answers under the EXACT keys shown by formation.requirements (e.g. \"would_you_like_to_list_members_managers_on_the_state_record\"). Values are strings or booleans.",
"additionalProperties": {
"type": [
"string",
"boolean"
]
}
}
},
"description": "First call: the complete formation draft, the same shape formation.handoff takes."
},
"consent": {
"type": "object",
"required": [
"version",
"registeredAgentAcknowledgements"
],
"properties": {
"version": {
"type": "string",
"description": "The consentVersion of the acknowledgement text the founder accepted."
},
"registeredAgentAcknowledgements": {
"type": "boolean",
"const": true
}
},
"description": "First call: the founder's attestation to the registered-agent acknowledgements, which the founder heard verbatim. `version` is the consentVersion formation.requirements shows."
},
"orderId": {
"type": "string",
"description": "Second call (or to refresh an expired charge): the orderId returned earlier."
},
"contactEmail": {
"type": "string",
"maxLength": 254,
"description": "First call: the founder's email. The confirmation link is sent here; nothing files until they click it."
},
"acceptPromise": {
"type": "object",
"required": [
"termDays"
],
"properties": {
"termDays": {
"type": "integer",
"maximum": 90,
"minimum": 1
}
},
"description": "Second call, queue lane only: the founder accepted the submission promise with this many days."
},
"trackingToken": {
"type": "string",
"description": "Second call: the trackingToken returned with the orderId."
},
"idempotencyKey": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{8,128}$",
"description": "A random id, one per order and reused on every retry; the same key returns the same order for 24 hours."
}
}
}Compares LLC formation providers on price, recurring costs, registered-agent renewals, and machine/agent capabilities, from a dated dataset of 19 LLC services + 1 adjacent verified against primary sources. Corpus is one of the compared providers and is scored with the same rubric, including its own gaps; the response says so. Free; does not consume credits.
| Argument | Type | Description |
|---|---|---|
| view | string | overall (default, by Agentic Readiness) · lowest_total_cost (parsed first-year estimate) · most_transparent · most_agentic · developer (public MCP/API only). |
| limit | integer | How many providers to return in a ranked view. Default 5, max 19. Ignored when 'providers' is given. |
| providers | array | Specific providers to compare, by name or slug (e.g. ['corpus','legalzoom']). Absent = a ranked field. A name with no dossier is listed in the response rather than dropped. |
{
"type": "object",
"properties": {
"view": {
"enum": [
"overall",
"lowest_total_cost",
"most_transparent",
"most_agentic",
"developer"
],
"type": "string",
"description": "overall (default, by Agentic Readiness) · lowest_total_cost (parsed first-year estimate) · most_transparent · most_agentic · developer (public MCP/API only)."
},
"limit": {
"type": "integer",
"description": "How many providers to return in a ranked view. Default 5, max 19. Ignored when 'providers' is given."
},
"providers": {
"type": "array",
"items": {
"type": "string"
},
"description": "Specific providers to compare, by name or slug (e.g. ['corpus','legalzoom']). Absent = a ranked field. A name with no dossier is listed in the response rather than dropped."
}
}
}Validates a formation draft (people, address, management, EIN answers, state-specific answers) and returns exactly what is still missing. A complete draft also returns a prefilled corpuslaw.us link that opens the formation agent with every detail loaded, where the founder reviews, signs in, and pays. Free; does not consume credits.
| Argument | Type | Description |
|---|---|---|
| ein | object | Optional EIN (federal tax ID) add-on, when available — formation.requirements states whether it can currently be sold and at what price. `wanted` records the founder's decision. No Social Security Number is accepted here: the founder enters it in a secure panel on corpuslaw.us. |
| state* | string | Two-letter US state code, e.g. 'MS', 'WY', 'DE'. |
| parties | array | The people. LLC: at least one 'member' and an 'organizer' (one person holding both roles appears as two entries). Nonprofit: an 'incorporator' and at least 3 'director' entries (plus officers where the state requires them). |
| expedite | boolean | Optional expedited state filing, available only in states where formation.requirements lists an EXPEDITE line (the price and listed days are in that line). true records that the founder chose it. |
| naicsCode | string | NAICS industry code, 2–6 digits (formation.lookup_naics returns candidates). |
| nonprofit |
Returns candidate NAICS industry codes (typically 2–6) for a plain-English business description. A code is required for every LLC, and for nonprofits in AK, CT, LA, MS, TN, WV. Free; does not consume credits.
| Argument | Type | Description |
|---|---|---|
| businessDescription* | string | What the business does, in plain words. |
{
"type": "object",
"required": [
"businessDescription"
],
"properties": {
"businessDescription": {
"type": "string",
"description": "What the business does, in plain words."
}
}
}Reports the USDC payment state of an order created by formation.checkout: awaiting, paid, expired, underpaid or held, plus whether the founder has confirmed by email (required within 48 hours of payment). Reading the chain also records a payment that just arrived. Free; does not consume credits.
| Argument | Type | Description |
|---|---|---|
| orderId* | string | The orderId formation.checkout returned. |
| trackingToken* | string | The trackingToken formation.checkout returned. |
{
"type": "object",
"required": [
"orderId",
"trackingToken"
],
"properties": {
"orderId": {
"type": "string",
"description": "The orderId formation.checkout returned."
},
"trackingToken": {
"type": "string",
"description": "The trackingToken formation.checkout returned."
}
}
}Returns the intake checklist for forming an LLC or nonprofit in one state: every required field, that state's specific questions, live all-in pricing, and the optional EIN add-on with its price when available. Free; does not consume credits.
| Argument | Type | Description |
|---|---|---|
| state* | string | Two-letter US state code, e.g. 'MS', 'WY', 'DE'. |
| entityType* | string | Entity type to form. |
{
"type": "object",
"required": [
"entityType",
"state"
],
"properties": {
"state": {
"type": "string",
"description": "Two-letter US state code, e.g. 'MS', 'WY', 'DE'."
},
"entityType": {
"enum": [
"llc",
"nonprofit"
],
"type": "string",
"description": "Entity type to form."
}
}
}Returns the full official text, citation, and hierarchy of one legal provision, by its node id (the UUID in search results).
| Argument | Type | Description |
|---|---|---|
| id* | string | Node UUID, as returned in law.search results. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Node UUID, as returned in law.search results."
}
}
}Lists the covered jurisdictions (federal, state, and municipal) with per-jurisdiction provision counts, searchable-chunk counts, GIS status, and a placeholder flag.
No arguments.
{
"type": "object",
"properties": {}
}Searches US federal, state, and municipal law by topic or keyword (legality, permits, zoning, licensing, compliance, filing requirements). Returns ranked provisions with verbatim citations, headings, snippets, and node ids. `jurisdiction` limits results to one state, federal law, or a city.
| Argument | Type | Description |
|---|---|---|
| mode | string | Retrieval mode. 'hybrid' (default) fuses vector similarity with keyword search. |
| limit | integer | Number of results to return (1–25). |
| query* | string | Natural-language or keyword query, e.g. 'distillery permit requirements'. |
| jurisdiction | string | Optional short code to scope the search, e.g. 'TX', 'US', or 'CA-SF'. Valid codes are listed by law.list_coverage. Includes the jurisdiction's sub-jurisdictions. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"mode": {
"enum": [
"hybrid",
"semantic",
"keyword"
],
"type": "string",
"default": "hybrid",
"description": "Retrieval mode. 'hybrid' (default) fuses vector similarity with keyword search."
},
"limit": {
"type": "integer",
"default": 8,
"maximum": 25,
"minimum": 1,
"description": "Number of results to return (1–25)."
},
"query": {
"type": "string",
"description": "Natural-language or keyword query, e.g. 'distillery permit requirements'."
},
"jurisdiction": {
"type": "string",
"description": "Optional short code to scope the search, e.g. 'TX', 'US', or 'CA-SF'. Valid codes are listed by law.list_coverage. Includes the jurisdiction's sub-jurisdictions."
}
}
}| object |
| Nonprofit-only fields. |
| entityType* | string | Entity type to form. |
| management | string | LLC management type. |
| contactEmail | string | Founder contact email. |
| proposedName | string | Proposed company name. |
| referral_code | string | A referral code issued by account.status. With a valid code the founder saves 25% of the Corpus service fee and the order is credited to the code; an absent or unrecognised code changes nothing about the link. |
| principalOffice | object | Principal office address (street, city, state required for a complete draft). |
| businessActivity | string | In one plain sentence, what the business actually does, in the founder's words (not the company name). Corpus researches the licenses and permits that apply from this. |
| expediteSkipReview | boolean | Optional, with expedite: true, where formation.requirements shows a SKIP REVIEW line. true records that the founder heard that SKIP REVIEW sentence verbatim and explicitly agreed. It takes effect only on an order an agent pays for directly, where the founder's email confirmation page shows the choice again before anything is filed. A handoff link ignores it: on the page the founder ticks it themselves. |
| stateSpecificAnswers | object | Per-state quirk answers under the EXACT keys shown by formation.requirements (e.g. "would_you_like_to_list_members_managers_on_the_state_record"). Values are strings or booleans. |
{
"type": "object",
"required": [
"entityType",
"state"
],
"properties": {
"ein": {
"type": "object",
"properties": {
"wanted": {
"type": "boolean"
},
"gambling": {
"type": "boolean"
},
"trucking": {
"type": "boolean"
},
"exciseTax": {
"type": "boolean"
},
"startDate": {
"type": "string",
"description": "Company start date, MM/DD/YYYY."
},
"hasEmployees": {
"type": "boolean",
"description": "W-2 employees expected in the next 12 months."
},
"otherEmployees": {
"type": "number"
},
"numberOfMembers": {
"type": "number"
},
"responsibleParty": {
"type": "object",
"properties": {
"phone": {
"type": "string"
},
"fullName": {
"type": "string"
}
}
},
"principalActivity": {
"type": "string",
"description": "Principal business activity in a few plain words."
},
"firstDateWagesPaid": {
"type": "string",
"description": "MM/DD/YYYY — only when hasEmployees."
},
"agriculturalEmployees": {
"type": "number"
},
"taxLiabilityUnder1000": {
"type": "boolean"
},
"sellsTobaccoAlcoholFirearms": {
"type": "boolean"
}
},
"description": "Optional EIN (federal tax ID) add-on, when available — formation.requirements states whether it can currently be sold and at what price. `wanted` records the founder's decision. No Social Security Number is accepted here: the founder enters it in a secure panel on corpuslaw.us."
},
"state": {
"type": "string",
"description": "Two-letter US state code, e.g. 'MS', 'WY', 'DE'."
},
"parties": {
"type": "array",
"items": {
"type": "object",
"required": [
"role",
"fullName"
],
"properties": {
"role": {
"enum": [
"organizer",
"member",
"manager",
"director",
"incorporator",
"president",
"secretary",
"treasurer"
],
"type": "string"
},
"email": {
"type": "string",
"maxLength": 254
},
"fullName": {
"type": "string",
"maxLength": 120
}
}
},
"description": "The people. LLC: at least one 'member' and an 'organizer' (one person holding both roles appears as two entries). Nonprofit: an 'incorporator' and at least 3 'director' entries (plus officers where the state requires them)."
},
"expedite": {
"type": "boolean",
"description": "Optional expedited state filing, available only in states where formation.requirements lists an EXPEDITE line (the price and listed days are in that line). true records that the founder chose it."
},
"naicsCode": {
"type": "string",
"pattern": "^\\d{2,6}$",
"description": "NAICS industry code, 2–6 digits (formation.lookup_naics returns candidates)."
},
"nonprofit": {
"type": "object",
"properties": {
"exemptionIntent": {
"enum": [
"none",
"501c3_later",
"501c3_now"
],
"type": "string"
},
"purposeStatement": {
"type": "string",
"description": "At least 20 characters."
},
"hasDissolutionClause": {
"type": "boolean"
}
},
"description": "Nonprofit-only fields."
},
"entityType": {
"enum": [
"llc",
"nonprofit"
],
"type": "string",
"description": "Entity type to form."
},
"management": {
"enum": [
"member_managed",
"manager_managed"
],
"type": "string",
"description": "LLC management type."
},
"contactEmail": {
"type": "string",
"maxLength": 254,
"description": "Founder contact email."
},
"proposedName": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Proposed company name."
},
"referral_code": {
"type": "string",
"description": "A referral code issued by account.status. With a valid code the founder saves 25% of the Corpus service fee and the order is credited to the code; an absent or unrecognised code changes nothing about the link."
},
"principalOffice": {
"type": "object",
"properties": {
"city": {
"type": "string"
},
"line1": {
"type": "string"
},
"line2": {
"type": "string"
},
"state": {
"type": "string"
},
"postalCode": {
"type": "string"
}
},
"description": "Principal office address (street, city, state required for a complete draft)."
},
"businessActivity": {
"type": "string",
"maxLength": 500,
"description": "In one plain sentence, what the business actually does, in the founder's words (not the company name). Corpus researches the licenses and permits that apply from this."
},
"expediteSkipReview": {
"type": "boolean",
"description": "Optional, with expedite: true, where formation.requirements shows a SKIP REVIEW line. true records that the founder heard that SKIP REVIEW sentence verbatim and explicitly agreed. It takes effect only on an order an agent pays for directly, where the founder's email confirmation page shows the choice again before anything is filed. A handoff link ignores it: on the page the founder ticks it themselves."
},
"stateSpecificAnswers": {
"type": "object",
"description": "Per-state quirk answers under the EXACT keys shown by formation.requirements (e.g. \"would_you_like_to_list_members_managers_on_the_state_record\"). Values are strings or booleans.",
"additionalProperties": {
"type": [
"string",
"boolean"
]
}
}
}
}