📅carta-grant-vesting
- プラグイン
- carta-cap-table
- ソース
- GitHub で見る ↗
説明
特定の1件のグラントまたはホルダーに対するベスティングスケジュールを取得します。 対象はオプション(ISO/NSO)、RSU、SAR、CBU です。 次のような場合に使用: 「[名前]のベスト済み株数を知りたい」「[名前]のクリフはいつか」「[名前]のベスティング進捗状況」「クリフ日程」「決済(セトルメント)」「未ベスト株式」などの照会。 ポートフォリオ全体や全従業員を対象とした集計ベスティングには使用しないでください。
原文を表示
Fetch the vesting schedule for ONE specific grant or holder — options (ISO/NSO), RSUs, SARs, or CBUs. Use for "how much has [name] vested", "when does [name]'s cliff hit", "vesting progress for [name]", cliff dates, settlement, or unvested shares. NOT for portfolio-level / all-employees aggregate vesting.
ユースケース
- ✓特定の従業員のベスト済み株数を確認する
- ✓ベスティングのクリフ日程を調べる
- ✓個別のベスティング進捗状況を確認する
- ✓未ベスト株式の状況を照会する
本文(日本語訳)
付与ベスティングデータ
付与(グラント)のベスティングスケジュール全体を取得し、オプション・RSU・SAR・CBU のいずれかに対して、生のテーブルだけでなく有用なコンテキストとともに提示します。
次のような場合に使用
単一のグラントまたは保有者にスコープされたベスティングに関する質問に、このスキルを使用します:
- 「このグラントのベスティングスケジュールは?」
- 「クリフはいつ到来しますか?」 / 「Jane のクリフはいつですか?」
- 「Jane はどのくらいベストしましたか?」 / 「Jane についてこれまでにベストした株数は?」
- 「Jane のベスティング進捗を表示してください」 / 「Jane のグラントはどのくらい進んでいますか?」
- 「これまでにベストした株数は?」
- 「Jane のオプションのベスティング進捗を表示してください」
- 「Jane の RSU グラントのベスティングスケジュールを表示してください」
- 「決済対象の株数は?」
- 「未ベスト株はいくつ残っていますか?」
- 「このグラントが完全にベストするのはいつですか?」
言い換え表現(意図は同じだが異なる言葉を使用しているケース — すべて単一グラント/保有者のベスティングに対応):
- 「Jane の株式支払いスケジュールは?」 → ベスティングスケジュール
- 「Jane が実際に株式を所有するのはいつ?」 / 「このグラントが実際に確定するのはいつ?」 → ベスティング / ベスト時期
- 「Jane がこれまでに権利を持つ株数は?」 → ベスト済み株式
- 「Jane のグラントでまだロックされている分は?」 → 未ベスト株式
ポートフォリオレベル / 全従業員の集計ベスティングには使用しないでください。 このスキルは 1 名または 1 グラントにスコープされます(「〇〇の」「このグラントの」「グラント番号〇〇の」など)。「私の従業員のエクイティのうちどのくらいがベストしたか」や「オプションプール全体でのベスト済み合計」といった質問はポートフォリオレベルであり、ステークホルダー / ポートフォリオ / 所有権スキルに委ねてください。 リクエストが複数のグラントにまたがる場合は、何もフェッチする前にワークフロー内の「複数グラント」ブランチを参照してください。
前提条件
以下が必要です:
corporation_id— 持っていない場合はlist_accountsから取得grant_id— 対象グラントタイプのリストコマンドで特定(下記参照)- グラントタイプ — 適切なリストコマンドおよびデタイルコマンドを選択するために必須。
明示されていない場合は、ユーザーの表現から推測します(「options」「ISO」「NSO」→ オプション; 「RSU」; 「SAR」; 「CBU」)。
それでも不明な場合は、検索を行う前に
AskUserQuestionで確認してください。
データ取得
ゲートウェイはリストコマンドに対してデフォルトで
detail=summaryを使用します。このスキルは個別レコードを必要とするため、"detail": "minimal"を明示的に指定します。
ベスティング詳細には 2 つのエンドポイントがあり、互換性はありません:
| グラントタイプ | リストコマンド | ベスティング詳細コマンド |
|---|---|---|
| オプション (ISO/NSO) | cap_table:list:grants |
cap_table:get:grant_vesting |
| RSU | cap_table:list:rsus |
cap_table:get:rsu_vesting |
| SAR | cap_table:list:sars |
(なし — 注意事項を参照) |
| CBU | cap_table:list:cbus |
(なし — 注意事項を参照) |
重要: cap_table:get:grant_vesting はオプション専用であり、RSU / SAR / CBU の ID に対して 500 エラーを返します。
上記のテーブルに従い、コマンドをタイプ間で使いまわさないでください。
call_tool({"name": "<list tool>", "arguments": {"corporation_id": corporation_id, "search": "<holder name>", "detail": "minimal"}})
オプションまたは RSU の場合は続けて:
call_tool({"name": "<vesting detail tool>", "arguments": {"corporation_id": corporation_id, "grant_id": grant_id}})
SAR および CBU については、リストレコードの vested_shares_quantity が唯一取得可能な情報です — イベント単位の詳細エンドポイントは現時点では存在しません。
主要フィールド
ベスティング詳細コマンドが返すデータ構造は以下のとおりです:
cap_table:get:grant_vesting(オプション):
total_shares,vested_shares,unvested_sharesgrant_date,cliff_summaryvesting_events[]— 各イベントにdate,amount,cumulative,has_vested
cap_table:get:rsu_vesting(RSU):
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[]— 各トランシェにvest_date,awarded,eligible_for_settlement,settled,status,vesting_status,milestone_name,additional_condition_*,vesting_type
ワークフロー
ステップ 0 — 最初に Corporation を解決する
cap_table:list:grants(およびその他のリストコマンド)には有効な corporation_id が必要です。
会社名(例: "meetly")を corporation_id として渡してはいけません — これは ID ではなく、呼び出しは失敗します。
会社名しかわからない場合は、リスト / データ呼び出しの前に corporation_id を解決してください:
list_accounts({"search": "<company name>"}) # 一致するアカウントに絞り込む
# 各アカウントの `id` は `corporation_pk:<numeric id>` の形式です。
# その数値 id を取得します — これがすべての cap_table ツールで必要な `corporation_id` です。
# 類似した名前のアカウントが複数ある場合は、AskUserQuestion で
# どれか確認してから続けてください — 推測して選ばないでください。
set_context({...}) # 有効な corporation コンテキストを設定(該当する場合)
search なしで list_accounts を呼び出すと全アカウントリストが返されますが、
マルチカンパニー環境では誤ったアカウントに一致するリスクがあるため、常に名前を渡してください。
解決した corporation_id は以降のすべての cap_table__* 呼び出しで使用します。
解決が完了してはじめてステップ 1 に進みます。
ステップ 1 — グラントを特定する
grant_id が過去の会話コンテキストから既に判明している場合(例: ユーザーが直前にグラントリストを参照していた場合)は、ステップ 2 に直接スキップします。
それ以外の場合は、グラントタイプに基づいてリストコマンドを選択し、検索します:
- ユーザーがタイプを明示している場合(例: 「Jane の RSU」「その SAR」): 上記テーブルの対応するリストコマンドを使用します。
- タイプが不明な場合: まず
cap_table:list:grants(オプションが最も一般的)を試します。保有者が見つからない場合はlist:rsus、次にlist:sars、次にlist:cbusの順で試します。4 つすべてを確認するまでベスティングデータが存在しないと結論づけないでください。
call_tool({"name": "<list tool>", "arguments": {"corporation_id": corporation_id, "search": "<holder name>", "detail": "minimal"}})
複数のグラントが返された場合は、ユーザーにどれかを尋ねるか、コンテキストに基づいて最も関連性の高いものを選択します。
ブランチ — 「全グラント」/ 複数グラント
ユーザーが 「全グラント」、「各グラント」、複数のグラント、または保有者のすべてのグラントについて尋ねる場合、cap_table:get:grant_vesting(または rsu_vesting)の呼び出しをグラントごとにファンアウトしないでください。
1 人の保有者または会社が数十から数百のグラントを持つ可能性があり、N 件の詳細フェッチは低速かつ非効率です。
代わりに:
- グラントを 1 回リストし(サマリーリストにはすでに
vested/unvested/quantityの情報が含まれています)、そのサマリーテーブルを提示します。 - ユーザーに特定のグラントに絞り込むよう依頼するか、またはサマリー合計(グラントごと — 通貨をまたいで合計しないこと)を提示して、単一グラントのイベントレベルのスケジュールへのドリルダウンを提案します。
ステップ 2 のグラント単位のベスティング詳細のフェッチは、ユーザーが特定のグラントに絞り込んでからのみ行います。
ステップ 2 — ベスティングデータを取得する
グラントタイプに基づいて詳細コマンドを選択します:
- オプション (ISO/NSO) →
call_tool({"name": "cap_table__get__grant_vesting", "arguments": {"corporation_id": ..., "grant_id": ...}}) - RSU →
call_tool({"name": "cap_table__get__rsu_vesting", "arguments": {"corporation_id": ..., "grant_id": ...}}) - SAR / CBU → 詳細エンドポイントなし。リストレコードの
vested_shares_quantityフィールドとquantityフィールドを使用し、取得可能な情報を提示します。
ステップ 3 — コンテキストとともに提示する
テーブルを表示する前に、平易な英語の 1 文要約を先頭に置きます(プレゼンテーションのセクションを参照)。
ゲート
必須入力: corporation_id、grant_id、グラントタイプ(オプション / RSU / SAR / CBU)。
会社名しかない場合は、先にそれを corporation_id に解決してください(ステップ 0)— 名前文字列を corporation_id として渡さないでください。
グラントタイプが不明または曖昧な場合は、処理を進める前に AskUserQuestion を呼び出してください(carta-interaction-reference §4.1 参照)。
grant_id が不明な場合は、ワークフローのステップ 1 を使用して保有者名で検索してください。
AI による計算: なし — このスキルは Carta のデータをそのまま提示します。
プレゼンテーション
フォーマット: 要約文 + ベスティングイベント / トランシェテーブル
BLUF リード: テーブルを表示する前に、ベスティング状態を平易な言葉で表した 1 文の要約を冒頭に置きます。
並び順: ベスティング日の昇順(時系列)。
日付フォーマット: MMM d, yyyy(例: "Jan 15, 2026")。
ベスティング状態に応じて要約を調整します:
- クリフ前: クリフまでの期間と、クリフ時にベストする株数
- 部分的にベスト済み: ベスト済みの割合、継続的なベスティングのペース(月次 / 四半期)、完全ベスト予定日
- 完全ベスト済み: その旨を確認し、未行使の株式(オプション / SAR)または未決済の株式(RSU / CBU)が残っている場合はその旨を記載
ベスティングイベント / トランシェテーブルとして、ツールが返したデータをベスティング日の昇順(時系列)で整形します。
時間的に重要な事項があればフラグを立てます:
- クリフ日が今後 90 日以内
- グラントの有効期限が近い
- 有効期限切れのグラントで没収リスクあり(オプション / SAR):
grant_expiration_date < 今日かつvested_shares > exercised_sharesの場合、目立つ形でフラグを立てます — 保有者
原文(English)を表示
<!-- Part of the official Carta AI Agent Plugin -->
Grant Vesting Data
Fetch the full vesting schedule for a grant — options, RSUs, SARs, or CBUs — and present it with useful context, not just the raw table.
When to Use
Use this skill for vesting questions scoped to a single grant or holder:
- "What's the vesting schedule for this grant?"
- "When does the cliff hit?" / "When does Jane's cliff hit?"
- "How much has Jane vested?" / "How many shares are vested so far for Jane?"
- "Show vesting progress for Jane" / "How far along is Jane's grant?"
- "How many shares have vested so far?"
- "Show vesting progress for Jane's options"
- "Show the vesting schedule for Jane's RSU grant"
- "How many shares are eligible for settlement?"
- "How many unvested shares remain?"
- "When is this grant fully vested?"
Wrong-vocab synonyms (same intent, different words — all map to vesting for a single grant/holder):
- "What's Jane's stock payment schedule?" → vesting schedule
- "When does Jane actually own her stock?" / "When does this grant actually own out?" → vesting / when vested
- "How many shares does Jane have rights to so far?" → vested shares
- "How much of Jane's grant is still locked up?" → unvested shares
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.
Prerequisites
You need:
corporation_id— get fromlist_accountsif you don't have itgrant_id— identify via the list command for the relevant grant type (see below)- Grant type — required to pick the right list and detail commands. If unstated, infer from the user's wording ("options", "ISO", "NSO" → options; "RSU"; "SAR"; "CBU"). If still unclear, ask via
AskUserQuestionbefore searching.
Data Retrieval
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.
Key Fields
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 withdate,amount,cumulative,has_vested
cap_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 withvest_date,awarded,eligible_for_settlement,settled,status,vesting_status,milestone_name,additional_condition_*,vesting_type
Workflow
Step 0 — Resolve the Corporation First
cap_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.
Step 1 — Identify the Grant
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:
- Type stated by the user (e.g. "Jane's RSU", "the SAR"): use the matching list command from the table above.
- Type unknown: try
cap_table:list:grantsfirst (options are most common). If the holder is not found, trylist:rsus, thenlist:sars, thenlist: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.
Branch — "All grants" / multiple grants
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:
- List the grants once (the summary list already includes
vested/unvested/quantitysignals) and present that summary table. - Either ask the user to narrow to a specific grant before pulling the full vesting detail, or present the summary totals (per grant, never summing across currencies) and offer to drill into a single grant's event-level schedule.
Only fetch the per-grant vesting detail (Step 2) once the user has narrowed to a specific grant.
Step 2 — Fetch Vesting Data
Pick the detail command based on grant type:
- Options (ISO/NSO) →
call_tool({"name": "cap_table__get__grant_vesting", "arguments": {"corporation_id": ..., "grant_id": ...}}) - RSUs →
call_tool({"name": "cap_table__get__rsu_vesting", "arguments": {"corporation_id": ..., "grant_id": ...}}) - SARs / CBUs → no detail endpoint; use the list record's
vested_shares_quantityandquantityfields and surface what's available.
Step 3 — Present with Context
Lead with a one-sentence plain-English summary before showing the table (see Presentation section).
Gates
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.
Presentation
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:
- Pre-cliff: how long until the cliff, how many shares vest at cliff
- Partially vested: what % has vested, what the ongoing cadence is (monthly/quarterly), when fully vested
- Fully vested: confirm and note if any shares remain unexercised (options/SARs) or unsettled (RSUs/CBUs)
Format as the vesting events / tranches table returned by the tool, sorted by vesting date ascending (chronological).
Flag anything time-sensitive:
- Cliff date within the next 90 days
- Grant expiring soon
- Already-expired grant with forfeit exposure (options/SARs): if
grant_expiration_date < todayANDvested_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. - Large unvested block concentrated at a future date
- Deep in-the-money grants (options only — ISO/NSO): if the current 409A FMV is available and the spread between exercise price and FMV exceeds 10x, flag it. Note that holders face significant ordinary income (NSO) or AMT (ISO) exposure at exercise, and recommend the company consider a tender offer, early exercise program, or liquidity event planning. Skip this flag for RSUs, SARs, and CBUs.
- RSU settlement window (RSUs only): if
eligible_for_settlementexceedssettled, note how many shares are awaiting settlement and flag if atermination_dateis imminent — RSUs typically have a hard window to settle after termination.
Then show the formatted table from the tool.
Caveats
- The
grant_idis 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:grantsexcludes 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_vestingis options-only and returns 500 for RSU/SAR/CBU grant ids. Always route by grant type; do not pass an RSU id to it.- The exercise-price / 409A FMV spread flag applies to options (ISO/NSO) only. RSUs, SARs, and CBUs do not have an exercise price in the same sense — skip that flag for non-option grants.
- SARs and CBUs do not have a per-event vesting endpoint exposed today. The list record's
vested_shares_quantityandquantityare the only reliable signals — say so plainly rather than fabricating tranche detail. - Vesting schedules reflect the original grant terms; any modifications (e.g., acceleration clauses, leaves of absence) may not be captured in the data.
- The 10x in-the-money flag requires a current 409A FMV — if no valuation data is available, skip the flag rather than guessing.
- Exercised/settled vs. outstanding status may not be reflected in the vesting schedule itself; check grant-level fields for exercise/settlement history.
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。