Indian Mutual Fund Intelligence MCP
Provides tools to ingest, parse, and reconcile Tata Mutual Fund's monthly portfolio disclosures (holdings, ISIN-keyed change detection, corporate-action flagging, and concentration metrics) from live AMC XLSX files.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Indian Mutual Fund Intelligence MCPshow latest NAV and portfolio for PPFAS Flexi Cap Fund"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Indian Mutual Fund Intelligence MCP
Research-and-evidence MCP server for Indian mutual funds. See spec.md for the full
architecture proposal. Retrieves, normalizes and computes NAV, portfolio, and document
evidence with provenance — it does not score, rate, or recommend funds, and does not attempt
true performance attribution (not computable from Indian public disclosure).
Not investment advice.
Status
Phase 1 (evidence spine): AMFI NAVAll.txt ingest +
resolve_fund+get_fund_performance.Phase 2 (portfolio spine): live AMC portfolio XLSX parsing with 100%-reconciliation gating, ISIN-keyed change engine (corporate-action flagging, price/flow drift detection), holding persistence, concentration, and
get_fund_portfolio.AMC coverage today (12): PPFAS, SBI, UTI, Mirae Asset, Motilal Oswal, Tata, Nippon India, DSP, Franklin Templeton, Baroda BNP Paribas, Sundaram, and Union (see
ingest/amc_adapters/registry.py), each verified live end-to-end with its own golden fixture test. Adding an AMC means (1) a real, live-verified way to discover its monthly portfolio files — a static link, or a documented backing endpoint found via a one-time offline Playwright network capture (never a headless browser at runtime, per the spec) — and (2) a golden fixture test proving the parser's column/header/percentage-scale auto-detection handles that AMC's layout. These twelve AMCs exercise real layout diversity: PPFAS/Mirae/DSP/Union share one shape (one file per scheme); SBI, Motilal Oswal, Tata, Nippon India, Baroda BNP Paribas, and Sundaram each publish one combined workbook per month (multiple sheets, one per scheme, most with a differently-laid-out "Index" sheet — SBI/Motilal Oswal/Tata call the code column "fund/scheme/short code", Baroda BNP Paribas calls it "Short Name", Sundaram calls it "ACRONYM", Nippon has no header row at all — all handled by one shared, column-detecting resolver rather than a hardcoded mapping per AMC); Franklin Templeton has no Index sheet at all (the sheet name itself is the code, resolved by scanning each sheet's own title row); UTI puts the ISIN column non-adjacent to the rest entirely and never states a %-to-NAV grand total (self-summing fallback); Tata labels its true 100% total row "NET ASSETS" and suffixes sub-totals; Franklin puts the ISIN column before the name column (the reverse of every other AMC). Mirae, Motilal Oswal, DSP, Baroda BNP Paribas, and Union's holdings parsing needed zero new parser code, confirming the generalization holds as new AMCs are added rather than just accumulating special cases. Note: DSP and Baroda BNP Paribas's discovered endpoints only ever serve the latest month, not full history — a real capability limit, not a bug.Fifteen AMCs were attempted and are genuinely blocked, not just unstarted — each investigated live with real effort, spanning distinct failure modes: HDFC and Kotak Mahindra (Radware Bot Manager CAPTCHA) are bot-protected outright. ICICI Prudential (F5 BIG-IP WAF, TLS-fingerprint-based), Invesco and WhiteOak Capital (CloudFront/AWS-WAF on the whole domain — Invesco's India business may also have been rebranded, making this one possibly moot), and Edelweiss (Akamai edge WAF blocking its portfolio API specifically) are each blocked by a commercial WAF vendor. Axis and PGIM India are both cases where the real API is same-origin but only reachable after client-side JS execution the site fingerprints and blocks in Playwright specifically — a different failure mode from a WAF blocking the API itself. HSBC has no discoverable disclosure page at all. Three AMCs — Bandhan, JM Financial, and Mahindra Manulife — share a distinct and notable failure mode: their APIs return a real
200 OKwith a{"data"/"payload": "<base64>"}body that decodes to high-entropy ciphertext, not JSON — application-layer payload encryption, not access control. Replaying even a captured real request fails; decrypting it would mean reverse-engineering each site's client-side crypto scheme, a fundamentally different and more invasive problem than a WAF bypass, and explicitly out of scope. The repetition across three unrelated AMCs suggests a shared fintech backend vendor for investor-portal APIs — worth checking before investing more time on any AMC that returns this same opaque-payload shape. Quant's self-service disclosure page appears to be simply broken (empty ASP.NET WebForms viewstate, zero backing requests fire) rather than protected. Canara Robeco's file discovery actually works cleanly (static links, exact 100% reconciliation, zero parser changes) — but its WAF blocks the project's honest User-Agent while accepting a spoofed browser UA; asked the user explicitly rather than deciding unilaterally, and the decision was to skip it and keep the honest-User-Agent policy from spec.md intact. Aditya Birla's discovery endpoint is already found and documented but its file lives behind a CDN host this sandbox's network policy blocks (not a real-world blocker).The remaining ~21 AMCs haven't been attempted yet. This is real, per-AMC engineering effort — exactly what the spec calls "the real moat" of the project — but the pattern (Playwright discovery → adapter → golden test) is proven across twelve materially different AMC layouts, and the failure modes for the rest are now well-characterized (multiple WAF vendors, headless-JS fingerprinting, SPA-with-no-API, payload encryption, a broken page, or UA policy) rather than unknowns.
Phase 3 (document intelligence, partial): PDF section extraction (SEBI-standard headings + keyword search) ground-truthed against a real AMFI-hosted SID,
get_document, andget_fund_profile(identity, benchmark, verbatim mandate excerpts, realised Direct-vs-Regular cost spread computed from NAV alone). TER capture and fund-manager extraction from factsheets are not yet implemented and are reported as explicitly unavailable, never fabricated.
Remaining AMC adapters, TER/manager extraction, and change monitoring (Phase 4) are not yet built.
Related MCP server: indian-regulatory-mcp
Usage
uv sync
uv run mf-mcp ingest-navall # populate the local store with AMFI's daily NAV universe
uv run mf-mcp backfill-portfolio --amc ppfas \
--scheme-id <scheme_id from resolve_fund> \
--scheme-hint "Parag Parikh Flexi Cap Fund" \
--from 2019-01-01
uv run mf-mcp backfill-portfolio --amc sbi \
--scheme-id <scheme_id from resolve_fund> \
--scheme-hint "SBI Flexicap Fund" \
--from 2024-01-01
uv run mf-mcp backfill-portfolio --amc uti \
--scheme-id <scheme_id from resolve_fund> \
--scheme-hint "UTI Flexi Cap Fund" \
--from 2024-01-01
uv run mf-mcp backfill-portfolio --amc mirae \
--scheme-id <scheme_id from resolve_fund> \
--scheme-hint "Mirae Asset Large Cap Fund" \
--from 2024-01-01
uv run mf-mcp backfill-portfolio --amc motilal-oswal \
--scheme-id <scheme_id from resolve_fund> \
--scheme-hint "Motilal Oswal Flexi Cap Fund" \
--from 2024-01-01
uv run mf-mcp backfill-portfolio --amc tata \
--scheme-id <scheme_id from resolve_fund> \
--scheme-hint "Tata Large & Mid Cap Fund" \
--from 2024-01-01
uv run mf-mcp backfill-portfolio --amc nippon \
--scheme-id <scheme_id from resolve_fund> \
--scheme-hint "Nippon India Large Cap Fund" \
--from 2024-01-01
uv run mf-mcp backfill-portfolio --amc dsp \
--scheme-id <scheme_id from resolve_fund> \
--scheme-hint "DSP Flexi Cap Fund" \
--from 2024-01-01 # DSP's endpoint only ever serves the latest month, not full history
uv run mf-mcp backfill-portfolio --amc franklin-templeton \
--scheme-id <scheme_id from resolve_fund> \
--scheme-hint "Franklin India Bluechip Fund" \
--from 2024-01-01
uv run mf-mcp backfill-portfolio --amc baroda-bnp-paribas \
--scheme-id <scheme_id from resolve_fund> \
--scheme-hint "Baroda BNP Paribas Large Cap Fund" \
--from 2024-01-01 # only the latest month is available
uv run mf-mcp backfill-portfolio --amc sundaram \
--scheme-id <scheme_id from resolve_fund> \
--scheme-hint "Sundaram Large and Mid Cap Fund" \
--from 2013-01-01 # full archive available back to 2012-2013
uv run mf-mcp backfill-portfolio --amc union \
--scheme-id <scheme_id from resolve_fund> \
--scheme-hint "Union Flexi Cap Fund" \
--from 2021-01-01
uv run mf-mcp serve # run the MCP server (stdio)Data lives in ~/.indian-mf-mcp/ (SQLite store + raw archive; never evicted).
Run tests with uv run pytest -q. One test (test_ppfas_live_smoke.py) hits the real PPFAS
site and is skipped automatically if the network is unavailable.
Available Tools
5 toolsget_documentA
Retrieve source-document evidence — the relevant pages, not the whole PDF.
Identify the document either by doc_id (from get_fund_profile's documents list) or by
scheme_id + doc_type (+ optional as_of). Use query for keyword-scoped retrieval or
sections (SEBI-standard headings: Investment Objective, Investment Strategy, Asset
Allocation Pattern, Risk Factors, Fund Manager, Load Structure, Expenses of the Scheme).
Returns verbatim text with page numbers, sha256, and the source URL — Claude reads and
interprets this prose; the server never paraphrases or extracts it into structured claims.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | ||
| query | No | ||
| doc_id | No | ||
| return_ | No | text | |
| doc_type | No | ||
| sections | No | ||
| max_chars | No | ||
| scheme_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It usefully discloses return contents (verbatim text, page numbers, sha256, source URL) and that the server never paraphrases or extracts structured claims, which is real behavioral context. It says nothing about permissions, rate limits, or what happens when content exceeds max_chars, leaving meaningful gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the retrieval scope, then the identification methods, then the return contract. Every sentence contributes, though the enumerated headings list is dense enough to slightly bloat the middle.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations and no output schema, so the description must do all the work for an 8-parameter tool. It covers identification, filtering, and the shape of returned prose, but omits the semantics of max_chars (truncation behavior at the 15000 default) and return_, which matter for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it explains 6 of 8 parameters: doc_id, scheme_id, doc_type, as_of, query, and sections (with the exact accepted heading values). return_ and max_chars are never mentioned, which is the only material omission.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Starts with a specific verb+resource ('Retrieve source-document evidence') and immediately scopes it ('the relevant pages, not the whole PDF'). It contrasts itself with sibling get_fund_profile by citing that tool's documents list as the source of doc_id, so an agent can route correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete identification paths (doc_id vs scheme_id + doc_type + as_of) and explains the role of query (keyword-scoped) versus sections (SEBI-standard headings with examples). It does not state when NOT to use this tool versus the sibling profile/portfolio tools, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fund_performanceA
Complete return/risk evidence pack for one or more schemes (list = comparison).
metrics: any of "trailing","rolling","risk","drawdown","stress". comparators: any of "benchmark" (not yet implemented — proxy pending), "category". Defaults to the Direct/Growth plan; a warning is included if that plan does not exist. Never emits a score, rating, or recommendation — only computed facts with provenance.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | No | direct_growth | |
| period | No | 10Y | |
| metrics | No | ||
| nav_series | No | ||
| provenance | No | compact | |
| scheme_ids | Yes | ||
| comparators | No | ||
| rolling_windows | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well above average: it discloses that the benchmark comparator is not yet implemented, that it defaults to Direct/Growth with a warning when that plan is absent, and that it never emits scores/ratings/recommendations. Remaining gaps are operational (rate limits, response shape), not trust-relevant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose in the first sentence, then uses terse labeled lines for metrics/comparators and one caveat sentence. Compact and every line adds something, though the parenthetical about benchmark is slightly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with no output schema and no annotations, the description covers behavior and two enum-like parameters reasonably but omits period format, the meaning of nav_series, and rolling_windows units. An agent can call it, but not with full confidence on the unaddressed parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 8 parameters, so the description must compensate. It documents valid values for metrics ('trailing','rolling','risk','drawdown','stress'), comparators ('benchmark','category'), and the plan default, but leaves period, nav_series, rolling_windows, and scheme_ids semantics unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource ('Complete return/risk evidence pack') and behavior ('list = comparison'), which is enough to distinguish it from get_fund_profile or get_fund_portfolio. It stops short of explicitly naming the sibling it is not, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through 'list = comparison' and the enumeration of metric/comparator options, and warns about the Direct/Growth default. But it never states when to reach for this tool vs get_fund_profile or get_fund_portfolio, so the routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fund_portfolioB
Holdings, allocations, and month-over-month change detection for one or more schemes.
sections: any of "holdings","allocations","changes","concentration","persistence". history: "none"|"12M"|"36M"|"60M" — required (non-"none") for the persistence table. compare_to: a date, "prev_month", or null to skip change detection. Corporate actions (splits/bonuses/mergers) are flagged, never silently asserted as trades. Market-cap allocation is not yet available (requires the AMFI cap-list join) and is reported as null rather than guessed. Coverage depends on which AMC adapters have been run.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | latest | |
| history | No | none | |
| sections | No | ||
| compare_to | No | prev_month | |
| provenance | No | compact | |
| scheme_ids | Yes | ||
| holdings_limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers real behavioral context: corporate actions are flagged rather than asserted as trades, market-cap allocation is deliberately reported as null instead of guessed, and coverage depends on which AMC adapters have run. These are exactly the caveats an agent needs to avoid misreading output. It does not cover permissions or rate limits, but the data-quality disclosures are strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is front-loaded and the remaining lines are a tight parameter glossary with no filler. Slightly dense, but every line carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, no-annotation, no-output-schema tool, the definition covers the highest-value behavior and three parameters but leaves the semantics of as_of, provenance, holdings_limit, and scheme_ids entirely unspecified, which is a meaningful gap for an agent invoking it precisely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it partially does: it enumerates the valid 'sections' values, the 'history' values plus the persistence-table requirement, and 'compare_to' accepted forms. However, four parameters (as_of, provenance, scheme_ids, holdings_limit) get no explanation in either schema or description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource set (holdings, allocations, month-over-month change detection) and scope (one or more schemes), so an agent knows this is the portfolio-composition tool rather than the performance or profile tool. It stops short of explicitly contrasting itself with siblings like get_fund_performance or get_fund_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit statement of when to use this tool versus the sibling tools. The only conditional guidance ('required for the persistence table', 'null to skip change detection') is about parameter wiring, not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fund_profileA
Static/slow-moving profile: identity, mandate excerpts, benchmark, costs, managers, documents.
sections: any of "identity","mandate","benchmark","costs","managers","documents". Mandate is always returned as verbatim SID excerpts with page numbers, never as parsed fields — investment philosophy/strategy is a document-retrieval problem, not structured data (extracting it would produce confident nonsense). Managers and TER are not yet available in this build and are reported as unavailable, never fabricated.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | ||
| sections | No | ||
| provenance | No | compact | |
| scheme_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does unusually well on failure modes: managers and TER are 'not yet available in this build and are reported as unavailable, never fabricated', and mandate is returned as verbatim SID excerpts with page numbers rather than parsed fields. It omits auth/permission needs, result size limits, and pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose sentence, then sections, then behavioral caveats — a sensible ordering. The mandate sentence is long and carries an editorial aside ('confident nonsense'), but each sentence conveys real information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no annotations and no output schema, the description covers domain semantics (mandate handling, unavailable managers/TER) but leaves the return shape, as_of format, provenance options and pagination unexplained. Adequate but with visible gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does so only for one parameter: it enumerates the valid `sections` values, information the schema lacks entirely. `as_of`, `provenance` (what values besides 'compact'?) and the required `scheme_ids` receive no explanation at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (fund profile) and enumerates its scope: identity, mandate excerpts, benchmark, costs, managers, documents. The phrase 'Static/slow-moving' implicitly separates it from the dynamic siblings get_fund_performance and get_fund_portfolio, but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the 'static/slow-moving' framing tells the agent this is the reference-data lookup, and the mandate note hints that document retrieval (get_document) is the right path for investment philosophy. There is no explicit when-to-use/when-not statement or named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_fundA
Resolve a fund name, ISIN, or AMFI scheme code to unambiguous scheme+plan identity.
Always call this first — Indian scheme names are ambiguous (renames, near-identical names across AMCs, 4-8 plan/option variants per scheme).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the accepted input forms and that the output is a disambiguated identity, plus the underlying ambiguity risk. It does not say what happens when multiple matches remain, how the limit affects results, or any auth/rate constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and output, followed by a tightly worded justification for calling it first. No filler and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description must cover behavior on its own. It gives input formats and the nature of the result but omits return shape, pagination via `limit`, and ambiguity-handling behavior, which an agent would need to use it reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It usefully expands on `query` (accepts a fund name, ISIN, or AMFI scheme code), but says nothing about the `limit` parameter or the array form of `query`, leaving half the parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Resolve) and resource (fund name/ISIN/AMFI scheme code) and names the exact output: unambiguous scheme+plan identity. This clearly differentiates it from the sibling get_* tools, which fetch data rather than establish identity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Always call this first" is an explicit, actionable directive with a rationale (ambiguous Indian scheme names, renames, plan variants). It does not name when-not to use it or a specific alternative, so it stops short of a full routing statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.0- First observed
get_document - First observed
get_fund_performance - First observed
get_fund_portfolio - First observed
get_fund_profile - First observed
resolve_fund
TDQS
Scored across 5 tools
Each tool targets a distinct facet: resolve_fund handles identity, get_fund_performance covers returns/risk, get_fund_portfolio covers holdings, get_fund_profile covers static metadata, and get_document retrieves verbatim source evidence. The descriptions explicitly delineate boundaries (e.g. profile returns mandate excerpts vs. document retrieves raw pages), so there is minimal risk of misselection.
Four tools follow a clean get_fund_<noun>/get_document verb_noun pattern, and resolve_fund is a semantically apt deviation for the identity-resolution step. The convention is predictable throughout with no mixed casing or stylistic drift.
Five tools is well-scoped for a fund-intelligence server, and each one earns its place by covering a genuinely separate dimension (identity, performance, portfolio, profile, documents). No tool feels redundant or trivial.
The surface covers the full read-only lifecycle from identity resolution through evidence retrieval, which is coherent for an intelligence (non-mutating) server. Minor gaps exist — benchmark comparators, managers, and TER are explicitly deferred — but they are transparently flagged rather than silently missing.
Maintenance
Related MCP Connectors
MFAPI.in MCP — Indian mutual-fund NAV (net asset value) data.
Indian NSE/BSE research data and mechanically-computed ratios; read-only market tools.
Open financial reference data: companies with LEI/ISIN/FIGI, markets, funds, graph, live series.
Institutional financial data with SEC filing citations, for every AI agent. OAuth 2.1.
Related MCP Servers
- FlicenseCqualityDmaintenanceEnables access to comprehensive Indian stock market data from the NSE and BSE, including historical statistics, corporate actions, and IPO information. It also provides tools for mutual fund searches, analyst recommendations, and tracking market-active or trending stocks.16-
- FlicenseNot gradedqualityDmaintenanceEnables access to Indian regulatory data including SEBI orders, RBI circulars, MCA company details, GST verification, and more, designed for fintech and legaltech applications.-
- AlicenseNot gradedqualityCmaintenanceEnables querying Indian mutual fund NAV data through MFAPI.in, providing net asset value information and fund details.7 npmMIT
- FlicenseNot gradedqualityBmaintenanceProvides read-only access to curated financial domain knowledge and product data with verified provenance, enabling users to search and retrieve trusted financial information.-