Carta Portfolio Alerts

by carta6ab81016389cNo license14 starsListed Oct 8, 2026Updated Oct 8, 2026Repository updated today

Time-bounded and threshold-bounded risk detection across portfolio companies — finds items that are expiring soon, maturing soon, running low, or otherwise at risk. Surfaces what needs attention now, not what the data looks like in general.

Instructions onlyBusiness & Finance
AI-generated overview

Scans a venture portfolio for time- and threshold-based risk flags such as expiring 409As, maturing notes and low option pools.

What it does
This skill enumerates portfolio companies through Carta account and cap-table tools, then runs four checks per company: 409A valuation expiry, option pool availability, convertible note maturity, and outstanding SAFE exposure. It assigns each finding a severity of critical, warning or info using fixed time and percentage thresholds, and produces a summary dashboard plus a detail table with suggested actions. It also reports companies with missing data and any companies that failed to return results.
When to use it
Use it when asked which portfolio companies have expiring items such as 409As, agreements or exercise windows, or what is maturing in the next N months. It also fits questions about companies running low on option pool or runway, SAFEs nearing a valuation-cap trigger, and portfolio health or red-flag audits. For raw multi-company data without a risk lens, or for statistical norms across the portfolio, other skills are suggested instead.
Requirements
Requires the Carta MCP tools for listing accounts and contexts and calling cap-table tools, plus the AskUserQuestion tool. It needs access to Carta portfolio data and is limited to 20 companies per invocation. It ships no scripts; it is instructions only.
<!-- carta:plugin-version -->

<carta-plugin>carta-cap-table:6.89.2</carta-plugin>

<!-- Part of the official Carta AI Agent Plugin -->

Portfolio Alerts

Scan multiple companies for red flags and compute severity classifications (critical / warning / info).

Prerequisites

No inputs required — this skill loops the full portfolio. Call list_accounts to get all corporation_pk accounts automatically.

Data Retrieval

Portfolio Enumeration

Call list_accounts to get all portfolio companies. Filter to accounts where id starts with corporation_pk:. 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, these are the relevant checks:

  • call_tool({"name": "cap_table__get__409a_valuations", "arguments": {"corporation_id": corporation_id}}) -- 409A expiry check
  • call_tool({"name": "cap_table__get__cap_table_by_share_class", "arguments": {"corporation_id": corporation_id}}) -- option pool check
  • call_tool({"name": "cap_table__get__convertible_notes", "arguments": {"corporation_id": corporation_id}}) -- note maturity check (summary includes maturity.nearest_date)
  • call_tool({"name": "cap_table__list__safes", "arguments": {"corporation_id": corporation_id}}) -- SAFE exposure check

The gateway defaults to detail=summary for list commands. All four commands use summary mode — the convertible notes summary includes a maturity block with nearest_date and total_outstanding_debt for outstanding debt notes.

If the user asks about a specific check only (e.g. "any expiring 409As?"), fetch only the relevant command per company.

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 409A: expiration_date, price, effective_date From cap table option plans: available_ownership, name From convertible notes (summary): maturity.nearest_date, maturity.total_outstanding_debt, by_status, by_type

Workflow

Step 1 — Get Portfolio

Call list_accounts to get all corporation_pk accounts. Extract up to 20 numeric corporation IDs.

Step 2 — Fetch 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 4 checks, issue all 20 fetch calls at once:

call_tool({"name": "cap_table__get__409a_valuations", "arguments": {"corporation_id": 1}})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__safes", "arguments": {"corporation_id": 1}})call_tool({"name": "cap_table__get__409a_valuations", "arguments": {"corporation_id": 2}})call_tool({"name": "cap_table__get__cap_table_by_share_class", "arguments": {"corporation_id": 2}})... (all companies)

If the user asks about a specific check only (e.g. "any expiring 409As?"), issue only the relevant command per company — but still all companies in one response.

Step 3 — Classify Findings

Apply severity thresholds to the results for each company:

1. Expiring 409A Valuations
CheckCriticalWarningInfoRationale
409A expiryNo 409A on file, or expiration_date in the pastexpiration_date within 90 daysexpiration_date within 180 days90 days = standard board reporting cycle; 180 days = early warning for planning

Companies with no 409A data should never be silently skipped — always include them in the output as a distinct category.

2. Low Option Pool
CheckCriticalWarningInfoRationale
Option poolavailable_ownership < 2%available_ownership < 5%available_ownership < 10%5% is industry floor for meaningful hiring capacity; <2% is effectively exhausted
3. SAFEs/Notes Approaching Maturity
CheckCriticalWarningInfoRationale
Note maturitymaturity.nearest_date in the pastmaturity.nearest_date within 90 daysmaturity.nearest_date within 180 days90 days = typical negotiation window for extension or conversion

Use maturity.nearest_date and maturity.total_outstanding_debt from the convertible notes summary. These fields are pre-filtered to outstanding debt notes by the backend.

4. Large Unconverted SAFE Exposure
CheckCriticalWarningInfoRationale
SAFE exposure—total outstanding SAFEs > 20% of last known valuation cap—20% = significant dilution risk at conversion

Sum outstanding SAFE amounts per company.

Step 4 — Present Results

Present a summary dashboard (see Presentation section).

Gates

Required inputs: None — portfolio enumeration is automatic.

AI computation: Yes — severity classifications (critical, warning, info) for 409A expiry, option pool health, note maturity, and SAFE exposure are AI-derived. Trigger the AI computation gate (see carta-interaction-reference §6.2) before outputting any severity classifications or health assessments.

Subagent prohibition: Not applicable.

Presentation

Format: Summary dashboard + detail table

BLUF lead: Lead with the count of companies scanned and the critical/warning/healthy breakdown.

Sort order: Severity (critical first), then urgency (nearest deadline first).

Date format: MMM d, yyyy (e.g. "Jan 15, 2026").

Summary Dashboard

Portfolio Health Check — 12 companies scanned
Critical (2):  - Beta Inc: 409A EXPIRED (expired Jan 14, 2025, 63 days ago)  - Gamma Corp: Option pool at 1.2% available
Warning (3):  - Acme Corp: 409A expires in 37 days (Apr 24, 2025)  - Delta LLC: Convertible note matures in 45 days  - Epsilon Inc: Option pool at 4.1% available
Healthy (7): Alpha, Zeta, Eta, Theta, Iota, Kappa, Lambda

Detail Table (for specific checks)

CompanyIssueSeverityDetailsAction Needed
Beta Inc409A ExpiredCriticalExpired Jan 14, 2025Order new 409A
Acme Corp409A ExpiringWarningExpires Apr 24, 2025 (37 days)Schedule valuation

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 — ask the user to narrow scope if more than 20
  • Some companies may error (permissions, incomplete setup) — skip gracefully and note which failed
  • Always show the scan date and count: "Scanned 12 companies on Mar 18, 2025"

Source and attribution

Source:carta/pluginsinplugins/carta-cap-table/skills/carta-portfolio-alertsat commit6ab8101

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal

More from carta/plugins

Carta Fund Admin Requests

carta

Send work to your Carta Fund Admin team and track it. Opens a request the team reads, acts on, and replies to — the off-ramp for anything no other Carta skill or command can do. TRIGGER: "ask Carta to", "have Carta do", "send this to my fund admin", "ask my fund admin team", "can Carta do this for me", "check on my request", "did Carta reply", "what requests do I have open", "reply to Carta", "follow up on my request", plus ANY action request (create/change/send/restate/reconcile/split/fix) that no other skill or Carta command covers. NOT FOR: reporting a bug or feature request about this plugin (call fa:create:feedback directly); questions answerable from Carta data (use carta-explore-data); capital call reminders to LPs (that is a Carta command, not a Fund Admin request).

Awaiting classification14updated today

Carta Explore Data

carta

Answers Carta Web / Fund Admin investor data questions by querying the Carta data warehouse and formatting results.

Data & Analytics14updated today

Carta Download Tearsheet

carta

Downloads Carta tear sheets for portfolio companies and funds via the Carta MCP server.

Documents & Office14updated today

Update Note

carta

Searches for notes in the Carta CRM and helps the user update deal comments. Use this skill when the user says things like "update a note", "edit note", "update note content", "change a note", or "/update-note". Note: standalone note editing is not available via MCP — notes/comments are attached to deals and updated via the update-deal skill.

Awaiting classification14updated today

Update Investor

carta

Partially updates an existing investor record in the Carta CRM by ID or name.

Business & Finance14updated today

Update Fundraising

carta

Updates an existing fundraising record in the Carta CRM. Use this skill when the user says things like "update a fundraising", "edit fundraising", "update fundraising details", "change fundraising stage", "update fundraising fields", or "/update-fundraising". Accepts a fundraising ID or name (will search if no ID provided). Only the fields explicitly provided are changed — all other fields are left untouched.

Awaiting classification14updated today