From carta-investors
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.
How this skill is triggered — by the user, by Claude, or both
Slash command
/carta-investors:carta-explore-dataThis 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 -->
Query the Carta data warehouse for investors data — NAV, performance metrics, cash flow statements, balance sheets, portfolio financials, and more.
This is the skill for Carta Web / Fund Admin data work — the data warehouse. Note that Carta Fund Forecasting (formerly Tactyc) is a separate domain with its own funds and data; when a fund performance question could belong to either system, the fund-performance.md semantic layer will automatically check Fund Forecasting first before running DWH queries.
Firm and the request involves any Carta Web / Fund Admin data query, financial metric, or reporting questioncarta-fund-forecasting for performance metrics (TVPI/DPI/IRR/MOIC/NAV/reserves) of those funds. When the fund system is unknown for a performance query, fund-performance.md probes Fund Forecasting automatically and redirects if the fund is found therecarta-soi's trigger list; carta-soi is for building persistent Cowork artifacts, not answering data questions inlinecarta-portfolio-valuations; that skill is for running and updating valuation projects, not reading datalist_contexts / set_context| Common Questions | Semantic File |
|---|---|
| "What companies do we have in our portfolio?" "List our investments" "Show me all our portfolio companies" | (use fa:list:portfolio_companies) |
| "What's the current NAV for [Fund]?" "Show me TVPI and DPI for all funds" "Show me total contributions and distributions for each LP" | nav.md |
| "What's the IRR for [Fund]?" "Show me fund performance metrics" "What are the fund metrics as of Q4 2024?" "List my funds." "What's the current Net IRR and TVPI of [Fund]?" "How many planned reserves are left to deploy in [Fund]?" "Show called capital per quarter for [Fund] over the last 3 years." | fund-performance.md |
| "What journal entries were posted for [Fund] last quarter?" "Show me all cash flows this quarter" "What were our LP contributions and distributions last year?" | cash-flows.md |
| "List all LP investors in [Fund] with their commitments" "Show each LP's capital-account balance" "Run a partner rollforward for [Fund]" "How many LPs does [Fund] have?" | partner-data.md |
| "Build a balance sheet for Fund III as of December 31" "Show me assets, liabilities, and partners' capital for our funds" | balance-sheet.md |
| "Show me the cap table for [Company]" "What's our ownership in [Portfolio Company]?" "What share classes does [Company] have?" "What's our fully diluted stake in [Company]?" "List shareholders for [Company]" "Who are the shareholders of [Company]?" "Show me the shareholder list" "Who owns [Company]?" "Show me the financing rounds for [Company]" "How much has [Company] raised / what's its post-money?" | cap-table.md |
| "Show me 409a valuation history for [Company]" "What's the fair market value / FMV for [Company]?" | valuations.md |
| "Show me new investments made in [year]" "Which investments have the highest MOIC?" "Which portfolio companies have the highest MOIC?" "Which portfolio companies in [Fund] have the highest MOIC?" "Break down [Fund]'s investments by entry round." | investments.md |
| "Show me revenue and KPIs for [portfolio company]" "What are the financials for [portfolio company]?" | company-financials.md |
The user must have the Carta MCP server connected. If this is the first query in the session:
list_contexts to see which firms are accessibleset_context with the target firm_id if neededCORPORATION_ID from CORPORATION_BASIC_INFO_V2 first (see Step 1 table below)Firm context — tool priority rule: When the active context is a Firm, prefer
fa:*MCP commands over raw DWH queries. These commands are purpose-built for investor-facing data and return cleaner, pre-aggregated results. Fall back todwh:execute:queryonly when nofa:*command covers the requested data.Never call
cap_table:*orcap_table_chartin firm context. Those MCP commands require a direct cap-table-tenant user role and reject UUID-only corporation IDs — most portcos surfaced byfa:list:portfolio_companiesare exposed via the investor portal, not as direct tenant members, so these calls will fail. If a DWH query returns no useful result for a cap-table prompt, tell the user the data is not available rather than retrying withcap_table:*. Seesemantic-layer/cap-table.mdfor the full routing rationale and the DWH queries to use instead.
Prerequisite: Complete the session setup above (
list_contexts/set_context) before this step.fa:list:portfolio_companiesrequires an active firm context and will return an empty list if none is set.
After setting context, always fetch the list of portfolio companies the user has access to:
call_tool({"name": "fa__list__portfolio_companies", "arguments": {}})
This call is required even if the user named a specific company — it establishes which companies are accessible in the current firm context and provides the corporation_id values needed for cap table queries. Do not skip this step.
list_contexts to diagnose.corporation_id for that company before continuing to Step 2.Use this table to pick the right context file before running any query:
| User is asking about | Context file to read | Primary table / tool |
|---|---|---|
| Available investments or list of portfolio companies | — | call_tool({"name": "fa__list__portfolio_companies", "arguments": {}}) (already run in Step 0) |
| Current NAV, TVPI, DPI, MOIC, cumulative LP contributions/distributions | nav.md | MONTHLY_NAV_CALCULATIONS |
| Fund performance — IRR, DPI, TVPI, dry powder, expense breakdown | fund-performance.md | AGGREGATE_FUND_METRICS |
| Cash flows in a period (contributions, distributions, fees, expenses) | cash-flows.md | JOURNAL_ENTRIES grouped by event_type |
| Balance sheet (assets, liabilities, partners' capital) | balance-sheet.md | JOURNAL_ENTRIES summed by account_type |
| Cap table — share classes, ownership %, firm stake, fully-diluted ownership, shareholders / stakeholders / who-owns prompts (cap-table.md explains the firm-context limitation for shareholder-level data) | cap-table.md | SUMMARY_CAP_TABLE, FUND_CORPORATION_OWNERSHIP (firm context required) |
| 409a valuations, fair market value, FMV, common stock price | valuations.md | IRC409A_VALUE |
| Investments — cost basis, FMV, MOIC, activity by year, unrealized gain/loss | investments.md | AGGREGATE_INVESTMENTS, AGGREGATE_INVESTMENTS_HISTORY (point-in-time) |
| Per-LP/GP data — commitments, contributions, capital accounts, partner rollforward, LP count | partner-data.md | PARTNER_DATA, PARTNER_MONTHLY_NAV_CALCULATIONS |
| Portfolio company financials — revenue, ARR, headcount, KPIs | company-financials.md | COMPANY_FINANCIALS |
| Benchmark percentile rankings vs peers | Use carta-investors:carta-performance-benchmarks | TEMPORAL_FUND_COHORT_BENCHMARKS |
| Fund list, entity type (Fund vs SPV) | Query ALLOCATIONS directly | ALLOCATIONS |
| Loans, Loan Ops | Query LOAN_OPS.LOAN directly | LOAN_OPS.LOAN |
Read the matching file from ${CLAUDE_PLUGIN_ROOT}/skills/carta-explore-data/semantic-layer/<domain>.md:
The file contains the SQL query, column reference, and presentation rules for that domain. Follow them exactly.
Cap table prerequisite check — before loading
cap-table.md, verify:
- The MCP context is set to a firm (not a fund or LP). Call
list_contextsif unsure.- A
CORPORATION_UUIDis available. If the user named a company, resolve it fromCORPORATION_BASIC_INFO_V2— match by name, UUID, or integer ID depending on what the user supplied:If multiple matches are found, use-- CORPORATION_BASIC_INFO_V2.CORPORATION_ID is INTEGER. SUMMARY_CAP_TABLE / FUND_CORPORATION_OWNERSHIP -- match on UUID (TEXT). Pass CORPORATION_UUID — never CORPORATION_ID — to cap-table.md queries. SELECT DISTINCT CORPORATION_ID AS corporation_integer_id, CORPORATION_UUID, CORPORATION_NAME FROM FUND_ADMIN.CORPORATION_BASIC_INFO_V2 WHERE LOWER(CORPORATION_NAME) LIKE '%<user-supplied name>%' OR CORPORATION_UUID = '<user-supplied uuid>' OR CORPORATION_ID = <user-supplied integer id> LIMIT 10AskUserQuestionto confirm which one before continuing.
call_tool({"name": "fa__list__saved_queries", "arguments": {}}) to get a list of existing questions and descriptions saved on the Data Warehouse. Use call_tool({"name": "fa__get__saved_query", "arguments": {"name": "<query_name>"}}) to retrieve the SQL of a matching saved query, where <query_name> is the name field returned by fa__list__saved_queries.Before executing — resolve uncertainty first
If the semantic domain or target table is not yet clear:
- Unclear intent — ask immediately. If the user's request is simple, ambiguous, or contains a term that doesn't map to any known domain, table, or Carta concept in the Step 1 table, immediately call
AskUserQuestionwith focused options to resolve the ambiguity. Do not respond in prose first — go straight toAskUserQuestion.- Inspect the schema. Use
call_tool({"name": "dwh__get__table_schema", ...})on any plausible table before referencing it in a query.- Ask up to 2 clarifying questions. If, after checking saved queries (Step 2) and schema inspection, you still cannot identify the right table or domain, use
AskUserQuestionto ask the user at most 2 focused questions that will resolve the ambiguity — e.g. fund-level vs company-level, metric type, entity name. After receiving answers, re-run Steps 1–2 before querying.Never assume a table name or domain. Guessing produces incorrect or empty results.
Use the MCP commands in sequence:
call_tool({"name": "dwh__list__tables", "arguments": {"schema": "FUND_ADMIN"}})call_tool({"name": "dwh__get__table_schema", "arguments": {"table_name": "<TABLE>", "schema": "FUND_ADMIN"}})call_tool({"name": "dwh__execute__query", "arguments": {"sql": "..."}})** Schema: ** Use the schema matching the domain identified in Step 1. For most queries use FUND_ADMIN. For Loan Ops queries, use LOAN_OPS instead of FUND_ADMIN in every command above.
Output format: Present results as a markdown table. Use fund or company names as row headers — never raw UUIDs. Currency values use $X,XXX format with commas; percentages use X.XX%. Bold totals and summary rows.
LIMIT 200; use 50–500 for aggregationsINFORMATION_SCHEMA — it is not supported in this data warehouse; use the semantic layer files and call_tool({"name": "dwh__list__tables", ...}) / call_tool({"name": "dwh__get__table_schema", ...}) insteadeffective_date for JOURNAL_ENTRIES; month_end_date for MONTHLY_NAV_CALCULATIONS; investment_date for AGGREGATE_INVESTMENTSMONTHLY_NAV_CALCULATIONS and AGGREGATE_FUND_METRICS, use QUALIFY ROW_NUMBER() OVER (PARTITION BY fund_uuid ORDER BY last_refreshed_at DESC) = 1GROUP BY fund_uuid with MAX(fund_name) when using it for fund metadataEach semantic file's ## Presentation section is the source of truth for its domain. When a semantic file does not specify, fall back to these defaults:
$X,XXX with commas; negatives/outflows in parentheses ($X,XXX); bold totals **$X,XXX**X.XX%X.XXx (e.g. MOIC, TVPI, DPI)— rather than 0 or null to avoid implying a real zero| Acronym | Definition |
|---|---|
| NAV | Net Asset Value |
| TVPI | Total Value to Paid-In |
| DPI | Distributions to Paid-In |
| IRR | Internal Rate of Return |
| MOIC | Multiple on Invested Capital |
| FMV | Fair Market Value |
npx claudepluginhub anthropics/claude-plugins-official --plugin carta-investorsInteractive 5-minute walkthrough of the carta-investors plugin. Covers overview, setup verification, and demos: fundraising benchmarks, LP tear sheets, LP meeting prep. Also handles meta/glossary questions.
Guides Finta workflows for investor updates with Stripe/Mercury metrics, cap table tracking via Carta/Pulley, and LP relationship management post-fundraise.
Generates customized cap table reports from Carta data — grants, SAFEs, stakeholders, vesting schedules, round history, and more. Supports filtering, sorting, and formatting without SQL.