From carta-cap-table
Fetches vesting schedules for a single grant or holder (options, RSUs, SARs, CBUs) and presents cliff dates, vested/unvested shares, and settlement eligibility.
How this skill is triggered — by the user, by Claude, or both
Slash command
/carta-cap-table:carta-grant-vestingWhen to use
Use when asked, for a single named grant or holder, about the vesting schedule, when the cliff hits, how many shares have vested or remain unvested, vesting progress for a named employee ("how much has Jane vested", "vesting progress for Jane"), RSU settlement eligibility, when a grant is fully vested, or wrong-vocab phrasings for the same idea — "stock payment schedule", "when does [name] actually own their stock", "what do they have rights to", "how much is still locked up". Stays scoped to ONE grant or holder. Do NOT use for aggregate vesting across all employees or the full option pool ("how much of my employees' equity has vested") — defer to a stakeholder/portfolio skill instead.
This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
<!-- Part of the official Carta AI Agent Plugin -->
Fetch the full vesting schedule for a grant — options, RSUs, SARs, or CBUs — and present it with useful context, not just the raw table.
Use this skill for vesting questions scoped to a single grant or holder:
Wrong-vocab synonyms (same intent, different words — all map to vesting for a single grant/holder):
Do NOT use for portfolio-level / all-employees aggregate vesting. These triggers stay scoped to one grant or holder ("for [name]", "for this grant", "for grant #"). Questions like "how much of my employees' equity has vested" or "total vested across the whole option pool" are portfolio-level — defer to a stakeholder/portfolio/ownership skill instead. If a request spans more than one grant, see the "Multiple grants" branch under Workflow before fetching anything.
You need:
corporation_id — get from list_accounts if you don't have itgrant_id — identify via the list command for the relevant grant type (see below)AskUserQuestion before searching.The gateway defaults to
detail=summaryfor list commands. This skill needs individual records, so"detail": "minimal"is passed explicitly.
Two endpoints exist for vesting detail and they are not interchangeable:
| Grant type | List command | Vesting detail command |
|---|---|---|
| Options (ISO/NSO) | cap_table:list:grants | cap_table:get:grant_vesting |
| RSUs | cap_table:list:rsus | cap_table:get:rsu_vesting |
| SARs | cap_table:list:sars | (none — see Caveats) |
| CBUs | cap_table:list:cbus | (none — see Caveats) |
Important: cap_table:get:grant_vesting is options-only and returns 500 for RSU/SAR/CBU ids. Use the table above; do not reuse a command across types.
call_tool({"name": "<list tool>", "arguments": {"corporation_id": corporation_id, "search": "<holder name>", "detail": "minimal"}})
Then, for options or RSUs:
call_tool({"name": "<vesting detail tool>", "arguments": {"corporation_id": corporation_id, "grant_id": grant_id}})
For SARs and CBUs, the list-record vested_shares_quantity is the only available signal — there is no per-event detail endpoint yet.
The vesting detail commands return slightly different shapes:
cap_table:get:grant_vesting (options):
total_shares, vested_shares, unvested_sharesgrant_date, cliff_summaryvesting_events[] — each with date, amount, cumulative, has_vestedcap_table:get:rsu_vesting (RSUs):
awarded, vested_shares, unvested_shares, settled, eligible_for_settlementvesting_start_date, vesting_type, primary_vesting_title/descriptionhas_additional_condition, additional_vesting_title/descriptionacceleration_terms, termination_datetranches[] — each with vest_date, awarded, eligible_for_settlement, settled, status, vesting_status, milestone_name, additional_condition_*, vesting_typecap_table:list:grants (and the other list commands) require a real corporation_id. Never pass a company name (e.g. "meetly") as corporation_id — it is not an ID and the call will fail.
If you only have a company name, resolve it to a corporation_id before any list/data call:
list_accounts({"search": "<company name>"}) # narrow to the matching account(s)
# Each account's `id` is shaped `corporation_pk:<numeric id>`. Extract that numeric
# id — it is the `corporation_id` every cap_table tool needs.
# If several accounts share a similar name, call AskUserQuestion to disambiguate
# before continuing — never guess which one the user meant.
set_context({...}) # set the active corporation context, if applicable
Calling list_accounts with no search returns the full account list; on a multi-company instance that risks matching the wrong account, so always pass the name. Carry the resolved corporation_id into every subsequent cap_table__* call. Only once it is resolved do you proceed to Step 1.
If grant_id is already known from prior conversation context (e.g. the user just viewed a grants list), skip directly to Step 2.
Otherwise, pick the list command based on grant type and search:
cap_table:list:grants first (options are most common). If the holder is not found, try list:rsus, then list:sars, then list:cbus. Do not conclude vesting data is unavailable until all four have been checked.call_tool({"name": "<list tool>", "arguments": {"corporation_id": corporation_id, "search": "<holder name>", "detail": "minimal"}})
If multiple grants are returned, ask the user which one, or pick the most relevant based on context.
If the user asks about "all grants", "each grant", multiple grants, or every grant for a holder, do NOT fan out to one cap_table:get:grant_vesting (or rsu_vesting) call per grant. A holder or company can have dozens-to-hundreds of grants, and N detail fetches is slow and wasteful. Instead:
vested/unvested/quantity signals) and present that summary table.Only fetch the per-grant vesting detail (Step 2) once the user has narrowed to a specific grant.
Pick the detail command based on grant type:
call_tool({"name": "cap_table__get__grant_vesting", "arguments": {"corporation_id": ..., "grant_id": ...}})call_tool({"name": "cap_table__get__rsu_vesting", "arguments": {"corporation_id": ..., "grant_id": ...}})vested_shares_quantity and quantity fields and surface what's available.Lead with a one-sentence plain-English summary before showing the table (see Presentation section).
Required inputs: corporation_id, grant_id, and grant type (options, RSU, SAR, or CBU).
If you only have a company name, resolve it to a corporation_id first (Step 0) — never pass a name string as corporation_id.
If grant type is missing or ambiguous, call AskUserQuestion before proceeding (see carta-interaction-reference §4.1).
If grant_id is unknown, use Step 1 of the Workflow to search by holder name.
AI computation: No — this skill presents Carta data directly.
Format: Summary sentence + vesting events / tranches table
BLUF lead: Lead with a one-sentence plain-English summary of the vesting state before showing the table.
Sort order: By vesting date ascending (chronological).
Date format: MMM d, yyyy (e.g. "Jan 15, 2026").
Tailor the summary based on vesting state:
Format as the vesting events / tranches table returned by the tool, sorted by vesting date ascending (chronological).
Flag anything time-sensitive:
grant_expiration_date < today AND vested_shares > exercised_shares, flag it prominently — the holder has vested-but-expired-unexercised shares that may already be forfeited. This is distinct from (and more urgent than) the "expiring soon" flag above, which warns about a future date; here the window has already closed.eligible_for_settlement exceeds settled, note how many shares are awaiting settlement and flag if a termination_date is imminent — RSUs typically have a hard window to settle after termination.Then show the formatted table from the tool.
grant_id is required and must be resolved first — if the user provides a name, search the appropriate list command (see Data Retrieval) to find the matching ID before fetching vesting data.cap_table:list:grants excludes RSUs, SARs, and CBUs. A "not found" result there does not mean the grant has no vesting data — check the other three list commands.cap_table:get:grant_vesting is options-only and returns 500 for RSU/SAR/CBU grant ids. Always route by grant type; do not pass an RSU id to it.vested_shares_quantity and quantity are the only reliable signals — say so plainly rather than fabricating tranche detail.npx claudepluginhub carta/plugins --plugin carta-cap-tableGenerates customized cap table reports from Carta data — grants, SAFEs, stakeholders, vesting schedules, round history, and more. Supports filtering, sorting, and formatting without SQL.
Designs or audits equity compensation plans (stock options, RSUs) for startups and growth-stage companies, covering tax, accounting, and governance requirements.
Queries Carta Web / Fund Admin data warehouse for investors data: fund metrics (NAV, TVPI, DPI, IRR, MOIC), cash flows, balance sheets, cap tables, ownership, valuations. Default skill for investor data queries over other Carta skills.