Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Certificate changed, valid to 2027-01-26
Changed the definition of "get_candlestick_data", "get_historical_price", "get_latest_price" and 1 more
⟨27 unchanged words⟩ value here overrides that. Get one at https://docs.pyth.network/price-feeds/pro/acquire-access-token//docs.pyth.network/price-feeds/pro/acquire-api-key","minLength":1,"pattern":"^[\\x21-\\x7E ⟨118 unchanged words⟩
⟨27 unchanged words⟩ value here overrides that. Get one at https://docs.pyth.network/price-feeds/pro/acquire-access-token//docs.pyth.network/price-feeds/pro/acquire-api-key","minLength":1,"pattern":"^[\\x21-\\x7E ⟨95 unchanged words⟩
⟨27 unchanged words⟩ value here overrides that. Get one at https://docs.pyth.network/price-feeds/pro/acquire-access-token//docs.pyth.network/price-feeds/pro/acquire-api-key","minLength":1,"pattern":"^[\\x21-\\x7E ⟨135 unchanged words⟩
⟨27 unchanged words⟩ value here overrides that. Get one at https://docs.pyth.network/price-feeds/pro/acquire-access-token//docs.pyth.network/price-feeds/pro/acquire-api-key","minLength":1,"pattern":"^[\\x21-\\x7E ⟨171 unchanged words⟩
Added "get_price_range"; changed the definition of "convert_date_to_timestamp", "get_candlestick_data", "get_historical_price" and 2 more (5 tools before, 6 now)
Convert a date string to Unix timestamp for use with get_historical_price, get_price_range and get_candlestick_data. Use this tool when you need ⟨39 unchanged words⟩
Fetch OHLC candlestickdatabars foraonesymbol.symbol,Pass
Certificate recorded, valid to 2026-11-28
Authorization not required
First tool surface recorded: 5 tools (server version 0.2.0)
Showing the latest 6 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨5 unchanged words⟩ ,"properties":{"access_token":{"description":"The user's own Pyth Pro accesstokentoken.usedOmittoitauthenticatewhen therequest.user configured one in their MCP client; a value here overrides that. Get one at https://docs.pyth.network/price-feeds/pro/acquire-access-token","minLength":1,"pattern":"^[\\x21-\\x7E]+$","type":"string"},"channel":{"description":"Override the default channel (e.g.updatefixed_rate@200ms,rate): real_time, fixed_rate@50ms,fixed_rate@1000ms)fixed_rate@200ms, fixed_rate@1000ms. Must not be faster than the feed's min_channel.","patternenum":["^(real_time|fixed_rate@\\d+ms)$real_time","fixed_rate@50ms","fixed_rate@200ms","fixed_rate@1000ms"],"type":"string"},"from":{"description":"Start time,(Unix seconds only (not milliseconds)","exclusiveMinimum":0,"type":"integer" ⟨35 unchanged words⟩ :"string"},"symbol":{"description":"FullOne symbol from get_symbolsincluding asset type prefix(e.g. 'Crypto.BTC/USD',not'Equity.US.AAPL/USD') or a bare pair like 'BTC/USD')","minLength":1,"type":"string"},"to":{"description":"End time,(Unix seconds only (not milliseconds)","exclusiveMinimum":0,"type":"integer" ⟨7 unchanged words⟩
Get the pricedataofforonespecificor more feeds ataonehistoricalpasttimestamp.instant.PassRequiresyourthe user's own Pyth Pro access token. If the user configured it in their MCP client, omit `access_token`; otherwise pass it as `access_token`,toandauthenticateif therequest.toolUsereports it missing, ask the user for it. Symbols can be full names from get_symbolsfirst(e.g. 'Crypto.BTC/USD', 'Equity.US.AAPL/USD') or bare pairs like 'BTC/USD'. A bare pair resolves tofindthe live spot feedIDswhenortheresymbols.is one, otherwise to the only remaining live match; `resolved_symbols` in the response shows what each input resolved to, and an ambiguous input returns an error listing the candidates. If both price_feed_ids and symbols are provided, only price_feed_ids are used.AcceptsThe timestamp accepts Unix seconds, milliseconds,or microseconds (auto-detected) and is rounded down to the channel rate (e.g. a multiple of 200 ms for fixed_rate@200ms). Historical data is available from April 2025onward —onward; do not requesttimestampstimes before that.The timestamp isRequestedinternallyfeedsconvertedthattoreturnmicrosecondsnoandpricealignedare(roundedlisteddown)into`missing_feed_ids`the(e.g.channelbetarateor—coming_soone.g.feeds,fororfixed_rate@200ms,aitchannelmustfasterbethandivisiblethebyfeed's200,000μs.min_channel). Prices are integers with an exponent field—: human-readable price = price * 10^exponent. Pre-computeddisplay_pricedisplay_* fieldsare(display_price,includeddisplay_bid, display_ask, display_confidence, display_ema_price, display_ema_confidence, display_funding_rate) apply the exponent forconvenience.you. Price tools: get_latest_price for now, get_historical_price for one past instant, get_price_range for every update within up to 60 seconds, get_candlestick_data for OHLC bars over longer periods. Timestamp reference (Unix seconds): 2025-04-01 (earliest available) = 1743465600 2026-01-01 = 1767225600 2026-06-01 = 1780272000 Always double-check your timestamp math—(year-boundary errors arecommon.common), or use convert_date_to_timestamp.
⟨5 unchanged words⟩ ,"properties":{"access_token":{"description":"The user's own Pyth Pro accesstokentoken.usedOmittoitauthenticatewhen therequest.user configured one in their MCP client; a value here overrides that. Get one at https://docs.pyth.network/price-feeds/pro/acquire-access-token","minLength":1,"pattern":"^[\\x21-\\x7E]+$","type":"string"},"channel":{"description":"Override the default channel (e.g.updatefixed_rate@200ms,rate): real_time, fixed_rate@50ms,fixed_rate@1000ms)fixed_rate@200ms, fixed_rate@1000ms. Must not be faster than the feed's min_channel.","patternenum":["^(real_time|fixed_rate@\\d+ms)$
Get the most recent real-time price for one or more feeds. Requiresanthe user's own Pyth Pro access token. If the user configured it in their MCP client, omit `access_token`; otherwise pass it as `access_token`,parameterand(getifonetheattoolhttps://docs.pyth.network/price-feeds/pro/acquire-access-token).reportsUseit missing, ask the user for it. Symbols can be full names from get_symbolsfirst(e.g. 'Crypto.BTC/USD', 'Equity.US.AAPL/USD') or bare pairs like 'BTC/USD'. A bare pair resolves tofindthesymbolsliveorspot feedIDs.whenIMPORTANT:theresymbolsismustone,beotherwise to thefullonlynameremainingincludingliveassetmatch;type`resolved_symbols`prefixin(e.g.the'Crypto.BTC/USD'response shows what each input resolved to,notand'BTC/USD').an ambiguous input returns an error listing the candidates. If both price_feed_ids and symbols are provided, only price_feed_ids are used. Requested feeds that return no price are listed in `missing_feed_ids` (e.g. beta or coming_soon feeds, or a channel faster than the feed's min_channel). Prices are integers with an exponent field—: human-readable price = price * 10^exponent. Pre-computeddisplay_pricedisplay_* fieldsare(display_price,includeddisplay_bid, display_ask, display_confidence, display_ema_price, display_ema_confidence, display_funding_rate) apply the exponent forconvenience.you. Price tools: get_latest_price for now, get_historical_price for one past instant, get_price_range for every update within up to 60 seconds, get_candlestick_data for OHLC bars over longer periods.
⟨5 unchanged words⟩ ,"properties":{"access_token":{"description":"The user's own Pyth Pro access token. Omit it when the user configured one in their MCP client; a value here overrides that. Get one at https://pyth.network/pricing//docs.pyth.network/price-feeds/pro/acquire-access-token","minLength":1,"pattern":"^[\\x21-\\x7E]+$","type":"string"},"channel":{"description":"Override the default channel (e.g.updatefixed_rate@200ms,rate): real_time, fixed_rate@50ms,fixed_rate@1000ms)fixed_rate@200ms, fixed_rate@1000ms. Must not be faster than the feed's min_channel.","patternenum":["^(real_time|fixed_rate@\\d+ms)$real_time","fixed_rate@50ms","fixed_rate@200ms","fixed_rate@1000ms"],"type":"string"},"price_feed_ids":{"description":"Numeric feed IDs (pyth_lazer_id) fromget_symbolsget_symbols. Max 100.","items":{"exclusiveMinimum":0,"type" ⟨5 unchanged words⟩
⟨11 unchanged words⟩ what feeds exist before calling get_latest_price, get_historical_price, get_price_range orget_candlestick_data.get_candlestick_data (those also accept bare pairs like BTC/USD). Filter by asset_type (e.g. crypto, equity, fx, metal,ratescommodity,commodityinterest-rate, funding-rate, kalshi) or search by name/symbol. Narrow further with instrument_type (spot, future, ...) or symbol_chain_id (all contracts of one futures chain, e.g. VX). Retired (inactive) feeds are hidden unless include_inactive is true. Returns compact feed metadata:includingsymbol, name, description, pyth_lazer_id, asset_type, instrument_type, state, exponent, min_channel (neededfastestforchannelget_historical_pricethe feed supports),symbolquote_currency,asset_typeand where set groups (entitlement groups that gate the feed), expiration_time andexponent.symbol_chain_id (futures). Pass verbose: true for every catalog field, e.g. market_sessions (trading-hours schedules) and corporate_actions (e.g. stock splits). With an access token, the list also includes feeds visible only to Pro keys, and each feed has `entitled`: true means this key can query the feed right now. When `entitled` is false, `not_entitled_reason` says why: `not_live (...)` means the feed is in beta, not live yet, or retired, so no key can query it (NOT a plan limitation), `requires one of entitlement groups: ...` means the user's plan lacks that entitlement.
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"access_token":{"description":"Optional. The user's own Pyth Pro access token; omit it when the user configured one in their MCP client. With a token the list includes feeds visible only to Pro keys, and each feed gets an `entitled` flag.","minLength":1,"pattern":"^[\\x21-\\x7E]+$","type":"string"},"asset_type":{"description":"Filter by asset type: crypto, crypto-index, crypto-redemption-rate, fx, equity, metal, rates, interest-rate, nav, commodity, funding-rate, eco, kalshi","enum":["crypto","crypto-index","crypto-redemption-rate","fx","equity","metal","rates","interest-rate","nav","commodity","funding-rate","eco","kalshi"],"type":"string"},"include_inactive":{"default":false,"description":"Include retired feeds (state 'inactive'). Default false: inactive feeds are hidden.","type":"boolean"},"instrument_type":{"description":"Filter by instrument type: spot, future, perp, rate, index, nav","enum":["spot","future","perp","rate","index","nav"],"type":"string"},"limit":{"default":50,"description":"Results ⟨29 unchanged words⟩ 'BTC', 'gold', 'AAPL')","type":"string"},"symbol_chain_id":{"description":"Filter futures by chain ID, exact and case-sensitive (e.g. 'VX' for all VIX futures contracts)","minLength":1,"type":"string"},"verbose":{"default":false,"description":"Return every catalog field (trading schedules, market_sessions, corporate_actions, hermes_id, ...). Default false: compact feeds, about 4x smaller.","type":"boolean"}},"type":"object"}
Get Price Range — Get every price update for one or more feeds within a short historical window (at most 60 seconds), e.g. to see exactly how a price moved around an event. Requires the user's own Pyth Pro access token. If the user configured it in their MCP client, omit `access_token`; otherwise pass it as `access_token`, and if the tool reports it missing, ask the user for it. Symbols can be full names from get_symbols (e.g. 'Crypto.BTC/USD', 'Equity.US.AAPL/USD') or bare pairs like 'BTC/USD'. A bare pair resolves to the live spot feed when there is one, otherwise to the only remaining live match; `resolved_…