Fruit Stand Fund Returns

Trailing & calendar-year returns for 32,000+ US mutual funds & ETFs — fund performance by ticker.

我该使用它吗

质量与安全性

A
描述质量
100%
模式完整度
80%
命名质量
93%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~2,151token 数(工具定义)
~2.8 KB典型响应大小
对注意力有中等影响(占 128k 上下文窗口的 1.68%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 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
}

社区

评价此服务器

证据

最近观测

已验证未记录版本6 个工具
已验证未记录版本6 个工具