Lovie Company Formation
REMOTE · MCP.LOVIE.CO · 2 COMPONENTS · SCANNED SEP 21
Form companies, manage bank accounts, cards, invoices and more — directly from your AI coding tools.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security97
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability74
- 80% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Partial
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 30375 tokens (~90/item across 334 items; 333 tools + 1 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management97
- Stability check failed: schema churn in the 30 days we've observed: 4 tool removals, 4 breaking changes, 0 auth/transport breaks, 135 additions. See how to fix → Fail
Tool Coverage83
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 42% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety45
- Injection-marker check failed: the server instructions contains an instruction to conceal the call from the user, the text "Never tell the user", at byte 2460 of that field, plus 2 further marker(s) of the same kind. See how to fix → Fail
- 19 of 24 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "accounting_suggest_transfer_pairs" implies "transfer" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
- An AI judge read all 335 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
- Supports UI / widget rendering.Pass
How do I install the Lovie Company Formation MCP server?
Lovie Company Formation is a hosted endpoint at https://mcp.lovie.co/mcp/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.lovie.co
claude mcp add --transport http co-lovie-company-formation 'https://mcp.lovie.co/mcp/mcp'
{
"mcpServers": {
"co-lovie-company-formation": {
"url": "https://mcp.lovie.co/mcp/mcp"
}
}
} {
"servers": {
"co-lovie-company-formation": {
"type": "http",
"url": "https://mcp.lovie.co/mcp/mcp"
}
}
} [mcp_servers.co-lovie-company-formation] url = "https://mcp.lovie.co/mcp/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"co-lovie-company-formation": {
"type": "remote",
"url": "https://mcp.lovie.co/mcp/mcp",
"enabled": true
}
}
} openclaw mcp add co-lovie-company-formation --url 'https://mcp.lovie.co/mcp/mcp' --transport streamable-http
mcp_servers:
co-lovie-company-formation:
url: "https://mcp.lovie.co/mcp/mcp" {
"McpServers": {
"co-lovie-company-formation": {
"Transport": "http",
"Url": "https://mcp.lovie.co/mcp/mcp"
}
}
} assistant mcp add co-lovie-company-formation -t streamable-http -u 'https://mcp.lovie.co/mcp/mcp'
{
"mcpServers": {
"co-lovie-company-formation": {
"type": "http",
"url": "https://mcp.lovie.co/mcp/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 17 Sept 26 +1
- Authorization: partial → pass ▲ security
- New tool “kyc_start_kyc_inquiry” functional
- 16 Sept 26 0
- Tool “equity_onboarding_hydrate_formation_carry” rewrote its description, which is the text the model reads security
- Tool “equity_onboarding_update” rewrote its description, which is the text the model reads security
- 11 Sept 26 +1
We did not load change detail this far back for this component, so this day may have recorded more than is shown.
- Tool “account_get_list_accounts” was removed ▼ security
- Tool “card_get_list_card_transactions” was removed ▼ security
- Tool “formation_get_election83b_prefill” was removed ▼ security
- Tool “transaction_get_list_transactions” was removed ▼ security
- New tool “itin_submit_itin_intake”, which the server declares destructive security
- New tool “signature_reconcile_document_state”, which the server declares destructive security
- New tool “trademark_delete_application”, which the server declares destructive security
- New tool “trademark_submit_to_firm”, which the server declares destructive security
- New tool “banking_set_application_ein”, which the server declares destructive security
- New tool “banking_set_owner_identity_document_number”, which the server declares destructive security
- New tool “banking_set_owner_tax_identifier”, which the server declares destructive security
- New tool “banking_submit_banking_application”, which the server declares destructive security
- New tool “commit_transfer”, which the server declares destructive security
- New tool “equity_onboarding_submit”, which the server declares destructive security
- New tool “formation_delete_pending_domain”, which the server declares destructive security
- New tool “formation_get_domain_auth_code”, which the server declares destructive security
- New tool “formation_remove_shareholder”, which the server declares destructive security
- New tool “formation_set_domain_dns_records”, which the server declares destructive security
- New tool “formation_set_founder_profile”, which the server declares destructive security
- New tool “formation_set_shareholder_tax_identifier”, which the server declares destructive security
- New tool “formation_start_domain_transfer”, which the server declares destructive security
- Tool “accounting_preview_close” rewrote its description, which is the text the model reads security
- Tool “cap_table_create_cap_table_round” rewrote its description, which is the text the model reads security
- Tool “cap_table_create_cap_table_stakeholder” rewrote its description, which is the text the model reads security
- Tool “cap_table_get_cap_table_agreement” rewrote its description, which is the text the model reads security
- Tool “cap_table_get_cap_table_overview” rewrote its description, which is the text the model reads security
- Tool “cap_table_get_cap_table_round” rewrote its description, which is the text the model reads security
- Tool “cap_table_get_list_cap_table_agreements” rewrote its description, which is the text the model reads security
- Tool “cap_table_get_list_cap_table_rounds” rewrote its description, which is the text the model reads security
- Tool “cap_table_get_list_cap_table_wire_match_suggestions” rewrote its description, which is the text the model reads security
- Tool “cap_table_list_cap_table_snapshots_for_round” rewrote its description, which is the text the model reads security
- Tool “cap_table_list_cumulative_cap_table_snapshots_for_stakeholder” rewrote its description, which is the text the model reads security
- Tool “cap_table_record_cap_table_investment” rewrote its description, which is the text the model reads security
- Tool “cap_table_update_cap_table_round” rewrote its description, which is the text the model reads security
- Tool “card_create_card” rewrote its description, which is the text the model reads security
- Tool “card_get_card” rewrote its description, which is the text the model reads security
- Tool “card_get_card_spend” rewrote its description, which is the text the model reads security
- Tool “client_get_client” rewrote its description, which is the text the model reads security
- Tool “client_get_list_clients” rewrote its description, which is the text the model reads security
- Tool “formation_create_formation” rewrote its description, which is the text the model reads security
- Tool “formation_get_formation_document_download_url” rewrote its description, which is the text the model reads security
- Tool “formation_get_payment_link” rewrote its description, which is the text the model reads security
- Tool “formation_save_cap_table_import” rewrote its description, which is the text the model reads security
- Tool “formation_set_company_type” rewrote its description, which is the text the model reads security
- Tool “formation_set_state” rewrote its description, which is the text the model reads security
- Tool “formation_update_formation” rewrote its description, which is the text the model reads security
- Tool “invoice_get_invoice” rewrote its description, which is the text the model reads security
- Tool “invoice_get_list_invoices” rewrote its description, which is the text the model reads security
- Tool “invoice_settings_get_invoice_settings” rewrote its description, which is the text the model reads security
- Tool “payment_get_list_payments” rewrote its description, which is the text the model reads security
- Tool “payment_get_payment” rewrote its description, which is the text the model reads security
- Tool “signature_get_list_signature_envelopes” rewrote its description, which is the text the model reads security
- Tool “signature_get_signature_envelope” rewrote its description, which is the text the model reads security
- Tool “vendor_bill_create_vendor_bill” rewrote its description, which is the text the model reads security
- Tool “vendor_bill_get_list_vendor_bills” rewrote its description, which is the text the model reads security
- Tool “vendor_bill_get_vendor_bill” rewrote its description, which is the text the model reads security
- Tool “vendor_bill_mark_vendor_bill_paid” rewrote its description, which is the text the model reads security
- Schema quality: 17365 → 30245 ▼ functional
- “card_create_card” added a required parameter “accountId”, so existing callers break ▼ functional
- “field_suggest_field_options” added a required parameter “companyId”, so existing callers break ▼ functional
- “invoice_get_invoice_pdf_url” added a required parameter “companyId”, so existing callers break ▼ functional
- “saved_view_get_list_saved_views” added a required parameter “companyId”, so existing callers break ▼ functional
- Tool coverage: 88% → 100% ▲ functional
- Destructive annotations: 19 of 24 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "accounting_suggest_transfer_pairs" implies "transfer" and declares readOnlyHint instead, contradicting what its own name says it does. functional
- New tool “transaction_get_list_categorization_rules” functional
- New tool “itin_get_itin_application” functional
- New tool “itin_get_itin_mailing_instructions” functional
- New tool “itin_get_itin_quote” functional
- New tool “itin_list_itin_applications” functional
- New tool “itin_list_itin_documents” functional
- New tool “itin_mark_itin_documents_mailed” functional
- New tool “itin_poll_itin_checkout” functional
- New tool “itin_save_itin_intake_draft” functional
- New tool “itin_submit_itin_for_review” functional
- New tool “list_accounts” functional
- New tool “list_agents” functional
- New tool “list_send_recipients” functional
- New tool “mcp_draft_transfer” functional
- New tool “read_agent_spend” functional
- New tool “read_insights” functional
- New tool “read_transactions” functional
- New tool “request_transfer_approval” functional
- New tool “subscription_get_list_subscriptions” functional
- New tool “trademark_attach_document” functional
- New tool “trademark_draft_goods_services” functional
- New tool “trademark_firm_acknowledge_handoff” functional
- New tool “trademark_firm_get_handoff_package” functional
- New tool “trademark_firm_list_pending_handoffs” functional
- New tool “trademark_firm_request_additional_info” functional
- New tool “trademark_firm_update_handoff_status” functional
- New tool “trademark_generate_package” functional
- New tool “trademark_get_application” functional
- New tool “trademark_get_clearance_report” functional
- New tool “trademark_get_list_applications” functional
- New tool “trademark_get_upload_url” functional
- New tool “trademark_recommend_classes” functional
- New tool “trademark_run_clearance” functional
- New tool “trademark_set_classes” functional
- New tool “trademark_set_competitors” functional
- New tool “trademark_set_goods_services” functional
- New tool “trademark_set_mark” functional
- New tool “trademark_set_owner” functional
- New tool “trademark_set_use_dates” functional
- New tool “trademark_start_application” functional
- New tool “trademark_study_competitors” functional
- New tool “trademark_suggest_classes” functional
- New tool “transaction_apply_categorization_rule” functional
- New tool “transaction_batch_categorize_transactions” functional
- New tool “transaction_batch_categorize_transactions_by_account” functional
- New tool “transaction_categorize_transaction_by_account” functional
- New tool “transaction_get_categorization_rule” functional
- New tool “accounting_batch_accept_review_items” functional
- New tool “accounting_batch_set_excluded” functional
- New tool “accounting_confirm_statement_match” functional
- New tool “accounting_confirm_transfer_pair” functional
- New tool “accounting_get_funding_summaries” functional
- New tool “accounting_get_gl_account_type_catalog” functional
- New tool “accounting_get_list_review_items” functional
- New tool “accounting_get_list_statements” functional
- New tool “accounting_get_review_counts” functional
- New tool “accounting_get_statement” functional
- New tool “accounting_set_opening_balance” functional
- New tool “accounting_suggest_statement_matches” functional
- New tool “accounting_suggest_transfer_pairs” functional
- New tool “accounting_unpair_transfer” functional
- New tool “ads_insight_summarize_ad_spend” functional
- New tool “approval_session_create_approval_session” functional
- New tool “autonomous_pay” functional
- New tool “banking_confirm_extracted_value” functional
- New tool “banking_confirm_initial_transfer” functional
- New tool “banking_extract_document_fields” functional
- New tool “banking_get_banking_application” functional
- New tool “banking_get_initial_transfer_preview” functional
- New tool “banking_get_issuance_state” functional
- New tool “banking_hydrate_from_cap_table” functional
- New tool “banking_hydrate_from_formation” functional
- New tool “banking_preview_cap_table_hydration” functional
- New tool “banking_preview_formation_hydration” functional
- New tool “banking_refresh_application_provider_status” functional
- New tool “banking_refresh_owner_verification” functional
- New tool “banking_start_banking_application” functional
- New tool “banking_suggest_industry_code” functional
- New tool “banking_update_banking_application” functional
- New tool “banking_upsert_beneficial_owner” functional
- New tool “captable_hydrate_formation_carry” functional
- New tool “captable_preview_formation_carry” functional
- New tool “card_get_dispute” functional
- New tool “card_get_list_card_disputes” functional
- New tool “company_update_company” functional
- New tool “connection_suggest_connections” functional
- New tool “draft_agent_account” functional
- New tool “draft_payment” functional
- New tool “equity_onboarding_get” functional
- New tool “equity_onboarding_hydrate_formation_carry” functional
- New tool “equity_onboarding_preview_formation_carry” functional
- New tool “equity_onboarding_start” functional
- New tool “equity_onboarding_update” functional
- New tool “formation_check_domain_availability” functional
- New tool “formation_confirm_cohort_deal_terms” functional
- New tool “formation_confirm_naics_code” functional
- New tool “formation_create_domain_checkout” functional
- New tool “formation_create_domain_transfer_checkout” functional
- New tool “formation_extract_safe_terms_ocr” functional
- New tool “formation_get_domain_order” functional
- New tool “formation_get_domain_transfer_status” functional
- New tool “formation_get_formation_timeline” functional
- New tool “formation_list_company_domains” functional
- New tool “formation_lookup_domain_dns_records” functional
- New tool “formation_record_entity_guidance_quiz” functional
- New tool “formation_set_banking_intent” functional
- New tool “formation_set_company_setup_details” functional
- New tool “formation_set_selected_domain” functional
- New tool “formation_set_team_equity” functional
- New tool “formation_suggest_naics_codes” functional
- New tool “formation_update_shareholder” functional
- New tool “insight_get_insight” functional
- New tool “insight_get_savings_summary” functional
- New tool “itin_check_itin_eligibility” functional
- New tool “itin_create_itin_checkout” functional
- New tool “itin_create_itin_document_upload_link” functional
- “accounting_preview_close” added an optional parameter “granularity” cosmetic
- “cap_table_generate_cap_table_agreement_pdf” added an optional parameter “templateFields” cosmetic
- “cap_table_import_safe” added an optional parameter “unsignedDocument” cosmetic
- “cap_table_record_cap_table_wire” added an optional parameter “reviewedProof” cosmetic
- “formation_add_shareholder” added an optional parameter “addressType” cosmetic
- “formation_set_company_address” added an optional parameter “physicalBusinessAddress” cosmetic
- “formation_start_formation” added an optional parameter “inviteToken” cosmetic
- “signature_create_envelope” added an optional parameter “sourceCompanyId” cosmetic
- “signature_create_envelope” added an optional parameter “sourceDocumentId” cosmetic
- “transaction_get_summary” added an optional parameter “scope” cosmetic
- “transaction_get_summary” added an optional parameter “timeBucket” cosmetic
- “captable_send_safe_for_signature” dropped the optional parameter “accessCode” cosmetic
- “formation_confirm_payment” dropped the optional parameter “paymentConfirmed” cosmetic
- “formation_get_payment_link” dropped the optional parameter “billingInterval” cosmetic
- “signature_create_envelope” dropped the optional parameter “accessCode” cosmetic
- 10 Sept 26 +1
We did not load change detail this far back for this component, so this day may have recorded more than is shown.
- 7 Sept 26 +1
We did not load change detail this far back for this component, so this day may have recorded more than is shown.
- 5 Sept 26 +1
We did not load change detail this far back for this component, so this day may have recorded more than is shown.
- 3 Sept 26 +1
We did not load change detail this far back for this component, so this day may have recorded more than is shown.
- 1 Sept 26 +1
We did not load change detail this far back for this component, so this day may have recorded more than is shown.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 21 Sept 2026 · Probed https://mcp.lovie.co/mcp/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=mcp.lovie.co | CN=WE1,O=Google Trust Services,C=US | 11 Aug 2026 | 9 Nov 2026 | ECDSA 256 | ECDSA-SHA256 | bd5572c47fda70e70ee37c945006247c |
| SANs: mcp.lovie.co | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.lovie.co. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| co. | present | 7786 | 8 | Verified |
| lovie.co. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer realm="mcp", resource_metadata="https://mcp.lovie.co/.well-known/oauth-protected-resource/mcp/mcp"
Bearer realm="mcp", resource_metadata="https://mcp.lovie.co/.well-known/oauth-protected-resource/mcp/mcp" | Header | Value |
|---|---|
| strict-transport-security | max-age=0; includeSubDomains; preload |
| x-content-type-options | nosniff |
Protected resource metadata
| Document | https://mcp.lovie.co/.well-known/oauth-protected-resource/mcp/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://mcp.lovie.co/mcp/mcp |
| Authorisation server | https://clerk.lovie.co |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.lovie.co/mcp/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.lovie.co/mcp/mcp | HTTPS enforced | 301 | https://mcp.lovie.co/mcp/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
formation_get_formation_quote Get Formation Quote ~91
Returns what forming a company in a given state costs: each Lovie line item, the state's filing fee, and the total, all priced live. Creates nothing and charges nothing. Use this whenever the user asks about price instead of quoting figures from memory — formation is a single one-time payment, so there is no plan and no monthly/annual choice to describe.
| Name | Type | Req | Description |
|---|---|---|---|
| state | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| filingFeeCents | string | – | – |
| filingFeeDisplay | string | – | – |
| lineItems | array | – | – |
| subtotalCents | string | – | – |
| subtotalDisplay | string | – | – |
| totalCents | string | – | – |
| totalDisplay | string | – | – |
No examples provided.
formation_get_formation_timeline Get Formation Timeline ~83
Returns a formation's progress timeline: each milestone (filing, company formed, tax identifier, banking, and — where an accelerator invests — the starter investment), its state, and a sentence describing it. Also lists co-founders who have not finished; they never block the filing. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| formationId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| milestones | array | – | – |
| pendingCofounders | array | – | – |
No examples provided.
formation_get_formation_upload_url Get Formation Upload URL ~56
GetFormationUploadURL returns a presigned PUT URL for a cap table or SAFE document
| Name | Type | Req | Description |
|---|---|---|---|
| formationId | object | yes | UUID value wrapper. |
| kind | string | – | – |
| mimeType | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| expiresAt | – | – | – |
| sourceS3Uri | string | – | – |
| uploadUrl | string | – | – |
No examples provided.
formation_get_list_formations List Formations ~122
Lists the SIGNED-IN user's company formations (name, entity type, state, status, progress). Requires authentication. Do NOT call this during an in-progress formation: you already have the formation_id from formation_start, so use formation_get_formation with that id to check the active formation. Only use this when the user explicitly asks to see all of their companies/formations and gives no specific formation_id.
| Name | Type | Req | Description |
|---|---|---|---|
| filter | object | – | – |
| pageSize | integer | – | – |
| pageToken | string | – | – |
| scope | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| formations | array | – | – |
| nextPageToken | string | – | – |
| totalCount | integer | – | – |
No examples provided.
formation_get_list_incorporation_documents List Incorporation Documents ~151
Returns a company's incorporation documents — certificate of incorporation, bylaws, incorporator action, board resolution, per-founder IP assignments and 83(b) elections, and the IRS EIN assignment letter (CP-575) — each with its filing and effective dates, jurisdiction, status and notes. Read-only. The 83(b) rows carry a statutory deadline: 30 days from the share issue, unreopenable, and filed by the founder personally, so a status of EXPIRED means the window closed, NOT that the founder failed to file. Sensitive rows (83(b), EIN) are returned only to a company owner or accountant.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| authorizedShares | string | – | – |
| documents | array | – | – |
| entity | string | – | – |
| formationId | – | – | – |
| hasFormation | boolean | – | – |
| incorporatedDate | – | – | – |
No examples provided.
formation_get_ocr_upload_url Get OCR Upload URL ~188
Returns a presigned S3 PUT URL for uploading a company document (kind=SAFE for a SAFE PDF, kind=RSA for a signed restricted stock purchase agreement, kind=CAP_TABLE for a cap-table file, kind=WIRE_PROOF for a wire payment proof). Step 1 of every document-import flow: call with the matching kind and mime_type=application/pdf, upload the file bytes to the returned upload_url with an HTTP PUT, then pass the returned source_s3_uri to the next step — ImportSAFE for a SAFE, ExtractRsaTermsOcr (then CreateCapTableAgreement with type=RSA) for a signed RSA, or ExtractCapTableOcr for a cap table. Company-scoped — no formation record needed.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| kind | string | – | – |
| mimeType | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| expiresAt | – | – | – |
| sourceS3Uri | string | – | – |
| uploadUrl | string | – | – |
No examples provided.
formation_get_payment_link Get Payment Link ~345
Generates ONE Stripe Checkout URL covering the whole purchase in a single one-time payment: the Lovie formation charge, the state's filing fee, and a year of registered agent service. Generating this link files NOTHING and charges NOTHING — it only produces a URL; no state filing happens and no money moves until the user themselves completes Stripe checkout, so it is safe to call, including during testing; never refuse or stop short because it is a 'test'. This call is ALSO the sign-in step: if the user is not signed in, simply calling it makes the Lovie connector show its own native sign-in prompt, and after the user connects the SAME call returns the URL. There is NO separate login tool, login link, or login modal — never look for one, and never tell the user you cannot show login; just call this. Formation is a ONE-TIME payment: there is no subscription and no monthly/annual choice, so do NOT ask the user to pick a billing cadence. Share the returned URL EXACTLY as returned — never rewrite it onto another domain, even if the app URL in your context differs: rebasing a payment link breaks it. Tell the user that after paying they are redirected back and their formation updates automatically — they do NOT need to return to the chat. When filing_fee_display is present, show a short 'formation + state filing fee + registered agent' breakdown next to the link. Do not call this more than once; do not create a separate filing-fee checkout. This does not confirm payment.
| Name | Type | Req | Description |
|---|---|---|---|
| attribution | object | – | – |
| formationId | object | yes | UUID value wrapper. |
| subscriptionOnly | boolean | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| filingFeeCents | string | – | – |
| filingFeeDisplay | string | – | – |
| formationId | – | – | – |
| lineItems | array | – | – |
| paymentStatus | string | – | – |
| paymentUrl | string | – | – |
| totalCents | string | – | – |
| totalDisplay | string | – | – |
No examples provided.
formation_list_company_domains List Company Domains ~50
Lists the company's domains with status (pending, purchased, transfer in progress, expired) and expiry dates. Call this first for any domain question.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| domains | array | – | – |
No examples provided.
formation_lookup_domain_dns_records Lookup Domain Dns Records ~125
Resolves the DNS records a company's domain currently answers with (A, AAAA, MX, TXT, NS, CNAME), as the public internet sees them. Use before changing DNS, and to check whether a change has taken effect. This is a live lookup, not Lovie's stored list, so it shows records the domain already had. DNS cannot enumerate a zone: the response reports which names were queried, and a record on any other name is invisible to it.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| domain | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| dnsRecords | array | – | – |
| lookupFailed | boolean | – | – |
| queriedHosts | array | – | – |
No examples provided.
formation_purchase_formation Purchase Formation ~86
PurchaseFormation places the CorpTools formation filing order: it claims the order atomically, adds the filing to the cart, and checks out with the stored payment method. Reviewer-only. Checkout moves money and is never retried once it succeeds.
| Name | Type | Req | Description |
|---|---|---|---|
| filingMethodId | string | – | – |
| formData | object | – | – |
| formationId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| cartItemIds | array | – | – |
| corpToolsCompanyId | string | – | – |
| formationId | – | – | – |
| invoiceIds | array | – | – |
| status | string | – | – |
No examples provided.
formation_purchase_registered_agent Purchase Registered Agent ~32
PurchaseRegisteredAgent triggers a CorpTools registered-agent purchase.
| Name | Type | Req | Description |
|---|---|---|---|
| formationId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| corpToolsCompanyId | string | – | – |
| corpToolsOrderId | string | – | – |
| formationId | – | – | – |
| status | string | – | – |
No examples provided.
formation_record_election83b_filing Record Election83b Filing ~94
RecordElection83bFiling records that the signed election was submitted to the IRS (postmark or online), with optional proof. Owner-scoped.
| Name | Type | Req | Description |
|---|---|---|---|
| filedDate | string | – | – |
| formationId | object | yes | UUID value wrapper. |
| method | string | – | – |
| proof | string | – | – |
| proofFileName | string | – | – |
| trackingNumber | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| filing | – | – | – |
No examples provided.
formation_record_entity_guidance_quiz Record Entity Guidance Quiz ~100
Records the founder's answers to the three entity-choice questions — whether they expect to raise from investors, whether there is more than one owner, and whether this is their first company — and returns the entity type those answers point to, with the reasoning.
| Name | Type | Req | Description |
|---|---|---|---|
| formationId | object | yes | UUID value wrapper. |
| isFirstTime | string | – | – |
| multipleOwners | string | – | – |
| willRaiseVc | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| recommendation | – | – | – |
No examples provided.
formation_remove_shareholder Remove Shareholder ~85
Removes one owner from a formation and reports how many remain and what ownership now totals. The freed percentage is NOT given to anyone else, so the total will usually stop reaching 100% until the founder reallocates it. Refused once the filing is under way.
| Name | Type | Req | Description |
|---|---|---|---|
| formationId | object | yes | UUID value wrapper. |
| shareholderId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| formationId | – | – | – |
| ownershipComplete | boolean | – | – |
| totalOwnership | string | – | – |
| totalShareholders | integer | – | – |
No examples provided.
formation_run_election83b_reminders Run Election83b Reminders ~66
RunElection83bReminders runs the 83(b) reminder sweep (not-started nudges + deadline-relative sign/file reminders + late notice). Reviewer-only; also run in-process by the scheduled cron subcommand.
| Name | Type | Req | Description |
|---|---|---|---|
| dryRun | boolean | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| errors | array | – | – |
| scanned | integer | – | – |
| sent | array | – | – |
No examples provided.
formation_save_cap_table_import Save Cap Table Import ~138
SaveCapTableImport replaces the formation's shareholders with the imported, founder-edited list. A request whose shareholders carry ssn_last4 is refused with INVALID_ARGUMENT and writes nothing — the existing roster is left exactly as it was: those four digits are recorded only by SetShareholderTaxIdentifier, after the whole identifier has reached the secret store. Accepting them here would report a saved number that nothing holds.
| Name | Type | Req | Description |
|---|---|---|---|
| capTableS3Uri | string | – | – |
| editsMade | integer | – | – |
| formationId | object | yes | UUID value wrapper. |
| safeMatches | array | – | – |
| shareholders | array | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| formation | – | – | – |
| formationId | – | – | – |
| totalShareholders | integer | – | – |
No examples provided.
formation_send_formation_email Send Formation Email ~60
SendFormationEmail dispatches a formation lifecycle email via SendGrid.
| Name | Type | Req | Description |
|---|---|---|---|
| additionalInformationRequired | object | – | – |
| emailType | string | – | – |
| filingRejected | object | – | – |
| formationId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| emailType | string | – | – |
| formationId | – | – | – |
| messageId | string | – | – |
| sentAt | – | – | – |
No examples provided.
formation_set_banking_intent Set Banking Intent ~93
Records whether the founder wants a business bank account opened once their EIN arrives, plus a card preference, where cards should be sent, and roughly what they expect to spend each month. This records an intention ONLY — it opens no account, creates no account number, and moves no money. Say so when reporting it.
| Name | Type | Req | Description |
|---|---|---|---|
| formationId | object | yes | UUID value wrapper. |
| intent | object | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| intent | – | – | – |
| recordedAt | – | – | – |
No examples provided.
formation_set_company_address Set Company Address ~144
Sets the company's business address. Always present the user with BOTH options: pass source = ADDRESS_SOURCE_OWN with a full US address if they want to use their own, or source = ADDRESS_SOURCE_NEED_ASSISTANCE to give them Lovie's virtual mailbox (a real US address Lovie provides). Offer the mailbox proactively whenever the user has no address or prefers not to use a home/personal one. A real filing needs a resolvable US street, city, state, and ZIP.
| Name | Type | Req | Description |
|---|---|---|---|
| address | object | – | – |
| formationId | object | yes | UUID value wrapper. |
| physicalBusinessAddress | object | – | – |
| source | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| formationId | – | – | – |
| needsVirtualPostMail | boolean | – | – |
No examples provided.
formation_set_company_name Set Company Name ~92
Sets the company name and returns its parts: base_name, entity_ending, and the derived full_name (base + ending). Set the entity ending first with formation_set_entity_ending. After setting the name, call formation_check_name to verify availability in the selected state.
| Name | Type | Req | Description |
|---|---|---|---|
| formationId | object | yes | UUID value wrapper. |
| name | object | yes | Human-readable name (1-255 Unicode chars). |
| Name | Type | Req | Description |
|---|---|---|---|
| baseName | string | – | – |
| entityEnding | string | – | – |
| formationId | – | – | – |
| fullName | string | – | – |
No examples provided.
formation_set_company_setup_details Set Company Setup Details ~80
Records a formation's alternate name, business purpose, company stage and Delaware filing speed. Any field left out is unchanged rather than cleared.
| Name | Type | Req | Description |
|---|---|---|---|
| alternateName | string | – | – |
| companyStage | string | – | – |
| formationId | object | yes | UUID value wrapper. |
| processingSpeed | string | – | – |
| purpose | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| formation | – | – | – |
No examples provided.
formation_set_company_type Set Company Type ~74
Sets the formation's entity type. Valid values are ENTITY_TYPE_LLC, ENTITY_TYPE_C_CORP, and ENTITY_TYPE_S_CORP — never send ENTITY_TYPE_UNSPECIFIED. Returns warnings the user must acknowledge before proceeding.
| Name | Type | Req | Description |
|---|---|---|---|
| companyType | string | – | – |
| formationId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| companyType | string | – | – |
| formationId | – | – | – |
| validEntityEndings | array | – | – |
| warnings | array | – | – |
| warningsRequireAcknowledgment | boolean | – | – |
No examples provided.
formation_set_domain_dns_records Set Domain Dns Records ~171
Adds DNS records (A, AAAA, CNAME, CAA, MX, TXT, NS) to a domain the company purchased through Lovie and applies them at the registrar — no registrar login needed. Use when the founder wants to point their domain at a website host or set up email records. Host is relative to the domain ("@" for the root, "www" for a subdomain). This ADDS records: it cannot delete one, and it cannot reliably overwrite a record that already exists — the registrar's own tools are needed for either. Full nameserver delegation changes are not supported. Call LookupDomainDnsRecords first to see what is already there.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| dnsRecords | array | – | – |
| domain | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| domain | – | – | – |
No examples provided.
formation_set_election83b Set Election83b ~59
SetElection83b persists the 83(b) election snapshot on the formation. Owner-scoped; called after PDF generation + signature envelope creation.
| Name | Type | Req | Description |
|---|---|---|---|
| formationId | object | yes | UUID value wrapper. |
| record | object | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| formation | – | – | – |
No examples provided.
formation_set_entity_ending Set Entity Ending ~106
Sets the company's legal entity ending — the suffix that appears in the full legal name (e.g. "Inc.", "Corporation", "Co." for a C-Corp; "LLC", "L.L.C." for an LLC). Use one of the valid endings returned by formation_set_company_type. Set this BEFORE the company name so the full legal name is derived correctly.
| Name | Type | Req | Description |
|---|---|---|---|
| ending | string | – | – |
| formationId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| entityEnding | string | – | – |
| formationId | – | – | – |
No examples provided.
formation_set_founder_profile Set Founder Profile ~112
Records who the founder is — their name, contact details and where they are based — on a formation. A Social Security Number or ITIN is optional here: ask for it only if the person offers, pass it once, and never read it back. The response says whether one is on file, never the number.
| Name | Type | Req | Description |
|---|---|---|---|
| formationId | object | yes | UUID value wrapper. |
| noSsn | boolean | – | – |
| profile | object | yes | – |
| ssnItin | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| hasSsn | boolean | – | – |
| profile | – | – | – |
No examples provided.
formation_set_registered_agent Set Registered Agent ~79
Sets the registered agent for the formation. Pass use_default = true to use Lovie's included registered agent (recommended for most founders), or use_default = false with an `agent` to supply a custom one.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | object | – | – |
| formationId | object | yes | UUID value wrapper. |
| useDefault | boolean | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| formationId | – | – | – |
| registeredAgent | – | – | – |
No examples provided.
formation_set_selected_domain Set Selected Domain ~115
Sets the founder's chosen domain on the formation. Pass an empty string to clear the selection. Domain registration only requires payment, NOT state approval: for a paid formation the domain is claimable immediately — tell the founder to finish registration now on the formation page or on the dashboard's Domains page (takes a minute), so their website is live while the state filing completes. For unpaid formations the domain is purchasable right after checkout.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | – | – |
| formationId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| formationId | – | – | – |
| selectedDomain | string | – | – |
No examples provided.
formation_set_share_structure Set Share Structure ~107
Sets the C-Corp share structure and returns the resulting total authorized capital. Pass use_default = true for the standard startup setup (10,000,000 shares at $0.0001 par), or use_default = false with authorized_shares and par_value for a custom structure. C-Corp only.
| Name | Type | Req | Description |
|---|---|---|---|
| authorizedShares | integer | – | – |
| formationId | object | yes | UUID value wrapper. |
| parValue | string | – | – |
| useDefault | boolean | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| formationId | – | – | – |
| shareStructure | – | – | – |
| totalCapital | string | – | – |
No examples provided.
formation_set_shareholder_tax_identifier Set Shareholder Tax Identifier ~109
Files one shareholder's Social Security Number or ITIN against a formation. The whole number goes to the secret store and only its last four digits are recorded, which is all the response returns. Ask the person for it directly, pass it once, and never repeat it back in your own message. No tool reads the number out again.
| Name | Type | Req | Description |
|---|---|---|---|
| formationId | object | yes | UUID value wrapper. |
| shareholderId | object | yes | UUID value wrapper. |
| taxIdentifier | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| ssnLast4 | string | – | – |
No examples provided.
formation_set_signatory Set Authorized Party ~70
SetAuthorizedParty sets the authorized signatory for formation documents
| Name | Type | Req | Description |
|---|---|---|---|
| string | – | – | |
| formationId | object | yes | UUID value wrapper. |
| name | object | yes | Human-readable name (1-255 Unicode chars). |
| phone | string | – | – |
| title | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| authorizedParty | – | – | – |
| formationId | – | – | – |
No examples provided.
formation_set_state Set State ~70
Sets the formation's state of formation. Every US state and DC is supported — pass the two-letter code (e.g. "TX", "DE", "WY"). Returns the entity types available for that state.
| Name | Type | Req | Description |
|---|---|---|---|
| formationId | object | yes | UUID value wrapper. |
| state | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| availableCompanyTypes | array | – | – |
| formationId | – | – | – |
| state | string | – | – |
| stateDescription | string | – | – |
No examples provided.
formation_set_team_equity Set Team Equity ~93
Sets the founding team's ownership split and vesting. Ownership must total exactly 100%. Existing people are matched by id and only the stated fields change. Invitations that fail to send are reported in the response and never block the filing.
| Name | Type | Req | Description |
|---|---|---|---|
| election83bIntent | boolean | – | – |
| formationId | object | yes | UUID value wrapper. |
| members | array | – | – |
| vesting | object | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| inviteFailures | array | – | – |
| shareholders | array | – | – |
| totalOwnership | string | – | – |
No examples provided.
formation_start_domain_transfer Start Domain Transfer ~77
Begins the paid transfer at the registrar using the EPP/auth code the user obtained from their current provider. The code is used once and never stored. Transfers take days; track with the transfer-status tool.
| Name | Type | Req | Description |
|---|---|---|---|
| authCode | string | – | – |
| companyId | object | yes | UUID value wrapper. |
| domain | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| status | string | – | – |
No examples provided.
formation_start_formation Start Formation ~325
THE entry point for a new company formation — runs anonymously, no sign-in required. Call this DIRECTLY whenever the user wants to start, create, or form a company or formation. Do NOT call company_get_my_companies or formation_get_list_formations first; those require auth and are only for existing records — starting a new formation needs neither. Returns a formation_id plus the ordered steps. Calling it again for the same signed-in user RESUMES the formation already in progress and returns its id with resumed=true — it does not create a second one, so a retry is safe. When resumed=true, tell the user which company you are continuing (the response carries its name) instead of assuming it is the one they just described. If they say they want a DIFFERENT, additional company, call again with force_new=true — that is the only time to set it; never set it to retry. Before walking the steps, briefly understand the user's business, experience, and funding (one question at a time), then give a tailored recommendation. Keep the formation_id and pass it to every later step. Call this exactly ONCE per formation — never start a second one to resume. When a later step needs sign-in, let the user connect and retry with the SAME formation_id; signing in automatically claims the in-progress formation, so it is never lost.
| Name | Type | Req | Description |
|---|---|---|---|
| forceNew | boolean | – | – |
| inviteToken | string | – | – |
| referralCode | string | – | – |
| sessionId | object | – | UUID value wrapper. |
| source | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| companyName | string | – | – |
| currentStep | string | – | – |
| formationId | – | – | – |
| partnerPays | boolean | – | – |
| resumed | boolean | – | – |
| sessionId | – | – | – |
| status | string | – | – |
No examples provided.
formation_submit_ein_filing_info Submit EIN Filing Info ~147
Collects and saves EIN (SS-4) filing information after the company is filed with the state. First ask whether the user has an SSN or ITIN; if they do not, set no_ssn and skip it — the EIN then takes ~45 business days via paper filing. Collect the remaining fields conversationally: date of birth, employee counts, first wages date, closing month of the accounting year, reason for applying, any prior EIN, and principal business activity.
| Name | Type | Req | Description |
|---|---|---|---|
| formationId | object | yes | UUID value wrapper. |
| info | object | yes | – |
| noSsn | boolean | – | – |
| ssnItin | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| formationId | – | – | – |
| hasSsn | boolean | – | – |
| submittedAt | – | – | – |
No examples provided.
formation_suggest_naics_codes Suggest Naics Codes ~100
Ranks candidate 2022 NAICS industry codes for a formation from its business description. Returns SUGGESTIONS ONLY and changes nothing — always show the shortlist and have the person pick one. NAICS codes are two to six digits, not always six.
| Name | Type | Req | Description |
|---|---|---|---|
| businessDescription | object | – | Free-form description (max 5000 chars). |
| formationId | object | yes | UUID value wrapper. |
| maxResults | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| matchedDescription | – | – | – |
| suggestions | array | – | – |
No examples provided.
formation_sweep_formation_order_status Sweep Formation Order Status ~60
SweepFormationOrderStatus polls CorpTools for the status of in-flight formation orders and updates each formation. Intended for the scheduled sweep (in-process subcommand) and manual/dry-run admin triggering.
| Name | Type | Req | Description |
|---|---|---|---|
| dryRun | boolean | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| errors | array | – | – |
| scanned | integer | – | – |
| updated | array | – | – |
No examples provided.
formation_update_formation Update Formation ~143
UpdateFormation applies a FieldMask-scoped patch to a formation. The caller supplies update_mask.paths to select the fields to replace. The roster is not patchable here — use AddShareholder, UpdateShareholder or RemoveShareholder. A patch whose shareholders carry ssn_last4 is refused with INVALID_ARGUMENT and writes nothing: those four digits are recorded only by SetShareholderTaxIdentifier, after the whole identifier has reached the secret store. Accepting them here would report a saved number that nothing holds.
| Name | Type | Req | Description |
|---|---|---|---|
| formation | object | yes | – |
| formationId | object | yes | UUID value wrapper. |
| updateMask | string | yes | Comma-separated field paths. |
| Name | Type | Req | Description |
|---|---|---|---|
| formation | – | – | – |
No examples provided.
formation_update_shareholder Update Shareholder ~132
Corrects one owner on a formation — their name, contact details, ownership percentage, role or address. Refused once the filing is under way. Share counts and vesting are not editable here.
| Name | Type | Req | Description |
|---|---|---|---|
| address | object | – | – |
| addressType | string | – | – |
| string | – | – | |
| firstName | string | – | – |
| formationId | object | yes | UUID value wrapper. |
| lastName | string | – | – |
| ownershipPercentage | string | – | – |
| phone | string | – | – |
| role | string | – | – |
| shareholderId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| formationId | – | – | – |
| ownershipComplete | boolean | – | – |
| shareholder | – | – | – |
| totalOwnership | string | – | – |
No examples provided.
google_ads_metrics_get_google_ads_campaign_window Get Google Ads Campaign Window ~92
GetGoogleAdsCampaignWindow aggregates each campaign over an arbitrary date range — the shape a charge is reconciled against. Distinct from the monthly list above, whose `month` key cannot describe a billing period that starts mid-month.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | string | – | – |
| customerId | string | – | – |
| periodEnd | string | – | – |
| periodStart | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| campaigns | array | – | – |
| currencyCode | string | – | – |
| totalSpend | string | – | – |
No examples provided.
google_ads_metrics_get_list_google_ads_campaign_metrics List Google Ads Campaign Metrics ~67
List per-campaign monthly metrics for a company, with optional customer/campaign/month filtering and offset pagination.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | string | – | – |
| filter | object | – | – |
| pageSize | integer | – | – |
| pageToken | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| metrics | array | – | – |
| nextPageToken | string | – | – |
| totalCount | integer | – | – |
No examples provided.
insight_get_insight Get Insight ~27
Get a single insight by id.
| Name | Type | Req | Description |
|---|---|---|---|
| id | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| insight | – | – | – |
No examples provided.
insight_get_savings_summary Get Savings Summary ~74
Summarize savings for a company: identified (OPEN impact), estimated (marked-done projections), and realized (verifier-confirmed), with a per-detector-type split.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| fromMonth | string | – | – |
| toMonth | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| byType | array | – | – |
| estimatedCentsMonthly | string | – | – |
| identifiedCentsMonthly | string | – | – |
| realizedCentsMonthly | string | – | – |
No examples provided.
invoice_get_invoice Get Invoice ~63
Returns one invoice by id with its line items, client, totals, due date and payment state. Read-only. Use this to answer questions about a specific invoice; to find its id, list the company's invoices first.
| Name | Type | Req | Description |
|---|---|---|---|
| id | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| invoice | – | – | – |
No examples provided.
invoice_get_invoice_pdf_url Get Invoice PDF URL ~50
GetInvoicePdfUrl returns a short-lived signed S3 URL for the rendered PDF.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| invoiceId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| expiresAt | – | – | – |
| url | string | – | – |
No examples provided.
invoice_get_list_invoices List Invoices ~74
Lists a company's invoices, newest first, with client, amount, due date and status. Read-only and paginated. Filter by status to answer "what is unpaid" or "what is overdue".
| Name | Type | Req | Description |
|---|---|---|---|
| filter | object | – | – |
| pageSize | integer | – | – |
| pageToken | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| invoices | array | – | – |
| nextPageToken | string | – | – |
| totalCount | integer | – | – |
No examples provided.
invoice_settings_get_invoice_settings Get Invoice Settings ~68
Returns a company's invoicing defaults: numbering, payment terms, currency, tax rate and the branding that appears on a rendered invoice. Read-only. Read this before creating an invoice if you need to know what the defaults will be.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| settings | – | – | – |
No examples provided.
itin_check_itin_eligibility Check ITIN Eligibility ~98
Checks whether the user is likely eligible for an ITIN (guidance, not an IRS ruling). Someone with — or eligible for — an SSN cannot get an ITIN; a valid passport makes the process simplest. Ask the two questions conversationally and relay the answer.
| Name | Type | Req | Description |
|---|---|---|---|
| applyingReason | string | – | – |
| hasSsnOrEligible | boolean | – | – |
| hasValidPassportOrId | boolean | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| likelyEligible | boolean | – | – |
| notes | array | – | – |
No examples provided.
itin_create_itin_checkout Create ITIN Checkout ~110
Starts an ITIN purchase: creates the application and returns a Stripe Checkout URL. Give the URL to the user — payment always happens on the secure Stripe page, never in chat. Requires the user to have passed identity verification (KYC); if this answers failed-precondition, walk them through verifying first. After payment the intake is prefilled from what Lovie already knows, so the user mostly confirms.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| package | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| applicationId | – | – | – |
| checkoutUrl | string | – | – |
No examples provided.
What is the Lovie Company Formation MCP server?
Lovie Company Formation is an MCP server listed in the public MCP registry as co.lovie/company-formation. Form companies, manage bank accounts, cards, invoices and more, directly from your AI coding tools. This page covers its hosted endpoint (https://mcp.lovie.co/mcp/mcp).
Is the Lovie Company Formation MCP server safe to use?
Lovie Company Formation scores 89 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Lovie Company Formation MCP server expose?
Lovie Company Formation exposes 333 tools: account_get_account, account_get_list_account_details, accounting_batch_accept_review_items, accounting_batch_set_excluded, accounting_cancel_schedule, and 328 more. Their descriptions and schemas cost roughly 29,622 tokens of context every time the server is loaded.
Does the Lovie Company Formation MCP server require authentication?
Yes. Lovie Company Formation asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the Lovie Company Formation MCP server still maintained?
Lovie Company Formation is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.