Lovie Company Formation
REMOTE · MCP.LOVIE.CO · 2 COMPONENTS · SCANNED SEP 20
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 20 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 →
banking_preview_cap_table_hydration Preview Cap Table Hydration ~64
PreviewCapTableHydration says which of the company's cap-table stakeholders could be carried over as beneficial owners, without writing. Read-only, and unavailable rather than an error when there is nothing to carry.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| available | boolean | – | – |
| prefillPercent | integer | – | – |
| rows | array | – | – |
| stillNeeded | array | – | – |
No examples provided.
banking_preview_formation_hydration Preview Formation Hydration ~68
PreviewFormationHydration says what a formation would carry over, without writing. Read-only so the entry picker can offer the warm path only when it is genuinely available.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| formationId | object | – | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| available | boolean | – | – |
| formationId | – | – | – |
| prefillPercent | integer | – | – |
| rows | array | – | – |
| stillNeeded | array | – | – |
No examples provided.
banking_refresh_application_provider_status Refresh Application Provider Status ~138
RefreshApplicationProviderStatus re-reads the provider's verification verdict for a submitted application and moves it on when the verdict has settled. Pull, not push, for the reason RefreshOwnerVerification is: a webhook nobody received leaves an applicant waiting on a state change that already happened. A tool, like RefreshOwnerVerification beside it, and idempotent for the same reason: asking again is how the answer arrives, so a client that prompts before every ask makes the one safe action feel dangerous. The verb heuristic does not know "Refresh", so this is stated rather than derived.
| Name | Type | Req | Description |
|---|---|---|---|
| applicationId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| application | – | – | – |
No examples provided.
banking_refresh_owner_verification Refresh Owner Verification ~73
Re-reads the identity-verification outcome for one beneficial owner on a banking application and records it. Idempotent. Does not start a verification and does not carry any of that person's personal data.
| Name | Type | Req | Description |
|---|---|---|---|
| applicationId | object | yes | UUID value wrapper. |
| ownerId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| owner | – | – | – |
No examples provided.
banking_set_application_ein Set Application EIN ~105
Files a company's employer identification number against a banking application. Nine digits, no separators. The whole number goes to the secret store and only its last four are recorded; the response returns nothing, and no tool reads the number back. A company that has applied for an EIN but not received it does not have one to give — say so and move on rather than inventing digits.
| Name | Type | Req | Description |
|---|---|---|---|
| applicationId | object | yes | UUID value wrapper. |
| ein | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
banking_set_owner_identity_document_number Set Owner Identity Document Number ~118
Files a non-US beneficial owner's passport number against a banking application, with its issuing country and expiry. The number goes to the secret store; only the country and expiry are recorded on the owner, and the response returns nothing. Use this instead of the tax-identifier tool for an owner who has no SSN or ITIN. Pass it once and do not repeat it back.
| Name | Type | Req | Description |
|---|---|---|---|
| applicationId | object | yes | UUID value wrapper. |
| documentNumber | string | – | – |
| ownerId | object | yes | UUID value wrapper. |
Structured output declared, but exposes no named fields.
No examples provided.
banking_set_owner_tax_identifier Set Owner Tax Identifier ~124
Files one beneficial owner's Social Security Number or ITIN against a banking application. 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 and pass it once — never guess it, never read it back to them, and never repeat it in your own message. The owners section cannot be completed without one for each assessed owner.
| Name | Type | Req | Description |
|---|---|---|---|
| applicationId | object | yes | UUID value wrapper. |
| ownerId | object | yes | UUID value wrapper. |
| taxIdentifier | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| ssnLast4 | string | – | – |
No examples provided.
banking_start_banking_application Start Banking Application ~124
StartBankingApplication opens a business account application for a company. A company may have only one undecided application at a time; starting a second is refused rather than splitting the answers across two records. The path says where the answers will come from — WARM_FORMATION when the company was formed with Lovie and most of the form can be carried over, COLD_MANUAL when the applicant types them in.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| formationId | object | – | UUID value wrapper. |
| path | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| applicationId | – | yes | – |
No examples provided.
banking_submit_banking_application Submit Banking Application ~130
SubmitBankingApplication freezes the application. It returns the blocking sections rather than a bare failure, so "submit is disabled" always comes with what is missing. Stays exposed — filling in and submitting an application is what an agent is for here — but marked destructive and non-idempotent so a client surfaces a confirmation. The freeze is one-way from the applicant's side: every subsequent write is refused with ErrApplicationFrozen, because what was submitted is what was reviewed. Being option-less made it look like an ordinary field write.
| Name | Type | Req | Description |
|---|---|---|---|
| applicationId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| application | – | – | – |
| blockingSections | array | – | – |
No examples provided.
banking_suggest_industry_code Suggest Industry Code ~123
Suggest NAICS industry classification codes from a plain-language description of what a business does. Returns each candidate code with its official title and the words that matched, best match first. Returns nothing when the description is too short or the business is outside the covered set — say so rather than inventing a code. Never apply a suggestion without the person confirming it: the wrong code on a bank application is a compliance problem, not a typo.
| Name | Type | Req | Description |
|---|---|---|---|
| businessDescription | object | yes | Free-form description (max 5000 chars). |
| limit | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| suggestions | array | – | – |
No examples provided.
banking_update_banking_application Update Banking Application ~61
UpdateBankingApplication takes a FieldMask. Every path in the mask also writes USER provenance, so correcting a carried-over value re-attributes it.
| Name | Type | Req | Description |
|---|---|---|---|
| application | object | yes | – |
| updateMask | string | yes | Comma-separated field paths. |
| Name | Type | Req | Description |
|---|---|---|---|
| application | – | – | – |
No examples provided.
banking_upsert_beneficial_owner Upsert Beneficial Owner ~96
UpsertBeneficialOwner adds or updates one beneficial owner. A request whose owner carries ssn_last4 is refused with INVALID_ARGUMENT and writes nothing: those four digits are recorded only by SetOwnerTaxIdentifier, after the whole identifier has reached the secret store. Accepting them here would report a saved number that nothing holds.
| Name | Type | Req | Description |
|---|---|---|---|
| applicationId | object | yes | UUID value wrapper. |
| owner | object | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| ownerId | – | – | – |
No examples provided.
cap_table_clear_cap_table_stakeholders Clear Cap Table Stakeholders ~54
ClearCapTableStakeholders deletes every stakeholder of a company in a single DB-level operation. Used by the "replace cap table" import flow.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| deletedCount | string | – | – |
No examples provided.
cap_table_close_cap_table_round Close Cap Table Round ~163
CloseCapTableRound PERMANENTLY closes the round: runs the calc engine, persists the SAFE conversions + ownership snapshots, and flips the round to CLOSED. This is the action for "close the round", "make it permanent", or "finalize the round" — it CANNOT be undone and writes the cap-table of record, so confirm with the user first. To only estimate the outcome without closing, use PreviewCloseCapTableRound.
| Name | Type | Req | Description |
|---|---|---|---|
| carryForwardUnwired | boolean | – | – |
| companyId | object | yes | UUID value wrapper. |
| newMoneyRaise | string | – | – |
| preMoneyValuation | string | – | – |
| roundId | object | yes | UUID value wrapper. |
| targetOptionPoolPct | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | – | – |
| round | – | – | – |
| snapshots | array | – | – |
No examples provided.
cap_table_create_cap_table_agreement Create Cap Table Agreement ~99
CreateCapTableAgreement creates a draft non-SAFE agreement.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| granteeName | string | – | – |
| name | string | – | – |
| progressTotal | integer | – | – |
| roundId | object | – | UUID value wrapper. |
| sourceS3Uri | string | – | – |
| stakeholderId | object | – | UUID value wrapper. |
| type | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| agreementId | – | yes | – |
No examples provided.
cap_table_create_cap_table_round Create Cap Table Round ~75
Opens a new funding round on a company's cap table — the container investors and their agreements are attached to. Writes. It does not raise money or close anything: a new round starts OPEN and holds no capital until investors are added to it.
| Name | Type | Req | Description |
|---|---|---|---|
| pastRound | boolean | – | – |
| round | object | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| roundId | – | yes | – |
No examples provided.
cap_table_create_cap_table_stakeholder Create Cap Table Stakeholder ~152
Adds a stakeholder IDENTITY ONLY (name, type, email, metadata). Does NOT create any holding/security and will NOT appear in the investor pipeline. For anyone who will hold equity — an investor putting in capital, or a founder or employee receiving shares — use RecordCapTableInvestment instead: it creates the party and its holding together. Do NOT call this first and then record the holding, and if you have already called it, pass the returned stakeholder_id to RecordCapTableInvestment rather than the name again — naming the party twice puts them on the register twice. Use this tool only for a party who is genuinely meant to have no holding at all.
| Name | Type | Req | Description |
|---|---|---|---|
| stakeholder | object | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| stakeholderId | – | yes | – |
No examples provided.
cap_table_delete_cap_table_agreement Delete Cap Table Agreement ~43
DeleteCapTableAgreement removes an agreement.
| Name | Type | Req | Description |
|---|---|---|---|
| agreementId | object | yes | UUID value wrapper. |
| companyId | object | yes | UUID value wrapper. |
Structured output declared, but exposes no named fields.
No examples provided.
cap_table_delete_cap_table_round Delete Cap Table Round ~79
DeleteCapTableRound permanently removes an unpriced SAFE round (open or light-closed) plus its round-scoped securities/agreements/snapshots. Priced / engine-closed rounds are rejected (FailedPrecondition).
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| roundId | object | yes | UUID value wrapper. |
Structured output declared, but exposes no named fields.
No examples provided.
cap_table_delete_cap_table_security Delete Cap Table Security ~42
DeleteCapTableSecurity removes one holding.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| securityId | object | yes | UUID value wrapper. |
Structured output declared, but exposes no named fields.
No examples provided.
cap_table_delete_cap_table_stakeholder Delete Cap Table Stakeholder ~38
DeleteCapTableStakeholder removes one stakeholder from a cap table.
| Name | Type | Req | Description |
|---|---|---|---|
| stakeholderId | object | yes | UUID value wrapper. |
Structured output declared, but exposes no named fields.
No examples provided.
cap_table_download_cap_table_safes Download Cap Table Safes ~48
DownloadCapTableSafes presigns multiple SAFE agreement PDFs in one call.
| Name | Type | Req | Description |
|---|---|---|---|
| agreementIds | array | – | – |
| companyId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | – | – |
No examples provided.
cap_table_extract_wire_payment_proof Extract Wire Payment Proof ~155
Runs vision OCR on an already-uploaded wire payment proof (wire confirmation, bank statement, or transfer receipt — NOT an invoice) for a security and returns the extracted fields plus a verification verdict (verified | needs_review | mismatch). Nothing is persisted. Flow: call GetOcrUploadURL with kind=WIRE_PROOF, PUT the file bytes to the returned upload_url, then call this with the returned source_s3_uri. Only a 'verified' verdict can back a wire in RecordCapTableWire.
| Name | Type | Req | Description |
|---|---|---|---|
| agentCode | string | – | – |
| companyId | object | yes | UUID value wrapper. |
| securityId | object | yes | UUID value wrapper. |
| sourceS3Uri | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| ocrConfidence | string | – | – |
| proof | – | – | – |
| sourceS3Uri | string | – | – |
| verification | – | – | – |
| warnings | array | – | – |
No examples provided.
cap_table_generate_cap_table_agreement_pdf Generate Cap Table Agreement PDF ~94
GenerateCapTableAgreementPdf renders the PDF for one employee equity-grant agreement (option/rsu/rsa/fast) and stores it. Returns the S3 key. The presigned download URL is fetched via GetCapTableAgreementPdfUrl.
| Name | Type | Req | Description |
|---|---|---|---|
| agreementId | object | yes | UUID value wrapper. |
| companyId | object | yes | UUID value wrapper. |
| templateFields | object | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| s3Key | string | – | – |
No examples provided.
cap_table_generate_cap_table_docs Generate Cap Table Docs ~42
GenerateCapTableDocs kicks off the async generation pipeline.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| stakeholderIds | array | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| queuedCount | integer | – | – |
No examples provided.
cap_table_generate_cap_table_summary_pdf Generate Cap Table Summary PDF ~66
GenerateCapTableSummaryPdf renders the cap-table summary to a branded PDF on the backend document engine (Gotenberg) and returns the bytes (#364 — moves PDF generation out of the browser). Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| string | – | – |
No examples provided.
cap_table_get_cap_table_agreement Get Cap Table Agreement ~86
Returns one equity agreement by id — a SAFE, a stock purchase agreement or a grant — with its terms and the two signature blocks it prints. Read-only. Use this to answer questions about a specific agreement's valuation cap, discount, amount or signing state. To find the id, list a company's agreements first.
| Name | Type | Req | Description |
|---|---|---|---|
| id | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| agreement | – | – | – |
| signatureBlock | – | – | – |
No examples provided.
cap_table_get_cap_table_agreement_pdf_url Get Cap Table Agreement PDF URL ~54
GetCapTableAgreementPdfUrl returns a short-lived signed S3 URL for the rendered SAFE agreement PDF.
| Name | Type | Req | Description |
|---|---|---|---|
| agreementId | object | yes | UUID value wrapper. |
| attachment | boolean | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| expiresAt | – | – | – |
| url | string | – | – |
No examples provided.
cap_table_get_cap_table_equity_plans Get Cap Table Equity Plans ~128
Returns a company's equity holdings grouped the way a founder thinks about them: founders, advisors, employees (option grants), and investors. Read-only. Founder, advisor and employee entries carry vesting progress resolved as of now — vested percentage, vested share or option count, and whether the cliff has passed. Investor entries carry the committed amount, valuation cap, discount and pipeline stage. Use this to answer "who holds what" or "how much of X's grant has vested" without adding up securities by hand.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| advisors | array | – | – |
| employees | array | – | – |
| founders | array | – | – |
| investors | array | – | – |
No examples provided.
cap_table_get_cap_table_investor_access Get Cap Table Investor Access ~60
GetCapTableInvestorAccess lists every investor stakeholder with its current cap-table visibility level (read directly from the stakeholder row; a new investor defaults to NONE). Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| investors | array | – | – |
No examples provided.
cap_table_get_cap_table_overview Get Cap Table Overview ~92
Says which view of a company's cap table is the current one: the live roster, or the post-conversion table produced by the latest closed round. Read-only, and small — it returns the mode and that round's id, not the table. Use it first when you do not know whether a company has closed a priced round yet.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| latestRoundId | – | – | – |
| mode | string | – | – |
No examples provided.
cap_table_get_cap_table_round Get Cap Table Round ~77
Returns one funding round by id: its name, type, target, pre-money valuation, status and close date. Read-only. Use this for the terms of a specific round; for how much has actually been committed, signed and wired, use the round summaries tool instead.
| Name | Type | Req | Description |
|---|---|---|---|
| id | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| round | – | – | – |
No examples provided.
cap_table_get_cap_table_round_summaries Get Cap Table Round Summaries ~139
Returns, for every funding round that has investors attached, how much capital sits at each stage of the pipeline (committed, signed, wired), the total raised, and how many investors are in the round. Read-only. Use this to answer "how is the round going" or "how much have we actually collected" without adding up individual investors by hand — the stage buckets are exclusive, so each investor's capital appears in exactly one of them and raised is their sum. Wired is money in the bank; committed and signed are promised but not yet received.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| summaries | array | – | – |
No examples provided.
cap_table_get_cap_table_security Get Cap Table Security ~36
GetCapTableSecurity returns one holding by id. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| securityId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| security | – | – | – |
No examples provided.
cap_table_get_cap_table_stakeholder Get Cap Table Stakeholder ~39
GetCapTableStakeholder returns one stakeholder by id. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| stakeholderId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| stakeholder | – | – | – |
No examples provided.
cap_table_get_cap_table_summary Get Cap Table Summary ~73
GetCapTableSummary returns the dashboard aggregate (totals, stakeholder count, founders %, and per-type ownership segments) on the fully-diluted source roster. Keeps the ownership math server-side. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| asOf | string | – | – |
| companyId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| asOfRecordedAt | – | – | – |
| authorizedCommonShares | string | – | – |
| authorizedPreferredShares | string | – | – |
| authorizedShares | string | – | – |
| foundersPct | string | – | – |
| segments | array | – | – |
| stakeholderCount | integer | – | – |
| totalCommitted | string | – | – |
| totalInvestment | string | – | – |
| totalShares | string | – | – |
No examples provided.
cap_table_get_list_cap_table_agreements List Cap Table Agreements ~108
Lists a company's equity agreements, newest first, each enriched with the stakeholder it belongs to. Read-only and paginated. Filter by type to see only SAFEs or only stock purchase agreements. Use this to answer "what have we signed" or to find the agreement id for a named investor.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| pageSize | integer | – | – |
| pageToken | string | – | – |
| typeFilter | array | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| agreements | array | – | – |
| nextPageToken | string | – | – |
| totalCount | integer | – | – |
No examples provided.
cap_table_get_list_cap_table_rounds List Cap Table Rounds ~77
Lists a company's funding rounds with their terms and status. Read-only. Use this to answer "what rounds have we raised" or to find a round id before reading its investors.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| pageSize | integer | – | – |
| pageToken | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| nextPageToken | string | – | – |
| rounds | array | – | – |
| totalCount | integer | – | – |
No examples provided.
cap_table_get_list_cap_table_securities List Cap Table Securities ~76
GetListCapTableSecurities lists a company's holdings (optionally filtered to one stakeholder), paginated. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| pageSize | integer | – | – |
| pageToken | string | – | – |
| stakeholderId | object | – | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| nextPageToken | string | – | – |
| securities | array | – | – |
| totalCount | integer | – | – |
No examples provided.
cap_table_get_list_cap_table_stakeholders List Cap Table Stakeholders ~64
GetListCapTableStakeholders returns a company's stakeholder roster (company-scoped, paginated). Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| pageSize | integer | – | – |
| pageToken | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| nextPageToken | string | – | – |
| stakeholders | array | – | – |
| totalCount | integer | – | – |
No examples provided.
cap_table_get_list_cap_table_wire_match_suggestions List Cap Table Wire Match Suggestions ~98
Lists proposed matches between incoming bank transfers and the investors expected to have sent them, each with a confidence and the reason it was proposed. Read-only, and a suggestion only — nothing is recorded as received until somebody confirms it. Use this to answer "which wires have arrived and who are they from".
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| securityId | object | – | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| suggestions | array | – | – |
No examples provided.
cap_table_get_my_investor_companies Get My Investor Companies ~58
GetMyInvestorCompanies returns the companies where the caller is a linked investor stakeholder (not a member), with the owner-granted access level — the entry point for the investor-facing portal (B3). Read-only.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| companies | array | – | – |
No examples provided.
cap_table_get_safe_import_consent Get SAFE Import Consent ~46
GetSafeImportConsent reports whether the company has granted current consent for an external AI to read imported SAFE contents.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| granted | boolean | – | – |
| version | string | – | – |
No examples provided.
cap_table_get_transaction_summary Get Transaction Summary ~62
GetTransactionSummary returns the committed / signed / wired capital totals for the Transactions page header. committed/signed come from the securities pipeline stage; wired comes from the money-movement ledger. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| committed | string | – | – |
| signed | string | – | – |
| wired | string | – | – |
No examples provided.
cap_table_get_wired_transactions Get Wired Transactions ~48
GetWiredTransactions returns the confirmed-wire ledger (wired + refunded investor rows) for the fundraising Transactions page. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| totalCount | integer | – | – |
| transactions | array | – | – |
No examples provided.
cap_table_grant_safe_import_consent Grant SAFE Import Consent ~49
GrantSafeImportConsent records the company's consent at the current wording version. Required before an MCP-origin SaveCapTableImport.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| granted | boolean | – | – |
| version | string | – | – |
No examples provided.
cap_table_import_rsa Import RSA ~452
Imports a signed Restricted Stock Purchase/Award Agreement (RSA) from an uploaded PDF and stores the document in S3. USE THIS (not ExtractRsaTermsOcr + CreateCapTableAgreement, and not RecordCapTableInvestment) whenever the user provides or uploads a signed RSA PDF. The grantee (founder/employee/advisor) MUST already exist as a cap-table stakeholder — this tool matches the document to an existing stakeholder by name and does NOT create one; if there is no match the import is rejected, so add the stakeholder first. Mandatory two-step human-in-the-loop flow: (1) call GetOcrUploadUrl with kind=RSA and mime_type=application/pdf, then upload the PDF bytes to the returned PUT URL; (2) call ImportRSA with preview=true and that source_s3_uri — this runs OCR and returns the extracted founder/company names and terms (shares, vesting, price_per_share, grant_date, 83b status, acceleration) plus the resolved grantee (matched_stakeholder_id, or would_create=true when no stakeholder matches) WITHOUT persisting anything; (3) PRESENT those terms to the user as a table, let them correct any value, and get explicit confirmation; (4) call ImportRSA again WITHOUT preview and the SAME source_s3_uri; pass rsa_terms_override with any user-corrected terms (omit it to accept the extracted terms as-is), and stakeholder_id to pin the matched grantee. This creates the common-stock holding with its vesting schedule (or updates the grantee's existing holding), records a signed RSA agreement, and links the PDF — atomically. Never skip the preview + confirmation step; never persist unreviewed OCR output. Empty string / 0 / false in the extracted terms means the value was not stated in the document — never fabricate.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| consentToAiRead | boolean | – | – |
| newStakeholderName | string | – | – |
| preview | boolean | – | – |
| rsaTermsOverride | object | – | – |
| sourceS3Uri | string | – | – |
| stakeholderId | object | – | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| agreementId | – | – | – |
| consentBodyMarkdown | string | – | – |
| consentVersion | string | – | – |
| created | boolean | – | – |
| preview | – | – | – |
| securityId | – | – | – |
| stakeholderId | – | – | – |
| status | string | – | – |
No examples provided.
cap_table_import_safe Import SAFE ~546
Imports a SAFE from an uploaded SAFE PDF and stores the document in S3. USE THIS (not RecordCapTableInvestment) whenever the user provides or uploads a SAFE PDF file. Flow: (1) call GetOcrUploadUrl with kind=SAFE and mime_type=application/pdf to get a presigned PUT URL + source_s3_uri, (2) upload the PDF bytes to that PUT URL, (3) call ImportSAFE with that source_s3_uri. This runs OCR to extract the terms; pass valuation_cap / investment_amount / discount_rate only to CORRECT a value the user says the OCR misread, and leave them empty to keep what the document says. Call ExtractSafeTerms first and get the user's confirmation before importing. effective_date is required — never import a SAFE without a date. If the company named on the document differs from this company, say both names and get the user's confirmation before importing. It copies the PDF to the canonical cap-table SAFE location, links it to a SAFE agreement, resolves the investor by name (matching an existing stakeholder or creating a new one), and creates the security. The security is marked signed only if the document is actually signed; an unsigned SAFE PDF is still stored and left committed. Whenever the user has the PDF — including when they attached it to this conversation — upload it and pass source_s3_uri so the document itself is stored; a SAFE created from typed terms alone has nothing on record proving its date or signature, and the cap table flags it as missing its document. Use RecordCapTableInvestment only for a SAFE the user genuinely has no document for. The response carries the cap table before this call, what it added, and the cap table after — report an import in exactly that order (current table, new additions, final table) and take the totals from the response rather than reading the cap table again. For several SAFEs at once, list every one you are about to add and get a yes before the first call, not after the last.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| consentToAiRead | boolean | – | – |
| discountRate | string | – | – |
| documentId | object | – | UUID value wrapper. |
| effectiveDate | string | – | – |
| investmentAmount | string | – | – |
| newStakeholderName | string | – | – |
| postMoney | boolean | – | – |
| preview | boolean | – | – |
| roundId | object | – | UUID value wrapper. |
| sourceS3Uri | string | – | – |
| stakeholderId | object | – | UUID value wrapper. |
| unsignedDocument | boolean | – | – |
| valuationCap | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| agreementId | – | – | – |
| change | – | – | – |
| consentBodyMarkdown | string | – | – |
| consentVersion | string | – | – |
| created | boolean | – | – |
| preview | – | – | – |
| securityId | – | – | – |
| stakeholderId | – | – | – |
| status | string | – | – |
No examples provided.
cap_table_list_cap_table_audit_events List Cap Table Audit Events ~74
ListCapTableAuditEvents returns the append-only who/what/when audit log for a company's ownership-affecting cap-table mutations (B1). Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| companyId | object | yes | UUID value wrapper. |
| pageSize | integer | – | – |
| pageToken | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| events | array | – | – |
| nextPageToken | string | – | – |
| totalCount | integer | – | – |
No examples provided.
cap_table_list_cap_table_snapshots_for_round List Cap Table Snapshots For Round ~87
Returns the ownership table as it stood when a round closed — one row per stakeholder, with shares and percentage frozen at that moment. Read-only. Use this to answer "who owned what after the seed". For today's ownership, read the cap table summary instead: a snapshot is history and does not move.
| Name | Type | Req | Description |
|---|---|---|---|
| roundId | object | yes | UUID value wrapper. |
| Name | Type | Req | Description |
|---|---|---|---|
| snapshots | array | – | – |
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 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.