Research Funding Landscape MCP Server
Pricing
from $50.00 / 1,000 tool calls
Research Funding Landscape MCP Server
Answer 'who funds research on this topic' across two public government registers: US National Science Foundation awards and UK Research and Innovation's Gateway to Research.
Pricing
from $50.00 / 1,000 tool calls
Rating
0.0
(0)
Developer
NexGen Watch
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Share
🧰 Research Funding Landscape MCP Server
Answer "who funds research on this topic" across two public government registers — the US National Science Foundation awards API and UK Research and Innovation's Gateway to Research — live.
Built for grant writers and research-development teams.
This is a standby MCP server: it stays warm on Apify and answers tool calls from any MCP client (Claude Desktop, Cursor, an agent framework) at https://nexgenwatch--research-funding-landscape-mcp.apify.actor/mcp. Billing is pay-per-event: $0.05 when the server starts, then $0.05 per tool call (mcp-tool-call). Source: api.nsf.gov, gtr.ukri.org, www.nsf.gov.
No login, no source API key and no CAPTCHA solving are involved: the source is read logged-out.
📊 Sample Output
A standby server answers tool calls rather than writing a dataset, so the sample is the server's own live health answer (GET https://nexgenwatch--research-funding-landscape-mcp.apify.actor/, HTTP 200, read on 2026-09-17) followed by its tool table:
{"server": "research-funding-landscape","billing_gate": true,"declared_events": ["apify-actor-start","mcp-tool-call"],"scope": "Two public government research registers: the US National Science Foundation Awards API and UK Research and Innovation's Gateway to Research. NIH, DOE, DOD, ERC, Horizon, charitable and industrial funders are NOT covered -- 'who funds this' here means 'who among these two registers has funded it'.","rate_limit_per_sec": {"nsf": 2.0,"ukri": 2.0},"rate_waits": {"nsf": 0,"ukri": 0},"ready": true}
| Tool | Arguments | What it returns |
|---|---|---|
find_funders | `topic: str, sources: list | None = None, days: int = 365, sample: int = 50` |
list_us_awards | topic: str, days: int = 365, limit: int = 25 | NSF awards matching a topic in a trailing window, with programme, recipient, principal investigator, dates and amount. |
list_uk_projects | topic: str, limit: int = 25, exact_phrase: bool = True | UKRI-funded projects matching a topic, with the council or scheme that funded each. A multi-word topic is treated as an exact phrase by default — set exact_phrase=false to get UKRI's own OR behaviour, and see how much wi |
explain_limits | `` | What this server can and cannot tell you, and the five measured traps across the two sources. Read this before acting on any answer above. |
✅ What you get
4 tools, each returning a JSON object built only from what the source answered, with a scope and note field stating what the source does and does not cover. A lookup the source answers with 'not found' is a sourced answer (charged); malformed input or a source failure returns a notice that is NOT charged; nothing is ever fabricated.
Five things this server gets right that a naive read gets wrong
Every one measured live against the sources on 2026-07-30.
1. UKRI treats a multi-word topic as OR, not as a phrase — the error is 15×
term=quantum 5,835 recordsterm=computing 14,453 recordsterm=quantum computing 18,219 records <- the union of the two, not the phraseterm="quantum computing" 1,182 records <- the phrase
An unquoted two-word topic returns roughly fifteen times too many projects, most about neither subject together. This server quotes a multi-word topic by default and reports both counts in every answer, so the size of the difference is visible rather than taken on trust.
2. UKRI answers "no results" with HTTP 404
term=zzzqqqnotarealterm -> HTTP 404, Link-Records: 0
That is the register saying nobody here funds that — an answer, not a failure. This server
returns it as a real empty result and charges for it. A 404 without Link-Records: 0 is
a route failure and raises.
3. NSF's keyword matches the abstract, not the title
Measured on ten hits for "quantum": six carried the word nowhere in the title, including "REU Site: Extremal Graph Theory and Dynamical Systems at RIT". Correct behaviour, and misleading if you assume otherwise — so every award reports whether the topic is visible in its title, and each search reports the ratio.
4. An unrecognised NSF parameter returns zero rows, not an error
title=quantum -> totalCount 0 (an unrecognised parameter)keyword=quantum -> totalCount 519 (the real one)
A typo therefore answers "nobody funds this". Only parameter names proven real against the live API are ever sent, and the data layer refuses anything else with a named reason.
5. NSF's offset is 0-based
offset=1 returns totalCount − 1 records and drops the first one, every time, on every
query. Every walk here starts at 0.
The two registers are shaped differently, and are never merged
On NSF the funder is always the National Science Foundation, so ranking by funder collapses the whole US side into one row and answers nothing. The comparable unit is the funding programme. On UKRI the comparable unit is the council or scheme — EPSRC, Innovate UK, STFC, UKRI FLF.
find_funders reports the unit and says which kind it is. US amounts are USD, UK amounts
are GBP, and they are never added together.
Tools
| tool | what it answers |
|---|---|
find_funders | Who funds this topic — funding units across both registers, ranked, with counts and totals per currency |
list_us_awards | NSF awards matching a topic, with programme, recipient, PI, dates and amount |
list_uk_projects | UKRI-funded projects matching a topic, with the council or scheme behind each |
explain_limits | What this server will and will not say, and the five traps above. Read before acting. |
Scope
Two registers only: NSF and UKRI. NIH, DOE, DOD, ERC, Horizon, charitable and industrial funders are not covered — "who funds this" here means "who among these two registers has funded it".
Neither host publishes a robots.txt and neither states a rate limit, so pacing is our own
choice: each source has its own strict-pacing bucket at 2 requests/second.
Rankings are over the sample actually read, not the whole matching set; every answer carries the full match count alongside the sample size.
This server reports who has funded work matching a topic. It does not say who will fund you, does not rank funders by suitability, and never mixes currencies.
⚙️ Sample inputs
1. Connect an MCP client (Claude Desktop / Cursor style config; your Apify API token goes in the header):
{"mcpServers": {"research-funding-landscape-mcp": {"url": "https://nexgenwatch--research-funding-landscape-mcp.apify.actor/mcp","headers": {"Authorization": "Bearer <YOUR_APIFY_TOKEN>"}}}}
2. One tool call over JSON-RPC (what the client sends to /mcp; each call is one mcp-tool-call event):
{"jsonrpc": "2.0","id": 1,"method": "tools/call","params": {"name": "find_funders","arguments": {"topic": "<topic>","sources": "<sources>","days": 365,"sample": 50}}}
3. Health check from a shell (free — no tool call is charged):
$curl -H "Authorization: Bearer $APIFY_TOKEN" https://nexgenwatch--research-funding-landscape-mcp.apify.actor/
🧾 JSON sample record
The live health record above is the server's own answer; a tool result carries the fields listed in the tool table plus scope and note.
🔧 How it works
Source. api.nsf.gov, gtr.ukri.org, www.nsf.gov — endpoints: https://api.nsf.gov/services/v1/awards.json, https://gtr.ukri.org/api/search/project, https://gtr.ukri.org/projects, https://www.nsf.gov/awardsearch/showAward. Public, logged-out reads only.
Standby. Apify keeps one server process warm; each MCP session is served by that process and idle servers are stopped by the platform. Nothing is cached between calls except what the source itself caches.
Charging. Every tool call charges one mcp-tool-call at $0.05 through Apify's pay-per-event billing before the answer is returned; the declared events are asserted against the live pricing at startup (billing_gate in the health answer).
What is not done. No login, no CAPTCHA bypass, no private data, no scraping of pages the source does not publish to any visitor.
💰 Pricing example
| Event | Free | Bronze | Silver | Gold |
|---|---|---|---|---|
Actor Start (apify-actor-start) | $0.05 | $0.05 | $0.05 | $0.05 |
Tool call (mcp-tool-call) | $0.05 | $0.05 | $0.05 | $0.05 |
- 10 tool calls in one session: $0.05 start + 10 × $0.05 = $0.55
- 100 tool calls in one session: $0.05 start + 100 × $0.05 = $5.05
- 1000 tool calls in one session: $0.05 start + 1000 × $0.05 = $50.05
A health check or a connection that makes no tool call charges only the $0.05 start fee. A sourced 'not found' answer is a completed tool call and is charged; a notice for malformed input or a source failure is not charged (settle() charges only chargeable outcomes).
⚖️ Legal & ToS
The server reads public data published by api.nsf.gov, gtr.ukri.org, www.nsf.gov to any visitor, identifies itself, and does not access accounts or private data. Use the answers in line with the source's terms and your local law; the intended use is B2B research and agent tooling.
❓ FAQ
Q: Do I need a source API key?
A: No. api.nsf.gov, gtr.ukri.org, www.nsf.gov is read logged-out. You need only your Apify API token to connect to the server.
Q: Which MCP clients work?
A: Any client that speaks the MCP HTTP transport: Claude Desktop, Cursor, Windsurf, LangChain/LlamaIndex MCP adapters and Apify's own MCP client. Point it at the /mcp URL above.
Q: What happens when the source has no answer?
A: A sourced 'not found' (for example a 404 for an unknown identifier) comes back as an answer with scope and note explaining what was checked (where the server carries those fields), and is charged as a completed call; malformed input or a source outage returns a notice that is not charged. Nothing is invented.
Q: How is a call billed?
A: One mcp-tool-call event per tool call at $0.05, plus $0.05 when the server starts. Idle time is not billed to you.
Q: Is it rate limited?
A: The server paces requests to the source (RATE_PER_SEC=2.0) and answers calls in the order they arrive.
Q: Can I call it without an MCP client?
A: Yes — the /mcp endpoint is plain JSON-RPC over HTTP (sample input 2), and GET / is a free health check.
🆘 Troubleshooting
- 401 / 403 from the server → the Authorization header is missing or the token is wrong → use
Bearer <your Apify API token>. - 400
Missing session ID→ the client hit/mcpwithout initialising an MCP session → let the MCP client connect (it performs the handshake); raw JSON-RPC needs the session header the initialise call returns. - Tool returns a notice instead of data → the input was malformed or empty, or the source failed → the call was not charged; check the
note/reasonfield, fix the input and call again. - First call is slow → the standby server was cold and Apify started it → later calls in the same session are fast.
🔗 Related Actors
- Grants Qualification MCP Server — Report what a US federal grant agency actually states about who may apply, and screen an applicant type against it. Three outcomes, and 'qualified' i…
- Official Travel Advice MCP Server — MCP server for UK FCDO foreign travel advice from the official GOV.UK Content API — safety warnings, entry and health requirements, and update histor…
- Procurement Evidence MCP Server — Locate the public procurement record behind a claim across the UK, EU and US. Every row carries the awarding body's own record id and a direct public…
- SEC Filing Evidence MCP Server — Locate the SEC filing behind a claim. Every answer carries the accession number, the filing date and a direct SEC URL, so an agent's claim about a pu…
- Trademark Dispute MCP Server — Answer 'has anyone contested a mark like this' across the USPTO Trademark Trial and Appeal Board and the Canadian Trademarks Opposition Board. Report…
- UK Competition Case MCP Server — Answer 'is there a UK competition case touching these companies or this market' from the Competition and Markets Authority case register, with an exp…
- 🏢 About NexGenData — NexGen Watch is NexGenData's fleet of 256 public monitoring and lookup actors built on official sources, pay-per-result. Browse the catalog at apify.com/nexgenwatch.
⭐ Found this useful?
If this server answered a question your agent could not, a quick review on the Apify Store helps other teams find it. Feature request or a source that changed? Open it from the Issues tab — every one is read.
