mcp-registry/us.corpuslaw/corpus-legal · v1.2.1
As of 2026-10-27 02:18 UTC, the Corpuslaw Corpus Legal MCP server is up with a Glimind reliability score of 83/100 (grade B). Over the last 30 days it answered 99.7% of Glimind's liveness checks. It had 7 outages in 90 days, with a median recovery of 7 minutes.
Search and cite US law from official sources, then form an LLC or nonprofit with free agent tools.
Point your MCP client at this streamable-http endpoint: https://corpuslaw.us/api/mcp
2 tool definition(s) exceed ~1,200 tokens each (largest: formation.checkout, ~1,717).
Move long reference material out of descriptions (link a doc or expose a resource), drop repeated examples, and collapse large enums. Trimming these to ~600 tokens saves ~1,860 tokens every session. How to fix →
10 tool name(s) contain "." or exceed 64 characters, which OpenAI-compatible function calling rejects (^[a-zA-Z0-9_-]{1,64}$).
Use "_" or "-" instead of "." and keep names to 64 characters, so clients built on OpenAI-style tool calling don't have to rename (or drop) them. How to fix →
In the last 30 days: 0 tool(s) removed and 8 schema change(s).
Add new tools or optional parameters instead of renaming or removing; deprecate first (say so in the description) and remove later. Agents cache tool contracts. How to fix →
Paste-ready definitions with the problems above fixed. Changes marked verify need a human look. All of them as JSON: /v1/readiness/mcp-registry%2Fus.corpuslaw%2Fcorpus-legal/fixes
{
"name": "account_status",
"description": "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.",
"inputSchema": {
"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."
}
}
},
"annotations": {
"title": "Check account status",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
},
"title": "Check account status"
}{
"name": "formation_checkout",
"description": "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",
"inputSchema": {
"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."
}
}
},
"annotations": {
"title": "Check out a formation order in USDC",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
},
"title": "Check out a formation order in USDC"
}{
"name": "formation_compare",
"description": "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.",
"inputSchema": {
"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."
}
}
},
"annotations": {
"title": "Compare LLC formation services",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
},
"title": "Compare LLC formation services"
}Get an email or webhook when this server's readiness drops by 10+ points, tool-poisoning text appears, or a tool breaks:
curl -X POST https://glimind.com/v1/subscriptions -H 'content-type: application/json' -d '{"tools":["mcp-registry/us.corpuslaw/corpus-legal"],"email":"[email protected]"}'Agents: watch_tool({"toolId": "mcp-registry/us.corpuslaw/corpus-legal"}) over MCP.
formation.checkout ~1,717 tokensformation.handoff ~1,343 tokensformation.compare ~312 tokenslaw.search ~284 tokensformation.payment_status ~172 tokensStatic checks of the advertised tools/list (schema, descriptions, annotations, tool-poisoning patterns, names, size) plus observed protocol, uptime, latency and contract changes. Read-only: no tool is ever called. Weights: schema 15, docs 20, safety 15, efficiency 15, compatibility 15, protocol 5, reliability 10, stability 5. Token counts are estimates (~3.6 characters per token).
Operator? Fix these, then re-check live. Embed the readiness badge:
[](https://glimind.com/server/mcp-registry%2Fus.corpuslaw%2Fcorpus-legal?ref=badge)
<a href="https://glimind.com/server/mcp-registry%2Fus.corpuslaw%2Fcorpus-legal?ref=badge"><img src="https://glimind.com/v1/readiness/badge/mcp-registry%2Fus.corpuslaw%2Fcorpus-legal.svg" alt="MCP agent-readiness"></a>
.. image:: https://glimind.com/v1/readiness/badge/mcp-registry%2Fus.corpuslaw%2Fcorpus-legal.svg :target: https://glimind.com/server/mcp-registry%2Fus.corpuslaw%2Fcorpus-legal?ref=badge :alt: MCP agent-readiness
Glimind records every version of this server's tool definitions in a signed, append-only transparency log. Current manifest sha256:15021160e0a35541…, first seen 2026-10-21, included at leaf 35953 of 76,807. Version history · verify what your client received.
Compare: most reliable other servers · most reliable payments servers · most reliable data servers · most reliable knowledge servers · most reliable retrieval servers
Glimind tells agents whether a server is up right now and how to call it, then fails over to a live alternative when it isn't.
Claude Code
claude mcp add --transport http glimind https://glimind.com/mcp
Claude Desktop · Windsurf · Cline (mcpServers JSON)
{
"mcpServers": {
"glimind": {
"type": "http",
"url": "https://glimind.com/mcp"
}
}
}
As of 2026-10-27 02:18 UTC, the Corpuslaw Corpus Legal MCP server is up with a Glimind reliability score of 83/100 (grade B). Over the last 30 days it answered 99.7% of Glimind's liveness checks. It had 7 outages in 90 days, with a median recovery of 7 minutes.
Corpuslaw Corpus Legal MCP server advertises 10 tools, including account.status, formation.checkout, formation.compare, formation.handoff, formation.lookup_naics.
Point your MCP client at this streamable-http endpoint: https://corpuslaw.us/api/mcp
Glimind scanned all 10 tool definitions for tool-poisoning patterns — hidden or invisible characters, instructions that override the model, concealment from the user, requests to read credential or MCP config files, conversation exfiltration and cross-tool shadowing — and found none. This checks what the server tells the model, not what its code does; review the source before granting access to sensitive data.
Status page: 90-day uptime, every outage and how long it lasted.
Claim this listing to get the Verified operator marker, a remediation checklist and owner analytics, or embed the live badge from any of the tool pages above. Maintainers: alerts, deploy attestation and monthly reports.
Status is an automated estimate from Glimind's liveness checks (handshake and tool listing only; no tool is ever called) and may lag or differ from your network. Glimind is not affiliated with this server or its operator. Operator? Request a correction or opt out at https://glimind.com/opt-out.