Skip to main content
Glama

Server Details

Search and cite US law from official sources, then form an LLC or nonprofit with free agent tools.

Ownership verified
Status
Healthy
Uptime
100.0% over 71 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL

TDQS

A4.1/5.0

Scored across 10 tools

Disambiguation5/5

Each tool has a clearly distinct role: legal research (search, get_node, list_coverage), formation preparation (requirements, handoff, lookup_naics, compare), transaction handling (checkout, payment_status), and account metadata (status). The closest pair, formation.requirements and formation.handoff, is well differentiated: one returns a checklist, the other validates a draft and reports missing fields.

Naming Consistency4/5

All names use a consistent namespace.action pattern with lowercase snake_case actions, making them easy to parse. The only minor inconsistency is that some actions are verbs (search, compare, checkout) while others are nouns (requirements, payment_status, status), but the namespace grouping keeps the set predictable.

Tool Count5/5

Ten tools is well-scoped for a server combining legal research with LLC/nonprofit formation support. Each tool covers a distinct stage or resource, and there are no redundant or filler tools.

Completeness4/5

The formation workflow is well covered from requirements through checkout and payment status, and the legal research side covers discovery, retrieval, and coverage listing. Minor gaps remain around post-payment order management (e.g., retrieving full order details or cancellation/refund status), but core workflows are supported.

Available Tools

10 tools
account.statusCheck account statusAInspect

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.

NameRequiredDescriptionDefault
referral_codeNoAn 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.

Output Schema

NameRequiredDescription
textYesHuman-readable tool result (also mirrored in content[].text).
isErrorNoTrue when the tool could not complete successfully.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context beyond annotations: the call is free (no credit consumed), it mints a referral code, and that code persists identity across later calls. This aligns with readOnlyHint=false and idempotentHint=false by explaining the side effect rather than merely restating it. It does not state auth requirements or whether repeated calls without a code mint new codes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, front-loaded with the primary reporting behavior and cost note. The referral clause is slightly compressed with two facts packed around a semicolon, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation. The description covers both caller modes, the cost model, and the referral side effect — everything needed to call a single-optional-param read tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents that referral_code preserves identity and that inactive codes are replaced. The description restates the identity-persistence behavior without adding syntax, format, or edge-case detail, so it does not exceed the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (reports) and a precise resource set (credit balance, tier, rate limits, upgrade options) and explicitly branches on caller type (keyed vs anonymous). It is unmistakably distinguishable from the formation.* and law.* siblings, which serve unrelated domains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for when it applies — the keyed connection vs an anonymous caller — and explains that the call is free, which is the main reason to invoke it. It does not name an alternative tool or an explicit exclusion, but no sibling overlaps this purpose, so there is little to route against.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

formation.checkoutCheck out a formation order in USDCAInspect

Creates the founder's LLC or nonprofit 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.

NameRequiredDescriptionDefault
draftNoFirst call: the complete formation draft, the same shape formation.handoff takes.
consentNoFirst call: the founder's attestation to the registered-agent acknowledgements, which the founder heard verbatim. `version` is the consentVersion formation.requirements shows.
orderIdNoSecond call (or to refresh an expired charge): the orderId returned earlier.
contactEmailNoFirst call: the founder's email. The confirmation link is sent here; nothing files until they click it.
acceptPromiseNoSecond call, queue lane only: the founder accepted the submission promise with this many days.
trackingTokenNoSecond call: the trackingToken returned with the orderId.
idempotencyKeyNoA random id, one per order and reused on every retry; the same key returns the same order for 24 hours.

Output Schema

NameRequiredDescription
textYesHuman-readable tool result (also mirrored in content[].text).
isErrorNoTrue when the tool could not complete successfully.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes far past what the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true, idempotentHint=false) convey: 48-hour email confirmation or refund, no filing before confirmation plus human review, refunds only to the sending wallet, no exchange withdrawals, free and credit-free. The one nuance worth noting is that the retry-idempotency claim is explicitly key-driven ('the same key returns the same order for 24 hours'), which qualifies rather than contradicts idempotentHint=false. It does not describe the shape of the returned payment response beyond payPageUrl.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb, resource and payment constraint, and nearly every sentence carries operational weight (payment rails, confirmation window, refund path, review gating). It is a dense single block, though — the two-call flow, payment mechanics and filing-gate rules could be split so the caller can find the second-call contract faster.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a high-stakes, multi-call, money-moving tool with a deeply nested draft, the description covers everything an agent needs to invoke it correctly: the two-lane flow, the payment constraint, the confirmation deadline and its consequence, and the fact that nothing files until then. An output schema exists, so omitting return-field detail is appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the structured fields already carry the parameter documentation and the baseline is 3. The description does add call-sequencing semantics the schema cannot ('A queue-lane order first returns a submission promise, accepted with a second call { orderId, trackingToken, acceptPromise }', and what consent records), but it does not explain the draft's required-vs-optional completeness rules beyond a passing mention.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Creates the founder's LLC or nonprofit formation order and a USDC (Solana) payment request') and immediately scopes it with 'no API key, no Corpus sign-in' and 'USDC on Solana ONLY'. It also draws the boundary against siblings: the draft is 'the same shape formation.handoff takes', constraints come from formation.requirements, and 'The tax-ID add-on is not sold here.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly lays out the call sequences: first call takes the complete draft plus contactEmail, idempotencyKey and consent; a queue-lane order needs a second call with acceptPromise; a second call is also how an expired charge is refreshed. It names the sibling that governs preconditions (formation.requirements for EXPEDITE and SKIP REVIEW lines) and states when expedited skip-review is not available.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

formation.compareCompare LLC formation servicesA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
viewNooverall (default, by Agentic Readiness) · lowest_total_cost (parsed first-year estimate) · most_transparent · most_agentic · developer (public MCP/API only).
limitNoHow many providers to return in a ranked view. Default 5, max 19. Ignored when 'providers' is given.
providersNoSpecific 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.

Output Schema

NameRequiredDescription
textYesHuman-readable tool result (also mirrored in content[].text).
isErrorNoTrue when the tool could not complete successfully.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already covering read-only, idempotent, openWorld, and non-destructive behavior, the description adds substantial context beyond them: the dataset is dated and verified against primary sources, and — critically — Corpus is itself one of the compared providers and is scored with the same rubric including its own gaps, with the response disclosing this. That conflict-of-interest disclosure is exactly the kind of behavioral transparency annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the purpose and comparison axes, followed by dataset provenance and the conflict-of-interest caveat, then the cost note. Every sentence carries distinct information with no padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be described, and annotations carry the safety profile. The description still supplies what an agent needs to trust and call it: provenance, disclosure of self-inclusion, and cost behavior. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents view, limit, and providers in detail, including enum meanings and default/max values. The description's list of comparison dimensions loosely maps to the view modes but adds no parameter syntax or format beyond the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (compares) and resource (LLC formation providers) and enumerates the exact comparison axes: price, recurring costs, registered-agent renewals, and machine/agent capabilities. This differentiates it cleanly from siblings like formation.requirements or formation.lookup_naics, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a reason to prefer this tool ('Free; does not consume credits') and the schema's view enum implies the modes of use, but it never states explicitly when to use this versus formation.requirements or other siblings, nor any exclusions. Usage is implied rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

formation.handoffValidate and hand off an LLC or nonprofit formation draftA
Read-onlyIdempotent
Inspect

Validates an LLC or nonprofit 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.

NameRequiredDescriptionDefault
einNoOptional 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.
stateYesTwo-letter US state code, e.g. 'MS', 'WY', 'DE'.
partiesNoThe 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).
expediteNoOptional 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.
naicsCodeNoNAICS industry code, 2–6 digits (formation.lookup_naics returns candidates).
nonprofitNoNonprofit-only fields.
entityTypeYesEntity type to form.
managementNoLLC management type.
contactEmailNoFounder contact email.
proposedNameNoProposed company name.
referral_codeNoA 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.
principalOfficeNoPrincipal office address (street, city, state required for a complete draft).
businessActivityNoIn 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.
expediteSkipReviewNoOptional, 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.
stateSpecificAnswersNoPer-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.

Output Schema

NameRequiredDescription
textYesHuman-readable tool result (also mirrored in content[].text).
isErrorNoTrue when the tool could not complete successfully.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false; the description adds genuinely new behavior: the call is free, consumes no credits, and returns exactly what is still missing rather than partial success. It also clarifies the separation of duties — the founder reviews, signs in and pays on corpuslaw.us, not through this call — which prevents an agent mistaking this for a purchase step.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the validate-and-report action, followed by the success-path outcome and cost note. Every clause carries information an agent would otherwise have to guess.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter nested schema with an output schema present, the description covers the essentials: what is validated, what is returned on incomplete versus complete drafts, and the cost model. Return-value detail is correctly delegated to the output schema rather than repeated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including nested EIN, parties and stateSpecificAnswers fields is already documented in the schema. The description only groups the inputs into categories (people, address, management, EIN answers, state-specific answers) and does not add format, precedence, or completeness rules beyond that, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("validates an LLC or nonprofit formation draft"), enumerates the draft contents it checks (people, address, management, EIN answers, state-specific answers), and names both possible outcomes: a list of what is still missing, or a prefilled handoff link. An agent can distinguish this from formation.checkout or formation.requirements on purpose alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear context for when to call: you have a draft and want to know what is missing before handing off to the founder. The "free; does not consume credits" line implicitly separates it from the paid path, but it never names formation.checkout or formation.requirements as the alternative or states the condition that selects between them, so the alternative routing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

formation.lookup_naicsFind a NAICS industry codeA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
businessDescriptionYesWhat the business does, in plain words.

Output Schema

NameRequiredDescription
textYesHuman-readable tool result (also mirrored in content[].text).
isErrorNoTrue when the tool could not complete successfully.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds business-level context the annotations cannot convey — 'Free; does not consume credits' — which matters for an agent orchestrating a paid formation flow, plus the expected number of returned candidates. Return shape details are covered by the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the core purpose front-loaded and the eligibility condition second. Every clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and rich annotations, the description covers purpose, cost, and the conditional requirement for the code. The only real gap is what to do with multiple candidates (e.g., how to choose among 2–6 results), which would help an agent chain into formation steps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is documented as 'What the business does, in plain words.' The description echoes this ('plain-English business description') without adding format, length, or quality guidance beyond the schema's 500-character limit. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns candidate NAICS industry codes') with an explicit input ('for a plain-English business description') and expected result cardinality ('typically 2–6'). It is clearly distinguishable from siblings like law.search or formation.requirements, which do not map descriptions to industry codes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The sentence 'A code is required for every LLC, and for nonprofits in AK, CT, LA, MS, TN, WV' tells the agent exactly when this lookup is mandatory, which is strong conditional context. It stops short of naming an alternative or stating when not to call it, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

formation.payment_statusCheck an LLC formation order's USDC paymentA
Idempotent
Inspect

Reports the USDC payment state of an LLC or nonprofit formation 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.

NameRequiredDescriptionDefault
orderIdYesThe orderId formation.checkout returned.
trackingTokenYesThe trackingToken formation.checkout returned.

Output Schema

NameRequiredDescription
textYesHuman-readable tool result (also mirrored in content[].text).
isErrorNoTrue when the tool could not complete successfully.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description reconciles the surprising readOnlyHint=false annotation by disclosing the write side effect: 'Reading the chain also records a payment that just arrived.' It also surfaces the 48-hour founder email confirmation deadline and the credit cost, all of which are behavioral facts annotations don't convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with state enumeration, then the side effect, then the cost. Nothing is repeated from the title and no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation; the description still enumerates the states and the confirmation flag, and it covers the one non-obvious side effect and the cost. An agent has everything needed to call and interpret this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; both parameters (orderId, trackingToken) are already documented as values returned by formation.checkout. The description adds no format, scoping, or validation detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Reports the USDC payment state of an LLC or nonprofit formation order') and enumerates the exact state values (awaiting, paid, expired, underpaid, held). It also ties the object back to the sibling 'formation.checkout' that creates the order, so an agent can distinguish status-checking from order creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'created by formation.checkout' makes the dependency and the natural call sequence explicit, and 'Free; does not consume credits' tells the agent it is safe to poll. It stops short of saying when not to use it (e.g., for orders that never reached checkout) or how often to re-check.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

formation.requirementsGet LLC or nonprofit formation requirementsA
Read-onlyIdempotent
Inspect

Returns the intake checklist for forming an LLC (limited liability company) or nonprofit corporation in one US state: every required field, that state's specific questions, live all-in pricing including the state filing fee, and the optional EIN add-on with its price when available. Free; does not consume credits.

NameRequiredDescriptionDefault
stateYesTwo-letter US state code, e.g. 'MS', 'WY', 'DE'.
entityTypeYesEntity type to form.

Output Schema

NameRequiredDescription
textYesHuman-readable tool result (also mirrored in content[].text).
isErrorNoTrue when the tool could not complete successfully.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive behavior, so the description adds the genuinely new fact that the call is free and consumes no credits — a real cost signal for an agent planning call sequences. It also flags conditional availability ('when available') for the EIN add-on, warning the agent that a field may be absent. It stops short of describing caching, rate limits, or unsupported states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single front-loaded sentence that opens with the verb and resource before listing outputs. It is dense but each clause (what is returned, pricing inclusion, EIN optionality, cost) adds information; the trailing 'Free; does not consume credits' is well-placed as a separate short sentence for emphasis.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and full annotations present, the description need not explain return shape, and it correctly focuses on scope and cost. The remaining gap is that it never indicates which states are supported or what happens for an unsupported state code in an openWorld tool — a real risk given the state parameter is free-text.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the entityType enum is fully documented, so the schema carries parameter meaning. The description only adds the scoping constraint that the state is a single state ('in one US state'), reinforcing that this is not a multi-state query, but contributes no format or validation detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (Returns) plus precise resource (the intake checklist for forming an LLC or nonprofit in one US state) with the exact contents enumerated: required fields, state-specific questions, all-in pricing, EIN add-on. Clearly distinct from siblings like formation.compare or formation.checkout, which would be comparison or purchase rather than requirements retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied — an agent can infer this is the pre-formation lookup step, and 'Free; does not consume credits' hints it is the cheap first call before formation.checkout. But no explicit when-to-use, no named alternatives (e.g. formation.compare for multi-state, formation.checkout for purchase), and no prerequisites stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

law.get_nodeGet a law provisionA
Read-onlyIdempotent
Inspect

Returns the full official text, citation, and hierarchy of one legal provision, by its node id (the UUID in search results).

NameRequiredDescriptionDefault
idYesNode UUID, as returned in law.search results.

Output Schema

NameRequiredDescription
textYesHuman-readable tool result (also mirrored in content[].text).
isErrorNoTrue when the tool could not complete successfully.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so safety and repeatability are covered without the description. The description adds that the response carries the full official text, but says nothing about payload size, missing/invalid-id behavior, or latency that would matter for a single-node fetch.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with what is returned, followed by the input needed. No filler, no restatement of the title, and every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with an output schema that documents the return shape, this is complete: the description covers what comes back, how to obtain the id, and the annotations cover safety.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter's schema text ('Node UUID, as returned in law.search results') is duplicated nearly verbatim in the description. With the schema doing the heavy lifting and only one parameter, the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Returns), a precise resource (one legal provision), and the payload contents (full official text, citation, hierarchy), which cleanly separates it from law.search's list-result behavior. The clause 'by its node id (the UUID in search results)' implicitly anchors the agent to the search-then-fetch workflow with a sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The mention of 'the UUID in search results' implies this tool is invoked after law.search, which is useful sequencing context. However, it never states when-not to use it, nor does it differentiate from the other law.* siblings such as law.list_coverage, leaving usage only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

law.list_coverageList covered jurisdictionsA
Read-onlyIdempotent
Inspect

Lists the covered jurisdictions (federal, state, and municipal) with per-jurisdiction provision counts, searchable-chunk counts, GIS status, and a placeholder flag.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
textYesHuman-readable tool result (also mirrored in content[].text).
isErrorNoTrue when the tool could not complete successfully.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and openWorld, so the safety profile is fully covered. The description adds that results include counts, GIS status, and a 'placeholder flag' — the flag faintly hints at data-quality caveats — but most of this restates return contents the output schema already provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with no filler. The trailing enumeration of return fields is slightly redundant given a dedicated output schema, which keeps it from a perfect score, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-parameter read tool with an output schema and full annotation coverage, the description supplies enough to call it correctly. The only real omission is routing guidance relative to the sibling law.* tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate beyond what the empty schema shows. Baseline 4 applies for a no-argument tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Lists the covered jurisdictions') and immediately scopes it to federal/state/municipal. No sibling tool in the set (law.search, law.get_node) does coverage enumeration, so the agent can disambiguate without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never says when to call this versus law.search or law.get_node, nor that it is a discovery/metadata step preceding a search. Usage is only weakly implied by the tool name. No exclusions or prerequisites are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

law.searchSearch US lawA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
modeNoRetrieval mode. 'hybrid' (default) fuses vector similarity with keyword search.hybrid
limitNoNumber of results to return (1–25).
queryYesNatural-language or keyword query, e.g. 'distillery permit requirements'.
jurisdictionNoOptional 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.

Output Schema

NameRequiredDescription
textYesHuman-readable tool result (also mirrored in content[].text).
isErrorNoTrue when the tool could not complete successfully.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, open-world, non-destructive behavior, so the safety profile is covered. The description still adds real context beyond them: results are ranked and include verbatim citations, headings, snippets and node ids, and jurisdiction scoping automatically expands to sub-jurisdictions. Missing only rate-limit/pagination behavior, which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with what is searched and what comes back, then the scoping parameter. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full schema, an output schema, and rich annotations, the description covers purpose, result shape, and scoping adequately. It does not explain how to obtain valid jurisdiction codes itself (deferred to law.list_coverage via the schema) or how results feed into law.get_node, leaving a small integration gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents mode, limit, query and jurisdiction thoroughly; baseline is 3. The description's jurisdiction sentence largely restates the schema (including the sub-jurisdiction behavior), adding little new parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb and resource: 'Searches US federal, state, and municipal law by topic or keyword', with concrete topical examples (permits, zoning, licensing) and a stated result shape (ranked provisions with citations). It implicitly separates itself from law.get_node by framing results as ranked provisions carrying node ids, but no sibling is named explicitly, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The topical examples imply when the tool is appropriate (finding law by subject rather than fetching a known provision), but there is no explicit when-to-use, when-not, or routing to law.get_node / law.list_coverage. Usage is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedformation.lookup_naics1 field changed
      • addedInput schema / properties / businessDescription / maxLength
        Added value: +500
  2. 1 tool update
    • Changedformation.checkout1 field changed
      • changedInput schema / properties / consent / description
        Previous value: -"First call: the founder's attestation to the registered-agent acknowledgements, read to them verbatim. `version` is the consentVersion formation.requirements shows."New value: +"First call: the founder's attestation to the registered-agent acknowledgements, which the founder heard verbatim. `version` is the consentVersion formation.requirements shows."
  3. 4 tool updates
    • Changedaccount.status1 field changed
      • changedInput schema / properties / referral_code / description
        Previous value: -"An active referral code returned by an earlier account.status call. Pass it back to keep the same referral identity; if it is no longer active, account.status issues a new code instead."New value: +"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."
    • Changedformation.checkout7 fields changed
      • changedInput schema / properties / consent / properties / version / description
        Previous value: -"The consentVersion of the acknowledgement text you read."New value: +"The consentVersion of the acknowledgement text the founder accepted."
      • changedInput schema / properties / draft / properties / ein / description
        Previous value: -"Optional EIN (federal tax ID) add-on, when available — formation.requirements says whether it can currently be sold and at what price. Never quote a remembered EIN price; use the one that call returns. Set wanted=true/false once the user decides. NEVER include a Social Security Number anywhere — the founder types it into a secure panel on corpuslaw.us, never in chat."New value: +"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."
      • changedInput schema / properties / draft / properties / expedite / description
        Previous value: -"Optional expedited state filing — ONLY in states where formation.requirements lists an EXPEDITE line (its price and listed days come from that call; never quote one from memory). Set true only when the founder chose it."New value: +"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."
      • changedInput schema / properties / draft / properties / expediteSkipReview / description
        Previous value: -"Optional, with expedite: true only, and ONLY where formation.requirements says skipping review is available. True only after the founder, having heard the SKIP REVIEW sentence from formation.requirements read to them verbatim, explicitly agrees. 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."New value: +"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."
      • changedInput schema / properties / draft / properties / naicsCode / description
        Previous value: -"NAICS industry code, 2–6 digits (use formation.lookup_naics to find it)."New value: +"NAICS industry code, 2–6 digits (formation.lookup_naics returns candidates)."
      • changedInput schema / properties / draft / properties / parties / description
        Previous value: -"The people. LLC: at least one 'member' and an 'organizer' (same person may hold both roles — pass two entries). Nonprofit: an 'incorporator' and at least 3 'director' entries (plus officers where the state requires them)."New value: +"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)."
      • changedInput schema / properties / idempotencyKey / description
        Previous value: -"A random id you generate once per order and reuse on every retry; the same order is returned for 24 hours."New value: +"A random id, one per order and reused on every retry; the same key returns the same order for 24 hours."
    • Changedformation.compare1 field changed
      • changedInput schema / properties / providers / description
        Previous value: -"Specific providers to compare, by name or slug (e.g. ['corpus','legalzoom']). Omit for a ranked field. Anything with no dossier is named back to you rather than dropped."New value: +"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."
    • Changedformation.handoff6 fields changed
      • changedInput schema / properties / ein / description
        Previous value: -"Optional EIN (federal tax ID) add-on, when available — formation.requirements says whether it can currently be sold and at what price. Never quote a remembered EIN price; use the one that call returns. Set wanted=true/false once the user decides. NEVER include a Social Security Number anywhere — the founder types it into a secure panel on corpuslaw.us, never in chat."New value: +"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."
      • changedInput schema / properties / expedite / description
        Previous value: -"Optional expedited state filing — ONLY in states where formation.requirements lists an EXPEDITE line (its price and listed days come from that call; never quote one from memory). Set true only when the founder chose it."New value: +"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."
      • changedInput schema / properties / expediteSkipReview / description
        Previous value: -"Optional, with expedite: true only, and ONLY where formation.requirements says skipping review is available. True only after the founder, having heard the SKIP REVIEW sentence from formation.requirements read to them verbatim, explicitly agrees. 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."New value: +"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."
      • changedInput schema / properties / naicsCode / description
        Previous value: -"NAICS industry code, 2–6 digits (use formation.lookup_naics to find it)."New value: +"NAICS industry code, 2–6 digits (formation.lookup_naics returns candidates)."
      • changedInput schema / properties / parties / description
        Previous value: -"The people. LLC: at least one 'member' and an 'organizer' (same person may hold both roles — pass two entries). Nonprofit: an 'incorporator' and at least 3 'director' entries (plus officers where the state requires them)."New value: +"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)."
      • changedInput schema / properties / referral_code / description
        Previous value: -"Your referral code from account.status, if you have one. The founder saves 25% of the Corpus service fee and the order is credited to your code. Omit it if you do not have one — an absent or unrecognised code changes nothing about the link."New value: +"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."
  4. 1 tool update
    • Changedlaw.search1 field changed
      • changedInput schema / properties / jurisdiction / description
        Previous value: -"Optional short code to scope the search, e.g. 'TX', 'US', or 'CA-SF'. Call law.list_coverage for valid codes. Includes the jurisdiction's sub-jurisdictions."New value: +"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."
  5. 2 tool updates
    • Changedformation.checkout2 fields changed
      • addedInput schema / properties / draft / properties / expedite
        Added value: +{
        +  "description": "Optional expedited state filing — ONLY in states where formation.requirements lists an EXPEDITE line (its price and listed days come from that call; never quote one from memory). Set true only when the founder chose it.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / draft / properties / expediteSkipReview
        Added value: +{
        +  "description": "Optional, with expedite: true only, and ONLY where formation.requirements says skipping review is available. True only after the founder, having heard the SKIP REVIEW sentence from formation.requirements read to them verbatim, explicitly agrees. 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.",
        +  "type": "boolean"
        +}
    • Changedformation.handoff2 fields changed
      • addedInput schema / properties / expedite
        Added value: +{
        +  "description": "Optional expedited state filing — ONLY in states where formation.requirements lists an EXPEDITE line (its price and listed days come from that call; never quote one from memory). Set true only when the founder chose it.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / expediteSkipReview
        Added value: +{
        +  "description": "Optional, with expedite: true only, and ONLY where formation.requirements says skipping review is available. True only after the founder, having heard the SKIP REVIEW sentence from formation.requirements read to them verbatim, explicitly agrees. 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.",
        +  "type": "boolean"
        +}

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to search and analyze legal documents from multiple jurisdictions including US federal and state law, case law, EU regulations, UK legislation, Canadian law, Congress bills, SEC filings, and FDA data through free government APIs.
    6
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables US case law search, citation parsing, practice management via Clio, and federal court filings through PACER.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to retrieve the full current text of any state statute section by citation, along with its amendment history, repealed/transferred status, neighboring sections, and any pending future-effective version. It also performs live full-text keyword search across actual section body text to find statutes by topic.
    270 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to pull the full text of any state statute by citation, and to search official section catchlines by topic or keyword to find matching citations. Keyless, and handles citation suffixes such as "12.1-16-01" or "47-16-13.1".
    397 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources