{"openapi":"3.1.0","info":{"title":"Infura (BYOK) API","version":"0.1.0","description":"Infura (BYOK) lets an AI assistant read your own Infura data through the Infura API with a key you supply (Infura API key). Read-only: 11 tools (get_block_number, get_gas_price, get_max_priority_fee, get_fee_history, get_balance, get_transaction_count, get_block, get_transaction, get_transaction_receipt, get_contract_code, call_contract). 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-infura.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-infura/docs"},"termsOfService":"https://connectorbay.com/byok-infura/terms"},"servers":[{"url":"https://byok-infura.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-infura/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_block_number":{"post":{"operationId":"get_block_number","summary":"Get the number of the latest Ethereum block (hexadecimal). Uses 80 credits of the daily quota. Use for \"What is the late","description":"Get the number of the latest Ethereum block (hexadecimal). Uses 80 credits of the daily quota. Use for \"What is the latest Ethereum block number\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_block_numberArguments","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_gas_price":{"post":{"operationId":"get_gas_price","summary":"Get the current gas price in wei (hexadecimal). Uses 80 credits of the daily quota. Use for \"What is the Ethereum gas pr","description":"Get the current gas price in wei (hexadecimal). Uses 80 credits of the daily quota. Use for \"What is the Ethereum gas price right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_gas_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_max_priority_fee":{"post":{"operationId":"get_max_priority_fee","summary":"Get the suggested priority fee (tip) in wei, hexadecimal, needed to be included in a block. Uses 80 credits of the daily","description":"Get the suggested priority fee (tip) in wei, hexadecimal, needed to be included in a block. Uses 80 credits of the daily quota. Use for \"What priority fee should I pay on Ethereum\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_max_priority_feeArguments","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_fee_history":{"post":{"operationId":"get_fee_history","summary":"Get base fees per gas and gas-used ratios for the most recent blocks (hexadecimal values). Uses 80 credits of the daily ","description":"Get base fees per gas and gas-used ratios for the most recent blocks (hexadecimal values). Uses 80 credits of the daily quota. Use for \"How have Ethereum base fees moved over the last 5 blocks\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"block_count":{"description":"Number of blocks as a hex number, 0x1 to 0x400, for example 0x5.","maxLength":6,"title":"Block Count","type":"string"},"newest_block":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":"latest","description":"Last block of the range: 'latest' (default) or a hex block number.","title":"Newest Block"}},"required":["block_count"],"title":"get_fee_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_balance":{"post":{"operationId":"get_balance","summary":"Get the ETH balance of an address in wei (hexadecimal), at the latest or a chosen block. Uses 80 credits of the daily qu","description":"Get the ETH balance of an address in wei (hexadecimal), at the latest or a chosen block. Uses 80 credits of the daily quota. Use for \"How much ETH does 0xc94770007dda54cF92009BFF0dE90c06F603a09f hold\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"address":{"description":"Account or contract address as a 0x hex string (20 bytes).","maxLength":42,"title":"Address","type":"string"},"block":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":"latest","description":"Block to read at: 'latest' (default), 'earliest', 'pending', 'safe', 'finalized' or a block number in hex such as 0x5BAD55.","title":"Block"}},"required":["address"],"title":"get_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/get_transaction_count":{"post":{"operationId":"get_transaction_count","summary":"Get the number of transactions sent from an address (its nonce), hexadecimal. Uses 80 credits of the daily quota. Use fo","description":"Get the number of transactions sent from an address (its nonce), hexadecimal. Uses 80 credits of the daily quota. Use for \"What is the transaction count of this Ethereum address\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"address":{"description":"Account or contract address as a 0x hex string (20 bytes).","maxLength":42,"title":"Address","type":"string"},"block":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":"latest","description":"Block to read at: 'latest' (default), 'earliest', 'pending', 'safe', 'finalized' or a block number in hex such as 0x5BAD55.","title":"Block"}},"required":["address"],"title":"get_transaction_countArguments","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_block":{"post":{"operationId":"get_block","summary":"Get an Ethereum block by number or tag: hash, parent, timestamp, miner, gas used and limit, base fee and size. Uses 80 c","description":"Get an Ethereum block by number or tag: hash, parent, timestamp, miner, gas used and limit, base fee and size. Uses 80 credits of the daily quota. Use for \"Show the latest Ethereum block\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"block":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":"latest","description":"Block to read: 'latest' (default), 'finalized', 'safe', 'earliest', 'pending' or a block number in hex such as 0x5BAD55.","title":"Block"},"full_transactions":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True for full transaction objects instead of hashes (the answer keeps only block fields either way).","title":"Full Transactions"}},"title":"get_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_transaction":{"post":{"operationId":"get_transaction","summary":"Get a transaction by hash: sender, receiver, value, gas, nonce and the block it was included in. Uses 80 credits of the ","description":"Get a transaction by hash: sender, receiver, value, gas, nonce and the block it was included in. Uses 80 credits of the daily quota. Use for \"What did transaction 0x7114b4da... do\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"hash":{"description":"Transaction hash as a 0x hex string (32 bytes).","maxLength":66,"title":"Hash","type":"string"}},"required":["hash"],"title":"get_transactionArguments","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_receipt":{"post":{"operationId":"get_transaction_receipt","summary":"Get a transaction receipt: success status, gas used, effective gas price, block and created contract address. Uses 80 cr","description":"Get a transaction receipt: success status, gas used, effective gas price, block and created contract address. Uses 80 credits of the daily quota. Use for \"Did transaction 0x7114b4da... succeed and how much gas did it use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"hash":{"description":"Transaction hash as a 0x hex string (32 bytes).","maxLength":66,"title":"Hash","type":"string"}},"required":["hash"],"title":"get_transaction_receiptArguments","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_contract_code":{"post":{"operationId":"get_contract_code","summary":"Get the compiled bytecode at an address (0x means it is not a contract). Uses 80 credits of the daily quota. Use for \"Is","description":"Get the compiled bytecode at an address (0x means it is not a contract). Uses 80 credits of the daily quota. Use for \"Is this address a smart contract\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"address":{"description":"Account or contract address as a 0x hex string (20 bytes).","maxLength":42,"title":"Address","type":"string"},"block":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":"latest","description":"Block to read at: 'latest' (default), 'earliest', 'pending', 'safe', 'finalized' or a block number in hex such as 0x5BAD55.","title":"Block"}},"required":["address"],"title":"get_contract_codeArguments","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/call_contract":{"post":{"operationId":"call_contract","summary":"Run a read-only call against a contract (eth_call) and return the raw hex result; nothing is sent to the chain. Uses 80 ","description":"Run a read-only call against a contract (eth_call) and return the raw hex result; nothing is sent to the chain. Uses 80 credits of the daily quota. Use for \"Call the balanceOf function of this token contract\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"to":{"description":"Contract address as a 0x hex string.","maxLength":42,"title":"To","type":"string"},"data":{"description":"ABI-encoded call data as a 0x hex string (4-byte selector followed by arguments).","maxLength":2000,"title":"Data","type":"string"},"from_address":{"anyOf":[{"maxLength":42,"type":"string"},{"type":"null"}],"default":null,"description":"Optional caller address for the simulation.","title":"From Address"},"block":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":"latest","description":"Block to read at: 'latest' (default), 'earliest', 'pending', 'safe', 'finalized' or a block number in hex such as 0x5BAD55.","title":"Block"}},"required":["to","data"],"title":"call_contractArguments","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}}}}