Skip to main content
A typical agent dialogue for a single-member Wyoming LLC, in call order. Each formation response names the next call in nextAction and nextActionInput; this is what that sequence looks like.
1

OAuth handshake

The host signs the user in to doola (or sends them to sign up at the web app). See Authentication.
2

get_company_onboarding_status

Find the suggested next step. For a new customer with no company, it points to start_formation.
3

start_formation

{ firstName, lastName } with the founder’s legal name as it appears on their ID, only when the profile lacks it. Sign-up can create an account from an email alone, and Google SSO does not always supply a surname.
4

start_formation

{ countryOfResidence }: where the founder personally lives (ISO 3166-1 alpha-3).
5

start_formation

{ companyName }: the primary name, without the LLC suffix.
6

start_formation

{ state, entityType }: where to form and whether as an LLC or a C-Corp. {} forms a Wyoming LLC, the default. The answers in these four steps can go in one call when the founder gives them together.
7

create_checkout_session

{}: accepts the Terms of Service and returns live pricing with the Stripe checkout. Quote pricing.summary (the first-year list price) and chargeSummary (what Stripe charges today) verbatim, share the checkoutUrl, and keep checkoutSessionId.
8

User pays

The founder completes the Stripe checkout and returns saying “I paid”.
9

verify_payment

{ checkoutSessionId }. Wait for paymentStatus=Complete before asking any post-payment question.
10

search_industries, then save_company_details

Fetch the list, match the founder’s description, let them pick a verbatim entry, then save { industry, description, sellingPlatform? }. Keep description to 50 characters or fewer.
11

save_company_details

{ alternateNames: [ ... ] }: up to two backup names. The primary name stays as saved.
12

save_company_details

{ registeredAddress: { provider: "registeredAgent" } }: usually doola’s registered agent (included).
13

save_company_details

{ mailingAddress: { provider: "registeredAgent" } } uses the doola registered agent address. It is the default, and the only option for a founder without a US address.
14

save_company_details

{ members: [{ legalFirstName, legalLastName, ownershipPercent: 100, address }] }. Solo founder: auto-fill the name from the profile and ask only for the phone and address. Ownership is saved with the members.
15

save_company_details

{ responsibleParty: { legalFirstName, legalLastName, email, address } }. Offer the members (or a C-Corp’s officers) as the choices, defaulting to the sole member or the President, and accept anyone else the founder names. Confirm the email, since the SS-4 and Form 8821 are sent there.
16

request_ssn_entry_link

{}, only when nextAction asks for it: the responsible party lives in the US and doola has no SSN for them yet. The founder signs in to doola with the same account and types the SSN on a doola-hosted page, opened through URL elicitation or from the ssnEntryUrl the agent pastes, never in the chat. Optional: a founder who skips it gets the SS-4 by email as before.
17

Confirm

Present a complete markdown summary table of everything collected. Ask the user to reply “submit”.
18

submit_formation

{ userConfirmed: true } files the formation. Irreversible.
save_company_details saves whatever sections it is given, so an agent can save each answer as it comes or several at once. For co-founders, members carries every member with their ownershipPercent, and the percentages must total exactly 100. A C-Corp sends executiveMembers (at least one President, Secretary, Treasurer and Director) in place of members, then shareStructure (authorizedShares and parValue) after the responsible party. Everything else is identical.
Last modified on October 29, 2026