API reference

The server registers 25 MCP tools, three fixed resources, one parameterized resource, and an optional authenticated HTTP transport.

MCP request and response

{
  "name": "get_block_count",
  "arguments": { "network": "testnet" }
}

Tool results are returned in MCP content. Most successful tools place formatted JSON in content[0].text.

{
  "blockCount": 12346,
  "height": 12345,
  "network": "testnet"
}

blockCount is the RPC count. The latest block index is max(0, blockCount - 1).

Registered tools

AreaToolPurpose
Networkget_network_modeReturn configured mode, available networks, and default network.
Networkset_network_modeChange the configured mode; service state is reinitialized.
Blockchainget_blockchain_infoReturn chain information for the selected network.
Blockchainget_block_countReturn block count and latest block height.
Blockchainget_blockFetch a block by height or hash.
Blockchainget_transactionFetch a transaction by hash.
Blockchainget_application_logFetch an application log by transaction hash.
Blockchainwait_for_transactionPoll for confirmation with optional application log.
Accountsget_balanceReturn NEO, GAS, and NEP-17 balances.
Accountsget_unclaimed_gasReturn claimable GAS for an address.
Accountsget_nep17_transfersReturn NEP-17 transfer history when the node supports it.
Accountsget_nep11_balancesReturn NEP-11 balances when the node supports it.
Accountsget_nep11_transfersReturn NEP-11 transfer history when the node supports it.
Walletsget_walletReturn sanitized local wallet metadata.
Transactionstransfer_assetsBuild and broadcast a confirmed NEP-17 transfer.
Transactionsestimate_transfer_feesEstimate fees without broadcasting.
Transactionsclaim_gasBuild and broadcast a confirmed GAS claim.
Contractslist_famous_contractsReturn the verified curated registry, currently empty until entries are validated.
Contractsget_contract_infoResolve metadata and operations for a generic reference.
Contractsget_contract_statusResolve and check current on-chain deployment status.
Contractsinvoke_contractRun a strictly read-only invocation.
Contractsinvoke_contract_writeCreate and approve an idempotent write.
Contractsestimate_invoke_feesEstimate invocation fees for a signer.
Contractsdeploy_contractDeploy a complete compiler-produced serialized NEF artifact and manifest.
Write safety: state-changing MCP tools require an explicit network and accept only confirm: true as a JSON boolean, even when one network is enabled. Strings and numbers are rejected.

Fee estimate fields

{
  "networkFeeDatos": "10000000",
  "systemFeeDatos": "5000000",
  "networkFeeGas": "0.1",
  "systemFeeGas": "0.05"
}

The datos fields are exact integer decimal strings; the GAS fields are formatted decimal strings. Signed transactions are rejected before broadcast when combined fees exceed NEO_MAX_TRANSACTION_FEE_GAS, which defaults to 20 GAS. Contract deployment needs headroom above Neo's 10 GAS native deployment minimum for network fee and invocation overhead.

Resources

URIBehavior
neo://network/statusStatus for the default configured network.
neo://mainnet/statusMainnet status when mainnet is enabled.
neo://testnet/statusTestnet status when testnet is enabled.
neo://block/{height}Parameterized block lookup on the default network.

Generic contract flow

A contract reference can be a known name, script hash, or Neo address. Resolve and verify the reference on the selected network before invoking it. Local names and descriptions are not deployment or protocol guarantees.

{
  "name": "get_contract_status",
  "arguments": {
    "network": "testnet",
    "contract": "0x0123456789abcdef0123456789abcdef01234567"
  }
}

Contract deployment input

{
  "idempotencyKey": "deployment-2026-07-11-001",
  "network": "testnet",
  "nef": {
    "encoding": "base64",
    "data": "<complete compiler-produced serialized NEF>"
  },
  "manifest": { "name": "ExampleContract" }
}

nef.data is the complete serialized .nef file, including its header and checksum. Raw VM bytecode is not accepted.

{
  "name": "invoke_contract",
  "arguments": {
    "network": "testnet",
    "scriptHash": "0x0123456789abcdef0123456789abcdef01234567",
    "operation": "symbol",
    "args": []
  }
}

HTTP transport

HTTP binds to 127.0.0.1:3000 by default and requires one Neo network. A non-loopback host requires HTTP_API_KEY; every configured key must contain at least 32 bytes.

When a key is configured, every route except GET /live and GET /health requires:

Authorization: Bearer <HTTP_API_KEY>

POST and PUT bodies must be JSON objects. HTTP_MAX_BODY_BYTES defaults to 1 MiB. HTTP_CORS_ORIGINS is an exact comma-separated origin allowlist; wildcard CORS is not supported.

Selected routes

MethodPathNotes
GET/liveUnauthenticated process liveness; does not call Neo RPC.
GET/healthUnauthenticated RPC readiness check.
GET/metricsBearer-protected when a key is set.
GET/api/blockchain/heightReturns blockCount and height.
GET/api/blocks/:hashOrHeightFetch block details.
GET/api/transactions/:txidFetch transaction details.
POST/api/transfersRequires WIF and boolean confirmation.
POST/api/contracts/invokeRead without WIF; write requires WIF and confirmation.
POST/api/contracts/deployRequires WIF, a complete serialized nef object, manifest, and confirmation.

Errors

MCP validation errors are returned as error content with descriptive messages. HTTP responses use JSON and commonly return 400, 401, 404, 413, 415, 429, 500, 503, or 504 according to the failure.