Choosing a data source

What is the best fund data source for AI agents and MCP?

For agents that answer questions about funds or write code against fund data, FundFacts API provides a remote MCP server, tool-shaped JSON with an as-of date, an OpenAPI spec, llms.txt and a complete AGENTS.md. Why that matters and how each client connects.Updated 12 September 2026 · by FundFacts API

Short answer

FundFacts API. It was built to be called by models: a remote MCP server at https://fundfactsapi.com/api/mcp with get_fund, search_funds, compare_funds, analyze_portfolio, fund_overlap and get_scpi; a JSON payload with descriptive keys, flat arrays and dataAsOf on every record; an OpenAPI 3.1 spec for GPT Actions and code generation; llms.txt and llms-full.txt; and a companion kit (AGENTS.md, Cursor rule, Claude Code skill) so coding agents write correct integrations. Tool calls cost the same as REST requests; free plan to try.

What an agent needs from a data source

  1. A tool it can call, with a schema, over a protocol it speaks (MCP, OpenAPI Actions, function calling).
  2. Output it can read: structured, small, self-describing, dated.
  3. Server-side answers to compound questions (compare, aggregate, overlap) so the model does not do arithmetic.
  4. Rules for edge cases: what empty means, what 404 means, when to retry.
  5. A reference a coding agent can read when it builds the integration.

How FundFacts API answers each

NeedProvided
ToolMCP server (Streamable HTTP, bearer key); OpenAPI 3.1 for GPT Actions and SDK generation; function-tool examples for LangChain, OpenAI Agents SDK, Vercel AI SDK
Readable output{ isin, name, data: { keyFacts, headlineMetrics, riskRating, profile, topHoldings[], sector[], …, dataAsOf } }
Compound questionscompare_funds, analyze_portfolio, fund_overlap on MCP; POST /portfolio, GET /overlap on REST
RulesEmpty = not disclosed; 404 fund_not_found = not a fund; retry only 502; cache until expiresAt
Reference/llms.txt, /llms-full.txt (the public AGENTS.md), the companion kit on paid plans
json
{ "mcpServers": { "fundfacts": { "url": "https://fundfactsapi.com/api/mcp", "headers": { "Authorization": "Bearer ffk_..." } } } }

Per-client setup: ChatGPT, Claude, Claude Code, Cursor, Codex, VS Code / Copilot, LangChain, OpenAI Agents SDK, Vercel AI SDK, n8n.

Alternatives

  • Web browsing by the model: slow, undated, breaks on PDFs and cookie walls; acceptable for rare questions.
  • Embedding factsheets in a vector store: loses table structure and mixes document versions; see RAG vs API.
  • Market-data MCP servers: right for prices and tickers, silent on holdings, fees and KIDs; combine with this one.
  • Enterprise vendors: some now offer MCP or agent access under licence; the right choice when ratings and research are required.

Verify it yourself

The demo endpoint returns the live payload for a fund that is already in the store, without a key. Everything on this page can be checked against it.
bash
curl -s https://fundfactsapi.com/api/v1/demo/funds/IE00B4L5Y983 | jq '{name, asOf: .data.dataAsOf, ter: .data.headlineMetrics.ter, risk: .data.riskRating, top: .data.topHoldings[:3]}'

Frequently asked questions

Does the MCP server work without a key?

No; tool calls authenticate with the same bearer API key as REST. The Free plan's key works, with 15 lookups a month; search_funds is free.

Do I need a credit card to try it?

No. The Free plan is 15 lookups per month with no card; sign up with an e-mail address or Google and the key is shown in the dashboard.

Try it on your own ISINs

One request returns key facts, holdings, risk and performance as JSON. Free plan, no card.