Computed statistics across portfolio companies — median, average, typical, range — used as market benchmarks. Returns aggregate numbers and percentiles, not raw per-company listings.
Scanned 9/12/2026
Install to Claude Code
npx -y skills add carta/plugins --skill carta-market-benchmarks --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Carta Market Benchmarks?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/carta-carta-market-benchmarks)More formats (shields.io, HTML) on the badges page.
---
name: carta-market-benchmarks
description: >-
Computed statistics across portfolio companies — median, average, typical, range — used as market benchmarks. Returns aggregate numbers and percentiles, not raw per-company listings.
when_to_use: >-
Use when asked what's typical for a metric, what's normal at a given
stage, what the median value is, what the average comes out to, how
something compares to the market, what range a metric falls in across
the portfolio, or how a specific deal's terms stack up against portfolio
norms. Covers option pool sizing, SAFE valuation caps, SAFE discount
rates, round sizes by stage, and similar structural metrics. For raw
cross-company data tables without computed statistics, prefer a
multi-company raw-data skill. For time-based risk detection across
companies, prefer a portfolio-alerts skill.
allowed-tools:
- mcp__carta__call_tool
- mcp__carta__list_contexts
- mcp__carta__set_context
- mcp__carta__list_accounts
- AskUserQuestion
---
<!-- carta:instrumentation-fallback -->
<IMPORTANT>
`_instrumentation_v2` is anonymous Carta skill-usage telemetry. ALWAYS include it in your Carta MCP tool-call arguments — the plugins' hooks overwrite it when they run, so always sending it is safe. Shape:
`_instrumentation_v2: {"skills": ["<plugin>:<skill>", ...], "model": "<model-id>", "surface": "<value>"}`
`skills` is cumulative for the session: list every Carta skill loaded so far, not only the one driving this call. Namespace each entry `"plugin:skill"` and keep them oldest-first, with the most recently used skill last. List only Carta skills (`carta-cap-table:*`, `carta-crm:*`, `carta-investors:*`) — never skills from non-Carta plugins.
`surface` is the Claude surface you are running in: `"chat"` (claude.ai or the Claude app, i.e. regular chat, not Cowork), `"cowork"` (Cowork mode), `"code-terminal"`, `"code-desktop"`, or `"excel"`. Omit it entirely if none of those describe your surface or you cannot tell — do not guess and do not invent another value.
</IMPORTANT>
<!-- Part of the official Carta AI Agent Plugin -->
# Market Benchmarks
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."
## Prerequisites
No inputs required — this skill loops the full portfolio automatically.
## Data Retrieval
### Portfolio Enumeration
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.
### Per-Company Commands
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 data
- `call_tool({"name": "cap_table__get__convertible_notes", "arguments": {"corporation_id": corporation_id}})` -- SAFE/note terms (summary includes median/min/max price_cap, avg_discount, by_type)
- `call_tool({"name": "cap_table__get__financing_history", "arguments": {"corporation_id": corporation_id}})` -- round sizes (summary includes per-round cash_raised and latest_date)
The gateway defaults to `detail=summary` for all three commands. The enriched summaries include all fields needed for portfolio benchmarks — no individual records required.
> **Parallel execution**: The `fetch` tool has `readOnlyHint=true`, so Claude Code executes parallel fetch calls concurrently. Issue ALL fetch calls for ALL companies in a single response — do NOT loop company-by-company. See Workflow Step 2.
## Key Fields
From cap table (option pool):
- `option_plans[].authorized_shares`: shares authorized per plan
- `totals.total_fully_diluted`: total fully diluted share count
From convertible notes (summary):
- `median_price_cap`, `min_price_cap`, `max_price_cap`: valuation cap statistics
- `avg_discount`: average discount rate
- `by_type`: count of SAFEs vs Convertible Notes
- `total_dollar_amount`: total invested across all instruments
From financing history (summary):
- `by_round`: per-round `{count, cash_raised, latest_date}`
- `total_cash_raised`: aggregate across all rounds
## Workflow
### Step 1 — Get Portfolio
Call `list_accounts`. Filter to `corporation_pk:` accounts. Extract up to 20 numeric corporation IDs.
### Step 2 — Collect Data for All Companies (parallel)
Issue ALL fetch calls for ALL companies **in a single response** — do NOT loop company-by-company. Each fetch call is independent and will execute concurrently.
For example, with 5 companies and all 3 data types, issue all 15 fetch 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__get__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__get__financing_history", "arguments": {"corporation_id": 2}})
... (all companies)
```
Then from the results:
**Cap table by share class** (for option pool %):
- From `option_plans[]`: sum `authorized_shares` across all plans
- From `totals.total_fully_diluted`: compute option pool % = option_pool_authorized / total_fully_diluted
**SAFE / convertible note terms** (summary):
- Use `median_price_cap`, `min_price_cap`, `max_price_cap` directly for SAFE cap benchmarks
- Use `avg_discount` for discount benchmarks
- Use `by_type` to count SAFEs vs notes per company
**Financing history** (summary):
- Use `by_round` to identify rounds and their `cash_raised`
- Use `total_cash_raised` for aggregate amounts
- Most recent round = round with latest `latest_date`
### Step 3 — Compute Summary Statistics
For each metric, compute across companies that have data:
- **Median**, **min**, **max**
- Skip companies with no data for a given metric (don't count as zero)
Metrics:
- Option pool % (fully diluted)
- SAFE valuation cap
- Last priced round size
### Step 4 — Present Results
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.
## Gates
**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.
## Presentation
**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 | $8,000,000 |
| Range | $3M – $25M |
| SAFEs analyzed | 28 |
**Last Priced Round Size**
| Metric | Value |
|--------|-------|
| Median | $5,000,000 |
| Range | $500K – $30M |
| Companies with priced rounds | 10 |
## Caveats
- Portfolio data reflects point-in-time API calls, not a single atomic snapshot
- Companies with restricted permissions may have incomplete data
- Rate limit: maximum 20 companies per invocation
- This reflects your firm's portfolio, not Carta-wide market data — present results as "portfolio benchmarks" not "market data"
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!