Transports
EVM lab MCP tools
The 5 tools /mcp offers for EVM lab, what each needs and an example call.
The EVM lab's networks and assignments, and read-only calls. These are the 5 tools of the evm backend; all MCP tools lists the other backends.
evm_get_assignment
One assignment: its brief in both languages and the starter contract. Never the hidden tests, never the reference solution.
Scopes: mcp:read · reads only
| Argument | Type | What it is |
|---|---|---|
id | string |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "evm_get_assignment",
"arguments": {}
}
}evm_list_assignments
The assignments, without their tests or solutions.
Scopes: mcp:read · reads only
| Argument | Type | What it is |
|---|---|---|
page_size | integer | At most 1000 (larger is coerced down); 0 means 1000. |
page_token | string | From the previous answer's next_page_token; "" for the first page. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "evm_list_assignments",
"arguments": {}
}
}evm_list_networks
The networks the platform knows: their chain id, the providers they are reached through (host names only), the methods the platform forwards to each, and what the last probe found (up, down, or answering as another chain than it claims).
Scopes: mcp:read · reads only
| Argument | Type | What it is |
|---|---|---|
page_size | integer | At most 1000 (larger is coerced down); 0 means 1000. |
page_token | string | From the previous answer's next_page_token; "" for the first page. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "evm_list_networks",
"arguments": {}
}
}evm_rpc
Ask a network one read-only JSON-RPC question. A method the network's list does not carry is FAILED_PRECONDITION with reason METHOD_UNSUPPORTED (the method and the network in the details); an unknown network is the same with NETWORK_UNKNOWN. Counted against the caller's daily allowance.
Scopes: mcp:read · reads only · reaches outside the platform
| Argument | Type | What it is |
|---|---|---|
method | string | The JSON-RPC method. |
network | string | The network's id. |
params_json | string | The parameters, as a JSON array in text; empty means none. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "evm_rpc",
"arguments": {}
}
}evm_simulate
Run one call against a network's public state at a block, in an embedded EVM: what it would return, the gas it would use, what it would emit, and why it would fail. Every account, code and storage slot the call touches is read from the network's public endpoint once and counted against the caller's daily network-call allowance; a call that reads more than the platform allows stops. Nothing is signed, sent or traced: a question about state, not a replay of anyone's transaction.
Scopes: mcp:read · reads only · reaches outside the platform
| Argument | Type | What it is |
|---|---|---|
block | string | The block the state is read at: a number, "latest" (the default), or a block hash; every read of this call is at that block. |
data | string | The calldata, hex. |
from | string | The account the call comes from; the zero address when empty. No signature is needed and its balance is not checked. |
gas | string | Gas for the call; the platform's cap applies when 0. |
network | string | The network's id. |
to | string | The contract called; empty deploys data as creation code instead. |
value | string | Wei sent along, decimal; "0" when empty. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "evm_simulate",
"arguments": {}
}
}