Skip to main content
Glama

get_daily_prices

Read-only

Returns daily end-of-day closing-price history for one US-listed ticker (stocks, ETFs, mutual funds — including delisted tickers, so historical analysis is survivorship-bias-free). Coverage extends back as far as 1962 for the oldest names, subject to plan history limits. PAID PLANS ONLY. Each row: date, close (as-traded), adj_close (split+dividend adjusted — use THIS for charts and return calculations), div_cash (dividend with that ex-date), split_factor (e.g. 4 = 4:1 split that session). price_currency (top level) is the ISO currency of EVERY price in the response: USD. KeyVex covers US-listed securities priced in US dollars (foreign companies listed on US exchanges included); a ticker listed only elsewhere, e.g. a Shanghai or Shenzhen A-share, answers 'Not covered' with no prices. null means the currency is not known. include_ohlc=true adds the session's open / high / low / volume and their adjusted variants — the day's RANGE, which is what a stop or a target is actually tested against. On weekly/monthly these are aggregated over the period (first open, highest high, lowest low, summed volume), not the last session's values. Omit the flag and the response is unchanged. At most 5,000 rows per call (5,000 daily rows is about 20 years). When the window holds more, the response says truncated=true. Without since, you get the NEWEST 5,000 and prev_until: call again with until=prev_until for the page before. With since, you get the 5,000 from since onward and next_since: call again with since=next_since for the page after. Rows are never dropped silently. For multi-year ranges prefer frequency='weekly' or 'monthly' (last bar per period; dividends summed, split factors compounded), which never page: 10 years daily ≈ 2,500 rows vs ~120 monthly. One call = one ticker. Compare securities with multiple calls. Close Prices from Tiingo.com.

Input Schema

NameRequiredDescriptionDefault
sinceNoISO date YYYY-MM-DD inclusive. Default: earliest your plan allows. Setting since pages FORWARD from it: to read the next page of a long window, pass the previous response's next_since.
untilNoISO date YYYY-MM-DD inclusive. Default: latest available. Without since a long window returns its newest 5,000 rows; to read the page before, pass the previous response's prev_until here.
tickerYesTicker symbol, e.g. 'AAPL', 'SPY', 'BRK-B' (hyphen for share classes).
frequencyNoDownsampling. Default daily. Use weekly/monthly for multi-year charts.
include_ohlcNoAdd open/high/low/volume (+ adjusted variants) to each row. Default false. Aggregated per period on weekly/monthly.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / since / description
      Previous value: -"ISO date YYYY-MM-DD inclusive. Default: earliest your plan allows."New value: +"ISO date YYYY-MM-DD inclusive. Default: earliest your plan allows. Setting since pages FORWARD from it: to read the next page of a long window, pass the previous response's next_since."
    • changedInput schema / properties / until / description
      Previous value: -"ISO date YYYY-MM-DD inclusive. Default: latest available."New value: +"ISO date YYYY-MM-DD inclusive. Default: latest available. Without since a long window returns its newest 5,000 rows; to read the page before, pass the previous response's prev_until here."
  2. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint and openWorldHint annotations, the description discloses paid-plan restrictions, delisted-ticker support, currency behavior, truncation semantics, no-silent-row-dropping, and weekly/monthly aggregation rules. These are substantive behavioral details an agent needs before calling the tool.

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 front-loaded with the core purpose and is dense with useful operational detail, but it is still very long and occasionally packs related concepts into single sentences. The length is mostly justified by pagination and row-field complexity, though it could be tightened slightly.

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

Completeness5/5

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

With no output schema, the description carries the full burden and does so well: it describes each returned row field, currency semantics, truncation indicators, pagination continuation fields, and how include_ohlc changes the response. An agent has enough context to call and interpret the tool correctly.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds meaningful semantics beyond the schema: it explains how since/until drive forward and backward pagination via next_since and prev_until, what include_ohlc adds for stop/target testing, and how OHLC is aggregated on weekly/monthly periods. These details materially improve correct invocation.

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 opens with a specific verb and resource: returns daily end-of-day closing-price history for one US-listed ticker. It scopes the tool tightly by asset type, delisted coverage, currency, and one-ticker-per-call behavior, which effectively separates it from sibling tools such as intraday quotes or fundamentals.

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

Usage Guidelines4/5

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

It gives clear operational guidance for when to use frequency='weekly' or 'monthly', include_ohlc=true, and the since/until pagination parameters. However, it does not explicitly name sibling alternatives such as get_intraday_quote or explain when not to use this tool in favor of them.

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