MCP 서버

Fruit Stand Fund Returns

dev.fruitstand/fund-returns
데이터 및 분석 금융 및 투자 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Searches a large catalog of US mutual funds and ETFs and returns trailing or calendar-year total returns by ticker.

batchCalendarReturns
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.
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['body'], 'properties': {'body': {'type': 'object', 'required': ['codes'], 'properties': {'year': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}]}, 'codes': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1, 'description': '1–100 bare tickers, case-sensitive, e.g. ["SPY", "QQQ", "VTSAX"].'}, 'market': {'type': 'string', '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.'}}, 'additionalProperties': {}}}, 'additionalProperties': False}
batchTrailingReturns
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.
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['body'], 'properties': {'body': {'type': 'object', 'required': ['codes'], 'properties': {'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'}]}, 'codes': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1, 'description': '1–100 bare tickers, case-sensitive, e.g. ["SPY", "QQQ", "VTSAX"].'}, 'market': {'type': 'string', '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.'}}, 'additionalProperties': {}}}, 'additionalProperties': False}
getCalendarReturns
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.
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['queryParams', 'pathParams'], 'properties': {'pathParams': {'type': 'object', 'required': ['code'], '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."}}, 'additionalProperties': False}, 'queryParams': {'type': 'object', 'properties': {'year': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': "A four-digit calendar year, e.g. `2022`. Omit for the fund's most recent completed year."}, 'market': {'type': 'string', 'default': 'US', '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.'}}, 'additionalProperties': False}}, 'additionalProperties': False}
getFund
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.
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['queryParams', 'pathParams'], 'properties': {'pathParams': {'type': 'object', 'required': ['code'], '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."}}, 'additionalProperties': False}, 'queryParams': {'type': 'object', 'properties': {'market': {'type': 'string', 'default': 'US', '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.'}}, 'additionalProperties': False}}, 'additionalProperties': False}
getTrailingReturns
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.
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['queryParams', 'pathParams'], 'properties': {'pathParams': {'type': 'object', 'required': ['code'], '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."}}, 'additionalProperties': False}, 'queryParams': {'type': 'object', 'properties': {'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'}], '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."}, 'market': {'type': 'string', 'default': 'US', '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.'}}, 'additionalProperties': False}}, 'additionalProperties': False}
searchFunds
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.
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['queryParams'], 'properties': {'queryParams': {'type': 'object', 'properties': {'q': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Case-insensitive substring match on ticker or fund name (e.g. `vanguard 500`, `SPY`). Omit to list every fund.'}, 'type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Filter by security type: `ETF` or `FUND` (mutual fund). Matched exactly.'}, 'limit': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Page size, 1–1000. Defaults to 100.'}, 'cursor': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Keyset pagination cursor: the `next_cursor` from the previous response. Omit for the first page.'}, 'country': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Filter by domicile country as stored (e.g. `USA`). Exact match.'}, 'exchange': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Filter by listing exchange as stored (e.g. `NYSE ARCA`, `NASDAQ`). Exact match.'}}, 'additionalProperties': False}}, 'additionalProperties': False}
추가됨
batchCalendarReturns
2026년 9월 17일 12:39 PM
추가됨
getCalendarReturns
2026년 9월 17일 12:39 PM
추가됨
batchTrailingReturns
2026년 9월 17일 12:39 PM
추가됨
getTrailingReturns
2026년 9월 17일 12:39 PM
추가됨
getFund
2026년 9월 17일 12:39 PM
추가됨
searchFunds
2026년 9월 17일 12:39 PM