accueil / serveurs / Finance & Paiement / co.lovie/company-formation
co.lovie/company-formation
serveur MCP (Model Context Protocol) · lovie 1.0.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que co.lovie/company-formation est sûr ?
Au dernier audit MCP Hub, le serveur MCP « co.lovie/company-formation » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 347 outils
- account_get_account≈ 1100 tokens
GetAccount retrieves a single account by ID with its details
Paramètres, retour & exemple (1)
Paramètresid· object · requis
UUID value wrapper.
Exemple d'appel{"name": "account_get_account", "arguments": {"id": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"account": "texte", "details": "texte"}} - account_get_list_account_details≈ 749 tokens
GetListAccountDetails retrieves account details in batch (eliminates N+1 GetAccount calls)
Paramètres, retour & exemple (3)
Paramètresfilter· object · optionnelpageSize· integer · optionnelpageToken· string · optionnel
Exemple d'appel{"name": "account_get_list_account_details", "arguments": {"filter": {}, "pageSize": 1, "pageToken": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"details": [], "totalCount": 1, "nextPageToken": "texte"}} - accounting_get_accounting_settings≈ 299 tokens
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.
Paramètres, retour & exemple (1)
ParamètrescompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "accounting_get_accounting_settings", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"settings": "texte"}} - accounting_get_aging_report≈ 454 tokens
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.
Paramètres, retour & exemple (4)
Paramètresside· string · optionnel · AGING_SIDE_RECEIVABLE | AGING_SIDE_PAYABLEasOfDate· string · optionnelcompanyId· object · requis
UUID value wrapper.currencyCode· string · optionnel
Exemple d'appel{"name": "accounting_get_aging_report", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"rows": [], "totals": "texte", "asOfDate": "texte", "currencyCode": "texte", "agedFromIssueCount": 1}} - accounting_get_balance_sheet≈ 774 tokens
GetBalanceSheet returns assets, liabilities, and equity balances as of a date; equity includes net income to date, so the sheet always balances. Read-only.
Paramètres, retour & exemple (4)
Paramètresbasis· string · optionnel · REPORT_BASIS_UNSPECIFIED | REPORT_BASIS_ACCRUAL | REPORT_BASIS_CASHasOfDate· string · optionnelcompanyId· object · requis
UUID value wrapper.currencyCode· string · optionnel
Exemple d'appel{"name": "accounting_get_balance_sheet", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"assetRows": [], "equityRows": [], "totalAssets": "texte", "totalEquity": "texte", "currencyCode": "texte", "liabilityRows": [], "netIncomeToDate": "texte", "totalLiabilities": "texte", "totalLiabilitiesAndEquity": "texte"}} - accounting_get_cash_flow_statement≈ 837 tokens
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.
Paramètres, retour & exemple (5)
Paramètresbasis· string · optionnel · REPORT_BASIS_UNSPECIFIED | REPORT_BASIS_ACCRUAL | REPORT_BASIS_CASHendDate· string · optionnelcompanyId· object · requis
UUID value wrapper.startDate· string · optionnelcurrencyCode· string · optionnel
Exemple d'appel{"name": "accounting_get_cash_flow_statement", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cashAtEnd": "texte", "netIncome": "texte", "currencyCode": "texte", "financingRows": [], "investingRows": [], "operatingRows": [], "cashAtBeginning": "texte", "netChangeInCash": "texte", "unreconciledAmount": "texte", "netCashFromFinancing": "texte", "netCashFromInvesting": "texte", "netCashFromOperating": "texte"}} - accounting_get_chart_of_accounts≈ 1794 tokens
GetChartOfAccounts returns the company's chart of accounts (flat list with parent links; build the tree client-side). Read-only.
Paramètres, retour & exemple (2)
ParamètrescompanyId· object · requis
UUID value wrapper.includeInactive· boolean · optionnel
Exemple d'appel{"name": "accounting_get_chart_of_accounts", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"accounts": []}} - accounting_get_close_target≈ 308 tokens
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.
Paramètres, retour & exemple (1)
ParamètrescompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "accounting_get_close_target", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"target": "texte", "closedThrough": "texte", "fiscalYearStartMonth": 1}} - accounting_get_funding_summaries≈ 346 tokens
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.
Paramètres, retour & exemple (1)
ParamètrescompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "accounting_get_funding_summaries", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"summaries": []}} - accounting_get_general_ledger≈ 497 tokens
GetGeneralLedger pages through one account's posted lines with opening, running, and closing balances — the account register. Read-only.
Paramètres, retour & exemple (9)
Paramètresbasis· string · optionnel · REPORT_BASIS_UNSPECIFIED | REPORT_BASIS_ACCRUAL | REPORT_BASIS_CASHvendor· string · optionnelendDate· string · optionnelpageSize· integer · optionnelcompanyId· object · requis
UUID value wrapper.pageToken· string · optionnelstartDate· string · optionnelglAccountId· object · requis
UUID value wrapper.currencyCode· string · optionnel
Exemple d'appel{"name": "accounting_get_general_ledger", "arguments": {"companyId": {}, "glAccountId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"rows": [], "totalCount": 1, "currencyCode": "texte", "nextPageToken": "texte", "closingBalance": "texte", "openingBalance": "texte"}} - accounting_get_gl_account_type_catalog≈ 1341 tokens
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.
Paramètres, retour & exemple (1)
ParamètrescompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "accounting_get_gl_account_type_catalog", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"options": []}} - accounting_get_journal_entry_by_transaction≈ 760 tokens
GetJournalEntryByTransaction returns the journal entry derived for one transaction (empty when none exists yet). Read-only.
Paramètres, retour & exemple (2)
ParamètrescompanyId· object · requis
UUID value wrapper.transactionId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "accounting_get_journal_entry_by_transaction", "arguments": {"companyId": {}, "transactionId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"entry": "texte"}} - accounting_get_list_journal_entries≈ 1132 tokens
GetListJournalEntries pages through the journal register with filters — the review queue is filter{needs_review: true}. Read-only.
Paramètres, retour & exemple (4)
Paramètresfilter· object · optionnelpageSize· integer · optionnelcompanyId· object · requis
UUID value wrapper.pageToken· string · optionnel
Exemple d'appel{"name": "accounting_get_list_journal_entries", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"entries": [], "totalCount": 1, "nextPageToken": "texte"}} - accounting_get_list_periods≈ 693 tokens
GetListPeriods pages through a company's periods, newest first. Read-only.
Paramètres, retour & exemple (4)
Paramètresfilter· object · optionnelpageSize· integer · optionnelcompanyId· object · requis
UUID value wrapper.pageToken· string · optionnel
Exemple d'appel{"name": "accounting_get_list_periods", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"periods": [], "totalCount": 1, "nextPageToken": "texte"}} - accounting_get_list_review_items≈ 1697 tokens
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.
Paramètres, retour & exemple (4)
Paramètresfilter· object · optionnelpageSize· integer · optionnelcompanyId· object · requis
UUID value wrapper.pageToken· string · optionnel
Exemple d'appel{"name": "accounting_get_list_review_items", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"items": [], "counts": "texte", "totalCount": 1, "nextPageToken": "texte"}} - accounting_get_list_schedules≈ 764 tokens
GetListSchedules pages through a company's schedules. Read-only.
Paramètres, retour & exemple (4)
Paramètresfilter· object · optionnelpageSize· integer · optionnelcompanyId· object · requis
UUID value wrapper.pageToken· string · optionnel
Exemple d'appel{"name": "accounting_get_list_schedules", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"schedules": [], "totalCount": 1, "nextPageToken": "texte"}} - accounting_get_list_statements≈ 676 tokens
List the bank statements imported for reconciliation, newest period first, with how many of each statement's lines are still unmatched. Read-only.
Paramètres, retour & exemple (2)
ParamètresaccountId· object · optionnel
UUID value wrapper.companyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "accounting_get_list_statements", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"statements": []}} - accounting_get_period≈ 616 tokens
GetPeriod returns one closed period by id. Read-only.
Paramètres, retour & exemple (2)
ParamètresperiodId· object · requis
UUID value wrapper.companyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "accounting_get_period", "arguments": {"periodId": {}, "companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"period": "texte"}} - accounting_get_profit_and_loss≈ 608 tokens
GetProfitAndLoss returns the income statement for a period: revenue and expense accounts with activity, totals, and net income. Read-only.
Paramètres, retour & exemple (6)
Paramètresbasis· string · optionnel · REPORT_BASIS_UNSPECIFIED | REPORT_BASIS_ACCRUAL | REPORT_BASIS_CASHendDate· string · optionnelbyVendor· boolean · optionnelcompanyId· object · requis
UUID value wrapper.startDate· string · optionnelcurrencyCode· string · optionnel
Exemple d'appel{"name": "accounting_get_profit_and_loss", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"netIncome": "texte", "expenseRows": [], "revenueRows": [], "currencyCode": "texte", "totalRevenue": "texte", "totalExpenses": "texte"}} - accounting_get_report_series≈ 1929 tokens
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.
Paramètres, retour & exemple (7)
Paramètreskind· string · optionnel · REPORT_KIND_PROFIT_AND_LOSS | REPORT_KIND_BALANCE_SHEET | REPORT_KIND_CASH_FLOWbasis· string · optionnel · REPORT_BASIS_UNSPECIFIED | REPORT_BASIS_ACCRUAL | REPORT_BASIS_CASHendDate· string · optionnelcompanyId· object · requis
UUID value wrapper.startDate· string · optionnelgranularity· string · optionnel · REPORT_GRANULARITY_MONTH | REPORT_GRANULARITY_QUARTER | REPORT_GRANULARITY_YEARcurrencyCode· string · optionnel
Exemple d'appel{"name": "accounting_get_report_series", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"periods": [], "currencyCode": "texte"}} - accounting_get_review_counts≈ 193 tokens
Count bank transactions per bookkeeping review tab (pending, reviewed, excluded) without fetching rows. Use to report how much review work is outstanding.
Paramètres, retour & exemple (1)
ParamètrescompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "accounting_get_review_counts", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"counts": "texte"}} - accounting_get_schedule≈ 692 tokens
GetSchedule returns one schedule with its postings. Read-only.
Paramètres, retour & exemple (2)
ParamètrescompanyId· object · requis
UUID value wrapper.scheduleId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "accounting_get_schedule", "arguments": {"companyId": {}, "scheduleId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"schedule": "texte"}} - accounting_get_similar_review_items≈ 474 tokens
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.
Paramètres, retour & exemple (2)
ParamètrescompanyId· object · requis
UUID value wrapper.transactionId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "accounting_get_similar_review_items", "arguments": {"companyId": {}, "transactionId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"direction": "REVIEW_DIRECTION_UNSPECIFIED", "totalCount": 1, "counterpartyId": "texte", "transactionIds": [], "counterpartyName": "texte"}} - accounting_get_statement≈ 657 tokens
One statement with its lines and their matches. Read-only.
Paramètres, retour & exemple (2)
ParamètrescompanyId· object · requis
UUID value wrapper.statementId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "accounting_get_statement", "arguments": {"companyId": {}, "statementId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"statement": "texte"}} - accounting_get_trial_balance≈ 359 tokens
GetTrialBalance returns every account's debit and credit totals for a period; total debits equal total credits when the books balance. Read-only.
Paramètres, retour & exemple (5)
Paramètresbasis· string · optionnel · REPORT_BASIS_UNSPECIFIED | REPORT_BASIS_ACCRUAL | REPORT_BASIS_CASHendDate· string · optionnelcompanyId· object · requis
UUID value wrapper.startDate· string · optionnelcurrencyCode· string · optionnel
Exemple d'appel{"name": "accounting_get_trial_balance", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"rows": [], "totalDebits": "texte", "currencyCode": "texte", "totalCredits": "texte"}} - accounting_list_accounting_audit_events≈ 548 tokens
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.
Paramètres, retour & exemple (4)
ParamètresentityId· object · optionnel
UUID value wrapper.pageSize· integer · optionnelcompanyId· object · requis
UUID value wrapper.pageToken· string · optionnel
Exemple d'appel{"name": "accounting_list_accounting_audit_events", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"events": [], "totalCount": 1, "nextPageToken": "texte"}} - accounting_preview_close≈ 1210 tokens
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.
Paramètres, retour & exemple (5)
Paramètresbasis· string · optionnel · REPORT_BASIS_UNSPECIFIED | REPORT_BASIS_ACCRUAL | REPORT_BASIS_CASHendDate· string · optionnelcompanyId· object · requis
UUID value wrapper.startDate· string · optionnelgranularity· string · optionnel · PERIOD_GRANULARITY_UNSPECIFIED | PERIOD_GRANULARITY_MONTH | PERIOD_GRANULARITY_QUARTER | PERIOD_GRANULARITY_YEAR
Exemple d'appel{"name": "accounting_preview_close", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"notices": [], "signers": [], "blockers": [], "previews": [], "exceptions": "texte", "reconciled": true, "revenueTrace": "texte", "signerUserIds": []}} - accounting_preview_schedule≈ 292 tokens
PreviewSchedule computes the straight-line per-period split for the given amount and period count without persisting anything. Read-only.
Paramètres, retour & exemple (3)
ParamètresstartDate· string · optionnelperiodCount· integer · optionneltotalAmount· string · optionnel
Exemple d'appel{"name": "accounting_preview_schedule", "arguments": {"startDate": "texte", "periodCount": 1, "totalAmount": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"postings": []}} - accounting_propose_schedules≈ 484 tokens
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.
Paramètres, retour & exemple (1)
ParamètrescompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "accounting_propose_schedules", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"proposals": []}} - accounting_suggest_statement_matches≈ 341 tokens
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.
Paramètres, retour & exemple (2)
ParamètrescompanyId· object · requis
UUID value wrapper.statementId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "accounting_suggest_statement_matches", "arguments": {"companyId": {}, "statementId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"matches": []}} - accounting_suggest_transfer_pairs≈ 390 tokens
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.
Paramètres, retour & exemple (2)
ParamètrescompanyId· object · requis
UUID value wrapper.journalEntryId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "accounting_suggest_transfer_pairs", "arguments": {"companyId": {}, "journalEntryId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"candidates": []}} - ads_insight_summarize_ad_spend≈ 256 tokens
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.
Paramètres, retour & exemple (3)
ParamètrescompanyId· string · optionnelperiodEnd· string · optionnelperiodStart· string · optionnel
Exemple d'appel{"name": "ads_insight_summarize_ad_spend", "arguments": {"companyId": "texte", "periodEnd": "texte", "periodStart": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"rows": []}} - ads_insight_summarize_campaign_window≈ 338 tokens
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.
Paramètres, retour & exemple (6)
Paramètresprovider· string · optionnel · PROVIDER_PLAID | PROVIDER_STRIPE | PROVIDER_RAMP | PROVIDER_GOOGLE_ADS | PROVIDER_META_ADS | PROVIDER_MERCURY | PROVIDER_GMAIL | PROVIDER_SLACKaccountId· string · optionnelcompanyId· string · optionnelperiodEnd· string · optionnelperiodStart· string · optionnelchargeAmount· string · optionnel
Exemple d'appel{"name": "ads_insight_summarize_campaign_window", "arguments": {"provider": "PROVIDER_PLAID", "accountId": "texte", "companyId": "texte", "periodEnd": "texte", "periodStart": "texte", "chargeAmount": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cached": true, "summary": "texte", "highlights": [], "generatedAt": "texte"}} - approval_session_create_approval_session≈ 378 tokens
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.
Paramètres, retour & exemple (6)
ParamètresactionType· string · optionnelactionPayload· object · optionneloriginLocation· string · optionneloriginPlatform· string · optionnelactionDescription· string · optionneloriginTrustedDeviceId· object · optionnel
UUID value wrapper.
Exemple d'appel{"name": "approval_session_create_approval_session", "arguments": {"actionType": "texte", "actionPayload": {}, "originLocation": "texte", "originPlatform": "texte", "actionDescription": "texte", "originTrustedDeviceId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"expiresAt": "texte", "sessionId": "texte"}} - approval_session_get_approval_session_status≈ 290 tokens
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.
Paramètres, retour & exemple (1)
ParamètressessionId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "approval_session_get_approval_session_status", "arguments": {"sessionId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"status": "APPROVAL_SESSION_STATUS_UNSPECIFIED", "updatedAt": "texte"}} - autonomous_pay≈ 387 tokens
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.
Paramètres, retour & exemple (4)
ParamètresjcsHash· string · optionnelserviceLevel· string · optionnel · PAYMENT_SERVICE_LEVEL_UNSPECIFIED | PAYMENT_SERVICE_LEVEL_STANDARD | PAYMENT_SERVICE_LEVEL_SAME_DAYmandateBodyJson· string · optionnelsignatureB64url· string · optionnel
Exemple d'appel{"name": "autonomous_pay", "arguments": {"jcsHash": "texte", "serviceLevel": "PAYMENT_SERVICE_LEVEL_UNSPECIFIED", "mandateBodyJson": "texte", "signatureB64url": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"audit": "texte", "reason": "texte", "status": "PAYMENT_STATUS_UNSPECIFIED", "reasons": [], "feeCents": "texte", "paymentId": "texte"}} - banking_confirm_extracted_value≈ 3392 tokens
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.
Paramètres, retour & exemple (2)
ParamètresfieldPath· string · optionnelapplicationId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "banking_confirm_extracted_value", "arguments": {"applicationId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"application": "texte"}} - banking_confirm_initial_transfer≈ 500 tokens
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.
Paramètres, retour & exemple (3)
Paramètresamount· string · optionnelcurrencyCode· string · optionnelapplicationId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "banking_confirm_initial_transfer", "arguments": {"applicationId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"initialTransfer": "texte"}} - banking_extract_document_fields≈ 3462 tokens
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.
Paramètres, retour & exemple (2)
ParamètresdocumentId· object · requis
UUID value wrapper.applicationId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "banking_extract_document_fields", "arguments": {"documentId": {}, "applicationId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"fields": [], "application": "texte"}} - banking_get_banking_application≈ 3493 tokens
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.
Paramètres, retour & exemple (2)
ParamètrescompanyId· object · optionnel
UUID value wrapper.applicationId· object · optionnel
UUID value wrapper.
Exemple d'appel{"name": "banking_get_banking_application", "arguments": {"companyId": {}, "applicationId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"application": "texte"}} - banking_get_initial_transfer_preview≈ 270 tokens
Returns the suggested opening deposit for a banking application and the reason for that figure. Read-only: it moves no money and records nothing.
Paramètres, retour & exemple (1)
ParamètresapplicationId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "banking_get_initial_transfer_preview", "arguments": {"applicationId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"etaAt": "texte", "fromMask": "texte", "available": true, "reasoning": "texte", "currencyCode": "texte", "fromInstitution": "texte", "suggestedAmount": "texte"}} - banking_get_issuance_state≈ 504 tokens
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.
Paramètres, retour & exemple (1)
ParamètresapplicationId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "banking_get_issuance_state", "arguments": {"applicationId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"issuance": "texte"}} - banking_hydrate_from_cap_table≈ 3387 tokens
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.
Paramètres, retour & exemple (1)
ParamètresapplicationId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "banking_hydrate_from_cap_table", "arguments": {"applicationId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"application": "texte"}} - banking_hydrate_from_formation≈ 3394 tokens
HydrateFromFormation is idempotent: it writes values and their provenance in one transaction and never overwrites something the applicant supplied.
Paramètres, retour & exemple (2)
ParamètresformationId· object · requis
UUID value wrapper.applicationId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "banking_hydrate_from_formation", "arguments": {"formationId": {}, "applicationId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"application": "texte"}} - banking_preview_cap_table_hydration≈ 252 tokens
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.
Paramètres, retour & exemple (1)
ParamètrescompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "banking_preview_cap_table_hydration", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"rows": [], "available": true, "stillNeeded": [], "prefillPercent": 1}} - banking_preview_formation_hydration≈ 317 tokens
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.
Paramètres, retour & exemple (2)
ParamètrescompanyId· object · requis
UUID value wrapper.formationId· object · optionnel
UUID value wrapper.
Exemple d'appel{"name": "banking_preview_formation_hydration", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"rows": [], "available": true, "formationId": "texte", "stillNeeded": [], "prefillPercent": 1}} - banking_refresh_application_provider_status≈ 3476 tokens
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.
Paramètres, retour & exemple (1)
ParamètresapplicationId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "banking_refresh_application_provider_status", "arguments": {"applicationId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"application": "texte"}} - banking_refresh_owner_verification≈ 1030 tokens
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.
Paramètres, retour & exemple (2)
ParamètresownerId· object · requis
UUID value wrapper.applicationId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "banking_refresh_owner_verification", "arguments": {"ownerId": {}, "applicationId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"owner": "texte"}} - banking_set_application_ein≈ 217 tokens
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.
Paramètres, retour & exemple (2)
Paramètresein· string · optionnelapplicationId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "banking_set_application_ein", "arguments": {"applicationId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - banking_set_owner_identity_document_number≈ 283 tokens
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.
Paramètres, retour & exemple (3)
ParamètresownerId· object · requis
UUID value wrapper.applicationId· object · requis
UUID value wrapper.documentNumber· string · optionnel
Exemple d'appel{"name": "banking_set_owner_identity_document_number", "arguments": {"ownerId": {}, "applicationId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"numberLast4": "texte"}} - banking_set_owner_tax_identifier≈ 330 tokens
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.
Paramètres, retour & exemple (4)
Paramètreskind· string · optionnel · TAX_IDENTIFIER_KIND_SSN | TAX_IDENTIFIER_KIND_ITINownerId· object · requis
UUID value wrapper.applicationId· object · requis
UUID value wrapper.taxIdentifier· string · optionnel
Exemple d'appel{"name": "banking_set_owner_tax_identifier", "arguments": {"ownerId": {}, "applicationId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ssnLast4": "texte"}} - banking_start_banking_application≈ 321 tokens
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.
Paramètres, retour & exemple (3)
Paramètrespath· string · optionnel · APPLICATION_PATH_WARM_FORMATION | APPLICATION_PATH_COLD_MANUALcompanyId· object · requis
UUID value wrapper.formationId· object · optionnel
UUID value wrapper.
Exemple d'appel{"name": "banking_start_banking_application", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"applicationId": "texte"}} - banking_submit_banking_application≈ 3586 tokens
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.
Paramètres, retour & exemple (1)
ParamètresapplicationId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "banking_submit_banking_application", "arguments": {"applicationId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"application": "texte", "blockingSections": []}} - banking_suggest_industry_code≈ 376 tokens
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.
Paramètres, retour & exemple (2)
Paramètreslimit· integer · optionnelbusinessDescription· object · requis
Free-form description (max 5000 chars).
Exemple d'appel{"name": "banking_suggest_industry_code", "arguments": {"businessDescription": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"suggestions": []}} - banking_update_banking_application≈ 6814 tokens
UpdateBankingApplication takes a FieldMask. Every path in the mask also writes USER provenance, so correcting a carried-over value re-attributes it.
Paramètres, retour & exemple (2)
ParamètresupdateMask· string · requis
Comma-separated field paths.application· object · requis
Exemple d'appel{"name": "banking_update_banking_application", "arguments": {"updateMask": "texte", "application": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"application": "texte"}} - banking_upsert_beneficial_owner≈ 1148 tokens
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.
Paramètres, retour & exemple (2)
Paramètresowner· object · requisapplicationId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "banking_upsert_beneficial_owner", "arguments": {"owner": {}, "applicationId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ownerId": "texte"}} - cap_table_clear_cap_table_stakeholders≈ 155 tokens
ClearCapTableStakeholders deletes every stakeholder of a company in a single DB-level operation. Used by the "replace cap table" import flow.
Paramètres, retour & exemple (1)
ParamètrescompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_clear_cap_table_stakeholders", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"deletedCount": "texte"}} - cap_table_close_cap_table_round≈ 1589 tokens
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.
Paramètres, retour & exemple (8)
ParamètresroundId· object · requis
UUID value wrapper.companyId· object · requis
UUID value wrapper.newMoneyRaise· string · optionneloptionPoolBasis· string · optionnel · CAP_TABLE_OPTION_POOL_BASIS_UNSPECIFIED | CAP_TABLE_OPTION_POOL_BASIS_POST_ROUND | CAP_TABLE_OPTION_POOL_BASIS_PRE_MONEYrecordedHistory· boolean · optionnelpreMoneyValuation· string · optionnelcarryForwardUnwired· boolean · optionneltargetOptionPoolPct· string · optionnel
Exemple d'appel{"name": "cap_table_close_cap_table_round", "arguments": {"roundId": {}, "companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"round": "texte", "result": "texte", "snapshots": []}} - cap_table_create_cap_table_agreement≈ 981 tokens
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.
Paramètres, retour & exemple (10)
Paramètresname· string · optionneltype· string · optionnel · CAP_TABLE_AGREEMENT_TYPE_SAFE | CAP_TABLE_AGREEMENT_TYPE_OPTION | CAP_TABLE_AGREEMENT_TYPE_RSU | CAP_TABLE_AGREEMENT_TYPE_RSA | CAP_TABLE_AGREEMENT_TYPE_FAST | CAP_TABLE_AGREEMENT_TYPE_BOARD_CONSENT | CAP_TABLE_AGREEMENT_TYPE_CONVERTIBLE_LOAN | CAP_TABLE_AGREEMENT_TYPE_VENTURE_DEBTroundId· object · optionnel
UUID value wrapper.signedAt· string · optionnelcompanyId· object · requis
UUID value wrapper.fastTerms· object · optionnelgranteeName· string · optionnelsourceS3Uri· string · optionnelprogressTotal· integer · optionnelstakeholderId· object · optionnel
UUID value wrapper.
Exemple d'appel{"name": "cap_table_create_cap_table_agreement", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"agreementId": "texte"}} - cap_table_create_cap_table_round≈ 533 tokens
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.
Paramètres, retour & exemple (2)
Paramètresround· object · requispastRound· boolean · optionnel
Exemple d'appel{"name": "cap_table_create_cap_table_round", "arguments": {"round": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"roundId": "texte"}} - cap_table_create_cap_table_stakeholder≈ 654 tokens
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.
Paramètres, retour & exemple (1)
Paramètresstakeholder· object · requis
Exemple d'appel{"name": "cap_table_create_cap_table_stakeholder", "arguments": {"stakeholder": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"stakeholderId": "texte"}} - cap_table_delete_cap_table_agreement≈ 158 tokens
DeleteCapTableAgreement removes an agreement.
Paramètres, retour & exemple (2)
ParamètrescompanyId· object · requis
UUID value wrapper.agreementId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_delete_cap_table_agreement", "arguments": {"companyId": {}, "agreementId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - cap_table_delete_cap_table_round≈ 194 tokens
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).
Paramètres, retour & exemple (2)
ParamètresroundId· object · requis
UUID value wrapper.companyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_delete_cap_table_round", "arguments": {"roundId": {}, "companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - cap_table_delete_cap_table_security≈ 157 tokens
DeleteCapTableSecurity removes one holding.
Paramètres, retour & exemple (2)
ParamètrescompanyId· object · requis
UUID value wrapper.securityId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_delete_cap_table_security", "arguments": {"companyId": {}, "securityId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - cap_table_delete_cap_table_stakeholder≈ 129 tokens
DeleteCapTableStakeholder removes one stakeholder from a cap table.
Paramètres, retour & exemple (1)
ParamètresstakeholderId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_delete_cap_table_stakeholder", "arguments": {"stakeholderId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - cap_table_download_cap_table_safes≈ 266 tokens
DownloadCapTableSafes presigns multiple SAFE agreement PDFs in one call.
Paramètres, retour & exemple (2)
ParamètrescompanyId· object · requis
UUID value wrapper.agreementIds· array · optionnel
Exemple d'appel{"name": "cap_table_download_cap_table_safes", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"files": []}} - cap_table_extract_wire_payment_proof≈ 528 tokens
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.
Paramètres, retour & exemple (4)
ParamètresagentCode· string · optionnelcompanyId· object · requis
UUID value wrapper.securityId· object · requis
UUID value wrapper.sourceS3Uri· string · optionnel
Exemple d'appel{"name": "cap_table_extract_wire_payment_proof", "arguments": {"companyId": {}, "securityId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"proof": "texte", "warnings": [], "sourceS3Uri": "texte", "verification": "texte", "ocrConfidence": "texte"}} - cap_table_generate_cap_table_agreement_pdf≈ 299 tokens
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.
Paramètres, retour & exemple (4)
ParamètrescompanyId· object · requis
UUID value wrapper.regenerate· boolean · optionnelagreementId· object · requis
UUID value wrapper.templateFields· object · optionnel
Exemple d'appel{"name": "cap_table_generate_cap_table_agreement_pdf", "arguments": {"companyId": {}, "agreementId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"s3Key": "texte", "regenerated": true}} - cap_table_generate_cap_table_docs≈ 417 tokens
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.
Paramètres, retour & exemple (2)
ParamètrescompanyId· object · requis
UUID value wrapper.stakeholderIds· array · optionnel
Exemple d'appel{"name": "cap_table_generate_cap_table_docs", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"failedCount": 1, "queuedCount": 1, "failedStakeholderIds": []}} - cap_table_generate_cap_table_summary_pdf≈ 223 tokens
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.
Paramètres, retour & exemple (2)
ParamètresasLink· boolean · optionnelcompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_generate_cap_table_summary_pdf", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"pdf": "texte", "downloadUrl": "texte", "downloadUrlExpiresAt": "texte"}} - cap_table_get_cap_table_agreement≈ 1000 tokens
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.
Paramètres, retour & exemple (1)
Paramètresid· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_get_cap_table_agreement", "arguments": {"id": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"agreement": "texte", "signatureBlock": "texte"}} - cap_table_get_cap_table_agreement_pdf_url≈ 180 tokens
GetCapTableAgreementPdfUrl returns a short-lived signed S3 URL for the rendered SAFE agreement PDF.
Paramètres, retour & exemple (2)
Paramètresattachment· boolean · optionnelagreementId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_get_cap_table_agreement_pdf_url", "arguments": {"agreementId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"url": "texte", "expiresAt": "texte"}} - cap_table_get_cap_table_equity_plans≈ 1142 tokens
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.
Paramètres, retour & exemple (1)
ParamètrescompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_get_cap_table_equity_plans", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"advisors": [], "founders": [], "employees": [], "investors": [], "optionPoolShares": "texte"}} - cap_table_get_cap_table_health≈ 286 tokens
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.
Paramètres, retour & exemple (1)
ParamètrescompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_get_cap_table_health", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"issues": []}} - cap_table_get_cap_table_investor_access≈ 341 tokens
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.
Paramètres, retour & exemple (1)
ParamètrescompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_get_cap_table_investor_access", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"investors": []}} - cap_table_get_cap_table_overview≈ 272 tokens
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.
Paramètres, retour & exemple (1)
ParamètrescompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_get_cap_table_overview", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"mode": "CAP_TABLE_OVERVIEW_MODE_UNSPECIFIED", "latestRoundId": "texte"}} - cap_table_get_cap_table_round≈ 472 tokens
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.
Paramètres, retour & exemple (1)
Paramètresid· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_get_cap_table_round", "arguments": {"id": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"round": "texte"}} - cap_table_get_cap_table_round_summaries≈ 384 tokens
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.
Paramètres, retour & exemple (1)
ParamètrescompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_get_cap_table_round_summaries", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"summaries": []}} - cap_table_get_cap_table_security≈ 833 tokens
GetCapTableSecurity returns one holding by id. Read-only.
Paramètres, retour & exemple (1)
ParamètressecurityId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_get_cap_table_security", "arguments": {"securityId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"security": "texte"}} - cap_table_get_cap_table_stakeholder≈ 542 tokens
GetCapTableStakeholder returns one stakeholder by id. Read-only.
Paramètres, retour & exemple (1)
ParamètresstakeholderId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_get_cap_table_stakeholder", "arguments": {"stakeholderId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"stakeholder": "texte"}} - cap_table_get_cap_table_summary≈ 382 tokens
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.
Paramètres, retour & exemple (2)
ParamètresasOf· string · optionnelcompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_get_cap_table_summary", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"segments": [], "foundersPct": "texte", "totalShares": "texte", "asOfRecordedAt": "texte", "totalCommitted": "texte", "totalInvestment": "texte", "authorizedShares": "texte", "stakeholderCount": 1, "authorizedCommonShares": "texte", "authorizedPreferredShares": "texte"}} - cap_table_get_list_cap_table_agreements≈ 1071 tokens
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.
Paramètres, retour & exemple (4)
ParamètrespageSize· integer · optionnelcompanyId· object · requis
UUID value wrapper.pageToken· string · optionneltypeFilter· array · optionnel
Exemple d'appel{"name": "cap_table_get_list_cap_table_agreements", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"agreements": [], "totalCount": 1, "nextPageToken": "texte"}} - cap_table_get_list_cap_table_rounds≈ 503 tokens
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.
Paramètres, retour & exemple (3)
ParamètrespageSize· integer · optionnelcompanyId· object · requis
UUID value wrapper.pageToken· string · optionnel
Exemple d'appel{"name": "cap_table_get_list_cap_table_rounds", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"rounds": [], "totalCount": 1, "nextPageToken": "texte"}} - cap_table_get_list_cap_table_securities≈ 995 tokens
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.
Paramètres, retour & exemple (4)
ParamètrespageSize· integer · optionnelcompanyId· object · requis
UUID value wrapper.pageToken· string · optionnelstakeholderId· object · optionnel
UUID value wrapper.
Exemple d'appel{"name": "cap_table_get_list_cap_table_securities", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"securities": [], "totalCount": 1, "nextPageToken": "texte"}} - cap_table_get_list_cap_table_stakeholders≈ 718 tokens
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.
Paramètres, retour & exemple (3)
ParamètrespageSize· integer · optionnelcompanyId· object · requis
UUID value wrapper.pageToken· string · optionnel
Exemple d'appel{"name": "cap_table_get_list_cap_table_stakeholders", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"totalCount": 1, "stakeholders": [], "nextPageToken": "texte"}} - cap_table_get_list_cap_table_wire_match_suggestions≈ 501 tokens
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".
Paramètres, retour & exemple (2)
ParamètrescompanyId· object · requis
UUID value wrapper.securityId· object · optionnel
UUID value wrapper.
Exemple d'appel{"name": "cap_table_get_list_cap_table_wire_match_suggestions", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"suggestions": []}} - cap_table_get_my_investor_companies≈ 258 tokens
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.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "cap_table_get_my_investor_companies", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"companies": []}} - cap_table_get_safe_import_consent≈ 161 tokens
GetSafeImportConsent reports whether the company has granted current consent for an external AI to read imported SAFE contents.
Paramètres, retour & exemple (1)
ParamètrescompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_get_safe_import_consent", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"granted": true, "version": "texte"}} - cap_table_get_transaction_summary≈ 192 tokens
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.
Paramètres, retour & exemple (1)
ParamètrescompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_get_transaction_summary", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"wired": "texte", "signed": "texte", "committed": "texte"}} - cap_table_get_wired_transactions≈ 322 tokens
GetWiredTransactions returns the confirmed-wire ledger (wired + refunded investor rows) for the fundraising Transactions page. Read-only.
Paramètres, retour & exemple (1)
ParamètrescompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_get_wired_transactions", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"totalCount": 1, "transactions": []}} - cap_table_grant_safe_import_consent≈ 158 tokens
GrantSafeImportConsent records the company's consent at the current wording version. Required before an MCP-origin SaveCapTableImport.
Paramètres, retour & exemple (1)
ParamètrescompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_grant_safe_import_consent", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"granted": true, "version": "texte"}} - cap_table_import_cap_table≈ 1456 tokens
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.
Paramètres, retour & exemple (5)
Paramètresrows· array · optionnelreplace· boolean · optionnelcompanyId· object · requis
UUID value wrapper.expectedTotalShares· integer · optionnelexpectedTotalCapital· string · optionnel
Exemple d'appel{"name": "cap_table_import_cap_table", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"rows": [], "removed": 1, "recordedRounds": []}} - cap_table_import_rsa≈ 1530 tokens
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.
Paramètres, retour & exemple (7)
Paramètrespreview· boolean · optionnelcompanyId· object · requis
UUID value wrapper.sourceS3Uri· string · optionnelstakeholderId· object · optionnel
UUID value wrapper.consentToAiRead· boolean · optionnelrsaTermsOverride· object · optionnelnewStakeholderName· string · optionnel
Exemple d'appel{"name": "cap_table_import_rsa", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"status": "texte", "created": true, "preview": "texte", "securityId": "texte", "agreementId": "texte", "stakeholderId": "texte", "consentVersion": "texte", "consentBodyMarkdown": "texte"}} - cap_table_import_safe≈ 1795 tokens
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 SAFE holding beside it rather than a refusal — tell the user a second SAFE was recorded for that investor. Either way, the import is refused when the investor's SAFE signing state cannot be confirmed: when the document hub is unreachable tell the user to try again shortly, and when that SAFE is not filed in documents tell them support has to file it first. Pass post_money=true only when the user says the SAFE is post-money and the extraction did not; false leaves the document's own answer. A preview whose investor_name is empty found no investor named on the document: ask the user who the investor is and pass new_stakeholder_name on the import. 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.
Paramètres, retour & exemple (15)
Paramètrespreview· boolean · optionnelroundId· object · optionnel
UUID value wrapper.companyId· object · requis
UUID value wrapper.postMoney· boolean · optionneldocumentId· object · optionnel
UUID value wrapper.securityId· object · optionnel
UUID value wrapper.sourceS3Uri· string · optionneldiscountRate· string · optionnelvaluationCap· string · optionneleffectiveDate· string · optionnelstakeholderId· object · optionnel
UUID value wrapper.consentToAiRead· boolean · optionnelinvestmentAmount· string · optionnelunsignedDocument· boolean · optionnelnewStakeholderName· string · optionnel
Exemple d'appel{"name": "cap_table_import_safe", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"change": "texte", "status": "texte", "created": true, "preview": "texte", "securityId": "texte", "agreementId": "texte", "stakeholderId": "texte", "consentVersion": "texte", "consentBodyMarkdown": "texte"}} - cap_table_list_cap_table_audit_events≈ 464 tokens
ListCapTableAuditEvents returns the append-only who/what/when audit log for a company's ownership-affecting cap-table mutations (B1). Read-only.
Paramètres, retour & exemple (3)
ParamètrespageSize· integer · optionnelcompanyId· object · requis
UUID value wrapper.pageToken· string · optionnel
Exemple d'appel{"name": "cap_table_list_cap_table_audit_events", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"events": [], "totalCount": 1, "nextPageToken": "texte"}} - cap_table_list_cap_table_snapshots_for_round≈ 484 tokens
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.
Paramètres, retour & exemple (1)
ParamètresroundId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_list_cap_table_snapshots_for_round", "arguments": {"roundId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"snapshots": []}} - cap_table_list_cap_table_summary_snapshots≈ 355 tokens
ListCapTableSummarySnapshots returns the point-in-time cap-table summary versions captured on material edits (B4). Read-only.
Paramètres, retour & exemple (3)
ParamètrespageSize· integer · optionnelcompanyId· object · requis
UUID value wrapper.pageToken· string · optionnel
Exemple d'appel{"name": "cap_table_list_cap_table_summary_snapshots", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"snapshots": [], "totalCount": 1, "nextPageToken": "texte"}} - cap_table_list_cumulative_cap_table_snapshots_for_stakeholder≈ 518 tokens
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".
Paramètres, retour & exemple (2)
ParamètrescompanyId· object · requis
UUID value wrapper.stakeholderId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_list_cumulative_cap_table_snapshots_for_stakeholder", "arguments": {"companyId": {}, "stakeholderId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"snapshots": []}} - cap_table_match_cap_table_stakeholder≈ 208 tokens
MatchCapTableStakeholder suggests the existing stakeholder a parsed SAFE's investor name maps to (fuzzy match). Read-only.
Paramètres, retour & exemple (2)
ParamètrescompanyId· object · requis
UUID value wrapper.investorName· string · optionnel
Exemple d'appel{"name": "cap_table_match_cap_table_stakeholder", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"matched": true, "stakeholderId": "texte"}} - cap_table_preview_close_cap_table_round≈ 1084 tokens
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.
Paramètres, retour & exemple (6)
ParamètresroundId· object · requis
UUID value wrapper.companyId· object · requis
UUID value wrapper.newMoneyRaise· string · optionneloptionPoolBasis· string · optionnel · CAP_TABLE_OPTION_POOL_BASIS_UNSPECIFIED | CAP_TABLE_OPTION_POOL_BASIS_POST_ROUND | CAP_TABLE_OPTION_POOL_BASIS_PRE_MONEYpreMoneyValuation· string · optionneltargetOptionPoolPct· string · optionnel
Exemple d'appel{"name": "cap_table_preview_close_cap_table_round", "arguments": {"roundId": {}, "companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte", "notices": [], "blockers": []}} - cap_table_record_cap_table_investment≈ 1516 tokens
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 stakeholder_reused — when it is true, say the holding was added to the existing stakeholder, never that a new one was created.
Paramètres, retour & exemple (15)
Paramètresmfn· boolean · optionnelshares· string · optionnelproRata· boolean · optionnelroundId· object · optionnel
UUID value wrapper.vesting· object · optionnelsafeType· string · optionnelcompanyId· object · requis
UUID value wrapper.signedDate· string · optionneldiscountRate· string · optionnelvaluationCap· string · optionnelstakeholderId· object · optionnel
UUID value wrapper.instrumentType· string · optionnel · CAP_TABLE_INSTRUMENT_TYPE_SAFE | CAP_TABLE_INSTRUMENT_TYPE_COMMON_STOCK | CAP_TABLE_INSTRUMENT_TYPE_PREFERRED_STOCK | CAP_TABLE_INSTRUMENT_TYPE_OPTION | CAP_TABLE_INSTRUMENT_TYPE_CONVERTIBLE_NOTEnewStakeholder· object · optionnelpipelineStatus· string · optionnelcapitalCommitted· string · optionnel
Exemple d'appel{"name": "cap_table_record_cap_table_investment", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"change": "texte", "roundId": "texte", "securityId": "texte", "stakeholderId": "texte", "stakeholderReused": true}} - cap_table_record_cap_table_refund≈ 318 tokens
RecordCapTableRefund records a refund into the money-movement ledger (refund, confirmed) and flips the security's pipeline_status to 'refunded'.
Paramètres, retour & exemple (6)
Paramètresamount· string · optionnelcompanyId· object · requis
UUID value wrapper.reference· string · optionneloccurredAt· string · optionnelsecurityId· object · requis
UUID value wrapper.transactionId· object · optionnel
UUID value wrapper.
Exemple d'appel{"name": "cap_table_record_cap_table_refund", "arguments": {"companyId": {}, "securityId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"transactionId": "texte"}} - cap_table_record_cap_table_wire≈ 470 tokens
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.
Paramètres, retour & exemple (9)
Paramètresamount· string · optionnelcompanyId· object · requis
UUID value wrapper.reference· string · optionneloccurredAt· string · optionnelsecurityId· object · requis
UUID value wrapper.ocrConfidence· string · optionnelreviewedProof· object · optionneltransactionId· object · optionnel
UUID value wrapper.proofDocumentUri· string · optionnel
Exemple d'appel{"name": "cap_table_record_cap_table_wire", "arguments": {"companyId": {}, "securityId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"transactionId": "texte"}} - cap_table_reopen_cap_table_round≈ 424 tokens
ReopenCapTableRound flips a CLOSED round back to OPEN (status only).
Paramètres, retour & exemple (1)
ParamètresroundId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_reopen_cap_table_round", "arguments": {"roundId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"round": "texte"}} - cap_table_set_cap_table_authorized_shares≈ 208 tokens
SetCapTableAuthorizedShares updates the company's authorized share ceiling (charter amendment must have been obtained before calling this). Owner-only.
Paramètres, retour & exemple (4)
ParamètrescompanyId· object · requis
UUID value wrapper.authorizedShares· integer · optionnelauthorizedCommonShares· integer · optionnelauthorizedPreferredShares· integer · optionnel
Exemple d'appel{"name": "cap_table_set_cap_table_authorized_shares", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - cap_table_set_cap_table_pipeline_status≈ 492 tokens
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.
Paramètres, retour & exemple (3)
ParamètrescompanyId· object · requis
UUID value wrapper.securityId· object · requis
UUID value wrapper.pipelineStatus· string · optionnel
Exemple d'appel{"name": "cap_table_set_cap_table_pipeline_status", "arguments": {"companyId": {}, "securityId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - cap_table_simulate_cap_table_dilution≈ 1090 tokens
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.
Paramètres, retour & exemple (5)
ParamètrescompanyId· object · requis
UUID value wrapper.newMoneyRaise· string · optionneloptionPoolBasis· string · optionnel · CAP_TABLE_OPTION_POOL_BASIS_UNSPECIFIED | CAP_TABLE_OPTION_POOL_BASIS_POST_ROUND | CAP_TABLE_OPTION_POOL_BASIS_PRE_MONEYpreMoneyValuation· string · optionneltargetOptionPoolPct· string · optionnel
Exemple d'appel{"name": "cap_table_simulate_cap_table_dilution", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - cap_table_simulate_cap_table_exit≈ 1091 tokens
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.
Paramètres, retour & exemple (4)
ParamètrescompanyId· object · requis
UUID value wrapper.exitValuation· string · optionnelliquidationOverrides· array · optionneladditionalExitValuations· array · optionnel
Exemple d'appel{"name": "cap_table_simulate_cap_table_exit", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"rows": [], "scenarios": [], "assumptions": [], "exitValuation": "texte", "totalDistributed": "texte"}} - cap_table_update_cap_table_agreement≈ 807 tokens
UpdateCapTableAgreement applies a full update (status/progress/timestamps).
Paramètres, retour & exemple (1)
Paramètresagreement· object · requis
Exemple d'appel{"name": "cap_table_update_cap_table_agreement", "arguments": {"agreement": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - cap_table_update_cap_table_agreement_status≈ 405 tokens
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.
Paramètres, retour & exemple (2)
Paramètresid· object · requis
UUID value wrapper.status· string · optionnel · CAP_TABLE_AGREEMENT_STATUS_DRAFT | CAP_TABLE_AGREEMENT_STATUS_PENDING | CAP_TABLE_AGREEMENT_STATUS_GENERATING | CAP_TABLE_AGREEMENT_STATUS_SENT | CAP_TABLE_AGREEMENT_STATUS_PARTIALLY_APPROVED | CAP_TABLE_AGREEMENT_STATUS_SIGNED | CAP_TABLE_AGREEMENT_STATUS_COMPLETED | CAP_TABLE_AGREEMENT_STATUS_APPROVED
Exemple d'appel{"name": "cap_table_update_cap_table_agreement_status", "arguments": {"id": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - cap_table_update_cap_table_round≈ 469 tokens
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.
Paramètres, retour & exemple (1)
Paramètresround· object · requis
Exemple d'appel{"name": "cap_table_update_cap_table_round", "arguments": {"round": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - cap_table_update_cap_table_security≈ 940 tokens
UpdateCapTableSecurity applies a full update to a holding.
Paramètres, retour & exemple (1)
Paramètressecurity· object · requis
Exemple d'appel{"name": "cap_table_update_cap_table_security", "arguments": {"security": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - cap_table_update_cap_table_stakeholder≈ 502 tokens
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.
Paramètres, retour & exemple (1)
Paramètresstakeholder· object · requis
Exemple d'appel{"name": "cap_table_update_cap_table_stakeholder", "arguments": {"stakeholder": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - cap_table_update_my_stakeholder_name≈ 232 tokens
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.
Paramètres, retour & exemple (2)
Paramètresname· object · requis
Human-readable name (1-255 Unicode chars).companyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "cap_table_update_my_stakeholder_name", "arguments": {"name": {}, "companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - captable_hydrate_formation_carry≈ 185 tokens
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.
Paramètres, retour & exemple (1)
ParamètrescompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "captable_hydrate_formation_carry", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"carriedCount": 1, "alreadyPresentCount": 1}} - captable_preview_formation_carry≈ 282 tokens
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.
Paramètres, retour & exemple (1)
ParamètrescompanyId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "captable_preview_formation_carry", "arguments": {"companyId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"rows": [], "available": true, "formationId": "texte", "stillNeeded": []}} - captable_send_safe_for_signature≈ 956 tokens
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.
Paramètres, retour & exemple (10)
Paramètresprovider· string · optionnel · SIGNATURE_PROVIDER_UNSPECIFIED | SIGNATURE_PROVIDER_LOVIE_SIGN | SIGNATURE_PROVIDER_DOCUSIGNcompanyId· object · optionnel
UUID value wrapper.investors· array · optionnelcompanyName· object · requis
Human-readable name (1-255 Unicode chars).founderEmail· string · optionnelvaluationCap· string · optionnelfounderUserId· object · requis
UUID value wrapper.safeAgreementId· string · optionnelreminderIntervalDays· integer · optionnelstateOfIncorporation· string · optionnel
Exemple d'appel{"name": "captable_send_safe_for_signature", "arguments": {"companyName": {}, "founderUserId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"signers": [], "envelopeId": "texte"}} - card_create_card≈ 1254 tokens
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.
Paramètres, retour & exemple (2)
Paramètresparams· object · requisaccountId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "card_create_card", "arguments": {"params": {}, "accountId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte"}} - card_freeze_card≈ 603 tokens
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.
Paramètres, retour & exemple (1)
ParamètrescardId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "card_freeze_card", "arguments": {"cardId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"card": "texte"}} - card_get_card≈ 572 tokens
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.
Paramètres, retour & exemple (1)
ParamètrescardId· object · requis
UUID value wrapper.
Exemple d'appel{"name": "card_get_card", "arguments": {"cardId": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"card": "texte"}}
+ 227 autres outils (affichage limité à 120).
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».