Skip to main content
Glama

Check out a formation order in USDC

formation.checkout

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.

Input Schema

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

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

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema 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."
  2. Changed7 schema 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."
  3. Changed2 schema 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"
      +}
  4. Added

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources