Skip to main content
Glama

Get Token Price Historical

get_token_price_historical
Read-only

Get historical crypto prices over a 1–365 day window: period statistics (start, end, % change, high, low), a downsampled daily series, high_30d, std_30d, and dca_baseline_90d. Use for period comparisons and trend analysis; prefer over web_search for time-comparative financial queries. Pass stats_only=true when the daily series is unnecessary.

Use when: Use for time-comparative financial questions — month-over-month, YTD, volatility, or DCA baselines. Prefer over web_search for such queries. Use the pre-computed stats directly; do not re-derive them with calculate.

Limitations: Daily granularity (downsampled), max 365-day window, CoinGecko coverage only. Check dca_baseline_90d_partial before relying on the baseline — incomplete history yields a partial baseline.

Alternatives: get_token_price, web_search

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
daysNoLookback window in days (1–365). 1=5-min granularity, 2-90=hourly, 91+=daily.
tokensYesToken symbols or CoinGecko IDs (e.g. ['BTC', 'ETH']). Max 10 per call.
stats_onlyNoIf true, omit the daily price series and return period stats plus precomputed 30-day high/volatility and 90-day DCA baseline metrics.
vs_currencyNoQuote currency (usd, eur, gbp, btc, eth). Lowercase 3–10 letters.usd

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
daysYes
tokensYes
vs_currencyYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed12 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / days / title
      Added value: +"Days"
    • addedInput schema / properties / stats_only / title
      Added value: +"Stats Only"
    • addedInput schema / properties / tokens / title
      Added value: +"Tokens"
    • addedInput schema / properties / vs_currency / title
      Added value: +"Vs Currency"
    • addedInput schema / title
      Added value: +"mcp_get_token_price_historicalArguments"
    • addedOutput schema / $defs
      Added value: +{
      +  "DailyPricePoint": {
      +    "properties": {
      +      "date": {
      +        "title": "Date",
      +        "type": "string"
      +      },
      +      "price": {
      +        "title": "Price",
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "date",
      +      "price"
      +    ],
      +    "title": "DailyPricePoint",
      +    "type": "object"
      +  },
      +  "TokenHistoricalEntry": {
      +    "properties": {
      +      "daily_prices": {
      +        "items": {
      +          "$ref": "#/$defs/DailyPricePoint"
      +        },
      +        "title": "Daily Prices",
      +        "type": "array"
      +      },
      +      "dca_baseline_90d": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Mean of weekly daily-close samples from the preceding 90 UTC days, in vs_currency.",
      +        "title": "Dca Baseline 90D"
      +      },
      +      "dca_baseline_90d_partial": {
      +        "anyOf": [
      +          {
      +            "type": "boolean"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "True when the DCA baseline uses incomplete 90-day history; null when unavailable.",
      +        "title": "Dca Baseline 90D Partial"
      +      },
      +      "high_30d": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Maximum raw price observation in the trailing 30 UTC days, in vs_currency.",
      +        "title": "High 30D"
      +      },
      +      "id": {
      +        "title": "Id",
      +        "type": "string"
      +      },
      +      "price_change_pct": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "title": "Price Change Pct"
      +      },
      +      "price_end": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "title": "Price End"
      +      },
      +      "price_high": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "title": "Price High"
      +      },
      +      "price_low": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "title": "Price Low"
      +      },
      +      "price_start": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "title": "Price Start"
      +      },
      +      "std_30d": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Population standard deviation of trailing 30-day simple daily returns, as a decimal.",
      +        "title": "Std 30D"
      +      },
      +      "symbol": {
      +        "title": "Symbol",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "symbol",
      +      "price_start",
      +      "price_end",
      +      "price_change_pct",
      +      "price_high",
      +      "price_low",
      +      "daily_prices"
      +    ],
      +    "title": "TokenHistoricalEntry",
      +    "type": "object"
      +  }
      +}
    • addedOutput schema / properties / tokens / items / $ref
      Added value: +"#/$defs/TokenHistoricalEntry"
    • removedOutput schema / properties / tokens / items / properties
      Removed value: -{
      -  "daily_prices": {
      -    "items": {
      -      "properties": {
      -        "date": {
      -          "title": "Date",
      -          "type": "string"
      -        },
      -        "price": {
      -          "title": "Price",
      -          "type": "number"
      -        }
      -      },
      -      "required": [
      -        "date",
      -        "price"
      -      ],
      -      "title": "DailyPricePoint",
      -      "type": "object"
      -    },
      -    "title": "Daily Prices",
      -    "type": "array"
      -  },
      -  "dca_baseline_90d": {
      -    "anyOf": [
      -      {
      -        "type": "number"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "default": null,
      -    "description": "Mean of weekly daily-close samples from the preceding 90 UTC days, in vs_currency.",
      -    "title": "Dca Baseline 90D"
      -  },
      -  "dca_baseline_90d_partial": {
      -    "anyOf": [
      -      {
      -        "type": "boolean"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "default": null,
      -    "description": "True when the DCA baseline uses incomplete 90-day history; null when unavailable.",
      -    "title": "Dca Baseline 90D Partial"
      -  },
      -  "high_30d": {
      -    "anyOf": [
      -      {
      -        "type": "number"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "default": null,
      -    "description": "Maximum raw price observation in the trailing 30 UTC days, in vs_currency.",
      -    "title": "High 30D"
      -  },
      -  "id": {
      -    "title": "Id",
      -    "type": "string"
      -  },
      -  "price_change_pct": {
      -    "anyOf": [
      -      {
      -        "type": "number"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "title": "Price Change Pct"
      -  },
      -  "price_end": {
      -    "anyOf": [
      -      {
      -        "type": "number"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "title": "Price End"
      -  },
      -  "price_high": {
      -    "anyOf": [
      -      {
      -        "type": "number"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "title": "Price High"
      -  },
      -  "price_low": {
      -    "anyOf": [
      -      {
      -        "type": "number"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "title": "Price Low"
      -  },
      -  "price_start": {
      -    "anyOf": [
      -      {
      -        "type": "number"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "title": "Price Start"
      -  },
      -  "std_30d": {
      -    "anyOf": [
      -      {
      -        "type": "number"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "default": null,
      -    "description": "Population standard deviation of trailing 30-day simple daily returns, as a decimal.",
      -    "title": "Std 30D"
      -  },
      -  "symbol": {
      -    "title": "Symbol",
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / tokens / items / required
      Removed value: -[
      -  "id",
      -  "symbol",
      -  "price_start",
      -  "price_end",
      -  "price_change_pct",
      -  "price_high",
      -  "price_low",
      -  "daily_prices"
      -]
    • removedOutput schema / properties / tokens / items / title
      Removed value: -"TokenHistoricalEntry"
    • removedOutput schema / properties / tokens / items / type
      Removed value: -"object"
  2. Changed5 schema fields changed
    • changedInput schema / properties / stats_only / description
      Previous value: -"If true, omit the daily price series and return only period stats (start/end/change/high/low) to reduce payload size."New value: +"If true, omit the daily price series and return period stats plus precomputed 30-day high/volatility and 90-day DCA baseline metrics."
    • addedOutput schema / properties / tokens / items / properties / dca_baseline_90d
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Mean of weekly daily-close samples from the preceding 90 UTC days, in vs_currency.",
      +  "title": "Dca Baseline 90D"
      +}
    • addedOutput schema / properties / tokens / items / properties / dca_baseline_90d_partial
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "True when the DCA baseline uses incomplete 90-day history; null when unavailable.",
      +  "title": "Dca Baseline 90D Partial"
      +}
    • addedOutput schema / properties / tokens / items / properties / high_30d
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Maximum raw price observation in the trailing 30 UTC days, in vs_currency.",
      +  "title": "High 30D"
      +}
    • addedOutput schema / properties / tokens / items / properties / std_30d
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Population standard deviation of trailing 30-day simple daily returns, as a decimal.",
      +  "title": "Std 30D"
      +}
  3. First observed

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations include readOnlyHint=true, so the safety profile is already known. The description adds value beyond that by disclosing the 1–365 day window, daily downsampling granularity, CoinGecko coverage limitation, and the partial dca_baseline_90d caveat. It stops short of describing error conditions (e.g., unknown token symbols), which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (output summary, use-when, limitations, alternatives) and front-loads the key capability. It is slightly longer than strictly necessary — the use-when section partly repeats the opening paragraph — but every sentence earns its place, and the repetition is pedagogically useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 100% schema coverage, the output schema, and the readOnly annotation, the description covers the remaining semantic ground: when to prefer this tool, what its limits are, and how to avoid misusing the partial DCA baseline. A fully complete description would also mention handling of invalid token symbols or the exact meaning of 'downsampled', but these are minor given the rich schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so per the rubric baseline is 3. The description earns an extra point by explaining when stats_only matters and by adding the usage semantics for the days parameter (1=5-min, 2-90=hourly, 91+=daily) — though that granularity note actually lives in the schema, the description's guidance on stats_only and the DCA baseline caveat adds meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the specific resource (historical crypto prices), the action (get), and enumerates the concrete outputs (period stats, daily series, high_30d, std_30d, dca_baseline_90d). It explicitly contrasts with get_token_price and web_search, so an agent can distinguish this tool from its siblings without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance ('time-comparative financial questions — month-over-month, YTD, volatility, or DCA baselines'), a preference rule ('Prefer over web_search'), and a performance tip ('Pass stats_only=true when the daily series is unnecessary'). It also warns against re-deriving stats with calculate, naming the alternative tool directly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources