Metruvo portfolio analysis
Server Details
Portfolio analysis from published fund data: charges, exposure and overlap. Read-only.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 4 tools
Each tool has a clear primary role: search finds funds, rank sorts 2-10 funds on facts, compare does a fixed 50/50 two-fund side-by-side, and xray analyzes a weighted portfolio of up to 10 holdings. The only real overlap is when comparing exactly two funds at equal weight, where both compare_funds and xray_portfolio would produce overlap/exposure output, but the weighting and cardinality constraints make the boundary mostly clear.
All four names are snake_case verb_noun with a consistent pattern: compare_funds, rank_funds, search_funds, xray_portfolio. The noun varies appropriately with the resource (funds vs portfolio) while the verb-first convention stays uniform.
Four tools is a small, well-scoped set where each earns its place: discovery, ranking, pairwise comparison and portfolio analysis. It is slightly thin for a named 'portfolio analysis' product, but no tool is redundant and none is a trivial wrapper.
The surface covers discovery, comparison, ranking and portfolio overlap, but there is no dedicated single-fund detail tool exposing charges, full holdings list, or sector/region breakdown for one fund; agents must pair a fund in compare_funds or xray_portfolio to get such facts. There is also no persistence/watchlist or historical/performance data, which are notable gaps for portfolio analysis workflows.
Available Tools
4 toolscompare_fundsARead-onlyInspect
Analyze two ETFs as a 50/50 portfolio, with overlap and issuer facts including dated ongoing charges side by side, and each fund's own region and sector exposure. Identify each side with exactly one ISIN or ticker; a ticker can be ambiguous across exchanges. Unknown facts remain null. Returns checkUrl: a shareable link to the same result.
| Name | Required | Description | Default |
|---|---|---|---|
| isinA | No | ISIN with a valid check digit. | |
| isinB | No | ISIN with a valid check digit. | |
| tickerA | No | Exchange ticker, e.g. VWCE or SWDA.L; may match listings on several exchanges. | |
| tickerB | No | Exchange ticker, e.g. VWCE or SWDA.L; may match listings on several exchanges. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds useful behaviour beyond that: unknown facts are returned as null rather than omitted, and the response carries a shareable checkUrl. It does not mention rate limits or latency, but the key behavioural traits are disclosed.
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?
Three tight sentences with zero filler; the 50/50 portfolio scope and returned fact set are front-loaded, followed by the identification constraint and the checkUrl note. Every clause earns its place.
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?
With no output schema, the description carries the burden of explaining returns, and it names the main result components plus the checkUrl and null-handling convention. It does not enumerate the full response shape (e.g. how overlap is expressed), leaving a small gap, but it is sufficient to call the tool correctly.
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 100% and the schema's oneOf constraints already enforce exactly one identifier per side, so the description's 'exactly one ISIN or ticker' restates structured data. The ambiguity caveat for tickers also duplicates the schema's own ticker description, so no meaningful parameter detail is added beyond the schema baseline.
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 and resource ('Analyze two ETFs as a 50/50 portfolio') plus the exact fact set returned (overlap, issuer facts, dated ongoing charges, region and sector exposure). This is clearly distinguishable from sibling list/search tools like search_funds, rank_funds, and the multi-holding xray_portfolio.
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 specifies the identification rule ('exactly one ISIN or ticker' per side) and warns that a ticker can be ambiguous across exchanges, which is genuine usage guidance. It stops short of explicitly stating when to prefer this over xray_portfolio, but the context needed to invoke it correctly is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rank_fundsARead-onlyInspect
Sort 2 to 10 funds by up to three published facts: ongoing charge, US share, pairwise overlap and holdings count. Rows follow the criteria in order. A missing fact sorts last and stays null; it is never estimated. Rates are decimal fractions (0.07 = 7%). Analysis based on published fund data. Returns checkUrl: a shareable link to the same result.
| Name | Required | Description | Default |
|---|---|---|---|
| isins | Yes | ||
| criteria | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a read-only, closed-world operation, and the description adds genuinely useful behavior: missing facts sort last and remain null rather than being estimated, rates are decimal fractions, and a checkUrl is returned. What's missing is any note on latency, failure modes (e.g., invalid ISINs), or what the row payload contains.
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 operation and scope, then each subsequent sentence adds a distinct behavioral fact (tie-breaking, null handling, rate format, return value). No sentence repeats structured data or the title.
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?
With no output schema, the description does well to name checkUrl and explain null handling, but it never describes what a ranked row otherwise contains (e.g., the fund name, the metric values, ranks), which an agent needs to interpret the result. The parameter surface is otherwise adequately covered.
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 largely does: it maps the four enum metrics to human terms ('ongoing charge, US share, pairwise overlap and holdings count'), explains 'Rows follow the criteria in order' (criteria array semantics), and clarifies the rate format for ongoingCharge. It does not explain the asc/desc direction parameter or the ISIN check-digit requirement, which the schema covers only partially.
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 and resource ('Sort 2 to 10 funds') with concrete scope constraints and the exact metrics that can drive the ordering. It implicitly distinguishes itself from compare_funds by being an ordering operation rather than a comparison, but never names the sibling or spells out the difference.
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 2–10 fund bound and 'up to three' criteria imply the intended usage context, and 'Sort by' makes the ordering intent clear. However, there is no guidance on when to pick this over compare_funds or search_funds, and no stated prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_fundsARead-onlyInspect
Search the published instrument catalogue by name, ISIN or ticker; includes currency and listing identifiers. Returns checkUrl: a shareable link to the same result.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuine context beyond that: the scope is limited to *published* instruments, and it discloses a return element (checkUrl as a shareable link), which is not in any structured field.
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 tight sentences with the search capability front-loaded and the return-value note second. No filler.
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?
With no output schema, the description helpfully names the key return field (checkUrl). It stops short of describing result shape, ordering, or what 'limit' controls, which leaves a small but real gap for a search tool.
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 carry the burden. It does explain that 'query' spans name, ISIN, or ticker, but says nothing about the 'limit' parameter, defaults, or the 1-20 cap. Partial compensation for a real gap.
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 (search) plus the exact resource (published instrument catalogue) and enumerates the searchable key types (name, ISIN, ticker). This is clearly a free-text catalogue search, distinct from the analytical siblings compare_funds, rank_funds, and xray_portfolio.
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 by 'search the catalogue', but there is no explicit statement of when to use this versus compare_funds or rank_funds, nor any prerequisites or exclusions. An agent can infer the lookup role but must reason about routing itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xray_portfolioBRead-onlyInspect
Analyze free-preview ETF overlap/concentration findings, known ongoing charges and regional/sector exposures from published evidence. Identify each holding with exactly one ISIN or ticker; a ticker can be ambiguous across exchanges. Use positive relative weights, values in one base currency, or omit all amounts for equal weights. Never mix weights and values. At most 10 distinct tickers per call. Dates, coverage and all data gaps accompany the result. Returns checkUrl: a shareable link to the same result.
| Name | Required | Description | Default |
|---|---|---|---|
| holdings | Yes | ||
| baseCurrency | No | EUR |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; the description goes beyond them by stating that dates, coverage and all data gaps accompany the result and that a shareable checkUrl is returned. It does not explain what 'free-preview' restricts (e.g., holding count or data recency), which is the most consequential behavior to know.
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?
Five tight sentences, front-loaded with what the tool produces and followed by input rules and return info; no filler. Slightly dense and rule-heavy, but each sentence carries operative 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?
With no output schema, the description carries the return-value burden and does so partially: it names the accompanying metadata (dates, coverage, data gaps) and checkUrl. Given only 2 parameters and simple nested structure, this is nearly complete, though the 'free-preview' limits and failure modes remain unexplained.
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 low, but the description compensates well: it requires exactly one ISIN or ticker per holding, warns tickers can be ambiguous across exchanges, mandates positive relative weights or values in a single base currency, allows omitting all amounts for equal weights, and forbids mixing weights and values. These constraints are not all expressed in the schema (oneOf covers identifier exclusivity only).
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 states a specific verb (analyze) and named outputs (overlap/concentration, ongoing charges, regional/sector exposures) for a portfolio of ETF holdings, which is clearly distinct from the sibling fund-comparison/ranking/search tools. It stops short of explicitly naming those siblings, but the resource and scope are unambiguous.
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 text explains how to format inputs (one ISIN or ticker per holding, weights vs values) but never says when to choose this tool over compare_funds or rank_funds, nor when-not to use it. 'Free-preview' implies limited scope without clarifying boundaries, so an agent gets no selection guidance.
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.
4 tool updates
- First observed
compare_funds - First observed
rank_funds - First observed
search_funds - First observed
xray_portfolio
Related MCP Connectors
Measures a portfolio from price history: independent bets, what funds own, past crises. No advice.
Portfolio X-Ray with ETF look-through, file analysis, and website analytics in plain English.
Read-only crypto and traditional portfolio: holdings, PNL, FIFO tax figures and market data.
Read-only impersonal market research: portfolio rankings, ticker scores, signals, daily briefs.
Related MCP Servers
- AlicenseAqualityBmaintenanceProvides read-only tools for market data and portfolio analysis, including prices, FX rates, ETF costs and exposure, and whole-portfolio risk in a chosen currency. Supports natural-language questions about investments through MCP clients.20MIT
- AlicenseNot gradedqualityBmaintenanceEnables querying SEC Form N-PORT data to find which mutual funds and ETFs hold a given security, view a fund's reported portfolio positions, and check data coverage and scope.187 npmMIT

Fillfolio MCPofficial
AlicenseNot gradedqualityBmaintenanceEnables read-only access to a Fillfolio account's normalized portfolio data, including net worth, holdings with cost basis, cash and liabilities, activity, and exact asset details, plus optional bank spending summaries, transactions, and budgets for eligible accounts. Clients can query stored data only — they cannot trade, move money, modify holdings, or access credentials.10 npmMIT- FlicenseNot gradedqualityBmaintenanceProvides read-only tools for analyzing a collections portfolio, including summaries, aging, account details, cashflow, and collector performance, with on-demand HTML reporting via natural language.-
Glama MCP Gateway
Add one secure layer between your agents and this server.