> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agno.com/llms.txt
> Use this file to discover all available pages before exploring further.

# EVM (Ethereum Virtual Machine)

> EvmTools enable an Agent to send ETH transactions on Ethereum and EVM-compatible blockchains.

## Prerequisites

The EVM tools require the `web3` Python package and a funded wallet.

```shell theme={null}
uv pip install web3 openai
```

```shell theme={null}
export EVM_PRIVATE_KEY=0x***
export EVM_RPC_URL=***
```

## Example

The following agent can interact with Ethereum blockchain:

```python theme={null}
from agno.agent import Agent
from agno.tools.evm import EvmTools

agent = Agent(
    instructions=[
        "You are a blockchain assistant that helps with Ethereum transactions",
        "Help users send ETH transactions to the address they provide",
        "Always verify transaction details before executing",
        "Report the transaction hash once the transaction completes",
    ],
    tools=[EvmTools()],
)

agent.print_response("Send 0.01 ETH to 0x742d35Cc6634C0532925a3b8D4034DfA8e5D5C4B", stream=True)
```

## Toolkit Params

| Parameter                 | Type            | Default | Description                                                   |
| ------------------------- | --------------- | ------- | ------------------------------------------------------------- |
| `private_key`             | `Optional[str]` | `None`  | Private key for signing transactions. Uses EVM\_PRIVATE\_KEY. |
| `rpc_url`                 | `Optional[str]` | `None`  | RPC URL for blockchain connection. Uses EVM\_RPC\_URL.        |
| `enable_send_transaction` | `bool`          | `True`  | Enable transaction sending functionality.                     |
| `all`                     | `bool`          | `False` | Enable all functionality.                                     |

## Toolkit Functions

| Function           | Description                                                     |
| ------------------ | --------------------------------------------------------------- |
| `send_transaction` | Send ETH to an address, signed with the configured private key. |

## Developer Resources

* [Tools Source](https://github.com/agno-agi/agno/blob/main/libs/agno/agno/tools/evm.py)
* [Web3.py Documentation](https://web3py.readthedocs.io/)
* [Ethereum Documentation](https://ethereum.org/developers/)
