{"openapi":"3.1.0","info":{"title":"Amberdata (BYOK) API","version":"0.1.0","description":"Amberdata (BYOK) lets an AI assistant read your own Amberdata data through the Amberdata API with a key you supply (Amberdata API key (trial: 15 calls per second, 20,000 per day)). Read-only: 12 tools (get_address_balance, list_address_token_balances, list_token_holders, list_address_transactions, list_dex_exchanges, list_dex_pairs, get_dex_pair_metrics, list_lending_protocols,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-amberdata.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-amberdata/docs"},"termsOfService":"https://connectorbay.com/byok-amberdata/terms"},"servers":[{"url":"https://byok-amberdata.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-amberdata/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/get_address_balance":{"post":{"operationId":"get_address_balance","summary":"Get the current ether balance of an Ethereum address in wei, with block number and time. Use for \"What is the ETH balanc","description":"Get the current ether balance of an Ethereum address in wei, with block number and time. Use for \"What is the ETH balance of this Ethereum address\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"hash":{"description":"Ethereum address, 0x-prefixed hex.","maxLength":66,"title":"Hash","type":"string"}},"required":["hash"],"title":"get_address_balanceArguments","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_address_token_balances":{"post":{"operationId":"list_address_token_balances","summary":"List the ERC-20 token balances held by an Ethereum address, with token name, symbol, decimals and amount. Use for \"Which","description":"List the ERC-20 token balances held by an Ethereum address, with token name, symbol, decimals and amount. Use for \"Which tokens does this Ethereum address hold\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"hash":{"description":"Ethereum address, 0x-prefixed hex.","maxLength":66,"title":"Hash","type":"string"},"page":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Records per page.","title":"Size"},"sort_type":{"anyOf":[{"enum":["amount","name","symbol"],"type":"string"},{"type":"null"}],"default":null,"description":"Rank tokens by amount, name or symbol.","title":"Sort Type"},"direction":{"anyOf":[{"enum":["ascending","descending"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction.","title":"Direction"}},"required":["hash"],"title":"list_address_token_balancesArguments","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_token_holders":{"post":{"operationId":"list_token_holders","summary":"List the current holders of an ERC-20 token with holder address, amount held and first-held time. Use for \"Who holds thi","description":"List the current holders of an ERC-20 token with holder address, amount held and first-held time. Use for \"Who holds this Ethereum token\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"hash":{"description":"Token contract address, 0x-prefixed hex.","maxLength":66,"title":"Hash","type":"string"},"page":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Records per page.","title":"Size"}},"required":["hash"],"title":"list_token_holdersArguments","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_address_transactions":{"post":{"operationId":"list_address_transactions","summary":"List confirmed Ethereum transactions of an address, newest first, with hash, block, value, gas and status. Use for \"What","description":"List confirmed Ethereum transactions of an address, newest first, with hash, block, value, gas and status. Use for \"What are the latest transactions of this Ethereum address\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"hash":{"description":"Ethereum address, 0x-prefixed hex.","maxLength":66,"title":"Hash","type":"string"},"start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only transactions at or after this date (RFC3339 or date).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only transactions before this date.","title":"End Date"},"direction":{"anyOf":[{"enum":["ascending","descending"],"type":"string"},{"type":"null"}],"default":"descending","description":"Order of results.","title":"Direction"},"page":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Records per page (up to 1000).","title":"Size"}},"required":["hash"],"title":"list_address_transactionsArguments","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_dex_exchanges":{"post":{"operationId":"list_dex_exchanges","summary":"List the decentralized exchange protocols tracked by Amberdata with their id and number of pairs. Use for \"Which DEX pro","description":"List the decentralized exchange protocols tracked by Amberdata with their id and number of pairs. Use for \"Which DEX protocols does Amberdata cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"exchange":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by exchange name or address.","title":"Exchange"},"sort_by":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"numPairs","description":"Sort criterion, for example numPairs or name.","title":"Sort By"}},"title":"list_dex_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_dex_pairs":{"post":{"operationId":"list_dex_pairs","summary":"List trading pairs (pools) of a decentralized exchange, with pair name, pool address and base and quote tokens. Use for ","description":"List trading pairs (pools) of a decentralized exchange, with pair name, pool address and base and quote tokens. Use for \"Which pools exist on Uniswap v3\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"exchange":{"description":"Exchange name or address.","maxLength":200,"title":"Exchange","type":"string"},"pair":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by pool address.","title":"Pair"},"asset":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by token address or symbol.","title":"Asset"},"size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Maximum number of items.","title":"Size"}},"required":["exchange"],"title":"list_dex_pairsArguments","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_dex_pair_metrics":{"post":{"operationId":"get_dex_pair_metrics","summary":"Get the latest liquidity and volume metrics of one DEX pool. Use for \"What is the latest liquidity of this Uniswap v2 po","description":"Get the latest liquidity and volume metrics of one DEX pool. Use for \"What is the latest liquidity of this Uniswap v2 pool\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"exchange":{"description":"Exchange name or address.","maxLength":60,"title":"Exchange","type":"string"},"pair":{"description":"Pool address.","maxLength":66,"title":"Pair","type":"string"}},"required":["exchange","pair"],"title":"get_dex_pair_metricsArguments","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_lending_protocols":{"post":{"operationId":"list_lending_protocols","summary":"List DeFi lending protocols (Aave, Compound, Maker and others) with total deposited, collateral and borrowed USD per cha","description":"List DeFi lending protocols (Aave, Compound, Maker and others) with total deposited, collateral and borrowed USD per chain. Use for \"How much is deposited and borrowed in Aave v3\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"blockchain":{"anyOf":[{"enum":["ethereum-mainnet","polygon-mainnet","avalanche-mainnet","arbitrum-mainnet","optimism-mainnet"],"type":"string"},{"type":"null"}],"default":null,"description":"Chain slug filter.","title":"Blockchain"},"protocol":{"anyOf":[{"enum":["makerdao","compound","compoundv2","compoundv3","aave","aavev2","aavev3"],"type":"string"},{"type":"null"}],"default":null,"description":"Protocol filter.","title":"Protocol"}},"title":"list_lending_protocolsArguments","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_lending_assets":{"post":{"operationId":"list_lending_assets","summary":"List assets in DeFi lending protocols with supply and borrow rates, per protocol, market and chain. Use for \"What is the","description":"List assets in DeFi lending protocols with supply and borrow rates, per protocol, market and chain. Use for \"What is the borrow rate of WBTC on Aave v2\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"blockchain":{"anyOf":[{"enum":["ethereum-mainnet","polygon-mainnet","avalanche-mainnet","arbitrum-mainnet","optimism-mainnet"],"type":"string"},{"type":"null"}],"default":null,"description":"Chain slug filter.","title":"Blockchain"},"protocol":{"anyOf":[{"enum":["makerdao","compound","compoundv2","compoundv3","aave","aavev2","aavev3"],"type":"string"},{"type":"null"}],"default":null,"description":"Protocol filter.","title":"Protocol"},"asset":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Asset id or symbol.","title":"Asset"},"market":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Market id or name.","title":"Market"}},"title":"list_lending_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/get_lending_protocol_metrics":{"post":{"operationId":"get_lending_protocol_metrics","summary":"Get the time series summary metrics of a lending protocol: deposited, borrowed, liquidated and revenue totals in USD. Us","description":"Get the time series summary metrics of a lending protocol: deposited, borrowed, liquidated and revenue totals in USD. Use for \"How have deposits and borrows in Aave v3 developed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"protocol_id":{"description":"Lending protocol id.","enum":["aavev2","aavev3","makerdao","compoundv2"],"title":"Protocol Id","type":"string"},"start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only data on or after this date, for example 2025-01-01.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only data before this date.","title":"End Date"},"time_format":{"anyOf":[{"enum":["ms","iso","hr"],"type":"string"},{"type":"null"}],"default":"hr","description":"Timestamp format.","title":"Time Format"}},"required":["protocol_id"],"title":"get_lending_protocol_metricsArguments","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_stablecoins":{"post":{"operationId":"list_stablecoins","summary":"List stablecoins tracked by Amberdata analytics with their contract addresses per chain. Use for \"Which stablecoins does","description":"List stablecoins tracked by Amberdata analytics with their contract addresses per chain. Use for \"Which stablecoins does Amberdata track\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asset_symbol":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Stablecoin symbol filter.","title":"Asset Symbol"},"blockchain":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Chain slug filter.","title":"Blockchain"}},"title":"list_stablecoinsArguments","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_asset_market_cap":{"post":{"operationId":"get_asset_market_cap","summary":"Get the market cap time series of an asset by its Amberdata arcId: price, circulating supply and market cap. Use for \"Wh","description":"Get the market cap time series of an asset by its Amberdata arcId: price, circulating supply and market cap. Use for \"What is the market cap of Bitcoin over the last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"arc_id":{"description":"Amberdata asset id, for example AMB:BTC000000000 (listed by the supported assets endpoint).","maxLength":60,"title":"Arc Id","type":"string"},"start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only data on or after this date, for example 2025-01-01.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Exclusive end date.","title":"End Date"}},"required":["arc_id"],"title":"get_asset_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}}}}