Fund Momentum: the agentic pulse of Venture Capital
MCP serverDev toolsfund-momentum gives your AI a live view of 1000+ VC funds that are actively deploying capital, along with 367 disclosed LPs, the investors who back those funds. Once added, your AI can look up funds and LPs and read live investor signals. That means current answers about who is investing right now.
Use Fund Momentum: the agentic pulse of Venture Capital in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add Fund Momentum: the agentic pulse of Venture Capital and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use Fund Momentum: the agentic pulse of Venture Capital to search funds
Needs your own API account. Keys stay in your vault.
Details
Available today. Use it from your connected AI after setup.
After adding it, ask your AI things like which VC funds are actively deploying or which LPs are disclosed. Details and source are at github.com/schneidavie/fundmomentum.
What your AI can do with it
- Look up VC funds that are actively deploying capital
- Browse 1000+ actively deploying funds
- Find disclosed LPs among 367 listed investors
- See live investor signals
- Get current answers on who is investing right now
Install Fund Momentum: the agentic pulse of Venture Capital
The server’s own address, for the clients that take one directly. Or connect Ahel once and every client you use reads it from one address, with the account kept on Ahel rather than in each client’s config.
Claude Code
claude mcp add --transport http --scope user fund-momentum-the-agentic-pulse 'https://fundmomentum.vc/_api/mcp'Run it once in your project, then open /mcp to approve any sign-in the server asks for.
Claude Desktop
https://fundmomentum.vc/_api/mcpAdd a custom connector in Settings, paste this address, and approve the sign-in.
Cursor
cursor://anysphere.cursor-deeplink/mcp/install?name=fund-momentum-the-agentic-pulse&config=eyJ1cmwiOiJodHRwczovL2Z1bmRtb21lbnR1bS52Yy9fYXBpL21jcCJ9Open the link and Cursor adds the server at that address.
ChatGPT
https://fundmomentum.vc/_api/mcpIn Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.
Codex
codex mcp add fund-momentum-the-agentic-pulse --url 'https://fundmomentum.vc/_api/mcp'Run it once, then sign in with codex mcp login fund-momentum-the-agentic-pulse if the server asks for an account.
From the project's README
As published by schneidavie/fundmomentum in README.md.
Agentic fundraising intelligence for founders and emerging fund managers · 1100+ tracked VC funds · 710 disclosed LPs · LP Radar · Remote MCP server with pay-per-call
fundmomentum.vc · MCP Docs · LP Radar · FM15 Ranking · Smithery
Try it now: no key, no signup
search_funds, get_fund, get_changes and check_lp_coverage answer 10 calls per caller per UTC day between them with no credential at all. Paste this:
curl -s https://fundmomentum.vc/_api/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"search_funds","arguments":{"stage":"seed","country":"Germany","limit":5}},"id":1}'
Real data, no card, no email address. Quota headers, the free key and the other four tools: MCP Server.
New: LP data over MCP. check_lp_coverage tells you, free and with no key, how many limited partners match a country and LP type. search_lps returns the LP records themselves for LP Radar subscribers (€199/month or €1,499/year, card checkout). See LP Radar over MCP.
What is Fund Momentum?
Fund Momentum is agentic fundraising intelligence for founders and emerging fund managers. It tracks 1100+ VC funds, every one of which raised capital since September 2024. Around 300 fund closings are covered as primary research, not scraped rows. LP Radar maps 710 disclosed LPs and shows which of them back Fund I and II managers.
Your agent queries it over a remote MCP server. A founder asks Claude or ChatGPT who backs their round. An autonomous agent registers itself and pays per call.
Why it exists: a fund list ages fast. Funds stop deploying, GPs move on and theses drift. A fund that just closed has capital to deploy, so that is where Fund Momentum starts. Every fund profile carries a provenance block naming its source, the date it was last checked and a confidence level.
The counts above are generated, not typed.
scripts/sync-counts.shreads a liveSELECT COUNT(*)from the server card and rounds the fund count down, so the published figure is always an understatement rather than a stale boast. See Keeping the numbers honest.
MCP Server
Connect Claude, Cursor, or any MCP-compatible AI directly to Fund Momentum.
The keyless trial
search_funds, get_fund, get_changes and check_lp_coverage answer 10 calls per caller per UTC day between them, with no credential at all. No signup, no card, no key. This is the front door: see real data before you decide anything. The curl at the top of this README is a complete, working call.
Every response carries a _meta block telling you where you stand:
"_meta": {
"auth": "keyless_trial",
"calls_used": 1,
"calls_limit": 10,
"calls_remaining": 9,
"resets_at": "2026-08-26T00:00:00.000Z"
}
The keyless trial covers those four tools. Keyless get_changes looks back at most 7 days and answers since_floor_applied: true when it shortens your window; a free key widens that to 30 days. See Incremental sync.
Access without registration
There is no signup wall. An agent can discover this server, pay for what it needs and get data with no human, no account and no email at any point.
| Access | How you get it | What works | Limits |
|---|---|---|---|
| Keyless | Nothing. Just call the endpoint. | search_funds, get_fund, get_changes (7-day window), check_lp_coverage | 10 calls/caller/UTC day |
| Anonymous key | POST {"agent_name":"..."} to /_api/agent/register | All six fund tools on credits. 25 free credits on creation. | 3 new keys per IP, 10 per /24, per day |
| Paid, inline | Nothing. Call a Pro tool, get 402, pay, retry. | All six fund tools, priced per call | €1,000 per payer per day |
| Paid, prepaid | POST /_api/agent/credits/topup, pay the challenge | All six fund tools on credits | €5 / €20 / €50 / €100 |
| Linked (optional) | POST /_api/agent/link with an email | Everything above, plus invoices and a dashboard | Grants no extra access |
Per-call prices are not repeated here, because a typed price drifts. Each tool states its own in its description, and /_api/mcp-tools is generated from the live tool definitions.
Getting a key
Both routes are free and take under a minute.
Humans: fundmomentum.vc/mcp documents the MCP plans and the client setup; you subscribe and copy the key itself at fundmomentum.vc/pricing.
Autonomous agents: no registration and no email are required at all. There is no email field on this endpoint.
curl -s https://fundmomentum.vc/_api/agent/register \
-H "Content-Type: application/json" \
-d '{"agent_name":"your-agent-name"}'
201 Created:
{
"api_key": "fm_agent_...",
"agent_id": "agt_...",
"status": "registered",
"agent_credits": 25,
"free_credits_granted": 25,
"cost_per_free_call": "€0.01",
"credits_never_expire": true,
"tools_on_credits": ["search_funds", "get_fund", "get_changes"],
"tools_paid_per_call": {
"get_fund_signals": "…",
"get_gp_profile": "…",
"match_startup": "…"
},
"payment": {
"protocol": "mpp",
"methods": ["tempo_usdc"],
"topup_endpoint": "/_api/agent/credits/topup",
"daily_spend_limit": "€1000.00"
},
"link_email_endpoint": "/_api/agent/link",
"mcp_endpoint": "https://fundmomentum.vc/_api/mcp"
}
No payment, no approval, no human: an agent registers and makes a useful call in the same second. The key is returned once. Only a SHA-256 hash is stored, so a lost key cannot be recovered.
operator_url and contact are optional free text and are never verified. Send an email and it is ignored with a note rather than rejected, so callers written against the old contract keep working.
The 25 credits work on all six fund tools. Free tools cost 1 credit (€0.01); the Pro tools are priced per call, as listed in /_api/mcp-tools. check_lp_coverage never costs a credit, and search_lps is never sold on credits. See LP Radar over MCP.
Why there is no email step
An earlier release gated the Pro tools behind a clicked verification link. That was wrong for three reasons, and it is gone.
Most agents cannot read email, so it put a human step inside a flow that promises "register and call in the same second". It shared the users table with the human Google sign-up, so a person who had signed in with Google and then called this endpoint got back status: "existing", a null API key, zero credits, and a response claiming all six tools were available. And it bought almost no protection anyway: throwaway addresses are free.
Access control is pricing. Pro data costs money per call, always, with no free path. Identity is the API key or, for inline payments, the paying wallet.
New keys are capped at 3 per IP and 10 per /24 per UTC day. Over that, registration answers 429 naming both escape routes rather than leaving you stuck: the keyless tools, and inline payment, neither of which needs a key.
Every agent-tier response then carries its balance in _meta:
"_meta": {
"credits_remaining": 24,
"cost_per_call": "€0.01",
"billing": "per_call"
}
buy_more is added to that block once credits_remaining drops below 100.
Paying, with no account at all
Autonomous machine payment is live on Tempo mainnet. A Pro tool called with no key whatsoever answers HTTP 402 carrying a payment challenge over MPP. Pay it in USDC on Tempo (chain 4217), retry, and you get the data plus a receipt. Nothing is registered and no account exists at any point.
curl -fsSL https://tempo.xyz/install | bash
tempo wallet login
tempo request -X POST --json '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"get_fund_signals","arguments":{"slug":"speedinvest-africa-fund"}},"id":1}' https://fundmomentum.vc/_api/mcp
The same flow tops up a key, so an agent never has to stop:
curl -s -X POST https://fundmomentum.vc/_api/agent/credits/topup \
-H "X-API-Key: fm_agent_..." -H "Content-Type: application/json" \
-d '{"amount_eur":20}'
amount_eur is 5, 20, 50 or 100. €20 buys 2,000 credits. The daily ceiling is checked before a challenge is issued, so you are never invited to pay for something that would then be refused. Spending is capped at €1,000 per payer per UTC day.
Prices are quoted in EUR and settle in USDC, converted at the ECB daily reference rate plus a 1.5% buffer for intraday movement and fees. There is no rounding up to the cent: €0.01 charges $0.0118, not $0.02.
The challenge arrives on a standard WWW-Authenticate: Payment ... header, and a paid response carries a Payment-Receipt header with the on-chain reference.
Over MCP the shape is different, because it has to be. An MCP client ignores the body of a 402: it decides on the status line. So a caller that speaks MCP over Streamable HTTP (an mcp-method header, or an Accept listing both application/json and text/event-stream) gets HTTP 200 carrying a JSON-RPC error instead: error.code -32042, the challenges in error.data.challenges, and the request id echoed back. Pay and retry with the credential in params._meta["org.paymentauth/credential"]; the receipt comes back in result._meta["org.paymentauth/receipt"]. A credential that does not verify answers -32043, never -32042, so you are not asked to pay twice.
Checked by the protocol's own validator against this server:
$ mppx validate https://fundmomentum.vc
Summary: 15 passed, 0 failed, 1 skipped
Everything structural passes, including the mainnet token and recipient addresses. The one skip is the payment step itself: the validator provisions a funded wallet on testnet only, and mainnet has no faucet. That step passes on the identical testnet deployment, with a real on-chain payment and a verified receipt (25/25).
Out of credits used to surface as JSON-RPC error -32001. It is now an HTTP 402. Update any handler matching the old code.
If you would rather not pay at all, the fallback is real: drop the X-API-Key header and search_funds, get_fund, get_changes and check_lp_coverage still answer 10 calls per day with no credential.
Linking an email (optional)
POST /_api/agent/link with {"email":"..."} attaches a key to a human account for invoices and a dashboard only. It grants no access and changes no credits. An address already verified, a Google sign-in say, links immediately and no mail is sent. This endpoint and /_api/agent/link/resend (3/day) are the only places the agent path ever sends email.
Timeouts and retries
Retrying never costs twice. The same call returns the same challenge, never a new one. Once that challenge is paid, the same call returns the stored result free. A timeout followed by a retry cannot produce two payments.
The boundary is derived from the payer, the tool and the canonical arguments, so you do not have to set anything. Argument order does not matter: keys are sorted before comparison. To choose the boundary yourself:
{ "params": { "_meta": { "vc.fundmomentum/idempotency-key": "your-id" } } }
An agent does not need this README to find that out: every challenge carries the same guarantee in error.data.idempotency, with guaranteed, meta_key, meta_key_optional and a note.
Set your timeout generously for match_startup. Three to ten seconds is normal, not a hang: it reasons over every tracked fund. The retry guard is a safety net, not a substitute for a sensible timeout.
| Response | Meaning | Were you charged? |
|---|---|---|
-32042 | Payment required. Challenge in error.data.challenges | No |
-32043 | Credential failed verification | Possibly yes. Send us the transaction hash and we settle it by hand |
-32000 with error.data.error_reason: "not_found" and checked_before_payment: true | Slug does not exist, matches several funds (they are listed, none is picked), or that fund has no published signals | No, never |
-32602 with error.data.error_reason: "invalid_args" and checked_before_payment: true | Unknown, missing or malformed parameter | No, never |
A wrong slug or a bad argument is refused before any payment. The message names the closest real slugs, or the parameters the tool accepts.
Near-miss names are resolved only when there is no doubt. get_fund, get_fund_signals and get_gp_profile accept a name that differs from the real slug only in case or spacing, or that is a hyphen-boundary prefix of exactly one real slug (speedinvest-africa resolves to speedinvest-africa-fund). It is served and the result carries resolved_from (and _meta.resolved_from / resolved_to) so you learn the real slug. A name that matches several funds (speedinvest) is listed, never guessed; no match is not_found. Resolution runs before any payment challenge, so a wrong name is never charged. Calling search_funds first is still the right way to get a slug.
Refusal messages (keyless limit, no key, wrong tier, payment required, LP Radar needed) open with the route for a person, a free key at fundmomentum.vc/pricing, and then the route for automated callers. Every structured field in error.data / _meta is unchanged; parse those, not the prose.
What each tool costs is in its own description. /_api/mcp-tools is generated from the live tool definitions, so it is always the current price. The same section is on fundmomentum.vc/mpp-wallet as section 5.
Quick Setup (Claude Desktop)
Add to your claude_desktop_config.json:
{
"mcpServers": {
"fund-momentum": {
"url": "https://fundmomentum.vc/_api/mcp",
"headers": {
"X-API-Key": "YOUR_API_KEY"
}
}
}
}
Restart Claude Desktop. Done. Drop the headers block entirely to run on the keyless trial.
Example Queries
"Which seed funds in DACH invest in B2B SaaS and are deploying now?"
"What is Speedinvest bullish on right now?"
"Match my startup: AI-native fintech, seed stage, raising €3M, Vienna"
"What should I know before pitching Point Nine Capital?"
"Which funds were added or updated since last Monday?"
Available Tools (8)
| Tool | Title | Tier | Description |
|---|---|---|---|
search_funds | Search VC funds | Free | Search actively deploying funds by stage, country, industry |
get_fund | Get fund profile | Free | Full fund profile with GP intelligence and a provenance block |
get_changes | Get changed funds since | Free | Only the funds that changed since a timestamp, for incremental sync |
get_fund_signals | Get fund investor signals | Pro | Bullish/contrarian signals, deployment status, thesis tags |
get_gp_profile | Get General Partner profiles | Pro | Individual GP profiles and backgrounds |
match_startup | Match startup to funds | Pro | AI-powered fund matching based on startup description |
check_lp_coverage | Check LP coverage | Free, keyless | How many LPs match a country and LP type. Counts only, never a name |
search_lps | Search LP records | LP Radar | LP records (name, type, HQ, focus, website, emerging-manager backing), max 25 per call, unlimited calls |
All eight tools are read-only and non-destructive, and advertise it:
readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false.
An agent can call any of them without a confirmation prompt. Nothing here mutates state.
search_funds and get_fund were previously documented as Starter. They are Free.
LP Radar over MCP
LP data is a separate product with its own entitlement, not a rung above Pro.
check_lp_coverageis free. No key, no credit, also on the keyless trial. It answers "do you cover my geography and LP type" with counts only: never a name, website or commitment. Counts under 5 show as"<5", zero as"none". Call it first.search_lpsneeds LP Radar on the caller's own account key: €199/month or €1,499/year, same access on both, cancel any month. Unlimited calls, up to 25 records per call; a largerlimitis rejected, not clamped.- Not sold per call. LP records are never available on agent credits, over MPP or on the keyless trial. Without LP Radar,
search_lpsanswerserror_reason: "lp_access_required"with the free coverage count and the purchase link, never a payment challenge. - Buying it. Self-serve card checkout on fundmomentum.vc/lp-radar, no account needed beforehand. Access and an API key switch on right after payment under the checkout email; a new account is created if none exists and a welcome email carries the setup link. Manage or cancel in the Stripe billing portal.
- What stays in the web app. Commitment history, fund sizes, dates and allocation patterns are not served over MCP. There is no LP export on any tier.
Incremental sync: use get_changes, not a polling loop
Do not re-run search_funds on a schedule. get_changes exists for exactly that job and is dramatically cheaper.
The loop:
- Call
get_changeswith asincetimestamp. Omitsinceto get the last 7 days. - Keep the
next_sinceandetagfrom the response. - Next poll, send
next_sinceassinceand the previousetagasif_none_match. - If nothing changed in that window, the reply is
unchanged: truewith zero rows: a few bytes instead of a full page.
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "get_changes",
"arguments": {
"since": "2026-08-20T00:00:00Z",
"if_none_match": "\"2126d79bb6487457b97d8b05eb84253e\"",
"limit": 50
}
},
"id": 1
}
since accepts an ISO 8601 timestamp or a unix epoch in milliseconds as a string. limit is 1–200, default 50.
A changed window answers with the cursor fields plus the rows:
{
"since": "2026-08-20T00:00:00.000Z",
"since_defaulted": false,
"next_since": "2026-08-25T16:00:21.418Z",
"returned": 2,
"total_changed": 4,
"has_more": true,
"etag": "\"2126d79bb6487457b97d8b05eb84253e\"",
"changes": [
{
"slug": "cloudberry-ventures-deeptech-fund",
"name": "Cloudberry Ventures DeepTech Fund",
"country": "United Kingdom",
"fundingStage": "seed",
"fundSize": "€50M",
"change_type": "signal_updated",
"changed_at": "2026-08-24T04:00:22.242Z",
"confidence": "high",
"url": "https://fundmomentum.vc/funds/cloudberry-ventures-deeptech-fund"
}
]
}
When has_more is true, call again with the returned next_since before sleeping.
Plain HTTP alternative. The same data is on GET /_api/changes, with the cursor as an ordinary conditional request. Keep the ETag response header and send it back as If-None-Match. An unchanged window answers 304 Not Modified with an empty body.
API Reference
Endpoint: POST https://fundmomentum.vc/_api/mcp
Protocol: JSON-RPC 2.0 over streamable HTTP
Server card: /_api/well-known/mcp/server-card
Auth: X-API-Key header, or Authorization: Bearer <key>, or nothing at all on the keyless trial
import requests
r = requests.post(
"https://fundmomentum.vc/_api/mcp",
headers={"X-API-Key": "YOUR_KEY", "Content-Type": "application/json"},
json={
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "search_funds",
"arguments": {"stage": "seed", "country": "Germany", "limit": 10}
},
"id": 1
}
)
print(r.json())
const r = await fetch("https://fundmomentum.vc/_api/mcp", {
method: "POST",
headers: { "X-API-Key": "YOUR_KEY", "Content-Type": "application/json" },
body: JSON.stringify({
jsonrpc: "2.0",
method: "tools/call",
params: { name: "get_fund_signals", arguments: { slug: "speedinvest-africa-fund" } },
id: 1
})
});
const data = await r.json();
More in examples/developers.md and examples/founders.md.
GP Signal Profiles
Beyond fund size and portfolio, Fund Momentum extracts how each GP actually thinks:
- Thesis Tags: specific investment focus areas
- Bullish Signals: what they're excited about right now
- Contrarian Signals: where they're betting against the consensus
- Deployment Score: how actively they're writing checks
- Founder Dos & Don'ts: how to pitch this specific fund
Built from primary research: GP blog posts, fund websites, LinkedIn, published interviews. Not scraped summaries.
FM15: Founder Alignment Ranking
The FM15 is our semi-annual ranking of 15 emerging VC managers, scored on four dimensions:
| Dimension | What we measure |
|---|---|
| LP Trust Signal | LP quality, re-ups, fund size trajectory |
| Early Track Record | Portfolio performance, notable exits |
| Thesis Sharpness | Specificity and differentiation of investment focus |
| Founder Alignment | GP background, check size fit, post-investment support |
No AUM sorting. No paid inclusion. Primary research only.
MCP Pricing
These tiers cover the MCP server and API only.
Agents are not on these plans. They pay per call, at the price each tool states in /_api/mcp-tools, with no subscription and no account. See Access without registration above. The monthly plans below are for people.
| Tier | Price | API Calls | Tools |
|---|---|---|---|
| Agents (per call) | per tool | Unmetered, pay as you go | All six fund tools, no account needed |
| Keyless trial | €0, no signup | 10/day per caller | search_funds, get_fund, get_changes (7 days back), check_lp_coverage |
| Free | €0 | 100/mo | search_funds, get_fund, get_changes |
| Starter | €9/mo | 1,000/mo | search_funds, get_fund, get_changes |
| Pro | €29/mo | 10,000/mo | All six fund tools incl. signals |
| Enterprise | Custom | Unlimited | All six fund tools, custom contract & SLA |
| LP Radar | €199/mo or €1,499/yr | Unlimited | search_lps (check_lp_coverage is free on every row). Separate subscription, card checkout |
The keyless, Free and Pro rows are generated from the server card. The Starter and Enterprise rows are still typed by hand. The card exposes no tier block for them, so treat fundmomentum.vc/pricing as authoritative if those two ever disagree with this table.
Shortened here. Read the whole README on GitHub.
Tools it offers (8)
What this server listed when Ahel dialed its public endpoint in Oct 2026, with no key and no account of yours. The names are the server’s own.
search_fundsget_fundget_changesget_fund_signalsget_gp_profilematch_startupcheck_lp_coveragesearch_lps
Signals
- GitHub stars
- 1
- Forks
- 1
- Last commit
- Oct 2026
Advanced
- Delivery
- fund-momentum MCP server → your Ahel connector (mcp.ahel.ai) → your AI.
- Item type
- mcp-server
- Key
io-github-schneidavie-fund-momentum- Source
- github.com/schneidavie/fundmomentum
- Hosted endpoint
https://fundmomentum.vc/_api/mcp
github.com/schneidavie/fundmomentum