Fund Momentum: the agentic pulse of Venture Capital

MCP serverDev tools

fund-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

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.

Fund Momentum: the agentic pulse of Venture CapitalStart free

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/mcp

    Add 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=eyJ1cmwiOiJodHRwczovL2Z1bmRtb21lbnR1bS52Yy9fYXBpL21jcCJ9

    Open the link and Cursor adds the server at that address.

  • ChatGPT

    https://fundmomentum.vc/_api/mcp

    In 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.sh reads a live SELECT 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.

AccessHow you get itWhat worksLimits
KeylessNothing. Just call the endpoint.search_funds, get_fund, get_changes (7-day window), check_lp_coverage10 calls/caller/UTC day
Anonymous keyPOST {"agent_name":"..."} to /_api/agent/registerAll six fund tools on credits. 25 free credits on creation.3 new keys per IP, 10 per /24, per day
Paid, inlineNothing. Call a Pro tool, get 402, pay, retry.All six fund tools, priced per call€1,000 per payer per day
Paid, prepaidPOST /_api/agent/credits/topup, pay the challengeAll six fund tools on credits€5 / €20 / €50 / €100
Linked (optional)POST /_api/agent/link with an emailEverything above, plus invoices and a dashboardGrants 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.

ResponseMeaningWere you charged?
-32042Payment required. Challenge in error.data.challengesNo
-32043Credential failed verificationPossibly yes. Send us the transaction hash and we settle it by hand
-32000 with error.data.error_reason: "not_found" and checked_before_payment: trueSlug does not exist, matches several funds (they are listed, none is picked), or that fund has no published signalsNo, never
-32602 with error.data.error_reason: "invalid_args" and checked_before_payment: trueUnknown, missing or malformed parameterNo, 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)

ToolTitleTierDescription
search_fundsSearch VC fundsFreeSearch actively deploying funds by stage, country, industry
get_fundGet fund profileFreeFull fund profile with GP intelligence and a provenance block
get_changesGet changed funds sinceFreeOnly the funds that changed since a timestamp, for incremental sync
get_fund_signalsGet fund investor signalsProBullish/contrarian signals, deployment status, thesis tags
get_gp_profileGet General Partner profilesProIndividual GP profiles and backgrounds
match_startupMatch startup to fundsProAI-powered fund matching based on startup description
check_lp_coverageCheck LP coverageFree, keylessHow many LPs match a country and LP type. Counts only, never a name
search_lpsSearch LP recordsLP RadarLP 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_coverage is 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_lps needs 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 larger limit is 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_lps answers error_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:

  1. Call get_changes with a since timestamp. Omit since to get the last 7 days.
  2. Keep the next_since and etag from the response.
  3. Next poll, send next_since as since and the previous etag as if_none_match.
  4. If nothing changed in that window, the reply is unchanged: true with 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:

DimensionWhat we measure
LP Trust SignalLP quality, re-ups, fund size trajectory
Early Track RecordPortfolio performance, notable exits
Thesis SharpnessSpecificity and differentiation of investment focus
Founder AlignmentGP background, check size fit, post-investment support

No AUM sorting. No paid inclusion. Primary research only.

→ View FM15 H1 2026


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.

TierPriceAPI CallsTools
Agents (per call)per toolUnmetered, pay as you goAll six fund tools, no account needed
Keyless trial€0, no signup10/day per callersearch_funds, get_fund, get_changes (7 days back), check_lp_coverage
Free€0100/mosearch_funds, get_fund, get_changes
Starter€9/mo1,000/mosearch_funds, get_fund, get_changes
Pro€29/mo10,000/moAll six fund tools incl. signals
EnterpriseCustomUnlimitedAll six fund tools, custom contract & SLA
LP Radar€199/mo or €1,499/yrUnlimitedsearch_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_funds
  • get_fund
  • get_changes
  • get_fund_signals
  • get_gp_profile
  • match_startup
  • check_lp_coverage
  • search_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