{"name":"dev.fruitstand/fund-returns","slug":"fruitstand-fund-returns","title":"Fruit Stand Fund Returns","description":"Trailing & calendar-year returns for 32,000+ US mutual funds & ETFs — fund performance by ticker.","url":"https://mcp.market/server/fruitstand-fund-returns","rating":null,"grade":"A","score":87,"certified":false,"status":"active","category":"productivity","tags":["productivity"],"presence":{"score":23,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-09-09T22:32:02.000Z","license":"MIT"},"uptime":{"percent":100,"checks":3,"ok":3,"last_checked_at":"2026-09-20T03:56:00.189Z","last_ok_at":"2026-09-20T03:56:00.189Z","latency_ms":569},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/fruitstanddev/fruitstand-mcp","website":"https://fruitstand.dev","version":"1.0.1","remotes":[{"type":"streamable-http","url":"https://api.fruitstand.dev/mcp","headers":[{"description":"Bearer token — your Fruit Stand API key. Get a free key at https://app.fruitstand.dev (no key = 401).","isRequired":true,"isSecret":true,"name":"Authorization"}]}],"packages":[],"tools":[{"name":"batchCalendarReturns","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"body":{"type":"object","properties":{"codes":{"minItems":1,"type":"array","items":{"type":"string"},"description":"1–100 bare tickers, case-sensitive, e.g. [\"SPY\", \"QQQ\", \"VTSAX\"]."},"market":{"default":"US","description":"Market/exchange code for the funds. Defaults to US; informational and does not affect lookups (codes are bare tickers). Reserved for future multi-market support.","type":"string"},"year":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["codes"],"additionalProperties":{}}},"required":["body"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"batchTrailingReturns","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"body":{"type":"object","properties":{"codes":{"minItems":1,"type":"array","items":{"type":"string"},"description":"1–100 bare tickers, case-sensitive, e.g. [\"SPY\", \"QQQ\", \"VTSAX\"]."},"market":{"default":"US","description":"Market/exchange code for the funds. Defaults to US; informational and does not affect lookups (codes are bare tickers). Reserved for future multi-market support.","type":"string"},"as_of":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]}},"required":["codes"],"additionalProperties":{}}},"required":["body"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"getCalendarReturns","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"queryParams":{"type":"object","properties":{"market":{"description":"Market/exchange code for the fund. Defaults to US — all funds are currently US-listed and `code` is a bare ticker (e.g. SPY), so this is informational and does not affect lookups. Reserved for future multi-market support.","default":"US","type":"string"},"year":{"description":"A four-digit calendar year, e.g. `2022`. Omit for the fund's most recent completed year.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":false},"pathParams":{"type":"object","properties":{"code":{"type":"string","description":"The fund's bare ticker, case-sensitive — e.g. `SPY`, `QQQ`, `VTSAX`. If you only have a name, resolve it with searchFunds first."}},"required":["code"],"additionalProperties":false}},"required":["queryParams","pathParams"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"getFund","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"queryParams":{"type":"object","properties":{"market":{"description":"Market/exchange code for the fund. Defaults to US — all funds are currently US-listed and `code` is a bare ticker (e.g. SPY), so this is informational and does not affect lookups. Reserved for future multi-market support.","default":"US","type":"string"}},"additionalProperties":false},"pathParams":{"type":"object","properties":{"code":{"type":"string","description":"The fund's bare ticker, case-sensitive — e.g. `SPY`, `QQQ`, `VTSAX`. If you only have a name, resolve it with searchFunds first."}},"required":["code"],"additionalProperties":false}},"required":["queryParams","pathParams"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"getTrailingReturns","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"queryParams":{"type":"object","properties":{"market":{"description":"Market/exchange code for the fund. Defaults to US — all funds are currently US-listed and `code` is a bare ticker (e.g. SPY), so this is informational and does not affect lookups. Reserved for future multi-market support.","default":"US","type":"string"},"as_of":{"description":"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.","anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]}},"additionalProperties":false},"pathParams":{"type":"object","properties":{"code":{"type":"string","description":"The fund's bare ticker, case-sensitive — e.g. `SPY`, `QQQ`, `VTSAX`. If you only have a name, resolve it with searchFunds first."}},"required":["code"],"additionalProperties":false}},"required":["queryParams","pathParams"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}},{"name":"searchFunds","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"queryParams":{"type":"object","properties":{"q":{"description":"Case-insensitive substring match on ticker or fund name (e.g. `vanguard 500`, `SPY`). Omit to list every fund.","anyOf":[{"type":"string"},{"type":"null"}]},"type":{"description":"Filter by security type: `ETF` or `FUND` (mutual fund). Matched exactly.","anyOf":[{"type":"string"},{"type":"null"}]},"country":{"description":"Filter by domicile country as stored (e.g. `USA`). Exact match.","anyOf":[{"type":"string"},{"type":"null"}]},"exchange":{"description":"Filter by listing exchange as stored (e.g. `NYSE ARCA`, `NASDAQ`). Exact match.","anyOf":[{"type":"string"},{"type":"null"}]},"cursor":{"description":"Keyset pagination cursor: the `next_cursor` from the previous response. Omit for the first page.","anyOf":[{"type":"string"},{"type":"null"}]},"limit":{"description":"Page size, 1–1000. Defaults to 100.","default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false}},"required":["queryParams"],"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false}}],"scan":{"score":87,"grade":"A","scanned_at":"2026-09-20T00:26:25.908Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T00:26:26.059Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1452ms"]},"poisoning":{"score":15,"max":15,"notes":["6 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":15,"max":15,"notes":["last push 10 days ago"]},"identity":{"score":7,"max":10,"notes":["namespace and repository owner differ","GitHub account older than a year","website matches verified namespace"]}},"findings":[],"inputs":{"probes":[{"url":"https://api.fruitstand.dev/mcp","reachable":true,"authRequired":false,"latencyMs":1452,"serverInfo":{"name":"fruitstand-fund-returns","version":"1.0.0"}}],"packages":[],"repo":{"found":true,"owner":"fruitstanddev","repo":"fruitstand-mcp","archived":false,"pushedAt":"2026-09-09T22:32:02Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/23206852?v=4","ownerCreatedAt":"2016-11-02T05:53:37Z","license":"MIT"},"icon":{"url":"https://fruitstand.dev/mintlify-assets/_mintlify/favicons/fruit-stand/Cy-NRUKdMVyrNt-w/_generated/favicon/apple-touch-icon.png","source":"site","width":180,"height":180},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-09T22:32:02.000Z","score":23}}}},"grade_history":[],"reviews":[]}