Fruit Stand Fund Returns
Server Details
Trailing & calendar-year returns for 32,000+ US mutual funds & ETFs — fund performance by ticker.
- Status
- Healthy
- Uptime
- 74.8% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- fruitstanddev/fruitstand-mcp
- GitHub Stars
- 0
- Server Listing
- Fruit Stand Fund Returns — MCP Server
TDQS
Scored across 6 tools
Each tool has a clearly distinct role: fund discovery, fund metadata, single-fund calendar returns, batch calendar returns, single-fund trailing returns, and batch trailing returns. The single/batch pairs explicitly cross-reference each other, and searchFunds is clearly separated from getFund by lookup vs. known-code retrieval.
All tools follow a predictable camelCase verb_noun pattern: get, batch, and search followed by the target resource. The symmetry between batchCalendarReturns/batchTrailingReturns and getCalendarReturns/getTrailingReturns makes the naming highly consistent and easy to guess.
Six tools is well-scoped for a fund returns API: one search tool, one metadata tool, two return-type tools, and two batch variants. Each tool earns its place without redundancy or unnecessary bloat.
The tool surface covers the full read-only workflow: resolving funds, fetching metadata, retrieving calendar-year returns, retrieving trailing returns, and comparing many funds via batch endpoints. For the stated domain of fund return data, there are no obvious gaps or dead ends.
Available Tools
6 toolsbatchCalendarReturnsAInspect
Calendar-year total returns for up to 100 funds in one call - same data as getCalendarReturns. Pass codes and optional year. One row per fund; funds with no data are omitted and order is not guaranteed, so match on code. Values are decimal fractions, total return, distributions reinvested. Use this to compare funds across a year.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is transparent about behavior: it notes that funds with no data are omitted, order is not guaranteed, and values are decimal fractions representing total return with distributions reinvested. These details are essential for interpreting results and are not contradicted by any annotations.
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 description is concise and structured logically: it states the purpose, compares to a sibling, lists key parameters, describes output format, and gives a usage recommendation. Every sentence adds value without unnecessary length.
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?
Given the lack of an output schema, the description provides sufficient context by describing the output (one row per fund, omitted if no data, unordered) and the value format. It covers the main use case and also mentions that order is not guaranteed, which is a common pitfall. It does not cover error handling or edge cases, but those are not strictly necessary for a straightforward batch query 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?
The description mentions that the caller should pass 'codes' and 'year,' but it does not elaborate on what 'year' means (e.g., calendar year vs. fiscal year, default behavior if omitted). The schema provides detailed descriptions for 'codes' and 'market,' but not for 'year,' so the description adds little beyond the schema for this parameter.
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 clearly states it provides calendar-year total returns for up to 100 funds in one call, explicitly distinguishing it from the single-fund sibling getCalendarReturns. The batch nature and specific metric are immediately obvious.
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?
It explicitly says 'Use this to compare funds across a year,' giving a direct use case. It also implies the alternative (single-fund retrieval via getCalendarReturns) by noting 'same data as getCalendarReturns,' which helps an agent choose the right tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batchTrailingReturnsAInspect
Trailing total returns for up to 100 funds in one call - same data as getTrailingReturns. Pass codes and optional as_of. One row per fund; funds with no data are omitted and order is not guaranteed, so match on code. Values are decimal fractions, total return, distributions reinvested. Use this to compare or screen funds.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important runtime behavior: funds without data are omitted, row order is not guaranteed, and matching is done via the code field. It also clarifies that values are decimal fractions representing total return with distributions reinvested. It does not mention error handling or rate limits, but these are not critical for basic usage.
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 description is concise and to the point, with no redundant information. Every sentence adds value, covering purpose, key parameters, output characteristics, and typical use case in a compact form.
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?
Although no output schema is provided, the description gives enough context about the output format (one row per fund, omitted for missing data, decimal fractions, etc.) for a user to understand what to expect. It could potentially mention the exact response structure or required permissions, but that is not essential given the level of detail provided.
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?
The description explicitly explains codes and as_of, and the schema provides descriptions for codes and market, leaving as_of without a textual description but its type and nullability are clear. The market parameter is described as informational and reserved for future use, which is sufficiently clear. Overall parameters are well-covered.
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 clearly states the tool fetches trailing total returns for up to 100 funds in a single call and explicitly distinguishes it from getTrailingReturns by noting it is the same data in batch form. The scope (multi-fund comparison/screening) is 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?
It explicitly says 'Use this to compare or screen funds' and references getTrailingReturns for parity, giving a clear primary use case. It does not explicitly contrast with batchCalendarReturns or other siblings, but the purpose is clear enough for most selection scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getCalendarReturnsAInspect
Full calendar-year (Jan-Dec) total return for one fund. Pass year, or omit for the latest completed year. calendar_year_return is a decimal fraction, distributions reinvested (0.263 = +26.3%); base_date/end_date give the actual span (partial in launch/delist years). Use getTrailingReturns for rolling windows.
| Name | Required | Description | Default |
|---|---|---|---|
| pathParams | Yes | ||
| queryParams | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the meaning of the return fields (decimal fraction, distributions reinvested) and the actual span of base_date/end_date, including partial years for launch/delist cases. This gives a transparent picture of the tool's behavior without requiring external assumptions.
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 description is concise, comprising three sentences that pack essential information: function, parameter usage, return semantics, and differentiation from a sibling tool. No redundant or vague wording is present.
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?
The description is self-contained: it explains the tool's purpose, parameter behavior, return value interpretation, and points to the correct alternative for different use cases. It covers all necessary context for a user to decide when and how to invoke the 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?
Both parameters are thoroughly described in the schema and further clarified in the description: year's optionality and format, and market's informational role. The description adds context beyond the schema by explaining the meaning of the return values, enhancing parameter understanding.
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 clearly states the tool's function: retrieving full calendar-year total returns for a single fund. It distinguishes this from getTrailingReturns, which covers rolling windows, eliminating ambiguity.
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?
Explicit instructions are given: pass a specific year or omit it to get the latest completed year. The description also notes that market is informational and defaults to US, and directs users to getTrailingReturns for rolling windows, providing clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getFundAInspect
Fetch one fund's metadata by ticker (code): name, type (ETF or FUND), exchange, currency, ISIN, active/inactive status, and the date range for which return data exists. Returns 404 if the ticker is unknown. Use searchFunds to resolve a name to a code; use the returns tools for performance.
| Name | Required | Description | Default |
|---|---|---|---|
| pathParams | Yes | ||
| queryParams | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the 404 behavior for unknown tickers and clarifies that the market parameter has no effect on lookups. Since no annotations are provided, these are useful behavioral hints, though it does not explicitly state the operation is read-only or mention other potential error conditions.
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 description is concise, two sentences, and directly conveys the purpose, return contents, error behavior, and sibling-tool guidance. No redundant or extraneous information is included.
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?
The description covers what metadata is returned (name, type, exchange, currency, ISIN, active/inactive, date range), the 404 error for unknown tickers, and points to sibling tools for related use cases. Given there is no output schema, this provides sufficient context for an agent to decide when and how to use the 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?
While the tool description itself does not elaborate on parameters, the input schema provides clear descriptions for both 'code' (bare ticker, case-sensitive, examples) and 'market' (default US, informational). The description also reinforces the meaning of 'code' by referring to it as a ticker, and the schema fully covers the semantics.
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 clearly states the tool fetches a single fund's metadata by ticker, listing the exact fields returned. It also explicitly differentiates from sibling tools: searchFunds for name resolution and returns tools for performance data, leaving no ambiguity about the tool's role.
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?
It gives explicit direction on when to use this tool versus alternatives: use searchFunds to resolve a name, and use returns tools for performance. It also notes the market parameter is informational and does not affect lookups, preventing misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getTrailingReturnsAInspect
Trailing total returns for one fund: 1d, 1w, 1m, 3m, 6m, YTD, 1y-20y, and since inception. Latest by default, or pass as_of (snaps to the prior trading day). Values are decimal fractions of total return, distributions reinvested (0.1234 = +12.34%); 2y and longer are annualized (CAGR). Use batchTrailingReturns for many funds.
| Name | Required | Description | Default |
|---|---|---|---|
| pathParams | Yes | ||
| queryParams | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses the return-value semantics: decimal fractions, distributions reinvested, annualized (CAGR) for 2y and longer, and example 0.1234 = +12.34%. It also explains as_of snapping behavior ('snaps to the prior trading day') and that the latest data is used by default. This is substantial context beyond the schema.
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?
Four tightly packed sentences with no fluff; the core purpose is front-loaded, then keys behavior (default/as_of), then value semantics, then the sibling route. Every sentence adds necessary information and the structure supports quick agent parsing.
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 single-fund returns tool, the description covers periods, default date handling, value format, annualization, and batch alternative. Combined with the detailed schema, an agent has everything needed to call correctly. No output schema exists, but value semantics are explained, making the definition complete.
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?
The schema already provides rich descriptions for all leaf parameters (code, as_of, market), so the baseline is 3. The description echoes some as_of behavior and adds the default/latest nuance, but most parameter meaning remains in the schema. It does not describe the code or market parameters, relying on the schema's existing detail.
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 opens with a specific verb+resource: 'Trailing total returns for one fund' and enumerates the exact periods (1d, 1w, 1m, 3m, 6m, YTD, 1y-20y, since inception). It also names the sibling tool for many funds, clearly distinguishing scope from batchTrailingReturns. This leaves no ambiguity about what the tool does.
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?
It explicitly routes multi-fund use cases to batchTrailingReturns ('Use batchTrailingReturns for many funds.'), which is a clear when-not alternative. It also states the default behavior and the as_of option, but it does not explicitly contrast with getCalendarReturns, leaving some inference to the agent from the 'trailing' vs 'calendar' naming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchFundsAInspect
Search the ~32,000 US mutual funds and ETFs by name or ticker to get the code the other tools need. Returns fund metadata only — name, type (ETF or FUND), exchange, currency, ISIN, and the date range with return data — plus next_cursor for keyset paging. No performance figures here; use getTrailingReturns / getCalendarReturns for those.
| Name | Required | Description | Default |
|---|---|---|---|
| queryParams | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full disclosure burden and largely meets it: it reveals the read-only nature (metadata only), the response fields, keyset paging via next_cursor, and the negative space (no performance data). A 5 would require additional operational traits such as result ordering or rate-limit behavior, which remain implicit.
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?
Four tight sentences, each earning its place: the core purpose is front-loaded, followed by the response summary, the pagination note, and the explicit routing to sibling tools. There is no filler or redundant repetition of what the schema already states.
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?
Without an output schema and annotations, the description must explain return values and behavioral boundaries, and it does: result fields, pagination, and the exclusion boundary are covered, while the nested schema documents the remaining input details. The only completeness gap is the absence of operational details like rate limits or result ordering.
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?
Top-level schema coverage is 0%, so the description must compensate, and it partially does: it gives `q` its purpose (search by name/ticker to obtain the code), states the type values ETF/FUND, and explains the cursor round-trip. However, `limit`, `country`, and `exchange` are not mentioned in prose; the nested schema documents them clearly, so the practical gap is moderate.
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 opens with a specific verb and resource: 'Search the ~32,000 US mutual funds and ETFs by name or ticker' to obtain the `code` other tools need. It also differentiates from siblings by stating what it returns (metadata only) and what it does not (performance figures), so an agent can tell it apart from getTrailingReturns and getCalendarReturns without opening a schema.
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 positions the tool as the necessary lookup step — 'to get the `code` the other tools need' — and explicitly names the alternatives for the excluded functionality: 'No performance figures here; use getTrailingReturns / getCalendarReturns for those.' This is precise when-to-use guidance that leaves nothing to inference.
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.
6 tool updates
- Changed
batchCalendarReturns1 field changed- changed
Input schema / properties / body / properties / codes / descriptionPrevious value: -"Bare tickers, e.g. ['SPY', 'QQQ']."New value: +"1–100 bare tickers, case-sensitive, e.g. [\"SPY\", \"QQQ\", \"VTSAX\"]."
- Changed
batchTrailingReturns1 field changed- changed
Input schema / properties / body / properties / codes / descriptionPrevious value: -"Bare tickers, e.g. ['SPY', 'QQQ']."New value: +"1–100 bare tickers, case-sensitive, e.g. [\"SPY\", \"QQQ\", \"VTSAX\"]."
- Changed
getCalendarReturns2 fields changed- added
Input schema / properties / pathParams / properties / code / descriptionAdded value: +"The fund's bare ticker, case-sensitive — e.g. `SPY`, `QQQ`, `VTSAX`. If you only have a name, resolve it with searchFunds first." - changed
Input schema / properties / queryParams / properties / year / descriptionPrevious value: -"Specific calendar year. Omit for latest."New value: +"A four-digit calendar year, e.g. `2022`. Omit for the fund's most recent completed year."
- Changed
getFund1 field changed- added
Input schema / properties / pathParams / properties / code / descriptionAdded value: +"The fund's bare ticker, case-sensitive — e.g. `SPY`, `QQQ`, `VTSAX`. If you only have a name, resolve it with searchFunds first."
- Changed
getTrailingReturns2 fields changed- added
Input schema / properties / pathParams / properties / code / descriptionAdded value: +"The fund's bare ticker, case-sensitive — e.g. `SPY`, `QQQ`, `VTSAX`. If you only have a name, resolve it with searchFunds first." - changed
Input schema / properties / queryParams / properties / as_of / descriptionPrevious value: -"As-of date. If it isn't a trading day (weekend/holiday), snaps back to the nearest prior trading day; the response's as_of_date is the actual day returned. Omit for the latest available."New value: +"Return the figures as of this date (`YYYY-MM-DD`). On a weekend or market holiday it snaps back to the nearest prior trading day — the response's `as_of_date` shows the day actually used. Omit for the latest available data."
- Changed
searchFunds6 fields changed- added
Input schema / properties / queryParams / properties / country / descriptionAdded value: +"Filter by domicile country as stored (e.g. `USA`). Exact match." - changed
Input schema / properties / queryParams / properties / cursor / descriptionPrevious value: -"Opaque keyset cursor (a code)."New value: +"Keyset pagination cursor: the `next_cursor` from the previous response. Omit for the first page." - added
Input schema / properties / queryParams / properties / exchange / descriptionAdded value: +"Filter by listing exchange as stored (e.g. `NYSE ARCA`, `NASDAQ`). Exact match." - added
Input schema / properties / queryParams / properties / limit / descriptionAdded value: +"Page size, 1–1000. Defaults to 100." - changed
Input schema / properties / queryParams / properties / q / descriptionPrevious value: -"Fuzzy match on ticker or name."New value: +"Case-insensitive substring match on ticker or fund name (e.g. `vanguard 500`, `SPY`). Omit to list every fund." - changed
Input schema / properties / queryParams / properties / type / descriptionPrevious value: -"Security type, e.g. ETF or FUND."New value: +"Filter by security type: `ETF` or `FUND` (mutual fund). Matched exactly."
6 tool updates
- First observed
batchCalendarReturns - First observed
batchTrailingReturns - First observed
getCalendarReturns - First observed
getFund - First observed
getTrailingReturns - First observed
searchFunds
Related MCP Connectors
Independent US ETF data: holdings, fees, overlap, returns, each with its source and date.
Live market data, financial analysis, and portfolio research tools across 10,000+ tickers.
Backtest strategies and analyze portfolios on any ticker: CAGR, drawdown, Sharpe, from real data.
U.S. closed-end funds from SEC filings: activist stakes, tender offers, votes, costs, holdings.
Related MCP Servers
AlicenseAqualityAmaintenanceCorrelation, ETF holdings overlap, beta, volatility and diversifiers for 4,700+ US stocks and ETFs, any of 11.3M pairs. Free API, no key, read-only.6559 npm2MIT- AlicenseNot gradedqualityCmaintenanceEnables agents to pull US stock financials, SEC filing timelines, ticker comparisons, screens, and fund profiles, with every value returned alongside the URL of the filing it came from. Answers are strictly filing-grounded and gaps come back as missing rather than estimated.364 npmMIT

EvidInvestofficial
AlicenseNot gradedqualityBmaintenanceSEC-filed financial statements back to 1985 for US-listed companies, plus global coverage, every number cited to its filing with an accession number. 59 tools for income statements, balance sheets, cash flow, growth rates, valuation (DCF, reverse DCF, comparables, fair-value range), SEC filing and earnings-call search, supply chains, 13F holders, options positioning and thesis monitoring.MIT- FlicenseAqualityBmaintenanceEnables retrieval, normalization, and computed evidence for Indian mutual fund NAVs, portfolios, and documents with provenance, including fund resolution, performance lookup, portfolio reconciliation, and document/profile access. It does not rate, recommend, or provide investment advice.5-
Glama MCP Gateway
Add one secure layer between your agents and this server.