Fruit Stand Fund Returns

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

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
80%
Calidad de los nombres
93%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~2,151Tokens (definiciones de herramientas)
~2.8 KBTamaño de respuesta típico
Impacto moderado en la atención (1.68% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "fund-returns": {
      "url": "https://api.fruitstand.dev/mcp"
    }
  }
}

Puntos de conexión remotos

https://api.fruitstand.dev/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (6)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada6 herramientas
verificadoversión no registrada6 herramientas