Lovie Company Formation

co.lovie由 lovie.co 發布官方發布者v1.0.10更新於 Oct 24, 2026

Form companies, manage bank accounts, cards, invoices and more — directly from your AI coding tools.

已驗證Streamable HTTP可網頁執行效率與工作流金融商業與電商

概覽

AI 產生的概覽

Lovie 公司設立 MCP 讓助理在 AI 程式開發工具中設立公司,並管理企業銀行帳戶、卡片、付款、發票與帳務。

可以做什麼
  • 公司設立:發起設立、設定州別與實體類型、查詢名稱可用性、新增股東、產生證書、支付登記費用
  • 銀行帳戶、卡片與付款:開立、凍結、關閉帳戶,設定消費上限,轉帳、存款與提款
  • 發票與客戶:建立、寄送、複製發票,標記為已付款,產生 PDF,管理客戶資料
  • 交易與連結帳戶:列出並分類交易,透過 Plaid 連結外部銀行
  • 讀取會計資料:資產負債表、損益表、現金流量表、試算表、總分類帳、帳齡、期間、攤銷排程與稽核日誌
  • 處理銀行申請與核准:讀取申請、擷取文件欄位、建立信任裝置核准工作階段
適用情境
適合創辦人或小型企業主讓助理代為處理公司設立、銀行、卡片、付款或開票事務,並直接讀取會計報表。也適合在終端機中檢視待處理的記帳項目與銀行開戶申請。
執行需求
本機執行需 Node.js 18+ 的 npm 套件,或改用遠端端點。需要 Lovie 帳戶,透過瀏覽器登入指令完成驗證,OAuth 權杖由該套件保存並自動更新。可選環境變數 LOVIE_MCP_URL、LOVIE_API_KEY 與 DEBUG。需要連線至 Lovie 伺服器的網路。
安裝前請注意
此伺服器可移動資金並變更業務紀錄:付款、轉帳、存款、提款、發卡與凍結、支付登記費用以及寄送發票。部分操作需要信任裝置核准工作階段,自主付款受每個代理的自主額度限制。LOVIE_API_KEY 是會覆蓋已存 OAuth 權杖的 bearer 權杖。透過 Plaid 連結外部銀行會把帳戶資料分享給第三方。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Lovie Company Formation,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/co.lovie%2Fcompany-formation/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "lovie-company-formation": {
      "type": "http",
      "url": "https://mcp.lovie.co/mcp/mcp"
    }
  }
}

README

lovie — Company Formation MCP Server

The Company Formation MCP for AI coding tools. Form companies, manage bank accounts, cards, invoices, and more — directly from your terminal.

Quick Start

bash
npm install -g lovie

1. Log in

bash
lovie login

This opens your browser to authenticate with your Lovie account.

2. Add to your AI tool

Claude Code

To add Lovie globally (available in all projects):

bash
claude mcp add --scope user lovie npx lovie

To add Lovie to the current project only:

bash
claude mcp add lovie npx lovie

Cursor — add to .cursor/mcp.json

json
{  "mcpServers": {    "lovie": {      "command": "npx",      "args": ["-y", "lovie"]    }  }}

Windsurf — add to mcp_config.json

json
{  "mcpServers": {    "lovie": {      "command": "npx",      "args": ["-y", "lovie"]    }  }}

Claude Desktop — add to claude_desktop_config.json

json
{  "mcpServers": {    "lovie": {      "command": "npx",      "args": ["-y", "lovie"]    }  }}

VS Code / GitHub Copilot — add to .vscode/mcp.json

json
{  "mcpServers": {    "lovie": {      "command": "npx",      "args": ["-y", "lovie"]    }  }}

Replit — add to .replit or use the MCP panel in Replit Agent

json
{  "mcpServers": {    "lovie": {      "command": "npx",      "args": ["-y", "lovie"]    }  }}

Lovable — in the MCP integration settings, add:

  • Name: lovie
  • Command: npx
  • Arguments: -y lovie

Manus — in the MCP tool configuration, add:

  • Name: lovie
  • Command: npx
  • Arguments: -y lovie

OpenAI (ChatGPT / Codex) — if MCP is supported, use the same stdio config:

json
{  "mcpServers": {    "lovie": {      "command": "npx",      "args": ["-y", "lovie"]    }  }}

Any MCP-compatible platform — Lovie works with any tool that supports the MCP stdio protocol. Use npx -y lovie as the command, or lovie if installed globally.

That's it. Your AI tool now has access to 79 Lovie business tools.

What You Can Do

CategoryTools
Company FormationStart formation, set state, choose entity type, check name availability, add shareholders, generate certificate, pay filing fee
Bank AccountsCreate checking/savings/wallet, get balances, freeze/unfreeze, close accounts
CardsIssue virtual/physical cards, set spending limits, freeze/unfreeze, cancel
PaymentsTransfer between accounts, deposit funds, withdraw from wallet
InvoicingCreate/send/duplicate invoices, mark as paid, generate PDFs
ClientsCreate and manage client records for invoicing
TransactionsList and filter transactions with AI-powered categorization
Linked AccountsConnect external bank accounts via Plaid, sync transactions
User ProfileView/update profile, manage sessions, activity history

Commands

bash
lovie              # Show setup instructionslovie login        # Authenticate with Lovielovie logout       # Clear stored credentialslovie status       # Check authentication statuslovie help         # Show help

How It Works

This package is a lightweight stdio-to-HTTP proxy. It connects your local AI tool to the Lovie MCP server:

AI Tool (Claude, Cursor, etc.)  ←— stdio —→  lovie (this package)  ←— HTTPS —→  Lovie MCP Server
  • On startup, discovers all available tools from the remote server
  • Forwards tool calls over HTTPS and returns results via stdio
  • Handles OAuth authentication, session management, and automatic token refresh
  • All business logic runs on the Lovie server — this package is just the bridge

Environment Variables

VariableDescription
LOVIE_MCP_URLCustom MCP server URL (default: https://mcp.lovie.co/mcp/mcp)
LOVIE_API_KEYBearer token — overrides stored OAuth token
DEBUGEnable verbose logging to stderr

Requirements

  • Node.js 18+
  • A Lovie account (lovie.co)

License

MIT

來源:README.md,提交 2a592a3

工具

200

account_get_account

Get Account

GetAccount retrieves a single account by ID with its details

輸入參數id必填

account_get_list_account_details

List Account Details

GetListAccountDetails retrieves account details in batch (eliminates N+1 GetAccount calls)

輸入參數filterpageSizepageToken

accounting_get_accounting_settings

Get Accounting Settings

GetAccountingSettings returns the company's fiscal-year start and where it comes from: a person's setting, the EIN filing's closing month, or January. Read-only.

輸入參數companyId必填

accounting_get_aging_report

Get Aging Report

Accounts receivable or accounts payable aging: the open balances per customer or supplier, split into not yet due, 1-30, 31-60, 61-90 and over 90 days past due, with totals. Reads the items open now; as_of_date only decides how overdue each one counts as. Items whose source sent no due date are aged from their issue date and counted in aged_from_issue_count. Read-only.

輸入參數sideasOfDatecompanyId必填currencyCode

accounting_get_balance_sheet

Get Balance Sheet

GetBalanceSheet returns assets, liabilities, and equity balances as of a date; equity includes net income to date, so the sheet always balances. Read-only.

輸入參數basisasOfDatecompanyId必填currencyCode

accounting_get_cash_flow_statement

Get Cash Flow Statement

GetCashFlowStatement returns the statement of cash flows for a period: net income, then operating, investing and financing activity, reconciled to the change in bank and cash balances. Read-only.

輸入參數basisendDatecompanyId必填startDatecurrencyCode

accounting_get_chart_of_accounts

Get Chart Of Accounts

GetChartOfAccounts returns the company's chart of accounts (flat list with parent links; build the tree client-side). Read-only.

輸入參數companyId必填includeInactive

accounting_get_close_target

Get Close Target

GetCloseTarget names the window the next close has to cover: a reopened period first, else the month after the books are closed through, else the month of the first entry. The same rules ClosePeriod enforces. Read-only.

輸入參數companyId必填

accounting_get_funding_summaries

Get Funding Summaries

Per bank account and card, the balance the books show and how many posted entries came through it. Compare with the bank's own balance from account tools; a difference is what reconciliation resolves. Read-only.

輸入參數companyId必填

accounting_get_general_ledger

Get General Ledger

GetGeneralLedger pages through one account's posted lines with opening, running, and closing balances — the account register. Read-only.

輸入參數basisvendorendDatepageSizecompanyId必填pageTokenstartDateglAccountId必填currencyCode

accounting_get_gl_account_type_catalog

Get Gl Account Type Catalog

GetGLAccountTypeCatalog returns every account type with the detail types it admits and the classification it implies — what the New account panel needs to populate its two dependent selects without duplicating the pairing rules. Static per release; safe to cache. Read-only.

輸入參數companyId必填

accounting_get_journal_entry_by_transaction

Get Journal Entry By Transaction

GetJournalEntryByTransaction returns the journal entry derived for one transaction (empty when none exists yet). Read-only.

輸入參數companyId必填transactionId必填

accounting_get_list_journal_entries

List Journal Entries

GetListJournalEntries pages through the journal register with filters — the review queue is filter{needs_review: true}. Read-only.

輸入參數filterpageSizecompanyId必填pageToken

accounting_get_list_periods

List Periods

GetListPeriods pages through a company's periods, newest first. Read-only.

輸入參數filterpageSizecompanyId必填pageToken

accounting_get_list_review_items

List Review Items

List bank transactions awaiting bookkeeping review. Tabs: PENDING (nobody has reviewed the booking as it stands, whether the engine, a rule or a person made it), REVIEWED (a person marked it reviewed and it has not changed since; a trusted rule posting it on its own is not a review), EXCLUDED (deliberately kept out of the books). Every row is already in the books; the tab only says whether anyone has signed it off. Each row carries the cleaned counterparty name, the raw bank memo, the absolute amount with a money-in/money-out direction, the effective category, the income/expense account it books to, and a confidence marker. Returns counters for all three tabs alongside the page.

輸入參數filterpageSizecompanyId必填pageToken

accounting_get_list_schedules

List Schedules

GetListSchedules pages through a company's schedules. Read-only.

輸入參數filterpageSizecompanyId必填pageToken

accounting_get_list_statements

List Statements

List the bank statements imported for reconciliation, newest period first, with how many of each statement's lines are still unmatched. Read-only.

輸入參數accountIdcompanyId必填

accounting_get_period

Get Period

GetPeriod returns one closed period by id. Read-only.

輸入參數periodId必填companyId必填

accounting_get_profit_and_loss

Get Profit And Loss

GetProfitAndLoss returns the income statement for a period: revenue and expense accounts with activity, totals, and net income. Read-only.

輸入參數basisendDatebyVendorcompanyId必填startDatecurrencyCode

accounting_get_report_series

Get Report Series

GetReportSeries returns one P&L, balance sheet or cash flow statement per month, quarter or year of a range, in one call: the same figures the single-period RPCs give for each period. Read-only.

輸入參數kindbasisendDatecompanyId必填startDategranularitycurrencyCode

accounting_get_review_counts

Get Review Counts

Count bank transactions per bookkeeping review tab (pending, reviewed, excluded) without fetching rows. Use to report how much review work is outstanding.

輸入參數companyId必填

accounting_get_schedule

Get Schedule

GetSchedule returns one schedule with its postings. Read-only.

輸入參數companyId必填scheduleId必填

accounting_get_similar_review_items

Get Similar Review Items

After booking one transaction, find the other pending transactions from the same counterparty in the same cash direction (money out vs money in), so the same correction can be applied to all of them. Returns up to 500 transaction ids, newest first, plus total_count, which counts every match and can exceed the ids returned. Book them in one call with transaction_batch_categorize_transactions_by_account. A row leaves Pending only once the person accepts your proposal and the ledger posts it, so calling again can return ids you already booked; booking one to the same account again just replaces its proposal. When total_count exceeds the ids returned, tell the person the rest come back after they accept, then call again. Read-only.

輸入參數companyId必填transactionId必填

accounting_get_statement

Get Statement

One statement with its lines and their matches. Read-only.

輸入參數companyId必填statementId必填

accounting_get_trial_balance

Get Trial Balance

GetTrialBalance returns every account's debit and credit totals for a period; total debits equal total credits when the books balance. Read-only.

輸入參數basisendDatecompanyId必填startDatecurrencyCode

accounting_list_accounting_audit_events

List Accounting Audit Events

ListAccountingAuditEvents pages through the append-only accounting audit log — who changed what and when across journal entries and the chart of accounts, newest first. Filter by entity_id for one record's history. Read-only.

輸入參數entityIdpageSizecompanyId必填pageToken

accounting_preview_close

Preview Close

PreviewClose computes the per-currency revenue/expense totals and the net income a close would roll, without writing anything, and reports what still blocks the close along with what closing carries with it. The blockers come from the function ClosePeriod refuses on, so a clean preview means the close will not be refused for a precondition. Read-only.

輸入參數basisendDatecompanyId必填startDategranularity

accounting_preview_schedule

Preview Schedule

PreviewSchedule computes the straight-line per-period split for the given amount and period count without persisting anything. Read-only.

輸入參數startDateperiodCounttotalAmount

accounting_propose_schedules

Propose Schedules

Scan a company's recent posted transactions and suggest accrual schedules (e.g. amortize a large annual prepaid over 12 months). Returns proposals only — nothing is created until a person creates the schedule in the app. Each proposal carries the suggested kind, total amount, start date, period count, debit/credit GL accounts, the source transaction, and a rationale.

輸入參數companyId必填

accounting_suggest_statement_matches

Suggest Statement Matches

Rank ledger transactions against a statement's unmatched lines. Amount must match exactly; date proximity and description then rank the candidates. Writes nothing — a person applies a match on the reconcile screen.

輸入參數companyId必填statementId必填

accounting_suggest_transfer_pairs

Suggest Transfer Pairs

Rank the journal entries that could be the other half of a transfer between the company's own accounts: opposite direction, same amount, different instrument, dated within a few days. Writes nothing — a person confirms a pair in the app.

輸入參數companyId必填journalEntryId必填

ads_insight_summarize_ad_spend

Summarize Ad Spend

SummarizeAdSpend unions the four ad platforms' daily campaign tables at read time into per-(provider, month, currency) spend/impressions/clicks/ conversions plus a per-currency CPA. Read-time only — no new storage.

輸入參數companyIdperiodEndperiodStart

ads_insight_summarize_campaign_window

Summarize Campaign Window

SummarizeCampaignWindow summarises one charge against the campaigns in its billing window. Results are cached per company + account + window + charge, so repeated panel opens do not re-run the agent.

輸入參數provideraccountIdcompanyIdperiodEndperiodStartchargeAmount

approval_session_create_approval_session

Create Approval Session

Opens a sensitive-action approval on the user's own trusted device: a push notification asks them to approve on their phone. Use before tools that demand an approval (the domain auth-code reveal, the trademark firm handoff, the ITIN submit): create the session with the exact action_type and payload the tool documents, tell the user to check their phone, poll get-approval-session-status until APPROVED, then pass the session id to the gated tool. Sessions expire in minutes and are consumed single-use.

輸入參數actionTypeactionPayloadoriginLocationoriginPlatformactionDescriptionoriginTrustedDeviceId

approval_session_get_approval_session_status

Get Approval Session Status

Read the status of a trusted-device approval session: PENDING, APPROVED, REJECTED or EXPIRED. For a transfer, call this with the approval_session_id from request_transfer_approval once the user says they have answered on their phone, and call commit_transfer only when it returns APPROVED. Poll once per user prompt, not in a loop; a session expires about 5 minutes after it was opened.

輸入參數sessionId必填

autonomous_pay

Submit Payment

Submit a signed payment mandate for autonomous execution. Runs the four-check pipeline and the per-agent autonomy fence; payments outside the agent's envelope are gated to human approval.

輸入參數jcsHashserviceLevelmandateBodyJsonsignatureB64url

banking_confirm_extracted_value

Confirm Extracted Value

ConfirmExtractedValue records that a human checked a read value. Without it a low-confidence extraction holds its section open forever and the application can never be submitted.

輸入參數fieldPathapplicationId必填

banking_confirm_initial_transfer

Confirm Initial Transfer

Records the opening deposit a founder chose for their banking application. This stores an intention only — it does not move money, and no funds are transferred by any part of Lovie today. Never tell the user their deposit has been sent.

輸入參數amountcurrencyCodeapplicationId必填

banking_extract_document_fields

Extract Document Fields

Reads an uploaded document on a banking application — a Certificate of Incorporation or an IRS EIN letter — and fills in the values it states, each marked with where it came from and how confident the read was. It never sets the industry classification: no document states it.

輸入參數documentId必填applicationId必填

banking_get_banking_application

Get Banking Application

GetBankingApplication returns the whole application: the business facts, the beneficial owners, the uploaded documents, what each value's source was, and the sections still outstanding. It is the one read for answering "where is my application, and what is left?". It carries only the last four digits of the employer identification number and of each owner's tax identifier. The undivided values live in the secret store, and reading the identification number back is a separate RPC that is deliberately not a tool — a whole identifier in a tool call is a whole identifier in a transcript.

輸入參數companyIdapplicationId

banking_get_initial_transfer_preview

Get Initial Transfer Preview

Returns the suggested opening deposit for a banking application and the reason for that figure. Read-only: it moves no money and records nothing.

輸入參數applicationId必填

banking_get_issuance_state

Get Issuance State

GetIssuanceState reports where this application's deposit account stands: whether it is queued, being opened, open, or could not be opened, and the last four digits once there are any. It exists as its own state so that an approved application is never mistaken for an open account. Approval is our banking partner accepting the corporation; opening happens after it and can still fail, so a caller that wants to tell somebody they can receive money must read this, not the application's status.

輸入參數applicationId必填

banking_hydrate_from_cap_table

Hydrate From Cap Table

HydrateFromCapTable carries the company's carriable stakeholders onto an open application as beneficial owners. Idempotent: the stakeholder link identifies them, so running twice updates rather than duplicates, and an owner the applicant corrected keeps their correction.

輸入參數applicationId必填

banking_hydrate_from_formation

Hydrate From Formation

HydrateFromFormation is idempotent: it writes values and their provenance in one transaction and never overwrites something the applicant supplied.

輸入參數formationId必填applicationId必填

banking_preview_cap_table_hydration

Preview Cap Table Hydration

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.

輸入參數companyId必填

banking_preview_formation_hydration

Preview Formation Hydration

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.

輸入參數companyId必填formationId

banking_refresh_application_provider_status

Refresh Application Provider Status

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.

輸入參數applicationId必填

banking_refresh_owner_verification

Refresh Owner Verification

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.

輸入參數ownerId必填applicationId必填

banking_set_application_ein

Set Application EIN

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.

輸入參數einapplicationId必填

banking_set_owner_identity_document_number

Set Owner Identity Document Number

Files the number on a beneficial owner's passport or US driver's license against a banking application, for an owner who has no SSN or ITIN. Record the document first (kind, issuing country, expiry, and the issuing state for a license) on the owner. The number goes to the secret store; only its last four are recorded, which is all the response returns. Pass it once and do not repeat it back.

輸入參數ownerId必填applicationId必填documentNumber

banking_set_owner_tax_identifier

Set Owner Tax Identifier

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 which of the two they hold and pass it as kind: an ITIN starts with 9 and an SSN never does, and a mismatch is refused. Ask for the number 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.

輸入參數kindownerId必填applicationId必填taxIdentifier

banking_start_banking_application

Start Banking Application

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.

輸入參數pathcompanyId必填formationId

banking_submit_banking_application

Submit Banking Application

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. The one exception is a correction our banking partner asked for: those fields save as usual, and calling this again sends the application back.

輸入參數applicationId必填

banking_suggest_industry_code

Suggest Industry Code

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.

輸入參數limitbusinessDescription必填

banking_update_banking_application

Update Banking Application

UpdateBankingApplication takes a FieldMask. Every path in the mask also writes USER provenance, so correcting a carried-over value re-attributes it.

輸入參數updateMask必填application必填

banking_upsert_beneficial_owner

Upsert Beneficial Owner

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.

輸入參數owner必填applicationId必填

cap_table_clear_cap_table_stakeholders

Clear Cap Table Stakeholders

ClearCapTableStakeholders deletes every stakeholder of a company in a single DB-level operation. Used by the "replace cap table" import flow.

輸入參數companyId必填

cap_table_close_cap_table_round

Close Cap Table Round

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.

輸入參數roundId必填companyId必填newMoneyRaiseoptionPoolBasisrecordedHistorypreMoneyValuationcarryForwardUnwiredtargetOptionPoolPct

cap_table_create_cap_table_agreement

Create Cap Table Agreement

Records a non-SAFE agreement (option, RSU, RSA, FAST advisor agreement, board consent) against a company. Without signed_at it creates a draft and touches nothing else. SIGNED_AT IS NOT A DATE FIELD — it is a declaration that the document is already executed, and for a FAST it WRITES TO THE CAP TABLE: it puts the advisor on the register as a stakeholder and issues them an option holding carrying the equity percentage and the FAST's fixed 24-month / 3-month-cliff vesting. Set it ONLY when the person tells you the agreement has been signed, and say what it will do before you do it. An unsigned FAST grants nothing, so leaving signed_at empty is always the safe choice. PARTY: the advisor is matched to an existing stakeholder by EXACT name and created fresh otherwise, so a spelling that differs from the register adds a SECOND row for the same person — the twin holds no equity, so ownership views hide it while stakeholder counts include it. Call GetListCapTableStakeholders first and pass stakeholder_id whenever the advisor is already on the register. advisor_equity_pct is a percentage like "0.50" (a trailing % is accepted); effective_date is YYYY-MM-DD and is the date vesting runs from.

輸入參數nametyperoundIdsignedAtcompanyId必填fastTermsgranteeNamesourceS3UriprogressTotalstakeholderId

cap_table_create_cap_table_round

Create Cap Table Round

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.

輸入參數round必填pastRound

cap_table_create_cap_table_stakeholder

Create Cap Table Stakeholder

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.

輸入參數stakeholder必填

cap_table_delete_cap_table_agreement

Delete Cap Table Agreement

DeleteCapTableAgreement removes an agreement.

輸入參數companyId必填agreementId必填

cap_table_delete_cap_table_round

Delete Cap Table Round

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).

輸入參數roundId必填companyId必填

cap_table_delete_cap_table_security

Delete Cap Table Security

DeleteCapTableSecurity removes one holding.

輸入參數companyId必填securityId必填

cap_table_delete_cap_table_stakeholder

Delete Cap Table Stakeholder

DeleteCapTableStakeholder removes one stakeholder from a cap table.

輸入參數stakeholderId必填

cap_table_download_cap_table_safes

Download Cap Table Safes

DownloadCapTableSafes presigns multiple SAFE agreement PDFs in one call.

輸入參數companyId必填agreementIds

cap_table_extract_wire_payment_proof

Extract Wire Payment Proof

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.

輸入參數agentCodecompanyId必填securityId必填sourceS3Uri

cap_table_generate_cap_table_agreement_pdf

Generate Cap Table Agreement PDF

Renders the PDF for one employee equity-grant agreement (option/rsu/rsa/fast) and stores it; returns the S3 key. Generation is idempotent: when the agreement already has a PDF this returns it unchanged. A signed or void agreement is refused. regenerate=true (overwrite the existing PDF in place) is refused for assistants — ask the person to press Regenerate PDF in the app — and for any agreement out for signature.

輸入參數companyId必填regenerateagreementId必填templateFields

cap_table_generate_cap_table_docs

Generate Cap Table Docs

Generates the SAFE agreement PDF for every SAFE holding of the given stakeholders (all of them when none are given). It runs synchronously: when it returns, queued_count agreements have rendered and are ready to prepare for signature, and failed_count agreements could not be rendered and are left FAILED. Whenever failed_count is above zero, tell the user those SAFEs were not generated rather than saying the documents are on their way. To retry, call this again with stakeholder_ids set to the previous response's failed_stakeholder_ids. Every call creates a new agreement for each SAFE holding of each stakeholder it is given, so repeating the original request duplicates SAFEs that already rendered, and an investor with several SAFE holdings has all of them rendered again, not only the one that failed.

輸入參數companyId必填stakeholderIds

cap_table_generate_cap_table_summary_pdf

Generate Cap Table Summary PDF

GenerateCapTableSummaryPdf renders the cap-table summary to a branded PDF on the backend document engine (Gotenberg). It returns the bytes, or with as_link (always, for an assistant) a short-lived download link to give the user. Read-only.

輸入參數asLinkcompanyId必填

cap_table_get_cap_table_agreement

Get Cap Table Agreement

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.

輸入參數id必填

cap_table_get_cap_table_agreement_pdf_url

Get Cap Table Agreement PDF URL

GetCapTableAgreementPdfUrl returns a short-lived signed S3 URL for the rendered SAFE agreement PDF.

輸入參數attachmentagreementId必填

cap_table_get_cap_table_equity_plans

Get Cap Table Equity Plans

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. option_pool_shares is the unallocated pool nobody has been granted — after a priced close, the pool that close sized. Use this to answer "who holds what" or "how much of X's grant has vested" without adding up securities by hand.

輸入參數companyId必填

cap_table_get_cap_table_health

Get Cap Table Health

GetCapTableHealth answers "is anything wrong with this cap table?". It runs every server-side check over the stored cap table and returns the issues as data: authorized shares not set, a share class at or over its authorized count, SAFEs with no signed document, no terms or no stated type, a SAFE stack promised more than 100%, a priced round still open with all its money wired, and preferred stock with no liquidation terms. The web shows the same list. Read-only.

輸入參數companyId必填

cap_table_get_cap_table_investor_access

Get Cap Table Investor Access

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.

輸入參數companyId必填

cap_table_get_cap_table_overview

Get Cap Table Overview

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.

輸入參數companyId必填

cap_table_get_cap_table_round

Get Cap Table Round

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.

輸入參數id必填

cap_table_get_cap_table_round_summaries

Get Cap Table Round Summaries

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. Raised is the wired bucket alone — money in the bank; committed and signed are promised but not yet received, so add them yourself only when the user asks what is promised in total.

輸入參數companyId必填

cap_table_get_cap_table_security

Get Cap Table Security

GetCapTableSecurity returns one holding by id. Read-only.

輸入參數securityId必填

cap_table_get_cap_table_stakeholder

Get Cap Table Stakeholder

GetCapTableStakeholder returns one stakeholder by id. Read-only.

輸入參數stakeholderId必填

cap_table_get_cap_table_summary

Get Cap Table Summary

GetCapTableSummary returns company-wide AGGREGATES on the fully-diluted roster: total shares, stakeholder count, founders' combined percentage, and ownership split by stakeholder type. Read-only. Aggregate only. "Per-type segments" groups by type (founder, investor, employee) and is not a per-holder breakdown — it cannot tell you what any one person holds. Use GetListCapTableSecurities for that.

輸入參數asOfcompanyId必填

cap_table_get_list_cap_table_agreements

List Cap Table Agreements

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.

輸入參數pageSizecompanyId必填pageTokentypeFilter

cap_table_get_list_cap_table_rounds

List Cap Table Rounds

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.

輸入參數pageSizecompanyId必填pageToken

cap_table_get_list_cap_table_securities

List Cap Table Securities

GetListCapTableSecurities lists a company's holdings — the ONLY source of per-holder share counts, share class, price and vesting. Optionally filtered to one stakeholder; paginated, read-only. Call this before answering anything about how much a person owns, and before modeling dilution: the stakeholder roster carries no share counts, and the summary is aggregate-only.

輸入參數pageSizecompanyId必填pageTokenstakeholderId

cap_table_get_list_cap_table_stakeholders

List Cap Table Stakeholders

GetListCapTableStakeholders returns a company's stakeholder roster: identities only — name, type, email, title, address — and NO share counts or ownership percentages, which live on the securities. Paginated, read-only. To answer "who owns what", or anything needing a share count, call GetListCapTableSecurities; to report a total or a founder percentage, call GetCapTableSummary. Never state or derive a holding from this response: a roster read alone cannot tell you one, and a plausible split presented as fact on a cap table is worse than saying you do not have the numbers.

輸入參數pageSizecompanyId必填pageToken

cap_table_get_list_cap_table_wire_match_suggestions

List Cap Table Wire Match Suggestions

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".

輸入參數companyId必填securityId

cap_table_get_my_investor_companies

Get My Investor Companies

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.

無需輸入參數。

cap_table_get_transaction_summary

Get Transaction Summary

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.

輸入參數companyId必填

cap_table_get_wired_transactions

Get Wired Transactions

GetWiredTransactions returns the confirmed-wire ledger (wired + refunded investor rows) for the fundraising Transactions page. Read-only.

輸入參數companyId必填

cap_table_import_cap_table

Import Cap Table

ImportCapTable writes a whole cap table in one call and one transaction: every row lands or none does, a row naming an existing holder is added to them (and reported as reused), a round the file names is recorded as closed history, and the result is refused if it would break the cap table's rules or does not match the totals the founder confirmed. Use this for any import of more than one holding instead of a sequence of single writes.

輸入參數rowsreplacecompanyId必填expectedTotalSharesexpectedTotalCapital

cap_table_import_rsa

Import RSA

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; when it is empty no stakeholder matched, the response carries a warning, and the import will be refused until the grantee is added) 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.

輸入參數previewcompanyId必填sourceS3UristakeholderIdconsentToAiReadrsaTermsOverridenewStakeholderName

cap_table_import_safe

Import SAFE

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 papers that investor's existing SAFE holding (the one carrying the document's amount, else their only unfunded one) rather than creating a second; only with none to paper does it create the security. Pass security_id to name the exact holding to paper (the web investor card does). An unsent generated SAFE draft that the import replaces is voided. With security_id naming the holding, the import is refused with FAILED_PRECONDITION when that investor already has a SAFE signed or out for signature (the user must void that envelope first) or when a wired holding's amount differs from the document's; a typed investment_amount does not unlock a wired holding. A document_id whose hub row is itself out for signature is refused with FAILED_PRECONDITION even without security_id, as is one already filed for another record (including a second submit of the same document). WITHOUT security_id, an investor whose SAFE is already signed or out for signature gets an additional

輸入參數previewroundIdcompanyId必填postMoneydocumentIdsecurityIdsourceS3UridiscountRatevaluationCapeffectiveDatestakeholderIdconsentToAiRead另有 3 個

cap_table_list_cap_table_audit_events

List Cap Table Audit Events

ListCapTableAuditEvents returns the append-only who/what/when audit log for a company's ownership-affecting cap-table mutations (B1). Read-only.

輸入參數pageSizecompanyId必填pageToken

cap_table_list_cap_table_snapshots_for_round

List Cap Table Snapshots For Round

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.

輸入參數roundId必填

cap_table_list_cap_table_summary_snapshots

List Cap Table Summary Snapshots

ListCapTableSummarySnapshots returns the point-in-time cap-table summary versions captured on material edits (B4). Read-only.

輸入參數pageSizecompanyId必填pageToken

cap_table_list_cumulative_cap_table_snapshots_for_stakeholder

List Cumulative Cap Table Snapshots For Stakeholder

Returns one stakeholder's position at every round close, oldest first — the dilution story for a single person or fund. Read-only. Use this to answer "how has my ownership changed" or "how much was this founder diluted across the rounds".

輸入參數companyId必填stakeholderId必填

cap_table_match_cap_table_stakeholder

Match Cap Table Stakeholder

MatchCapTableStakeholder suggests the existing stakeholder a parsed SAFE's investor name maps to (fuzzy match). Read-only.

輸入參數companyId必填investorName

cap_table_preview_close_cap_table_round

Preview Close Cap Table Round

PreviewCloseCapTableRound runs the SAME engine as CloseCapTableRound but does NOT persist or close anything — no status change, no snapshot writes. This is the action for "preview", "what-if", or "estimate the close"; it never finalizes the round. To actually close/finalize, use CloseCapTableRound.

輸入參數roundId必填companyId必填newMoneyRaiseoptionPoolBasispreMoneyValuationtargetOptionPoolPct

cap_table_record_cap_table_investment

Record Cap Table Investment

Records one holding end-to-end: resolves or creates the stakeholder, then creates the holding with all derived fields, attaching or auto-creating a round for SAFE/Preferred. SAFE requires a valuation_cap. VESTING: for service equity held by a founder, employee, or advisor (instrument_type COMMON_STOCK or OPTION — restricted stock and option grants that vest over time), you MUST set the vesting field { start_date, total_months, cliff_months }. Carry these values from ExtractCapTable output (vesting_start_date / vesting_total_months / vesting_cliff_months) when importing a cap table. If such a holding has no vesting schedule in the source, ASK the user for the vesting start date, total months (e.g. 48), and cliff months (e.g. 12) BEFORE calling this tool — do not omit vesting and do not silently record it as fully vested. OMIT vesting entirely for investor instruments (SAFE, PREFERRED_STOCK, CONVERTIBLE_NOTE) — they never vest. Returns the stakeholder, security, and round ids. 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. PARTY: pass stakeholder_id whenever the person or fund is ALREADY on the cap table — including one you created or recorded earlier in this same conversation, and one you just read from GetListCapTableStakeholders. Use new_stakeholder ONLY for a party that is not on the register yet. Re-sending a name you have already used adds a SECOND row for the same person: the twin holds no equity, so ownership views hide it while stakeholder counts include it, and the register then disagrees with itself. If you are not certain whether a party exists, call GetListCapTableStakeholders first and take the id from there. The response returns s

輸入參數mfnsharesproRataroundIdvestingsafeTypecompanyId必填signedDatediscountRatevaluationCapstakeholderIdinstrumentType另有 3 個

cap_table_record_cap_table_refund

Record Cap Table Refund

RecordCapTableRefund records a refund into the money-movement ledger (refund, confirmed) and flips the security's pipeline_status to 'refunded'.

輸入參數amountcompanyId必填referenceoccurredAtsecurityId必填transactionId

cap_table_record_cap_table_wire

Record Cap Table Wire

Records an investor wire into the money-movement ledger and flips the security's pipeline_status to 'wired'. A wire is accepted ONLY when it is backed by one of: (a) a matched banking transaction_id (see GetListCapTableWireMatchSuggestions), or (b) a proof_document_uri whose ExtractWirePaymentProof verdict is 'verified'. With neither, the call is rejected — never mark a wire wired without a matched transaction or a verified payment proof.

輸入參數amountcompanyId必填referenceoccurredAtsecurityId必填ocrConfidencereviewedProoftransactionIdproofDocumentUri

cap_table_reopen_cap_table_round

Reopen Cap Table Round

ReopenCapTableRound flips a CLOSED round back to OPEN (status only).

輸入參數roundId必填

cap_table_set_cap_table_authorized_shares

Set Cap Table Authorized Shares

SetCapTableAuthorizedShares updates the company's authorized share ceiling (charter amendment must have been obtained before calling this). Owner-only.

輸入參數companyId必填authorizedSharesauthorizedCommonSharesauthorizedPreferredShares

cap_table_set_cap_table_pipeline_status

Set Cap Table Pipeline Status

Moves ONE investor's holding along the fundraising pipeline. Use this to change a stage — never UpdateCapTableSecurity, which is a full replace and will blank any field you do not resend. Forward goes one stage at a time (committed -> sent -> signed; awaiting_middleman sits between sent and signed and applies only to deals routed through a middleman), with one exception: 'signed' can be set from any earlier stage, because a countersigned agreement can arrive without ever having been sent. Never step through 'sent' to reach 'signed' when nothing was sent — that records a send that did not happen. Moving BACK to an earlier stage is allowed and is how a stage entered by mistake gets corrected — no need to delete the investor. Two things cannot be undone: 'wired' is set only by recording the wire (RecordCapTableWire, which requires a matched bank transaction or a verified payment proof) and never by this tool, and once wired the only move is a refund (RecordCapTableRefund). Setting the stage a holding already has is accepted and changes nothing. The fundraising pipeline is investors only: founders and employees receive equity, they never commit or wire capital, so a stage move on their holding is refused — leave them out when you list or summarize the pipeline.

輸入參數companyId必填securityId必填pipelineStatus

cap_table_simulate_cap_table_dilution

Simulate Cap Table Dilution

SimulateCapTableDilution runs the SAME engine as CloseCapTableRound against the company's current stakeholders and its outstanding SAFEs, for a raise that does not exist yet — no round, nothing persisted. CALL THIS for "what happens if we raise X at Y", "model dilution", "how much do the founders keep", or any post-money ownership question. Do NOT work the answer out yourself, even when the arithmetic looks simple: two implementations of SAFE conversion produce two different founder percentages and only one of them is right, and a hand-computed cap table presented as fact is the failure this tool exists to prevent. It reads each outstanding SAFE's own valuation cap, discount and MFN from the record — do not ask the user for a cap, and do not offer hypothetical caps; they are already stored. Nor do you need share counts first. Use this for a raise that has no round yet. PreviewCloseCapTableRound requires an existing round and cannot answer the same question.

輸入參數companyId必填newMoneyRaiseoptionPoolBasispreMoneyValuationtargetOptionPoolPct

cap_table_simulate_cap_table_exit

Simulate Cap Table Exit

Computes what every stakeholder takes home at ONE hypothetical exit valuation, running the liquidation-preference waterfall over the issued cap table. An outstanding SAFE takes the greater of its money back and its conversion at the sale: a capped SAFE converts at its cap (its discount is a financing term and does not apply), an uncapped discount SAFE at the sale price less its discount. The unallocated option pool is cancelled and paid nothing, and bought stock that was never wired is a commitment, not a holder. Read-only — nothing is written. When the user asks to "run a simulation" without naming a number, do not pick round numbers out of the air: read the company's own valuations first (GetListCapTableRounds for pre/post-money, GetListCapTableSecurities for SAFE valuation caps) and call this once per valuation, plus one clearly below the cheapest and one or two well above the richest, so the ladder shows both a down-round and an upside. Keep it to about five valuations. Report each scenario as: the exit value, the total distributed, and one line per investor with the payout and the cash-out multiple (payout / capital invested, e.g. "20.0x"); call out anyone crossing $1M and $30M, and say plainly when an exit below the last round means liquidation preferences are repaid before common stock. Never hand-calculate any of these numbers.

輸入參數companyId必填exitValuationliquidationOverridesadditionalExitValuations

cap_table_update_cap_table_agreement

Update Cap Table Agreement

UpdateCapTableAgreement applies a full update (status/progress/timestamps).

輸入參數agreement必填

cap_table_update_cap_table_agreement_status

Update Cap Table Agreement Status

Moves a cap-table agreement to a new status (for example completed once signing finishes, or void to retire an unsent draft); the stored PDF is kept. Voiding a SAFE is refused with FAILED_PRECONDITION when the SAFE is signed, or when its signing request is still out — the envelope must be voided first, because voiding the agreement alone leaves the investor able to sign it. For a SAFE with a document on file it reads the document hub first, and refuses when the signing state cannot be confirmed there: when the hub is unreachable tell the user to try again shortly, and when the SAFE is not filed in documents tell them support has to file it first. Do not retry in a loop.

輸入參數id必填status

cap_table_update_cap_table_round

Update Cap Table Round

Changes a funding round's own terms — name, target, valuation, dates. Writes. It does not move a round between open and closed: closing runs a conversion engine and has its own call, and reopening has another.

輸入參數round必填

cap_table_update_cap_table_security

Update Cap Table Security

UpdateCapTableSecurity applies a full update to a holding.

輸入參數security必填

cap_table_update_cap_table_stakeholder

Update Cap Table Stakeholder

Edits an EXISTING stakeholder's identity (name, type, email, metadata) by id. FULL REPLACE; type is effectively immutable. To ADD a new stakeholder use CreateCapTableStakeholder; for an investor contributing capital use RecordCapTableInvestment.

輸入參數stakeholder必填

cap_table_update_my_stakeholder_name

Update My Stakeholder Name

UpdateMyStakeholderName lets an investor correct the name the company holds for them — a misspelled name on a SAFE is the investor's to fix, and asking the founder to retype it was the only route. Scoped to the caller's own stakeholder row; nothing else on the row can be changed this way.

輸入參數name必填companyId必填

captable_hydrate_formation_carry

Hydrate Cap Table From Formation

Carries the owners named during a company's formation onto its cap table as founders holding common stock. Insert-only: an owner already present is left untouched, so running it twice adds nothing.

輸入參數companyId必填

captable_preview_formation_carry

Preview Cap Table From Formation

Reports which owners a company's formation would carry onto its cap table, and what the cap table still needs afterwards. Writes nothing. Returns available=false when the company has no formation or its formation named no owners.

輸入參數companyId必填

captable_send_safe_for_signature

Create SAFE Envelope

CreateSafeEnvelope opens a two-party SAFE signing envelope from cap-table-supplied data (the caller fetched it via company.GetSafeAgreement): it renders the signable SAFE PDF and inserts the company (order 1) + investor (order 2) signers. The investor's signing link is emailed to them; no tokens are returned to the caller.

輸入參數providercompanyIdinvestorscompanyName必填founderEmailvaluationCapfounderUserId必填safeAgreementIdreminderIntervalDaysstateOfIncorporation

card_create_card

Create Card

Issues a new virtual card at the card issuer, funded by a specific bank account. account_id is REQUIRED: set it to the id of the account the card should spend from — it must belong to the same company as params.company_id (get_list_accounts lists the company's accounts; the call is rejected if the account belongs to another company or cannot fund cards). Set params.company_id to the company the card belongs to — the caller's membership is verified server-side, so pass a company the user actually belongs to (get_my_companies lists them). Set params.nickname to the name the user gave the card. Set params.spend_limit_cents to the limit in CENTS, not dollars: a $2,000 limit is 200000. params.spend_interval is REQUIRED whenever you send a limit and the call is rejected without it, so always send both — send SPEND_INTERVAL_MONTHLY when the user names an amount but no period, SPEND_INTERVAL_DAILY for a daily cap, or SPEND_INTERVAL_TRANSACTION for a per-charge cap. Do not send SPEND_INTERVAL_YEARLY: the default issuer does not support it and rejects the call — convert to a monthly amount and say so. Omit both fields only when the user wants no limit at all. Returns the created card, including its id, nickname, status, spend limit, expiry, and billing address; report the id back to the user. The cardholder's name is withheld from tool callers. Creating a card moves no money, but it does provision a real instrument at the issuer and no tool can delete it — only freeze it — so create one card per request and never retry a create that already succeeded. The full card number and CVV are never returned by any tool.

輸入參數params必填accountId必填

card_freeze_card

Freeze Card

Suspend a card at the issuer so it declines new charges. The card is not closed and no money moves; UnfreezeCard restores it. Safe to repeat: a card that is already frozen is returned unchanged and successfully. Only report a card as frozen when the call succeeded — an error means it is still live.

輸入參數cardId必填

card_get_card

Get Card

Returns one card by id: its label, type, state, limits and the last four digits of its number. Read-only. The full card number and CVV are never returned by this or any other tool.

輸入參數cardId必填

card_get_card_spend

Get Card Spend

Returns how much has been spent on a card over a period, against its limit. Read-only. Use this to answer "how much is left on this card" without adding up transactions by hand.

輸入參數cardId必填

card_get_dispute

Get Dispute

Reads one card dispute by its id, refreshing its status from the card issuer first. Returns the dispute's card, disputed transaction, amount, status (filed, pending review, accepted, won, lost, rejected, or withdrawn), reason, description, and when it was filed and resolved.

輸入參數id

card_get_list_card_disputes

List Card Disputes

Lists card disputes. Set filter.card_id to see the disputes filed on one card, or filter.company_id to see every dispute across a company (the caller's access is verified server-side). Returns each dispute's id, card, disputed transaction, amount, status (filed, pending review, accepted, won, lost, rejected, or withdrawn), reason, and when it was filed and resolved. Use page_size and page_token to page through long lists.

輸入參數filterpageSizepageToken

card_get_list_cards

List Cards

Lists the cards the caller holds in one company: label, last four digits, network, state, spend limit and expiry. Set company_id to the company whose cards to list (get_my_companies lists the ones the user belongs to) — it is required, and a card belongs to exactly one company. Read-only. Never returns another member's card, and the full card number and CVV are never returned by this or any other tool.

輸入參數companyId必填includeCanceled

card_get_list_org_cards

List Org Cards

List the active cards of every member of the given company, as a narrow projection. Membership of the AUTHENTICATED caller in company_id is verified server-side — the id selects, it never authorizes.

輸入參數companyId必填

card_unfreeze_card

Unfreeze Card

Restore a frozen card at the issuer so it accepts charges again. Safe to repeat: a card that is already active is returned unchanged and successfully. A cancelled card cannot be restored and is rejected.

輸入參數cardId必填

card_update_card_spend_limit

Update Card Spend Limit

Replace a card's spend limit at the issuer. amount_cents is in CENTS, not dollars — a $500 limit is 50000 — and interval chooses the window the limit resets over. The new limit replaces the old one outright, so this raises spending authority as readily as it lowers it: send the exact amount the user asked for and never round up. Use SPEND_INTERVAL_MONTHLY, SPEND_INTERVAL_DAILY, or SPEND_INTERVAL_TRANSACTION; SPEND_INTERVAL_YEARLY is not supported by the default issuer and is rejected, so convert a yearly figure to a monthly amount and say so.

輸入參數cardId必填intervalamountCents

check_company_name_availability

Check Company Name Availability

Checks whether a proposed company or brand name is available as a US trademark and as a domain across common TLDs (.com, .io, .co, .net, .ai, .app). Call this whenever the user proposes or evaluates a name. It is informational only and does not read or change any formation; a partial failure still returns useful results for the side that succeeded.

輸入參數name

client_get_client

Get Client

Returns one billing client by id — the customer a company invoices — with contact and address details. Read-only.

輸入參數id必填

client_get_list_clients

List Clients

Lists the customers a company invoices. Read-only and paginated. Use this to find a client id before creating an invoice, or to answer "who do we bill".

輸入參數filterpageSizepageToken

commit_transfer

Commit Transfer

Execute a sealed draft. Moves money. Call ONLY after approval_session_get_approval_session_status returned APPROVED for the approval_session_id: a commit sent while the approval is still pending is rejected with step_up_required and still spends the draft. One-shot: success or failure, the draft and approval are consumed, so a retry needs a fresh draft and a fresh approval.

輸入參數draftIdcompanyIdapprovalSessionId

company_create_company

Create Company

Creates a company owned by the signed-in user, for example before importing a cap table. Give its name (and code, a lowercase slug). The user becomes its owner; there is no way to create a company for someone else. Returns the new company id.

輸入參數company必填

company_get_company

Get Company

GetCompany retrieves a single company by ID or code

輸入參數idcode

company_get_list_companies

List Companies

Lists the companies the signed-in user is a member of, with optional filters (ids, status, companies that have no formation). Returns only the user's own companies.

輸入參數filterpageSizepageToken

company_get_list_company_members

List Company Members

GetListCompanyMembers lists all members of a company

輸入參數companyId必填

company_get_my_companies

Get My Companies

Lists the companies the SIGNED-IN user already belongs to, each with their role, plus that account itself in signed_in_as. Requires authentication. Call this only when the user asks about or wants to act on an EXISTING company. Do NOT call it to start a new formation (use formation_start_formation, which is anonymous) — it is not a required preamble. ALWAYS name the signed_in_as account when you show the list, and especially when the user cannot find a company they expect: you and the person reading your answer may be signed in as different users, and then your list and the one on their screen will not match. Naming the account turns that from a mystery into one sentence. A company they expect but do not see belongs to another account or they were never added as a member — never guess a company_id. To work on a different company from this list, simply pass its company_id to the next tool call: the connection is not tied to one company and the user does NOT have to disconnect and reconnect. Say which company you acted on whenever it is not the one they last mentioned.

輸入參數pageSizepageToken

company_update_company

Update Company

UpdateCompany patches mutable company fields in a single call: name, logo_url, aliases, sibling_company_ids, and — for a company Lovie did not incorporate — its entity type, state, formation date, EIN and principal address. sibling_company_ids replaces the stored list and needs company.company.update on every listed company too; empty leaves it, clear_sibling_company_ids empties it. Every field is left untouched when unset, the five profile fields included: send only what you are changing, and the rest keeps its stored value. The app removes a stored entity type, state, formation date or EIN by naming it in `clear_fields`; an empty value never removes one. `address` cannot be cleared, and is replaced whole when sent, so send every line of it. The profile fields, and clearing them, are REFUSED for a company whose source is LOVIE_FORMATION. Its formation is the filing of record, and letting the two disagree would mean the certificate says one thing and the dashboard another, with nothing to say which is right. Name and logo stay editable there, as they always were; a request mixing them with profile fields is refused whole, with nothing written. MCP-exposed so a founder can correct their own company by asking. It writes and is not idempotent. You cannot remove a value (`clear_fields` from an assistant is refused with PERMISSION_DENIED), and you may fill in a profile fact only where none is stored: changing a stored one, or sending any `ein` once one is on file, is refused the same way. Re-sending a stored value you read is not a change. For any refusal, tell the user to make it in Lovie.

輸入參數company必填companyId必填clearFieldsclearSiblingCompanyIds

connection_suggest_connections

Suggest Connections

SuggestConnections reports providers the company is evidently already paying for, judged from its own transactions, and skips any it has already connected. Read-only — it writes nothing. Connect one with StartConnection.

輸入參數companyId

counterparty_get_counterparty

Get Counterparty

GetCounterparty retrieves a single counterparty by ID

輸入參數id必填

counterparty_get_list_counterparties

List Counterparties

GetListCounterparties retrieves a list of counterparties with filtering and pagination

輸入參數filterpageSizepageToken

counterparty_get_list_global_counterparties

List Global Counterparties

GetListGlobalCounterparties performs a read-only batch lookup against the platform-wide canonical vendor registry. The filter accepts a list of provider stable IDs and/or aliases; the response returns every approved row matching ANY selector. Used by the cheap-resolve worker to short-circuit LLM enrichment for a whole batch in one RPC.

輸入參數filter必填pageSizepageToken

datatable_get_datatable_fields

Get Datatable Fields

Resolve all fields bound to a datatable for a company (platform + company bindings).

輸入參數companyIddatatableCode必填includeOptions

datatable_get_list_datatables

List Datatables

List datatables (platform + a company's own).

輸入參數filterpageSizepageToken

document_template_list_templates

List Document Templates

List available legal document templates (YAML catalog).

輸入參數querycategory

document_template_resolve_template

Resolve Document Template

Find the best template match for a natural-language document request. Returns the template slug and its field definitions to collect before DocumentService.CreateDocument.

輸入參數query

documents_create_document

Create Document

Create a finished document for a company from a template slug and field values.

輸入參數fieldscompanyId必填templateSlug

documents_create_from_user_template

Create Document From User Template

Create a finished document by filling a company user-uploaded template with collected field values. Does not modify the original upload.

輸入參數fieldscompanyId必填userTemplateId必填

documents_delete_saved_signature

Delete Saved Signature

DeleteSavedSignature removes one of the caller's saved signatures. Exposed because ListSavedSignatures already is: the agent could name a founder's signatures without being able to clear a stale one. The row it removes is not recoverable, so it is annotated destructive — that hint is what makes clients confirm before calling it.

輸入參數companyId必填savedSignatureId必填

documents_get_document

Get Document

Fetch one document's metadata and its related signed/unsigned set.

輸入參數companyId必填documentId必填

documents_get_user_template

Get User Template

Fetch one user-uploaded template including Vision-detected fillable fields.

輸入參數companyId必填templateId必填

documents_list_documents

List Documents

List a company's documents, filtered by type, source, category, or template.

輸入參數filterpageSizepageToken

documents_list_saved_signatures

List Saved Signatures

List the caller's saved signatures for the selected company.

輸入參數companyId必填

documents_list_user_templates

List User Templates

List company-scoped user-uploaded templates (Use your own template). Separate from Lovie's builtin catalog.

輸入參數companyId必填

documents_resolve_template_prefill

Resolve Template Prefill

Resolve a template's company auto-fill values before collecting anything from the founder: returns the field values the server already knows for this company, so only the remaining fields need to be asked for.

輸入參數fieldscompanyId必填templateSlug

documents_set_default_saved_signature

Set Default Saved Signature

SetDefaultSavedSignature marks one of the caller's signatures as the default, unsetting any prior default (single default per user per company). Exposed because ListSavedSignatures already is: the agent could name a founder's signatures but not act on them. Choosing which one applies is an ordinary preference write and carries no image bytes.

輸入參數companyId必填savedSignatureId必填

documents_update_document

Update Document

Rename a stored document by updating its title. Only the member who created the document may rename it, and a signed document or one out for signature cannot be renamed through an assistant; tell the user to rename it in Lovie.

輸入參數titlecompanyId必填documentId必填

draft_agent_account

Draft Agent Account

Draft a proposed agent-account setup for human review: a suggested spend envelope (per-payment / daily caps), allowed rails, and status. Creates nothing — a human provisions from the spec.

輸入參數purposeagentNamecompanyIdsuggestedDailyCentssuggestedPerPaymentCents

draft_payment

Draft Payment

Draft a payment for human review: returns a canonical, ready-to-sign Mandate (body JSON + JCS hash) and a plain-language summary. Does NOT move money or run the pipeline — a human commits it by signing and submitting.

輸入參數memorailsignerIdcompanyIdcustomerIdamountCentskeyFingerprintaccountNumberIdcounterpartyRefexpiresInSeconds

equity_onboarding_get

Get Equity Onboarding

Returns a company's proof-of-formation intake: the facts on file, which sections are still outstanding and why, and how much is answered. Read-only. Resolve it by company rather than by id — the server finds the company's one open intake. A section that comes back with a handoff_url cannot be finished by any tool: send the person to that URL.

輸入參數companyIdonboardingId

equity_onboarding_hydrate_formation_carry

Hydrate Equity Onboarding From Formation

Carries a company's Lovie formation into its intake: the facts, the registered agent, and the stamped certificate of incorporation or formation. Idempotent, and it never overwrites an answer the person gave themselves. Call this before asking for anything on a company Lovie formed — it usually settles the proof section outright, which is the one section no tool can fill.

輸入參數formationId必填onboardingId必填

equity_onboarding_preview_formation_carry

Preview Equity Onboarding Hydration

Says what a company's Lovie formation would carry into the intake, without writing anything. Read-only. When the formation cannot be read the answer is that it is unavailable — not an error — so offer to collect the facts directly instead of retrying.

輸入參數companyId必填

equity_onboarding_start

Start Equity Onboarding

Opens a company's proof-of-formation intake so its cap table can be set up. Idempotent: a company has at most one open intake, and calling again returns the existing one rather than splitting the answers across two records. Safe to call first when you do not know whether an intake exists.

輸入參數companyId必填

equity_onboarding_submit

Submit Equity Onboarding

Finishes the intake and records the company's proof of formation. A refusal is a normal answer, not a failure: it names the sections still blocking and, for a section no tool can clear, the URL where a person finishes it. Read that back rather than retrying. On success the cap table opens for a named, documented entity, and the company's entity type, state, formation date, EIN and address are filled in on its company record where none is stored; a fact already stored there is left as it is.

輸入參數onboardingId必填

equity_onboarding_update

Update Equity Onboarding

Records the company facts the intake asks for: legal name, entity type, the state (or, for a non-US company, the country) it was incorporated in, the formation date, the company's own address (and registered_address_source NEED_ASSISTANCE when that address is Lovie's mailbox), and — for a US company — its registered agent's name and address. entity_type is C_CORP, S_CORP, LLC or OTHER for a US company and LLC or OTHER for a non-US one; any other pairing reads as unanswered. entity_type_other optionally describes an OTHER and is cleared for any other type. Only the paths named in the field mask are written, and each one lands attributed to the person who answered. The employer identification number is accepted but never required — a company formed days ago will not have one for weeks, and its absence does not hold the intake up.

輸入參數onboarding必填updateMask必填

field_get_field

Get Field

Get a single field by ID or code

輸入參數idcodecompanyId

field_get_field_option

Get Field Option

Get a single field option by ID or code

輸入參數idcodefieldId必填companyId

field_get_list_field_options

List Field Options

List field options with filtering and pagination

輸入參數filter必填pageSizepageToken

field_get_list_fields

List Fields

List fields with filtering and pagination

輸入參數filterpageSizepageTokenincludeOptions

field_suggest_field_options

Suggest Field Options

SuggestFieldOptions asks the LLM to propose dropdown option labels for a SELECT-typed field. Synchronous unary call.

輸入參數companyId必填fieldNameexistingOptions

field_value_get_list_entity_field_values

List Entity Field Values

List an entity's field values (detail/edit/admin flows only — N+1 over a grid).

輸入參數filter必填

formation_acknowledge_warnings

Acknowledge Warnings

Acknowledges entity-type warnings raised when the user chooses an entity type against the recommendation (e.g. an LLC despite indicators pointing to C-Corp). Required before proceeding whenever warnings were raised while setting the company type.

輸入參數formationId必填warningTypes

formation_add_shareholder

Add Shareholder

AddShareholder adds a shareholder or LLC member

輸入參數roleemailphoneaddresslastNamefirstNameaddressTypeformationId必填ownershipPercentage

formation_append_conversation_entry

Append Conversation Entry

AppendConversationEntry atomically appends one or more chat entries to the formation's conversation_history. Owner-scoped.

輸入參數entriesformationId必填

formation_approve_certificate

Approve Certificate

Records the user's approval of the reviewed formation details (the certificate checkpoint). This only records approval — it files NOTHING with any state and charges NOTHING, so it is always safe to call, including during testing; never refuse or stop short because it is a 'test'. Call it once the user has reviewed the details and confirmed they are correct. As soon as this returns, call formation_get_payment_link with the SAME formation_id. Formation is a single one-time all-inclusive payment — there is NO subscription, NO monthly/annual choice and NO add-on to offer, so do NOT ask the user to pick a cadence or to choose extras. Do NOT start a new formation or re-run earlier steps.

輸入參數formationId必填

formation_check_domain_availability

Check Domain Availability

Checks whether a specific fully-qualified domain (e.g. "acme.com") is available to register. Informational only; does not read or change any formation or company.

輸入參數domain

formation_check_name

Check Name

CheckName checks company name availability in the selected state

輸入參數formationId必填

formation_claim_demo_formations

Claim Demo Formations

ClaimDemoFormations reassigns formations created during a demo session (under a hardcoded demo user) to a newly-signed-up real user. This is a cross-user mutation; the server enforces reviewer/admin/service role.

輸入參數toUserId必填sessionId必填fromUserId必填

formation_confirm_cohort_deal_terms

Confirm Cohort Deal Terms

Record that the founder confirms the starter investment terms their accelerator offered, as shown on their formation. Idempotent. This records agreement only — it does not create a security, change a cap table, or move money.

輸入參數formationId必填

formation_confirm_naics_code

Confirm Naics Code

Records the NAICS industry classification a founder has chosen for their formation. Call formation_suggest_naics_codes first, show the candidates with their official titles, and call this ONLY after the person has explicitly picked one. Never choose on their behalf and never infer a code from the business description alone: this value travels onto a bank application, where a wrong classification is a compliance problem rather than a typo. The code is checked against the 2022 edition and a code naming no real industry is refused.

輸入參數naicsCodeformationId必填

formation_confirm_payment

Confirm Payment

Verifies with Stripe that payment actually completed and, on success, advances the formation to filing. Usually unnecessary — payment auto-confirms via webhook once the user pays. Only call this if the user explicitly returns and says they have paid. A user saying they paid is NOT proof — only a successful result here confirms payment. If it is not successful, do not tell the user payment succeeded or proceed to filing; ask them to complete checkout and retry.

輸入參數formationId必填stripeSessionId

formation_create_domain_checkout

Create Domain Checkout

Starts a PAID domain purchase for the company: quotes the live registrar price plus Lovie's margin and returns a Stripe Checkout URL — give it to the user, payment happens on the Stripe page. Companies still eligible for their included free domain are refused here (their first domain uses the free flow). Requires passed identity verification (KYC); a failed-precondition answer means walk the user through verifying first.

輸入參數domaincompanyId必填

formation_create_domain_transfer_checkout

Create Domain Transfer Checkout

Starts transferring a domain the company already owns elsewhere INTO Lovie: returns a Stripe Checkout URL covering the transfer (which includes a one-year renewal). After payment, start the transfer with the auth code from the current registrar. Requires passed identity verification (KYC).

輸入參數domaincompanyId必填

formation_create_formation

Create Formation

CreateFormation creates a formation with full data (MCP/bulk use case). A request 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.

輸入參數formation必填

formation_delete_pending_domain

Delete Pending Domain

Removes an abandoned pending domain purchase attempt from the company's domain list. Only pending (never-completed) purchases can be removed; registered domains cannot be deleted this way.

輸入參數domaincompanyId必填

formation_describe_business

Describe Business

Analyzes a business description and recommends the best entity type (LLC or C-Corp) with a confidence score. Call this once you understand what the user is building. When the recommendation is LLC or confidence is not high, mention that Lovie offers a free LLC-to-C-Corp conversion later.

輸入參數description必填formationId必填

formation_extract_cap_table

Extract Cap Table

Runs vision OCR on an uploaded cap table file and returns the extracted rows without persisting them. Each row may include a vesting schedule (vesting_start_date / vesting_total_months / vesting_cliff_months) for service equity held by founders, employees, and advisors. PRESERVE these vesting fields and pass them through to RecordCapTableInvestment when creating each holding — do not drop them or record such holdings as fully vested. Investor instruments (SAFE, preferred) carry no vesting.

輸入參數mimeTypeformationId必填sourceS3Uri

formation_extract_cap_table_ocr

Extract Cap Table OCR

Runs vision OCR on an uploaded cap table for the active company and returns the extracted rows without persisting them. Each row may include a vesting schedule (vesting_start_date / vesting_total_months / vesting_cliff_months) for service equity held by founders, employees, and advisors. PRESERVE these vesting fields and pass them through to RecordCapTableInvestment when creating each holding — do not drop them or record such holdings as fully vested. Investor instruments (SAFE, preferred) carry no vesting.

輸入參數mimeTypecompanyId必填sourceS3Uri

formation_extract_fast_terms_ocr

Extract Fast Terms OCR

Runs vision OCR on an already-uploaded FAST (Founder / Advisor Standard Template) advisor agreement PDF for the active company and returns the grant summary it states — advisor_name, company_name, tier, engagement_level, equity_percentage, shares, effective_date, vesting_total_months, vesting_cliff_months, vesting_frequency, signed, signature_date and governing_law — WITHOUT persisting anything. Empty string / 0 / false means the value was not stated in the document; never fabricate one. A vesting_cliff_months of 0 is a real answer, not a missing one: a FAST that says "Cliff: None" has no cliff. Flow: first call GetOcrUploadURL with kind=FAST and upload the PDF, then call this tool with the returned source_s3_uri. To persist the grant, pass the extracted terms and the SAME source_s3_uri to CreateCapTableAgreement with type=CAP_TABLE_AGREEMENT_TYPE_FAST — preserve the vesting fields, do not drop them.

輸入參數agentCodecompanyId必填sourceS3Uri

formation_extract_rsa_terms_ocr

Extract RSA Terms OCR

Runs vision OCR on an already-uploaded signed Restricted Stock Purchase/Award Agreement (RSA) PDF for the active company and returns the founder and company names plus structured terms (total_shares, unvested_shares, price_per_share, grant_date, vesting_start_date / vesting_total_months / vesting_cliff_months, acceleration_clause, repurchase_right, 83(b) status, etc.) WITHOUT persisting anything. Empty string / 0 / false means the value was not stated in the document — never fabricate. Flow: first call GetOcrUploadURL with kind=RSA and upload the PDF, then call this tool with the returned source_s3_uri. To persist the grant and link the document, pass the extracted terms and the SAME source_s3_uri to CreateCapTableAgreement with type=CAP_TABLE_AGREEMENT_TYPE_RSA — preserve the vesting fields, do not drop them.

輸入參數agentCodecompanyId必填sourceS3Uri

formation_extract_safe_terms

Extract SAFE Terms

Reads a SAFE PDF and returns its terms WITHOUT saving anything. Always call this before ImportSAFE and show the result to the user for confirmation — never import a SAFE the user has not seen. Present one block per document, largest investment first, with exactly these fields in this order: investor name, investment amount, valuation cap, discount, post-money or pre-money, date, and which existing stakeholder it will be matched to (or that a new one will be created). Then state the effect on the cap table as three figures — stakeholders, SAFEs and SAFE capital now, what this import adds, and the totals after — and ask the user to confirm. Report the confidence score and every warning verbatim in plain language rather than as codes. Two things block the import until the user resolves them: a missing date (ask for it; a SAFE is never imported without one) and a company name on the document that differs from the company being imported into (say both names and ask the user to confirm it belongs here). This is the same review the web upload screen performs, so keep the wording and order identical.

輸入參數formationId必填sourceS3Uri

formation_extract_safe_terms_ocr

Extract SAFE Terms OCR

ExtractSafeTermsOcr runs vision OCR on a SAFE PDF for a company (no formation required). Company-scoped: requires an active company.

輸入參數agentCodecompanyId必填sourceS3Uri

formation_generate_certificate

Generate Certificate

Prepares the Certificate of Formation/Incorporation as a review checkpoint before filing. This is a confirmation step, NOT a downloadable document — the official, state-issued certificate is produced only after payment and state filing, so do NOT present a download link here. Summarize the formation details for the user to review, then call formation_approve_certificate only once they explicitly confirm the details are correct.

輸入參數formationId必填

formation_get_domain_auth_code

Get Domain Auth Code

Reveals the domain's transfer authorization (EPP) code and lifts the transfer lock — the customer's exit door, shown once and never stored. Requires a trusted-device approval: open one with identity's create-approval-session tool (action_type domain_auth_code_reveal, payload {domain}), have the user approve on their phone, then pass the session id as approval_session_id.

輸入參數domaincompanyId必填approvalSessionId

formation_get_domain_order

Get Domain Order

Returns one domain purchase's live status — use it to answer 'did my domain go through?' after checkout.

輸入參數domaincompanyId必填

formation_get_domain_transfer_status

Get Domain Transfer Status

Reports a transfer-in's live progress at the registrar (waiting on the losing registrar, completed, failed). Poll sparingly — registrar transfers move on a scale of days.

輸入參數domaincompanyId必填

formation_get_ein_filing_info

Get EIN Filing Info

GetEinFilingInfo returns the stored payload without the SSN/ITIN.

輸入參數formationId必填

formation_get_filing_fee

Get Filing Fee

GetFilingFee returns the state formation filing fee (table amount and formatted string). Nothing charges it separately; it is shown as part of what the flat price covers. Used by the certificate step. Stateless lookup — no formation context required.

輸入參數state

formation_get_formation

Get Formation

Returns the full formation record for a formation_id: company name, entity type, state, business address, registered agent, share structure, shareholders, authorized party, EIN, certificate data, payment and filing status, and timestamps. Use this to answer specific questions such as the user's EIN, registered agent, company address, or shareholders, and to RESUME an in-progress formation with a formation_id you already have — it works both before and after sign-in (do not start a new formation to resume).

輸入參數formationId必填

formation_get_formation_document_download_url

Get Formation Document Download URL

Returns a short-lived signed URL for one of a formation's documents. Reviewer role only. The URL is a read credential and expires; treat it as one — do not repeat it back or store it anywhere it outlives the answer it was fetched for.

輸入參數formationId必填documentType

版本歷史

1
  1. v1.0.10最新Sep 16, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。