Fruit Stand Fund Returns
Trailing & calendar-year returns for 32,000+ US mutual funds & ETFs — fund performance by ticker.
我該用這個嗎
品質與安全性
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"fund-returns": {
"url": "https://api.fruitstand.dev/mcp"
}
}
}遠端端點
https://api.fruitstand.dev/mcpstreamable-http它能做什麼
工具清單
工具(6)
🟢searchFunds(queryParams)
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",
"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
}🟢getFund(queryParams, pathParams)
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",
"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
}⚪getTrailingReturns(queryParams, pathParams)
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",
"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
}⚪batchTrailingReturns(body)
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",
"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
}⚪getCalendarReturns(queryParams, pathParams)
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",
"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
}⚪batchCalendarReturns(body)
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",
"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
}社群
證據