v1.4.0 · MCP Protocol
This is a Model Context Protocol server that connects AI assistants like Claude Desktop to Foresight's private markets data and analytics platform. Once connected, you can ask natural-language questions about your funds, portfolio companies, deal flow, and sourcing pipeline — and the assistant will retrieve live data directly from Foresight to answer them.
Typical use cases include:
The tools available to you may vary depending on your licensing agreement.
| Tool | Description |
|---|---|
average | Calculate the average (mean) of an array of numbers |
count | Count the number of items in an array of strings. Returns both total count and distinct count. IMPORTANT: Before using this tool, check if the count is already available in a previous tool response. Maximum 100 items. |
create_fund_scenario | Create a new fund scenario with optional assumptions. Each assumption combines a rule (hold_at_current, exit_at_pct_fmv, exit_at_multiple, exit_at_valuation, write_off) with a scope (specific companyIds, all_without_assumption, or all_without_base_scenario_or_assumption). Exit `value`s are decimal multipliers, NOT percentages (1.0 = 100%, 3.0 = 3×). |
difference | Calculate absolute and percentage differences for pairs of numbers. Returns both absolute difference and percentage change for each pair. |
find_company_fund_metrics_for_fund | Get specific company fund metrics for all companies in a fund. Returns only requested metrics (max 6) for better performance. Use list_company_metrics to discover available metrics, and fund-company custom-field paths (fundCompany.customData.*, discoverable via list_company_info or list_company_metrics) are also accepted and returned per-fund. NOTE: This tool does not support KPI data. If you need KPIs for companies in a fund, first use this tool to get the list of company IDs, then use find_kpis_for_all_companies with those company IDs. |
find_info_for_all_companies | Get specific company info fields across portfolio companies. Returns only requested fields for better performance. Use list_company_info to discover available fields, including non-numeric custom-field paths (customData.*, fundCompany.customData.*). |
find_info_for_all_funds | Get specific fund info fields across all funds. Returns only requested fields (max 6) for better performance. Use list_fund_info to discover available fields. For calculated performance metrics use find_metrics_for_all_funds. |
find_kpis_for_all_companies | Get specific KPIs across portfolio companies. Returns only requested KPIs for better performance. Use list_company_kpis to discover available KPI IDs. |
find_metrics_for_all_companies | Get specific calculated investment metrics across portfolio companies. Returns only requested metrics for better performance. Use list_company_metrics to discover available metrics, including numeric custom-field paths (company.customData.*, fundCompany.customData.*). |
find_metrics_for_all_funds | Get specific fund metrics across all funds. Returns only requested metrics for better performance. Use list_fund_metrics to discover available metrics. |
find_rounds | Query investment rounds across companies and funds, filtered by company, fund, round name, or secondary status. This tool returns all round fields and has no field-selection argument — use get_fund_rounds when you need to select specific fields. roundTypes matches round names by case-insensitive substring. Rounds are curated financing-round records, NOT a complete record of invested capital — secondaries, restructures, and common-stock purchases may have no round, so an empty result does not mean no investment exists. For the full money-in/money-out record, use get_investment_transactions (default) or get_ledger_transactions. |
find_sourcing_company | Find a company by domain/website or by name alone. Name-only searches may return multiple matches. IMPORTANT: When multiple results are returned, always present ALL results to the user with Name | Domain | Location | Industry for disambiguation. Never auto-select. |
get_company_cap_table | Get cap table and ownership data for a company. By default returns only the primary cap table with totals, per-stakeholder ownership, and per-instrument-type summaries (including liquidation preference stack). Use stakeholders to drill into specific shareholders, includeShareClasses for per-share-class detail (waterfall math), or includeAllSources to see every cap table source. |
get_company_commentary | Get performance commentary for a company. By default returns only the most recent entry. |
get_company_fund_metrics | Get per-fund breakdown of calculated investment and financial metrics for a company. Same as get_company_metrics but grouped by fund or fund type. For single company only. Each fund’s fund-company custom data values are also included (per-fund, not rolled up); note this is not available when groupByFundType is true, since fund-type aggregates do not carry per-fund custom data. |
get_company_info | Get info about a company, like identifiers, description, sector, location, people, investment basics, co-investors, and operational details. Customer-specific custom data is also returned here under customData — non-numeric custom fields (text, single/multi-select, dates), including fund-company custom data rolled up across the company’s funds. Numeric custom fields are returned by get_company_metrics instead. Some customers override standard info fields with custom fields, so if a standard field appears missing or empty, look for a similarly named field in customData (and check get_company_metrics for numeric custom fields). Use find_info_for_all_companies for multiple companies, and use list_company_info to discover the available standard and custom fields. |
get_company_investment_thesis | Get the investment thesis for a company. By default returns only the most recent entry. |
get_company_kpis | Get financial and operational KPIs reported by the company. Use find_kpis_for_all_companies for multiple companies, or get_company_kpis_history for values over time. |
get_company_kpis_history | Time-series history of specific KPIs — the same KPIs get_company_kpis returns as a point-in-time snapshot. Use list_company_kpis to find KPI IDs. |
get_company_metrics | Get calculated investment and financial metrics for a company, like MOIC, IRR, ownership, valuations. Customer-specific numeric custom fields are also included here — company-level and fund-company-level (rolled up across the company’s funds). Non-numeric custom fields are returned by get_company_info instead. Use find_metrics_for_all_companies for multiple companies. |
get_company_notes | Get published notes linked to a company, most recent first. Returns title, body, and tags for each note. |
get_company_rounds | Get the investment rounds recorded in the round tracker for a company (both rounds your funds participated in and known outside rounds), with valuation, ownership, and performance data. This reflects rounds recorded in Foresight, not necessarily the company's complete financing history, and is NOT a complete record of invested capital — secondaries, restructures, and common-stock purchases may have no round. For the full money-in/money-out record or per-fund-entity amounts, use get_investment_transactions (default) or get_ledger_transactions. |
get_company_securities | Get a company's holdings broken down by fund and security type, with total cost, fair market value (FMV), and realized value for each. This is the Ledger grouped by Security: one row per security (e.g. "Series B-1 Preferred Shares", "Convertible Note", "Warrants") within each fund. Use this to answer "by fund, by security type, how much cost and FMV" questions. For per-share-class waterfall detail (seniority, liquidation preferences) use get_company_cap_table instead. |
get_deal_lead_companies | Get companies grouped by their deal lead (investment partner). Returns list of deal leads with their associated companies. By default groups by the built-in dealLeadId. Pass customDealLeadField to group by a custom data field instead — useful when a customer tracks deal leads in a custom field rather than the standard one. |
get_deal_lead_metrics | Get aggregated performance metrics for deal leads (partners). Returns IRR, MOIC, DPI, TVPI, RVPI, investment amounts, and company counts grouped by partner. By default groups by the built-in dealLeadId. Pass customDealLeadField to group by a custom data field instead — useful when a customer tracks deal leads in a custom field rather than the standard one. |
get_fund_company_scenarios | Get all financial modeling scenarios for portfolio companies in a fund. Returns scenarios across all users and visibilities (Public, Private, Team). Optional cases filter (Base/Downside/Upside) accepts an array; multiple values are OR-combined (any match). Omit cases to return all. |
get_fund_info | Get descriptive info and terms for a single fund, like legal name, type, vintage, strategy, key dates, currency, general partners, commitments, and waterfall economics. These are the fund's own attributes, not calculated performance — for IRR, DPI, TVPI, and cash flows use get_fund_metrics. The waterfall economics fields here are profile fields and are often blank; the tiers configured on the fund's Waterfall tab (get_fund_waterfall_config) are the authoritative carry terms when present. Use find_info_for_all_funds for multiple funds and list_fund_info to discover available fields. |
get_fund_metrics | Get fund performance metrics for a single fund. Returns IRR, DPI, TVPI, RVPI, cash flows, and active company counts. Use find_metrics_for_all_funds for multiple funds. |
get_fund_rounds | Get all investment rounds where a specific fund participated. Rounds are curated financing-round records, NOT a complete record of invested capital — secondaries, restructures, and common-stock purchases may have no round. For the full money-in/money-out record, use get_investment_transactions (default) or get_ledger_transactions. To itemize a fund's actual transactions, use find_company_fund_metrics_for_fund to find the fund's companies, then get_investment_transactions per company. |
get_fund_waterfall_config | Get the distribution waterfall configured on a fund's Waterfall tab: the ordered tiers that split proceeds between LP, GP, SLP, and carry (e.g. return of capital, preferred return, GP catch-up, carried-interest split). When tiers are configured they are the fund's authoritative carry and distribution terms, and they take precedence over the waterfall economics fields in get_fund_info (hurdle, catch-up, and split percentages there are often blank or stale). Each tier has orderNumber, tierName, and the formula text per class (lpFormula, gpFormula, slpFormula, carryFormula; null when the class takes nothing in that tier) in which the split percentages and hurdle/target multiples are written, for example a tier allocating 80% to LP and 20% to carry until LPs reach 250% of contributions. The splits and targets come from that text, so the tiers can be explained as LPA terms. Also returns proceedsFormulas (how total and per-class proceeds entering the waterfall are computed) and configured: false when the fund has no tiers set up. For what those tiers currently allocate, use get_fund_waterfall_results. |
get_fund_waterfall_results | Get the LP/GP/SLP allocations a fund's configured waterfall produces from the fund's actual metrics as of a date. These are the fund's authoritative carry figures when its waterfall is configured. Returns `tiers` (per tier: orderNumber, tierName, available = proceeds entering the tier, lp, gp, slp, carry, remaining) and `totals`: totalProceeds; lpAllocated, gpAllocated, slpAllocated (cumulative allocation per class across tiers, excluding a trailing NAV-adjustment tier such as "Distributions Returned"); carryAllocated (sum of the carry column on the same tiers — the carried interest; null, with `message` explaining why, when the last tier's name can't be read to tell whether it is a NAV adjustment); and lpNav, gpNav, slpNav (residual NAV per class after every tier). gpAllocated is GP allocation by tier (the gp and carry columns together), so it can include the GP's own capital and preferred return, not only carry; quote carryAllocated for carry. Results reflect the fund as it stands, not a hypothetical exit: for carry at an assumed exit multiple, apply the tier terms from get_fund_waterfall_config to the assumed proceeds, or run a fund scenario. Returns configured: false with a message when no tiers are set up, and `message` when a tier formula failed to calculate. |
get_investment_transactions | Investor / deal-team view of a company's transactions (the Transactions tab). Rows speak app-transaction language — Buy, Sell, Note Issuance, SAFE, Secondary Purchase — where one row is roughly one investment decision, with deal attributes (coupon, maturity, valuation cap/discount, exit terms, acquirer). Computed live. Use get_ledger_transactions for the finance/fund-accounting (Investran ledger) view instead. |
get_ledger_transactions | Finance / fund-accounting view of a company's transactions (the Ledger tab). Rows speak Investran ledger language — Investment - Cost, Cash In, Escrow, Realized Gain, Mark-to-Market — where one economic event may decompose into several entries, with the columns finance teams reconcile (FMV, Realized Value, PPS). Served from metric snapshots, so it may lag recent edits until a metrics recalc. Use get_investment_transactions for the investor/deal-team (app-transaction) view instead. |
get_sourcing_company | Get detailed enriched company profile. |
health_check | Check MCP server and Foresight API health status. Reports overall status, server version, uptime, and Foresight API reachability. |
list_company_info | List all available company info fields that can be requested, like identifiers, description, sector, location, people, investment basics, co-investors, and operational details. Non-numeric custom data fields configured by the customer are also listed here under customData.* (company-level) and fundCompany.customData.* (fund-company-level) paths. Numeric custom fields are listed by list_company_metrics instead. Some customers override standard info fields with custom fields, so when a standard field is unavailable or empty, look for a similarly named custom field (and check list_company_metrics for numeric custom fields). |
list_company_kpis | List all available KPIs that can be requested: financial and operational KPIs reported by the companies |
list_company_metrics | List all available calculated investment and financial metrics that can be requested like MOIC, IRR, ownership, valuations. Numeric customer custom fields (company-level under company.customData.* and fund-company-level under fundCompany.customData.*) are also listed here. |
list_fund_info | List all available fund info fields that can be requested — the fund's own descriptive attributes and terms (identity, vintage, strategy, dates, currency, general partners, commitments, waterfall economics). For calculated performance metrics (IRR, DPI, TVPI, cash flows) use list_fund_metrics instead. |
list_fund_metrics | List all available fund metrics that can be requested |
list_funds | List all funds with id, name, and aliases. |
list_portfolio_companies | List all portfolio companies with just id and name. |
list_round_fields | List all available fields on investment round objects for discovery and filtering. Use this to understand what data is available before querying rounds. |
run_fund_scenario | Execute the fund scenario runner (historical actuals + projected future events from company-level scenarios and assumptions) and return the canonical fund-reporting metrics in a `reporting` block (when produced by the runner): gross MOIC and IRR, plus LP net-of-fees-and-carry IRR, TVPI, DPI, and RVPI computed over LP paid-in capital (NVPI is null pending product definition). These LP-net metrics are the figures to report for net performance — they differ from the recycling-adjusted netMoic/netTotalValue concept. Also returns `baseline` (the fund held at current, with no projections) and `delta` (scenario − baseline, per field), both in the gross-metric shape (irr, moic, tvpi, dpi, rvpi, totalInvested, totalDistributed, totalUnrealizedValue, totalValue): report the incremental impact of the scenario from `delta`. `companyResults` lists the companies the scenario projects, each with companyName, source (`base_scenario` = the base scenario of the company, `assumption` = a fund-scenario assumption), invested, realized, unrealized, baselineRealized, baselineUnrealized, totalValue, and moic; the projected proceeds of a company are realized − baselineRealized. Companies held at current FMV (source `hold_at_fmv`) are omitted from companyResults and counted in `holdAtFmvCount`. `net.totals` holds the allocations of the fund waterfall at the scenario horizon: lpAllocated, gpAllocated, slpAllocated (cumulative allocation per class across the waterfall tiers), lpNav, gpNav, slpNav, totalProceeds, and totalNetValue. gpAllocated is GP allocation by tier (the GP and carry tiers together), so it can include GP capital and the GP preferred return, not only carried interest; for the carry terms themselves use get_fund_waterfall_config. Also returns scenario identifiers, any data-quality warnings, and the net-haircut approximation flag. Persists the full run result as lastRunResult, overwriting any prior run. |
search_sourcing_companies | Search for companies using natural language queries. Use for exploratory searches. |
sum | Calculate the sum of an array of numbers. IMPORTANT: Before using this tool, check if the sum is already available in a previous tool response. Maximum 100 items. |
update_fund_scenario | Update fund scenario fields and/or replace its assumptions. Only the creator can update. Any field omitted is left unchanged; passing assumptions replaces the existing list entirely. Exit `value`s on assumption rules are decimal multipliers, NOT percentages (1.0 = 100%, 3.0 = 3×). |
https://mcp.foresightdata.com/mcp
If the custom connector option is unavailable, add the server as a remote MCP server
in your claude_desktop_config.json:
{
"mcpServers": {
"foresight": {
"url": "https://mcp.foresightdata.com/mcp"
}
}
}
Authentication is handled automatically via OAuth discovery
(/.well-known/oauth-protected-resource). No manual token configuration is needed.
For direct integration, send JSON-RPC requests via POST /mcp:
curl -X POST https://mcp.foresightdata.com/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <your-access-token>" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'