Computed statistics across portfolio companies — median, average, typical, range — used as market benchmarks. Returns aggregate numbers and percentiles, not raw per-company listings.
carta-cap-table:6.91.7
Compute portfolio-wide benchmarks from your own Carta data: option pool sizes, SAFE valuation caps, and round sizes. Useful for sanity-checking a new deal's terms against your existing portfolio.
Note: This reflects your firm's portfolio, not Carta-wide market data. Present results as "portfolio benchmarks" not "market data."
No inputs required — this skill loops the full portfolio automatically.
Call list_accounts. Filter to corporation_pk: accounts. Extract up to 20 numeric corporation IDs. If more than 20 companies exist, ask the user to narrow scope.
For each company, the relevant commands are:
call_tool({"name": "cap_table__get__cap_table_by_share_class", "arguments": {"corporation_id": corporation_id}}) -- option pool datacall_tool({"name": "cap_table__get__convertible_notes", "arguments": {"corporation_id": corporation_id}}) -- SAFE/note terms (summary includes min/max/average price_cap, avg_discount, by_type)call_tool({"name": "cap_table__list__financing_history", "arguments": {"corporation_id": corporation_id}}) -- round sizes (one row per share class with closing_date and cash_raised_by_currency)Use
cap_table__list__financing_history— nevercap_table__get__financing_history. Thegettool is deprecated: the gateway rejects every call to it with "This command is deprecated" before reaching Carta, so calling it fails once per company.
The convertible-notes call defaults to detail=summary, and the other two return aggregates — no individual records are needed.
Parallel execution:
call_toolreads are read-only, so Claude Code runs parallel calls concurrently. Issue ALL calls for ALL companies in a single response — do NOT loop company-by-company. See Workflow Step 2.
From cap table (option pool):
option_plans[].authorized_shares: shares authorized per plantotals.total_fully_diluted: total fully diluted share countFrom convertible notes (summary):
min_price_cap, max_price_cap: lowest and highest valuation capmedian_price_cap: despite its name, this is the average (mean) cap, not the median. It averages every instrument the company holds, whatever its status. Call it the company's average cap.avg_discount: average discount rateby_type: instrument counts keyed by type (SAFE, Convertible Note, Convertible Equity, ASA)total_dollar_amount: total invested across all instrumentsFrom financing history (share_class_financings[], one row per share class):
name: share class (the round)closing_date: when the round closedcash_raised_by_currency: {currency: amount} — {} for classes that raised no cash (e.g. common stock)Call list_accounts. Filter to corporation_pk: accounts. Extract up to 20 numeric corporation IDs.
Issue ALL calls for ALL companies in a single response — do NOT loop company-by-company. Each call is independent and will execute concurrently.
For example, with 5 companies and all 3 data types, issue all 15 calls at once:
call_tool({"name": "cap_table__get__cap_table_by_share_class", "arguments": {"corporation_id": 1}})
call_tool({"name": "cap_table__get__convertible_notes", "arguments": {"corporation_id": 1}})
call_tool({"name": "cap_table__list__financing_history", "arguments": {"corporation_id": 1}})
call_tool({"name": "cap_table__get__cap_table_by_share_class", "arguments": {"corporation_id": 2}})
call_tool({"name": "cap_table__get__convertible_notes", "arguments": {"corporation_id": 2}})
call_tool({"name": "cap_table__list__financing_history", "arguments": {"corporation_id": 2}})
... (all companies)Then from the results:
Cap table by share class (for option pool %):
option_plans[]: sum authorized_shares across all planstotals.total_fully_diluted: compute option pool % = option_pool_authorized / total_fully_dilutedSAFE / convertible note terms (summary):
median_price_cap as its average cap, and min_price_cap / max_price_cap for the rangeavg_discount for discount benchmarksby_type to count instruments by type per companyFinancing history:
closing_date whose cash_raised_by_currency is not emptycash_raised_by_currency amount. Benchmark round sizes within one currency only (the most common one across the portfolio), and name the companies left out because they raised in another currency — never add or compare amounts across currenciesIf a call fails for one company (403, access denied, or any other error): count that company as "no data" for that metric and carry on with the rest. Do not retry it, and do not look for another tool to fill the gap. List the skipped companies in the caveats.
For each metric, compute across companies that have data:
Metrics:
See Presentation section.
If the user asks about a specific company ("how does Acme's option pool compare?"), show that company's value alongside the portfolio median.
Required inputs: None — portfolio enumeration is automatic.
AI computation: Yes — portfolio benchmark statistics (median, min, max for option pool sizes, SAFE caps, round sizes) are AI-derived from aggregated cap table data. Trigger the AI computation gate (see carta-interaction-reference §6.2) before outputting any benchmark statistics or portfolio comparisons.
Subagent prohibition: Not applicable.
Format: Benchmark tables grouped by metric
BLUF lead: Lead with the number of companies analyzed and the most notable finding (e.g., "median option pool is 12.5% across 14 companies").
Sort order: By metric name (Option Pool, SAFE Caps, Round Sizes).
Portfolio Benchmarks (N companies)
Option Pool Size (% Fully Diluted)
| Metric | Value |
|---|---|
| Median | 12.5% |
| Range | 8% – 20% |
| Companies with data | 14 |
SAFE Valuation Caps
| Metric | Value |
|---|---|
| Median of company average caps | $8,000,000 |
| Range | $3M – $25M |
| Companies with SAFEs or notes | 9 |
Last Priced Round Size
| Metric | Value |
|---|---|
| Median | $5,000,000 |
| Range | $500K – $30M |
| Companies with priced rounds | 10 |
2f20566
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.