{"openapi":"3.1.0","info":{"title":"Ethplorer (BYOK) API","version":"0.1.0","description":"Ethplorer (BYOK) lets an AI assistant read your own Ethplorer data through the Ethplorer API with a key you supply (Ethplorer API key (the shared test key is freekey)). Read-only: 10 tools (get_last_block, get_token_info, get_address_info, get_transaction_info, get_address_transactions, get_address_history, get_token_history, get_top_token_holders, get_top_tokens, get_new_tokens). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-ethplorer.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-ethplorer/docs"},"termsOfService":"https://connectorbay.com/byok-ethplorer/terms"},"servers":[{"url":"https://byok-ethplorer.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-ethplorer/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_last_block":{"post":{"operationId":"get_last_block","summary":"Get the number of the last Ethereum block Ethplorer has processed. Use for \"Which Ethereum block has Ethplorer indexed u","description":"Get the number of the last Ethereum block Ethplorer has processed. Use for \"Which Ethereum block has Ethplorer indexed up to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_last_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/get_token_info":{"post":{"operationId":"get_token_info","summary":"Get an ERC-20 token by contract address: name, symbol, decimals, supply, holder count, price, market cap and volume. Use","description":"Get an ERC-20 token by contract address: name, symbol, decimals, supply, holder count, price, market cap and volume. Use for \"What is the price and holder count of the token 0xf3db5fa2c66b7af3eb0c0b782510816cbe4813b8\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"address":{"description":"ERC-20 token contract address, 0x followed by 40 hex characters.","maxLength":200,"title":"Address","type":"string"}},"required":["address"],"title":"get_token_infoArguments","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_address_info":{"post":{"operationId":"get_address_info","summary":"Get an Ethereum address: ETH balance and price, contract creator if it is a contract, and the ERC-20 tokens it holds. Us","description":"Get an Ethereum address: ETH balance and price, contract creator if it is a contract, and the ERC-20 tokens it holds. Use for \"What ETH and tokens does 0xff71cb760666ab06aa73f34995b42dd4b85ea07b hold\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"address":{"description":"Ethereum address, 0x followed by 40 hex characters.","maxLength":200,"title":"Address","type":"string"},"token":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only report this token contract address instead of every token held.","title":"Token"},"show_txs_count":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to add the total number of transactions of the address.","title":"Show Txs Count"}},"required":["address"],"title":"get_address_infoArguments","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_info":{"post":{"operationId":"get_transaction_info","summary":"Get one Ethereum transaction: block, time, success flag, sender, recipient, value, gas and decoded function name. Use fo","description":"Get one Ethereum transaction: block, time, success flag, sender, recipient, value, gas and decoded function name. Use for \"What did transaction 0x6aa670c983425eba23314459c48ae89b3b8d0e1089397c56400ce2da5ece9d26 do\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tx_hash":{"description":"Transaction hash, 0x followed by 64 hex characters.","maxLength":200,"title":"Tx Hash","type":"string"}},"required":["tx_hash"],"title":"get_transaction_infoArguments","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_address_transactions":{"post":{"operationId":"get_address_transactions","summary":"List ETH transactions of an address with time, sender, recipient, value, USD value and success flag. Use for \"What are t","description":"List ETH transactions of an address with time, sender, recipient, value, USD value and success flag. Use for \"What are the latest ETH transactions of this address\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"address":{"description":"Ethereum address, 0x followed by 40 hex characters.","maxLength":200,"title":"Address","type":"string"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Maximum entries to return (1 to 1000 with a personal key; the shared freekey caps lower, around 100). Default 10.","title":"Limit"},"timestamp":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Unix time to start listing from (the key's plan limits how old it may be: 30 days on freekey, 1 year on a personal key).","title":"Timestamp"},"show_zero_values":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include transactions with zero ETH value.","title":"Show Zero Values"}},"required":["address"],"title":"get_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/get_address_history":{"post":{"operationId":"get_address_history","summary":"List recent token operations (transfers, mints, burns) involving an address, optionally for one token. Use for \"What tok","description":"List recent token operations (transfers, mints, burns) involving an address, optionally for one token. Use for \"What token transfers did this address make recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"address":{"description":"Ethereum address, 0x followed by 40 hex characters.","maxLength":200,"title":"Address","type":"string"},"token":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only operations of this token contract address.","title":"Token"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Maximum entries to return (1 to 1000 with a personal key; the shared freekey caps lower, around 100). Default 10.","title":"Limit"},"timestamp":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Unix time to start listing from (the key's plan limits how old it may be: 30 days on freekey, 1 year on a personal key).","title":"Timestamp"}},"required":["address"],"title":"get_address_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_token_history":{"post":{"operationId":"get_token_history","summary":"List recent operations of one token: transfers, mints or burns with time, parties and value. Use for \"What are the lates","description":"List recent operations of one token: transfers, mints or burns with time, parties and value. Use for \"What are the latest mints of this token\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"address":{"description":"ERC-20 token contract address, 0x followed by 40 hex characters.","maxLength":200,"title":"Address","type":"string"},"type":{"anyOf":[{"enum":["all","mint","burn"],"type":"string"},{"type":"null"}],"default":"all","description":"Operation type: all, mint or burn (the default is all).","title":"Type"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Maximum entries to return (1 to 1000 with a personal key; the shared freekey caps lower, around 100). Default 10.","title":"Limit"},"timestamp":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Unix time to start listing from (the key's plan limits how old it may be: 30 days on freekey, 1 year on a personal key).","title":"Timestamp"}},"required":["address"],"title":"get_token_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_top_token_holders":{"post":{"operationId":"get_top_token_holders","summary":"List the largest holders of a token with address, balance and percentage share. Use for \"Who holds the most of this toke","description":"List the largest holders of a token with address, balance and percentage share. Use for \"Who holds the most of this token\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"address":{"description":"ERC-20 token contract address, 0x followed by 40 hex characters.","maxLength":200,"title":"Address","type":"string"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Number of holders (1 to 1000 with a personal key, about 100 with freekey). Default 10.","title":"Limit"}},"required":["address"],"title":"get_top_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/get_top_tokens":{"post":{"operationId":"get_top_tokens","summary":"List the top 50 tokens ranked by trade volume, market capitalization or operation count. Use for \"Which tokens have the ","description":"List the top 50 tokens ranked by trade volume, market capitalization or operation count. Use for \"Which tokens have the largest market cap on Ethereum\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"criteria":{"anyOf":[{"enum":["trade","cap","count"],"type":"string"},{"type":"null"}],"default":"trade","description":"Ranking: trade (volume), cap (market cap) or count (operations). Default trade.","title":"Criteria"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Number of tokens (1 to 50).","title":"Limit"}},"title":"get_top_tokensArguments","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_new_tokens":{"post":{"operationId":"get_new_tokens","summary":"List up to 100 recently created tradable tokens, newest first, with price and holder count (Ethereum mainnet only). Use ","description":"List up to 100 recently created tradable tokens, newest first, with price and holder count (Ethereum mainnet only). Use for \"Which new tokens started trading on Ethereum recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_new_tokensArguments","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}}}}