{"openapi":"3.1.0","info":{"title":"Tatum (BYOK) API","version":"0.1.0","description":"Tatum (BYOK) lets an AI assistant read your own Tatum data through the Tatum API with a key you supply (Tatum API key). Read-only: 10 tools (get_exchange_rate, get_ohlcv, get_price_change, get_wallet_portfolio, get_transaction_history, get_transactions_by_hash, get_nft_balances, get_latest_block, resolve_domain_name, get_token_metadata). The BYOK key travels with each request, is used for that...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-tatum.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-tatum/docs"},"termsOfService":"https://connectorbay.com/byok-tatum/terms"},"servers":[{"url":"https://byok-tatum.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-tatum/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_exchange_rate":{"post":{"operationId":"get_exchange_rate","summary":"Get the current exchange rate of a crypto or fiat symbol in a target asset (default EUR). Costs 20 Tatum credits when th","description":"Get the current exchange rate of a crypto or fiat symbol in a target asset (default EUR). Costs 20 Tatum credits when the target is fiat, USDT or USDC, 50 otherwise; the free plan only accepts fiat, USDT or USDC targets. Use for \"What is the current ETH price in USD\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symbol":{"description":"Asset to price, for example 'ETH' or 'BTC'.","maxLength":20,"title":"Symbol","type":"string"},"base_pair":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Asset to express the price in, for example 'USD' or 'EUR' (default EUR).","title":"Base Pair"}},"required":["symbol"],"title":"get_exchange_rateArguments","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_ohlcv":{"post":{"operationId":"get_ohlcv","summary":"Get one OHLCV candle (open, high, low, close, volume) in USD for a symbol at a time. Costs 50 credits. Use for \"Give me ","description":"Get one OHLCV candle (open, high, low, close, volume) in USD for a symbol at a time. Costs 50 credits. Use for \"Give me the BTC daily candle for 2026-10-01\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symbol":{"description":"Base symbol such as BTC or ETH.","maxLength":20,"title":"Symbol","type":"string"},"time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Candle time in ISO 8601, for example 2026-10-01T00:00:00Z. Give either time or unix.","title":"Time"},"unix":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Candle time as Unix milliseconds. Give either unix or time.","title":"Unix"},"interval":{"anyOf":[{"enum":["1m","5m","15m","30m","45m","1h","2h","4h","1d","1w"],"type":"string"},{"type":"null"}],"default":null,"description":"Candle size: 1m, 5m, 15m, 30m, 45m, 1h, 2h, 4h, 1d or 1w (default 1m).","title":"Interval"}},"required":["symbol"],"title":"get_ohlcvArguments","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_change":{"post":{"operationId":"get_price_change","summary":"Get the absolute and percentage price change of a symbol over an interval or a time range. Costs 200 credits. Use for \"H","description":"Get the absolute and percentage price change of a symbol over an interval or a time range. Costs 200 credits. Use for \"How much did BTC change in the last day\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symbol":{"description":"Base symbol such as BTC or ETH.","maxLength":20,"title":"Symbol","type":"string"},"base_pair":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Quote asset, default USDT.","title":"Base Pair"},"interval":{"anyOf":[{"enum":["1m","5m","15m","30m","45m","1h","2h","4h","1d","1w"],"type":"string"},{"type":"null"}],"default":null,"description":"Interval ending at the last closed candle: 1m, 5m, 15m, 30m, 45m, 1h, 2h, 4h, 1d or 1w. Use this or timeFrom and timeTo.","title":"Interval"},"time_from":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Range start, ISO 8601 (use together with time_to).","title":"Time From"},"time_to":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Range end, ISO 8601.","title":"Time To"}},"required":["symbol"],"title":"get_price_changeArguments","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_wallet_portfolio":{"post":{"operationId":"get_wallet_portfolio","summary":"Get a wallet's native, fungible token or NFT balances on one chain. Costs 50 credits. Use for \"What tokens does the wall","description":"Get a wallet's native, fungible token or NFT balances on one chain. Costs 50 credits. Use for \"What tokens does the wallet 0xd8dA... hold on Ethereum\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"chain":{"description":"Blockchain id. Chain ids look like ethereum-mainnet, base-mainnet, arb-one-mainnet, bsc-mainnet, polygon-mainnet, optimism-mainnet or solana-mainnet (which chains work depends on the tool; testnets end in -sepolia, -testnet, -devnet or -amoy).","maxLength":40,"title":"Chain","type":"string"},"addresses":{"description":"One wallet address (only one is allowed per call).","maxLength":100,"title":"Addresses","type":"string"},"token_types":{"description":"Which balances: native, fungible or nft,multitoken.","enum":["native","fungible","nft,multitoken"],"title":"Token Types","type":"string"},"exclude_metadata":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to leave out token metadata.","title":"Exclude Metadata"},"page_size":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 50, default 50).","title":"Page Size"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Offset for the next page; use the nextPage value from the previous answer.","title":"Offset"}},"required":["chain","addresses","token_types"],"title":"get_wallet_portfolioArguments","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_transaction_history":{"post":{"operationId":"get_transaction_history","summary":"List a wallet's transactions (native, token and NFT transfers) on one chain, newest first by default. Costs 20 credits. ","description":"List a wallet's transactions (native, token and NFT transfers) on one chain, newest first by default. Costs 20 credits. Use for \"Show the latest transfers of wallet 0xd8dA... on Ethereum\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"chain":{"description":"Blockchain id. Chain ids look like ethereum-mainnet, base-mainnet, arb-one-mainnet, bsc-mainnet, polygon-mainnet, optimism-mainnet or solana-mainnet (which chains work depends on the tool; testnets end in -sepolia, -testnet, -devnet or -amoy).","maxLength":40,"title":"Chain","type":"string"},"addresses":{"description":"One wallet address (only one is allowed per call).","maxLength":100,"title":"Addresses","type":"string"},"transaction_types":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by type, comma-separated: fungible, nft, multitoken, native.","title":"Transaction Types"},"transaction_subtype":{"anyOf":[{"enum":["incoming","outgoing","zero-transfer"],"type":"string"},{"type":"null"}],"default":null,"description":"incoming, outgoing or zero-transfer.","title":"Transaction Subtype"},"token_address":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only transfers of this token contract.","title":"Token Address"},"block_from":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"First block to include.","title":"Block From"},"block_to":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Last block to include.","title":"Block To"},"sort":{"anyOf":[{"enum":["ASC","DESC"],"type":"string"},{"type":"null"}],"default":null,"description":"ASC (oldest first) or DESC (default).","title":"Sort"},"page_size":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 50, default 50).","title":"Page Size"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Offset for the next page; use the nextPage value from the previous answer.","title":"Offset"}},"required":["chain","addresses"],"title":"get_transaction_historyArguments","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_transactions_by_hash":{"post":{"operationId":"get_transactions_by_hash","summary":"Look up a transaction by its hash on one chain and return its transfers. Costs 10 credits. Use for \"What are the transfe","description":"Look up a transaction by its hash on one chain and return its transfers. Costs 10 credits. Use for \"What are the transfers in transaction 0xabc... on Ethereum\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"chain":{"description":"Blockchain id. Chain ids look like ethereum-mainnet, base-mainnet, arb-one-mainnet, bsc-mainnet, polygon-mainnet, optimism-mainnet or solana-mainnet (which chains work depends on the tool; testnets end in -sepolia, -testnet, -devnet or -amoy).","maxLength":40,"title":"Chain","type":"string"},"hash":{"description":"Transaction hash.","maxLength":100,"title":"Hash","type":"string"}},"required":["chain","hash"],"title":"get_transactions_by_hashArguments","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_nft_balances":{"post":{"operationId":"get_nft_balances","summary":"List the NFTs a wallet holds on one chain, with contract, token balances and metadata links. Costs 50 credits. Use for \"","description":"List the NFTs a wallet holds on one chain, with contract, token balances and metadata links. Costs 50 credits. Use for \"Which NFTs does 0xd8dA... hold on Ethereum\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"chain":{"description":"Blockchain id. Chain ids look like ethereum-mainnet, base-mainnet, arb-one-mainnet, bsc-mainnet, polygon-mainnet, optimism-mainnet or solana-mainnet (which chains work depends on the tool; testnets end in -sepolia, -testnet, -devnet or -amoy).","maxLength":40,"title":"Chain","type":"string"},"address":{"description":"Wallet address.","maxLength":100,"title":"Address","type":"string"}},"required":["chain","address"],"title":"get_nft_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/get_latest_block":{"post":{"operationId":"get_latest_block","summary":"Get the latest block of a chain: number, timestamp, hash and transaction hashes. Costs 10 credits. Use for \"What is the ","description":"Get the latest block of a chain: number, timestamp, hash and transaction hashes. Costs 10 credits. Use for \"What is the latest Ethereum block\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"chain":{"description":"Blockchain id. Chain ids look like ethereum-mainnet, base-mainnet, arb-one-mainnet, bsc-mainnet, polygon-mainnet, optimism-mainnet or solana-mainnet (which chains work depends on the tool; testnets end in -sepolia, -testnet, -devnet or -amoy).","maxLength":40,"title":"Chain","type":"string"}},"required":["chain"],"title":"get_latest_blockArguments","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/resolve_domain_name":{"post":{"operationId":"resolve_domain_name","summary":"Resolve a blockchain domain name (ENS, Solana and similar) to a wallet address. Costs 20 credits. Use for \"Which address","description":"Resolve a blockchain domain name (ENS, Solana and similar) to a wallet address. Costs 20 credits. Use for \"Which address does vitalik.eth point to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"chain":{"description":"Chain id: ethereum-mainnet, base-mainnet, arb-one-mainnet, bsc-mainnet or solana-mainnet.","maxLength":40,"title":"Chain","type":"string"},"name":{"description":"Domain name, for example 'vitalik.eth'.","maxLength":100,"title":"Name","type":"string"}},"required":["chain","name"],"title":"resolve_domain_nameArguments","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_token_metadata":{"post":{"operationId":"get_token_metadata","summary":"Get metadata for NFT or multi-token IDs of a contract: metadata URI and metadata. Costs 10 credits. Use for \"Show the me","description":"Get metadata for NFT or multi-token IDs of a contract: metadata URI and metadata. Costs 10 credits. Use for \"Show the metadata of token 1 of contract 0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D on Ethereum\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"chain":{"description":"Blockchain id. Chain ids look like ethereum-mainnet, base-mainnet, arb-one-mainnet, bsc-mainnet, polygon-mainnet, optimism-mainnet or solana-mainnet (which chains work depends on the tool; testnets end in -sepolia, -testnet, -devnet or -amoy).","maxLength":40,"title":"Chain","type":"string"},"token_address":{"description":"Token contract address.","maxLength":100,"title":"Token Address","type":"string"},"token_ids":{"description":"Comma-separated token IDs, for example '1,2'.","maxLength":200,"title":"Token Ids","type":"string"}},"required":["chain","token_address","token_ids"],"title":"get_token_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}}}}