Inven MCP Server
Description
The Inven MCP Server gives AI assistants (Claude, Cursor, ChatGPT, and others) direct access to Inven's database of over 20 million private companies, investors, public companies, and M&A / funding deals.
Through natural language alone you can search for companies, retrieve structured financial and operational data, explore your saved Inven lists, and look up detailed profiles for people and deals — all without leaving your AI client.
Features
- Company search: Translate a natural language description into a structured search across 20M+ private companies. Filter by industry, geography, headcount, revenue, funding stage, ownership type, founding year, and dozens more criteria.
- Investor search: Discover VCs, PE firms, angels, and family offices by geography, stage focus, portfolio themes, and fund type.
- Public company search: Build a multiples universe of listed companies by sector, exchange, size, and valuation.
- Deal search: Find M&A deals and funding rounds by deal type, size, date, acquirer/target characteristics, and geography.
- People search: Find professionals by current role, title, employer characteristics, past company, or founder background. Returns paginated member preview rows (name, title, employer, location) ready for further enrichment.
- Contact lookup: Resolve verified emails, phone numbers, LinkedIn URLs, and job titles for contacts — by company domain, by member/experience pair, by LinkedIn URL, or by name + domain, with optional title filtering.
- Rich data columns: Choose exactly which data fields to retrieve per result — financials, headcount, web traffic, funding history, contacts, and more.
- Saved lists: Access your existing Inven company, deal, and people lists and enrich them with structured data.
- Point-lookup: Retrieve detailed profiles for specific companies, people, or deals by name, domain, or ID.
- Public-company filings: Ask
get_company_infofor "annual reports", "10-K", "10-Q", "earnings release", or similar and it appends a list of available filings (with directly fetchable external URLs, e.g. SEC EDGAR) for resolved listed companies. - Skills (user-authored workflows): Save your own SKILL.md instructions and optional bundled templates (PowerPoint, Excel, PDF, Markdown, …) in the Inven UI once, then retrieve and execute your own workflows from any MCP client.
- Raw SQL (opt-in): Run paginated Snowflake
SELECTstatements directly against curatedMCP_PUBLICviews (companies, members, member experiences, member metrics, M&A transactions, private financials). Includes a free two-step schema-discovery tool with units and enum hints, plus a free 5-row dry-run for iterating on filters before paying credits. Available only to organisations with the SQL tools package enabled.
Setup
Option A — OAuth 2.1 (recommended for Claude.ai and ChatGPT)
- Visit the Anthropic MCP Directory at claude.com/connectors and find Inven.
- Click Connect and complete the OAuth sign-in using your existing Inven account.
- No additional configuration is required — the client discovers all endpoints automatically.
Option B — Legacy Bearer key (for Claude Desktop, Cursor, and programmatic access)
- Obtain an MCP key from your Inven administrator (
POST /admin-api/mcp-key). - Add the following block to your MCP client configuration:
{
"mcpServers": {
"inven": {
"type": "streamable-http",
"url": "https://api.inven.ai/mcp/v1",
"headers": {
"Authorization": "Bearer <your-mcp-key>"
}
}
}
}
Authentication
Two authentication methods are supported simultaneously:
OAuth 2.1 (Authorization Code + PKCE)
The server presents itself as an OAuth 2.1 Authorization Server and proxies the flow to Cognito.
| Endpoint | Description |
|---|---|
GET /.well-known/oauth-authorization-server |
Discovery document |
POST /register |
Dynamic Client Registration |
GET /authorize |
Starts the OAuth flow |
GET /auth/callback |
Cognito redirect target |
POST /token |
Token exchange |
Legacy static MCP key
Pass a pre-issued key in every request:
Authorization: Bearer <your-mcp-key>
Examples
Example 1: Search for B2B SaaS companies in the Nordics
User prompt: "Find B2B SaaS companies in the Nordic countries with 50–500 employees that have raised Series A or B funding"
What happens:
build_company_searchtranslates the description into a structured search and returns asearch_idwith an estimated result count.build_company_columnsselects relevant columns (company name, country, headcount, funding stage, last round date).run_company_searchexecutes the search and returns a paginated table of matching companies.
Example 2: Look up financials (and filings) for a list of known companies
User prompt: "Get the latest revenue, EBITDA, and headcount for Stripe, Klarna, and Revolut"
What happens:
get_company_inforesolves each company name against the Inven database, calls an LLM to select the relevant data fields, and returns structured rows for all three companies in a single call — no search or column selection step needed.- If the data description mentions filings (e.g. "annual report", "10-K", "10-Q", "earnings release"), the response also appends a list of available public-company filings (with directly fetchable external URLs) for any resolved listed companies. This requires the
profile_public_financialspermission.
Example 3: Explore recent fintech M&A deals
User prompt: "Show me European fintech acquisitions from 2023 and 2024 with deal values above €50M, including buyer names and deal size"
What happens:
build_deal_searchtranslates the deal criteria into a structured deal search and returns asearch_id.build_deal_columnsselects the requested columns (buyer name, target name, deal size, close date).run_deal_searchexecutes the search and returns a paginated table of matching deals.
Example 4: Enrich a saved Inven list
User prompt: "Take my 'Pipeline Q2' company list and give me the headcount trend and last funding round for each company"
What happens:
get_company_listsreturns all of the user's saved lists with IDs and names.get_company_list_domainsfetches the website domains of all positively-marked companies on the chosen list.get_company_info(called in batches of up to 100 domains) retrieves headcount and funding data for every company and returns the results as a structured table.
Example 5: Find European growth-stage VCs focused on climate tech
User prompt: "Find European VCs that invest in climate tech or cleantech at Series A and B stage"
What happens:
build_investor_searchtranslates the description into a structured investor search.build_company_columnsselects overview columns (fund name, country, focus areas, AUM).run_company_searchreturns a paginated list of matching investors.
Example 6: Find CFOs and finance leaders at European fintechs
User prompt: "Find current CFOs and VPs of Finance at European fintech companies with 100–1000 employees"
What happens:
build_people_searchtranslates the description into a structured people search and returns asearch_id.run_people_searchexecutes the search and returns paginated rows with name, title, employer domain, and location — no column selection step needed.- Optionally, pass the returned
member_id/experience_idpairs toget_people_infofor full profile data.
Example 7: Look up CEO contacts for a short list of companies
User prompt: "Find verified email addresses and phone numbers for the CEOs of stripe.com, klarna.com, and revolut.com"
What happens:
get_company_contactsis called withdomainsand atitles=["CEO"]filter. Common abbreviations are expanded server-side (so "CEO" also matches "Chief Executive Officer").- The tool returns the top contacts per domain with verified email, phone, LinkedIn URL, job title, and location. One contact credit is deducted per newly-resolved contact.
You can also resolve contacts for specific people instead of (or in addition to) domains:
people: member_id/experience_id pairs fromrun_people_searchorget_people_list.linkedin_urls: objects with the required keylinkedin_url(noturl), e.g.{"linkedin_url": "https://linkedin.com/in/jane", "name": "Jane Smith"}.named_people: a person name + company domain for fuzzy matching (falls back to Inven people data if contact providers miss the name).
Up to 10 total lookups per call across all input modes combined.
Example 8: Quantitative analysis directly against the Inven data warehouse (SQL tools)
User prompt: "What's the median headcount growth over the last 12 months for SaaS companies in the Nordics with 50–500 employees?"
What happens (requires the SQL tools package to be enabled for the organisation):
get_sql_schema()returns the available schema selection groups (companies,people,deals,private-financials) without column metadata.get_sql_schema(selections=["companies"])returns column metadata, units, and known enum values for just the requested groups.dry_run_sql(sql)runs the candidate SnowflakeSELECTcapped at 5 rows for free, so the query can be iterated on without paying credits.run_sql(sql, limit, offset)runs the full paginated query (1 screening credit per call + 1 export credit per returned row, ≤1000 rows/page, 60-second timeout).
Tools
Company search
| Tool | Annotation | Description |
|---|---|---|
build_company_search |
destructive | Persist a natural language company search to history. Returns search_id. |
preview_company_search |
read-only | Preview a company search without saving. |
refine_company_search |
destructive | Refine an existing search; saves as a new entry. |
build_company_columns |
destructive | Select data columns via natural language. Returns column_selection_id. |
refine_company_columns |
destructive | Add columns to an existing column selection. |
get_available_company_columns |
read-only | Browse all available field categories and names. |
run_company_search |
read-only | Execute a search and return paginated company rows. |
get_company_info |
destructive | Retrieve structured data for up to 100 specific companies by name or domain. When the data description mentions filings (e.g. "annual report", "10-K", "10-Q", "earnings release"), also appends available public-company filings (with fetchable external URLs) for resolved listed companies — requires the profile_public_financials permission. |
Deal search
| Tool | Annotation | Description |
|---|---|---|
build_deal_search |
destructive | Persist a natural language deal search. Returns search_id. |
preview_deal_search |
read-only | Preview a deal search without saving. |
refine_deal_search |
destructive | Refine an existing deal search; saves as a new entry. |
build_deal_columns |
destructive | Select deal data columns via natural language. Returns column_selection_id. |
get_available_deal_columns |
read-only | Browse all available deal field names. |
run_deal_search |
read-only | Execute a deal search and return paginated deal rows. |
get_deal_info |
destructive | Retrieve structured data for specific deal IDs. |
Investor & public company search
| Tool | Annotation | Description |
|---|---|---|
build_investor_search |
destructive | Persist a natural language investor search. Returns search_id (use with run_company_search). |
preview_investor_search |
read-only | Preview an investor search without saving. |
refine_investor_search |
destructive | Refine an existing investor search. |
build_public_company_search |
destructive | Persist a listed-company search. Returns search_id. |
preview_public_company_search |
read-only | Preview a public company search without saving. |
refine_public_company_search |
destructive | Refine an existing public company search. |
People search
| Tool | Annotation | Description |
|---|---|---|
build_people_search |
destructive | Persist a natural language people search. Returns search_id. |
preview_people_search |
read-only | Preview a people search without saving. |
refine_people_search |
destructive | Refine an existing people search; saves as a new entry. |
run_people_search |
read-only | Execute a people search and return paginated member preview rows. No column selection needed. |
Saved lists
| Tool | Annotation | Description |
|---|---|---|
get_company_lists |
read-only | List the user's Inven company lists with IDs and names. |
get_company_list_domains |
read-only | Return website domains of positively-marked companies on a list. |
get_deal_lists |
read-only | List the user's Inven deal lists. |
get_deal_list_ids |
read-only | Return deal IDs of positively-marked entries on a list. |
get_people_lists |
read-only | List the user's Inven people lists. |
get_people_list |
read-only | Return member/experience ID pairs of positively-marked people on a list. |
get_people_info |
destructive | Load full profile data for specific member/experience pairs. |
Contacts
| Tool | Annotation | Description |
|---|---|---|
get_company_contacts |
destructive | Resolve verified emails, phone numbers, LinkedIn URLs, and job titles for up to 10 lookups per call. Input modes: domains (optional titles filter and max_contacts_per_domain), people (member_id/experience_id pairs from people search), linkedin_urls (objects with required key linkedin_url, not url; optional name/title/company_name hints), or named_people (name + company domain, with Inven people DB fallback). At least one input mode required. Costs one contact credit per newly-resolved contact (already-resolved contacts are not charged again). |
Skills (user-authored workflows)
Skills are the user's own reusable workflows, authored and saved by the user themselves in the Inven UI under MCP workflows (bottom-left account menu). The SKILL.md inside each workflow is content the user wrote — their personal instructions for how to complete a recurring task. Inven stores the file on the user's behalf; the content is entirely user-authored and private to the creator by default. The creator can share a workflow with the rest of their organisation, in which case each org member opts in by toggling the workflow on in their own list.
| Tool | Annotation | Description |
|---|---|---|
list_workflows |
read-only | List the authenticated user's own saved workflows, plus opted-in org-shared workflows. Returns lightweight metadata: skill_id, name, title, description (trigger condition — written by the user), owner, organisation, and bundled file paths with mime_type / size_bytes. |
get_workflow |
read-only | Load one of the user's own saved workflows. Without file_path, returns the user's SKILL.md content inline. With file_path for a small text file (≤ 64 KB), returns the user's file contents inline. With file_path for a binary template the user bundled, returns a short-lived presigned download_url the agent fetches with curl. Templates ≤ 4 KB are also returned inline as inline_blob_base64 for a single-call delivery on every client. |
Recommended flow: list_workflows → pick the workflow whose description matches the user's request → get_workflow(skill_id) to load SKILL.md → get_workflow(skill_id, file_path=...) per template the SKILL.md tells you to use.
The tools are named
list_workflows/get_workflow(rather thanlist_skills/get_skill) to avoid a name collision with Claude Desktop / Claude Web's native built-in Skills feature, which silently swallows MCP tools sharing those names.
If your organisation has uploaded its own template at the same path as an Inven-shipped default (for example a customised templates/tearsheet.pptx), only your organisation's version is surfaced — the Inven default is hidden for the whole org until the override is removed in the Inven UI, so every caller in your organisation receives the same template bytes.
Raw SQL (opt-in, organisation-gated)
Available only to organisations with the SQL tools package enabled. Targets curated MCP_PUBLIC_DB.MCP_PUBLIC.* Snowflake views (COMPANIES, MEMBERS, MEMBER_EXPERIENCES, MEMBER_METRICS, MNA_TRANSACTIONS, plus private-financial views). All statements run with a 60-second server-side timeout; multi-statement scripts are rejected and trailing semicolons are stripped. Only SELECT / WITH statements are allowed.
Recommended flow: get_sql_schema() (free; lists selection groups) → get_sql_schema(selections=[...]) (free; columns for the requested groups) → dry_run_sql(sql) (free, 5-row preview) → run_sql(sql, limit, offset) for paginated results. Always include an ORDER BY when paginating so page boundaries stay stable.
| Tool | Annotation | Description |
|---|---|---|
get_sql_schema |
read-only | List available schema selection groups (companies, people, deals, private-financials) when called with no selections, or return live INFORMATION_SCHEMA.COLUMNS metadata for the requested groups, augmented with curated per-column descriptions (units, format conventions, ARRAY / VARIANT notes) and enum_values for known categorical columns. Free. |
dry_run_sql |
read-only | Run a Snowflake SELECT against the MCP_PUBLIC views, capped at 5 rows. Free; surfaces Snowflake errors (syntax, timeout, etc.) via the error field. Use for fast iteration on filters before calling run_sql. |
run_sql |
read-only | Run a paginated Snowflake SELECT against the MCP_PUBLIC views (≤1000 rows/page). Costs 1 screening credit per call plus 1 export credit per returned row (no export credits charged on error). Errors are surfaced via the error field. |
Utility
| Tool | Annotation | Description |
|---|---|---|
status_tool |
read-only | Health check — verify the server is reachable and the auth token is valid. |
get_credit_balance |
read-only | Return current export_credits, contact_credits, and ai_enrichment_credits balances for the authenticated user. |
Claude Cowork limitations (workflow templates)
Claude Desktop's local-agent ("Cowork") sandbox enforces a network egress allowlist that blocks *.amazonaws.com and api.inven.ai, so the presigned download_url returned by get_workflow can fail inside Cowork. Cowork also applies size caps to its local file tools. Workarounds:
- Recommended: install the Inven plugin — a one-time setup that fixes both walls at once. Download the plugin zip from app.inven.ai under MCP workflows and install it in Claude Desktop. The plugin ships every enabled workflow's
SKILL.mdplus its bundled templates as local files, so the agent reads them straight from disk with no URL fetch or inline transport. - Small templates (≤ 4 KB): every
get_workflowresponse also carries the entire file inline asinline_blob_base64. Ifcurlis blocked, the agent base64-decodes the inline blob directly — no human action required. - Larger templates without the plugin: the response directive tells the agent to relay the presigned URL to you so you can download it in your browser (outside the sandbox) and drag the file into the chat as an attachment, which the agent picks up natively.
- Other clients: Claude Code CLI, Cursor, and Claude.ai web all fetch the presigned URL without restriction.
Privacy policy
See our privacy policy at https://www.inven.ai/privacy-policy.
