advance_company_onboarding
ChatGPTDrives the doola Wyoming-LLC formation flow one step at a time. Pick the
action to perform (see enum) and pass the matching params object. The server enforces step order via precondition gates and steers you to the right next action via nextAction + nextActionInput on every response — follow those verbatim. If you're not sure which action to call (resume mid-flow, recovery after an error), call get_company_onboarding_status first; its nextActionInput is the literal payload to pass back here. Pre-payment actions (in order): - set_country_of_residence — params: {countryCode: ISO 3166-1 Alpha-3, e.g. 'USA', 'GBR', 'IND'} - set_company_name — params: {name: <desired company name without LLC suffix>}. ONE-TIME initial capture; re-calling overwrites and wipes alternates. Add backup names via add_alternate_company_names after payment. - set_company_state — params: {} (Wyoming is enforced). - select_package — params: {} (Starter is enforced; live pricing returned in pricing — quote pricing.dueAtCheckout, pricing.recurringAnnually, and pricing.summary VERBATIM. Heading MUST read 'Charged today: $X' or 'First-year total: $X'. Do NOT write 'one-time formation fee: $X' as the heading — dueAtCheckout includes the recurring Starter subscription, which is NOT one-time. Do NOT sum the breakdown yourself, do NOT invent a separate renewal number). - create_checkout_session — params: {}. Returns a Stripe checkoutUrl — paste it verbatim into your reply. - verify_payment — params: {checkoutSessionId: <from create_checkout_session response>}. Only call after the user says they've paid. Post-payment actions: - search_industry — params: {}. Read-only lookup. Returns the verbatim industry list to fuzzy-match the user's description against; pick a verbatim entry, then call set_industry_description. - set_industry_description — params: {industry: <verbatim from search_industry list>, description: <1-2 sentence business summary>, sellingPlatform?: <Amazon|Shopify|...>}. - add_alternate_company_names — params: {name1: <existing primary, do not re-ask>, name2?: <optional backup>, name3?: <optional backup>}. Each gets 'LLC' suffix. - set_registered_address — params: {useRegisteredAgent: <true|false>, line1?, city?, state?, postalCode? (only if useRegisteredAgent=false; must be Wyoming)}. - set_mailing_address — params: {sameAsRegistered: <true|false>, line1?, city?, state?, postalCode? (only if sameAsRegistered=false; must be US)}. - add_members — params: {members: [{legalFirstName, legalLastName, isNaturalPerson, phone, line1, city, state, postalCode, country (ISO Alpha-3)}, ...]}. Pass members as a NATIVE JSON array — do NOT stringify. - set_responsible_party — params: {legalFirstName, legalLastName, email (CONFIRM with user before sending; SS-4 + Form 8821 go here), phone, line1, line2?, city, state, postalCode}. - set_ownership — params: {members: [{<full add_members payload> + ownershipPercent}, ...]}. FULL-RECORD REPLACE — must re-pass every member field. Percentages must total exactly 100%. - submit_for_review — params: {userConfirmed: true}. ONLY after presenting a complete summary table and the user explicitly replied 'submit'. Server gates filing on every prerequisite — listen to missing + nextActionInput on failures.





