> ## Documentation Index
> Fetch the complete documentation index at: https://docs.doola.com/llms.txt
> Use this file to discover all available pages before exploring further.

# End-to-end flow

> A full solo-founder formation, call by call.

A typical agent dialogue for a single-member Wyoming LLC, in call order. Each `advance_company_onboarding` response tells you the next action via `nextAction` and `nextActionInput` — this is what that sequence looks like.

<Steps>
  <Step title="OAuth handshake">
    The host signs the user in to doola (or sends them to sign up at the web app). See [Authentication](/mcp/authentication).
  </Step>

  <Step title="get_company_onboarding_status">
    Find the suggested next step. For a new customer with no company, it points to `set_country_of_residence`.
  </Step>

  <Step title="advance: set_country_of_residence">
    `params: { countryCode }` — where the founder personally lives (ISO 3166-1 Alpha-3).
  </Step>

  <Step title="advance: set_company_name">
    `params: { name }` — the primary name, without the `LLC` suffix.
  </Step>

  <Step title="advance: set_company_state">
    `params: {}` — locks Wyoming and LLC.
  </Step>

  <Step title="advance: select_package">
    `params: {}` — accepts ToS and returns live pricing. Quote `pricing.dueAtCheckout`, `pricing.recurringAnnually`, and `pricing.summary` verbatim.
  </Step>

  <Step title="advance: create_checkout_session">
    `params: {}` — share the returned `checkoutUrl`; keep `checkoutSessionId`.
  </Step>

  <Step title="User pays">
    The founder completes the Stripe checkout and returns saying "I paid".
  </Step>

  <Step title="advance: verify_payment">
    `params: { checkoutSessionId }` — wait for `paymentStatus=Complete` before asking any post-payment question.
  </Step>

  <Step title="advance: search_industry → set_industry_description">
    Fetch the list, fuzzy-match the founder's description, let them pick a verbatim entry, then set `{ industry, description, sellingPlatform? }`.
  </Step>

  <Step title="advance: add_alternate_company_names">
    `params: { name1, name2?, name3? }` — `name1` is the existing primary; add up to two backups.
  </Step>

  <Step title="advance: set_registered_address">
    `params: { useRegisteredAgent: true }` — usually doola's registered agent (included).
  </Step>

  <Step title="advance: set_mailing_address">
    `params: { sameAsRegistered: true }` — usually the doola virtual mailing address.
  </Step>

  <Step title="advance: add_members">
    Solo founder: auto-fill the name from the profile, ask only for phone + address.
  </Step>

  <Step title="advance: set_responsible_party">
    Auto-fill from the sole member; confirm the email (SS-4 + Form 8821 are sent there).
  </Step>

  <Step title="advance: set_ownership">
    `params: { members: [{ ..., ownershipPercent: 100 }] }` — 100% to the sole member.
  </Step>

  <Step title="Confirm">
    Present a complete markdown summary table of everything collected. Ask the user to reply "submit".
  </Step>

  <Step title="advance: submit_for_review">
    `params: { userConfirmed: true }` — files the formation. **Irreversible.**
  </Step>
</Steps>

<Tip>
  For co-founders, `add_members` collects each member's details and `set_ownership` splits the percentages (must total exactly 100%). Everything else is identical.
</Tip>
