{"openapi":"3.1.0","info":{"title":"Glassnode (BYOK) API","version":"0.1.0","description":"Glassnode (BYOK) lets an AI assistant read your own Glassnode data through the Glassnode API with a key you supply (Glassnode API key (Professional plan, or Advanced for the Light API)). Read-only: 11 tools (list_assets, list_exchanges, list_metric_paths, get_metric_metadata, get_metric_series, get_price, get_price_ohlc, get_market_cap, get_mvrv, get_active_addresses, get_sopr). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-glassnode.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-glassnode/docs"},"termsOfService":"https://connectorbay.com/byok-glassnode/terms"},"servers":[{"url":"https://byok-glassnode.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-glassnode/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_assets":{"post":{"operationId":"list_assets","summary":"List the assets Glassnode covers with id, symbol, name, type and tags; narrow with a CEL filter such as asset.id=='ETH' ","description":"List the assets Glassnode covers with id, symbol, name, type and tags; narrow with a CEL filter such as asset.id=='ETH' or asset.semantic_tags.exists(tag,tag=='stablecoin'). Use for \"Which stablecoins does Glassnode cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"filter":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"CEL expression to narrow the list, for example asset.semantic_tags.exists(tag,tag=='stablecoin').","title":"Filter"}},"title":"list_assetsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_exchanges":{"post":{"operationId":"list_exchanges","summary":"List the exchanges Glassnode supports for exchange metrics. Use for \"Which exchanges can I query exchange flows for\".","description":"List the exchanges Glassnode supports for exchange metrics. Use for \"Which exchanges can I query exchange flows for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_exchangesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_metric_paths":{"post":{"operationId":"list_metric_paths","summary":"List the metric paths that exist, optionally only those available for an asset, exchange or resolution; use the path wit","description":"List the metric paths that exist, optionally only those available for an asset, exchange or resolution; use the path with get_metric_series or get_metric_metadata. Use for \"Which metrics exist for ETH at 1 hour resolution\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asset":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Only metrics available for this asset id, for example BTC.","title":"Asset"},"exchange":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only metrics available for this exchange, for example binance.","title":"Exchange"},"interval":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only metrics available at this resolution, for example 1h or 24h.","title":"Interval"}},"title":"list_metric_pathsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_metric_metadata":{"post":{"operationId":"get_metric_metadata","summary":"Describe one metric: allowed parameters and values, available time range, name, group, tags and documentation link. Use ","description":"Describe one metric: allowed parameters and values, available time range, name, group, tags and documentation link. Use for \"What parameters and history does the SOPR metric support for BTC\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"path":{"description":"Metric path as listed by list_metric_paths, for example /indicators/sopr.","maxLength":120,"title":"Path","type":"string"},"asset":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Narrow the allowed parameters to this asset id.","title":"Asset"}},"required":["path"],"title":"get_metric_metadataArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_metric_series":{"post":{"operationId":"get_metric_series","summary":"Get the time series of any metric by its category and name (the path /category/metric from list_metric_paths) for an ass","description":"Get the time series of any metric by its category and name (the path /category/metric from list_metric_paths) for an asset, between two timestamps, at a chosen resolution. Metrics whose values are objects or need extra parameters are returned as the API gives them. Use for \"Show the 30 day history of the NUPL metric for BTC\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"description":"Metric category, the first part of the path, for example indicators, market or addresses.","maxLength":200,"title":"Category","type":"string"},"metric":{"description":"Metric name, the second part of the path, for example sopr or price_usd_close.","maxLength":200,"title":"Metric","type":"string"},"asset":{"description":"Glassnode asset id, for example BTC or ETH (see list_assets).","maxLength":20,"title":"Asset","type":"string"},"since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Start of the range as a Unix timestamp in seconds.","title":"Since"},"until":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"End of the range as a Unix timestamp in seconds.","title":"Until"},"interval":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Resolution: 10m, 1h, 24h, 1w or 1month; allowed values depend on the metric and your plan.","title":"Interval"},"timestamp_format":{"anyOf":[{"enum":["unix","humanized"],"type":"string"},{"type":"null"}],"default":"humanized","description":"Format of the t timestamps.","title":"Timestamp Format"}},"required":["category","metric","asset"],"title":"get_metric_seriesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_price":{"post":{"operationId":"get_price","summary":"Get the closing price of an asset in USD over time, aggregated from centralised and decentralised exchanges. Use for \"Wh","description":"Get the closing price of an asset in USD over time, aggregated from centralised and decentralised exchanges. Use for \"What was the BTC price over the last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asset":{"description":"Glassnode asset id, for example BTC or ETH (see list_assets).","maxLength":20,"title":"Asset","type":"string"},"since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Start of the range as a Unix timestamp in seconds.","title":"Since"},"until":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"End of the range as a Unix timestamp in seconds.","title":"Until"},"interval":{"anyOf":[{"enum":["10m","1h","24h","1w","1month"],"type":"string"},{"type":"null"}],"default":null,"description":"Resolution of the series: 10m, 1h, 24h, 1w, 1month. Allowed values depend on the metric and your plan.","title":"Interval"},"timestamp_format":{"anyOf":[{"enum":["unix","humanized"],"type":"string"},{"type":"null"}],"default":"humanized","description":"Format of the t timestamps.","title":"Timestamp Format"}},"required":["asset"],"title":"get_priceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_price_ohlc":{"post":{"operationId":"get_price_ohlc","summary":"Get open, high, low and close price of an asset in USD over time. Use for \"Show daily BTC OHLC prices for the last month","description":"Get open, high, low and close price of an asset in USD over time. Use for \"Show daily BTC OHLC prices for the last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asset":{"description":"Glassnode asset id, for example BTC or ETH (see list_assets).","maxLength":20,"title":"Asset","type":"string"},"since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Start of the range as a Unix timestamp in seconds.","title":"Since"},"until":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"End of the range as a Unix timestamp in seconds.","title":"Until"},"interval":{"anyOf":[{"enum":["10m","1h","24h"],"type":"string"},{"type":"null"}],"default":null,"description":"Resolution of the series: 10m, 1h, 24h. Allowed values depend on the metric and your plan.","title":"Interval"},"timestamp_format":{"anyOf":[{"enum":["unix","humanized"],"type":"string"},{"type":"null"}],"default":"humanized","description":"Format of the t timestamps.","title":"Timestamp Format"}},"required":["asset"],"title":"get_price_ohlcArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_market_cap":{"post":{"operationId":"get_market_cap","summary":"Get the market capitalisation (network value) of an asset in USD over time. Use for \"How has the ETH market cap changed ","description":"Get the market capitalisation (network value) of an asset in USD over time. Use for \"How has the ETH market cap changed this quarter\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asset":{"description":"Glassnode asset id, for example BTC or ETH (see list_assets).","maxLength":20,"title":"Asset","type":"string"},"since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Start of the range as a Unix timestamp in seconds.","title":"Since"},"until":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"End of the range as a Unix timestamp in seconds.","title":"Until"},"interval":{"anyOf":[{"enum":["10m","1h","24h","1w","1month"],"type":"string"},{"type":"null"}],"default":null,"description":"Resolution of the series: 10m, 1h, 24h, 1w, 1month. Allowed values depend on the metric and your plan.","title":"Interval"},"timestamp_format":{"anyOf":[{"enum":["unix","humanized"],"type":"string"},{"type":"null"}],"default":"humanized","description":"Format of the t timestamps.","title":"Timestamp Format"}},"required":["asset"],"title":"get_market_capArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_mvrv":{"post":{"operationId":"get_mvrv","summary":"Get the MVRV ratio (market cap divided by realized cap) of an asset over time. Use for \"Is BTC MVRV high or low compared","description":"Get the MVRV ratio (market cap divided by realized cap) of an asset over time. Use for \"Is BTC MVRV high or low compared with last year\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asset":{"description":"Glassnode asset id, for example BTC or ETH (see list_assets).","maxLength":20,"title":"Asset","type":"string"},"since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Start of the range as a Unix timestamp in seconds.","title":"Since"},"until":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"End of the range as a Unix timestamp in seconds.","title":"Until"},"interval":{"anyOf":[{"enum":["10m","1h","24h","1w","1month"],"type":"string"},{"type":"null"}],"default":null,"description":"Resolution of the series: 10m, 1h, 24h, 1w, 1month. Allowed values depend on the metric and your plan.","title":"Interval"},"timestamp_format":{"anyOf":[{"enum":["unix","humanized"],"type":"string"},{"type":"null"}],"default":"humanized","description":"Format of the t timestamps.","title":"Timestamp Format"}},"required":["asset"],"title":"get_mvrvArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_active_addresses":{"post":{"operationId":"get_active_addresses","summary":"Get the number of active addresses of an asset over time. Use for \"How many active BTC addresses were there each day las","description":"Get the number of active addresses of an asset over time. Use for \"How many active BTC addresses were there each day last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asset":{"description":"Glassnode asset id, for example BTC or ETH (see list_assets).","maxLength":20,"title":"Asset","type":"string"},"since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Start of the range as a Unix timestamp in seconds.","title":"Since"},"until":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"End of the range as a Unix timestamp in seconds.","title":"Until"},"interval":{"anyOf":[{"enum":["10m","1h","24h","1w","1month"],"type":"string"},{"type":"null"}],"default":null,"description":"Resolution of the series: 10m, 1h, 24h, 1w, 1month. Allowed values depend on the metric and your plan.","title":"Interval"},"timestamp_format":{"anyOf":[{"enum":["unix","humanized"],"type":"string"},{"type":"null"}],"default":"humanized","description":"Format of the t timestamps.","title":"Timestamp Format"}},"required":["asset"],"title":"get_active_addressesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_sopr":{"post":{"operationId":"get_sopr","summary":"Get the Spent Output Profit Ratio (SOPR) of an asset over time; above 1 means coins moved at a profit on average. Use fo","description":"Get the Spent Output Profit Ratio (SOPR) of an asset over time; above 1 means coins moved at a profit on average. Use for \"Is BTC SOPR above 1 this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asset":{"description":"Glassnode asset id, for example BTC or ETH (see list_assets).","maxLength":20,"title":"Asset","type":"string"},"since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Start of the range as a Unix timestamp in seconds.","title":"Since"},"until":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"End of the range as a Unix timestamp in seconds.","title":"Until"},"interval":{"anyOf":[{"enum":["10m","1h","24h","1w","1month"],"type":"string"},{"type":"null"}],"default":null,"description":"Resolution of the series: 10m, 1h, 24h, 1w, 1month. Allowed values depend on the metric and your plan.","title":"Interval"},"timestamp_format":{"anyOf":[{"enum":["unix","humanized"],"type":"string"},{"type":"null"}],"default":"humanized","description":"Format of the t timestamps.","title":"Timestamp Format"}},"required":["asset"],"title":"get_soprArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}