Tenzro Testnet is live. Get testnet TNZO

API Reference

Tenzro provides 148 JSON-RPC methods across 18 namespaces plus a Web Verification API for cryptographic verification.

Endpoints:

  • JSON-RPC: 127.0.0.1:8545 (local) / https://rpc.tenzro.network (testnet)
  • Web API: 0.0.0.0:8080 (local) / https://api.tenzro.network (testnet)
  • MCP Server: 0.0.0.0:3001/mcp / https://mcp.tenzro.network/mcp
  • A2A Protocol: 0.0.0.0:3002 / https://a2a.tenzro.network

Ethereum-Compatible Methods

Standard Ethereum JSON-RPC methods for EVM compatibility. Wallets like MetaMask can connect using these endpoints.

MethodDescription
eth_blockNumberReturns the current block number
eth_getBalanceReturns balance of an account (params: address, block)
eth_getTransactionCountReturns account nonce (params: address, block)
eth_sendRawTransactionSubmits a signed transaction (params: signed tx hex)
eth_getBlockByNumberReturns block by number (params: number, full txs bool)
eth_getBlockByHashReturns block by hash (params: hash, full txs bool)
eth_chainIdReturns the chain ID (default: 1337)
eth_getTransactionReceiptReturns transaction receipt (params: tx hash)
eth_gasPriceReturns current gas price in wei
eth_estimateGasEstimates gas for a transaction (params: tx object)
eth_getCodeReturns contract bytecode (params: address, block)
eth_getStorageAtReturns storage value (params: address, slot, block)
eth_callExecutes a call without creating a transaction (params: tx object, block)
eth_getLogsReturns logs matching a filter (params: filter object)
eth_getBlockTransactionCountByNumberReturns tx count in a block by number
eth_getBlockTransactionCountByHashReturns tx count in a block by hash
eth_getTransactionByBlockNumberAndIndexReturns tx by block number and index
eth_syncingReturns sync status or false if synced

eth_blockNumber

Returns the current block number.

Request:
{
  "jsonrpc": "2.0",
  "method": "eth_blockNumber",
  "params": [],
  "id": 1
}
Response:
{
  "jsonrpc": "2.0",
  "result": "0x4b7",
  "id": 1
}

eth_getBalance

Returns the TNZO balance of an account in wei.

Parameters:
  • addressAccount address (hex)
  • blockBlock number or "latest"
Request:
{
  "jsonrpc": "2.0",
  "method": "eth_getBalance",
  "params": ["0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb5", "latest"],
  "id": 1
}
Response:
{
  "jsonrpc": "2.0",
  "result": "0x0234c8a3397aab58",
  "id": 1
}

eth_sendRawTransaction

Submits a signed transaction to the network.

Parameters:
  • dataSigned transaction data (hex)
Request:
{
  "jsonrpc": "2.0",
  "method": "eth_sendRawTransaction",
  "params": ["0xf86c..."],
  "id": 1
}
Response:
{
  "jsonrpc": "2.0",
  "result": "0x1234567890abcdef...",
  "id": 1
}

eth_getTransactionReceipt

Returns the receipt of a transaction by transaction hash.

Parameters:
  • hashTransaction hash
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "transactionHash": "0x1234567890abcdef...",
    "blockNumber": "0x4b7",
    "gasUsed": "0x5208",
    "status": "0x1"
  },
  "id": 1
}

Web3 & Network Methods

MethodDescription
web3_clientVersionReturns the Tenzro node client version string
web3_sha3Returns Keccak-256 hash of given data (params: data hex)
net_versionReturns the current network ID
net_peerCountReturns number of connected peers
net_listeningReturns true if the node is listening for connections

Tenzro Blockchain Methods

Block & Transaction

tenzro_blockNumber

Returns the current block height.

Response:
{
  "jsonrpc": "2.0",
  "result": { "block_height": 1207 },
  "id": 1
}

tenzro_getBlock

Returns a block by height with full transaction details.

Parameters:
  • heightBlock height number
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "height": 1207,
    "hash": "0xabc123...",
    "parent_hash": "0xdef456...",
    "timestamp": 1712700000,
    "transactions": [...],
    "state_root": "0x789..."
  },
  "id": 1
}

tenzro_getTransaction

Returns a transaction by hash.

Parameters:
  • hashTransaction hash (hex)
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "hash": "0xabc123...",
    "from": "0x742d35Cc...",
    "to": "0x8Ba1f109...",
    "value": "100000000000000000000",
    "nonce": 42,
    "status": "confirmed"
  },
  "id": 1
}

tenzro_sendTransaction

Constructs and sends a transaction (alternative to eth_sendRawTransaction).

Parameters:
  • fromSender address
  • toRecipient address
  • valueAmount in wei
  • dataOptional calldata (hex)
Response:
{
  "jsonrpc": "2.0",
  "result": { "transaction_hash": "0xabc123..." },
  "id": 1
}

tenzro_submitBlock

Submit a new block for validation (validator nodes only).

Parameters:
  • blockBlock data object
Response:
{
  "jsonrpc": "2.0",
  "result": { "accepted": true, "height": 1208 },
  "id": 1
}

tenzro_getFinalizedBlock

Returns the latest finalized block height.

Response:
{
  "jsonrpc": "2.0",
  "result": { "finalized_height": 1200 },
  "id": 1
}

tenzro_getTransactionHistory

Returns transaction history for an address.

Parameters:
  • addressAccount address
  • limitMax results (optional, default 50)
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "transactions": [
      { "hash": "0xabc...", "type": "transfer", "value": "100.0", "status": "confirmed" }
    ]
  },
  "id": 1
}

Accounts & Wallets

tenzro_createAccount

Creates a new account with an MPC threshold wallet.

Parameters:
  • thresholdThreshold (e.g., 2 for 2-of-3)
  • total_sharesTotal shares (e.g., 3)
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb5",
    "threshold": 2,
    "total_shares": 3
  },
  "id": 1
}

tenzro_createWallet

Creates a new keypair wallet (Ed25519 or Secp256k1).

Parameters:
  • key_type"ed25519" or "secp256k1"
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "address": "0x8Ba1f109551bD432803012645Ac136ddd64DBA72",
    "key_type": "ed25519"
  },
  "id": 1
}

tenzro_getBalance

Returns TNZO balance for an address.

Parameters:
  • addressAccount address (hex)
Response:
{
  "jsonrpc": "2.0",
  "result": { "balance": "1000.0", "address": "0x742d35Cc..." },
  "id": 1
}

tenzro_getNonce

Returns the current nonce for an address.

Parameters:
  • addressAccount address
Response:
{
  "jsonrpc": "2.0",
  "result": { "nonce": 42 },
  "id": 1
}

tenzro_listAccounts

Lists all accounts managed by this node.

Response:
{
  "jsonrpc": "2.0",
  "result": [
    { "address": "0x742d35Cc...", "balance": "1000.0" },
    { "address": "0x8Ba1f109...", "balance": "500.0" }
  ],
  "id": 1
}

Token Methods

tenzro_tokenBalance

Returns token balance for an address.

Parameters:
  • addressAccount address
  • token_idToken identifier (optional, defaults to TNZO)
Response:
{
  "jsonrpc": "2.0",
  "result": { "balance": "1000.0", "token": "TNZO" },
  "id": 1
}

tenzro_totalSupply

Returns total TNZO token supply.

Response:
{
  "jsonrpc": "2.0",
  "result": { "total_supply": "1000000000.0" },
  "id": 1
}

tenzro_faucet

Request testnet TNZO tokens (100 TNZO per request, 24h cooldown).

Parameters:
  • addressRecipient address
Response:
{
  "jsonrpc": "2.0",
  "result": { "amount": "100.0", "transaction_hash": "0xabc..." },
  "id": 1
}

Onboarding Methods

tenzro_participate

One-click onboarding: provisions a TDIP identity, MPC wallet, and hardware profile.

Parameters:
  • display_nameDisplay name for the identity
Request:
{
  "jsonrpc": "2.0",
  "method": "tenzro_participate",
  "params": [{ "display_name": "Alice" }],
  "id": 1
}
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "identity": {
      "did": "did:tenzro:human:550e8400-e29b-41d4-a716-446655440000",
      "display_name": "Alice",
      "identity_type": "human",
      "status": "active"
    },
    "wallet": {
      "wallet_id": "w-a1b2c3d4",
      "address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb5",
      "threshold": "2-of-3",
      "key_type": "Ed25519"
    },
    "hardware": {
      "cpu_model": "Apple M2 Pro",
      "cpu_cores": 12,
      "total_ram_gb": 32.0,
      "gpus": []
    }
  },
  "id": 1
}

tenzro_importIdentity

Import an existing private key to create a TDIP identity and MPC wallet.

Parameters:
  • private_keyHex-encoded private key (with or without 0x prefix)
  • key_type"ed25519" or "secp256k1"
  • display_nameDisplay name for the identity
  • passwordPassword for encrypting wallet key shares
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "identity": {
      "did": "did:tenzro:human:661f9500-f30c-52e5-b827-557766551111",
      "display_name": "Alice",
      "status": "active"
    },
    "wallet": {
      "wallet_id": "w-e5f6g7h8",
      "address": "0x8Ba1f109551bD432803012645Ac136ddd64DBA72",
      "threshold": "2-of-3",
      "key_type": "Ed25519"
    }
  },
  "id": 1
}

tenzro_joinAsMicroNode

Join the network as a lightweight micro node with minimal resource requirements.

Parameters:
  • display_nameDisplay name for the identity
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "did": "did:tenzro:human:...",
    "role": "light_client",
    "status": "joined"
  },
  "id": 1
}

Identity Methods (TDIP)

tenzro_registerIdentity

Register a new TDIP identity (human).

Parameters:
  • identity_type"human"
  • display_nameDisplay name
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "did": "did:tenzro:human:550e8400-e29b-41d4-a716-446655440000",
    "wallet_address": "0x742d35Cc..."
  },
  "id": 1
}

tenzro_registerMachineIdentity

Register a machine/agent identity with a controller DID.

Parameters:
  • controller_didController DID (human or autonomous)
  • capabilitiesArray of capability strings
  • delegation_scopeOptional delegation scope object
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "did": "did:tenzro:machine:controller123:agent-uuid",
    "controller": "did:tenzro:human:...",
    "status": "active"
  },
  "id": 1
}

tenzro_resolveIdentity

Resolve a DID to its identity record.

Parameters:
  • didDID to resolve (e.g., "did:tenzro:human:...")
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "did": "did:tenzro:human:550e8400-...",
    "display_name": "Alice",
    "identity_type": "human",
    "kyc_tier": "Unverified",
    "status": "active",
    "wallet_address": "0x742d35Cc..."
  },
  "id": 1
}

tenzro_resolveDidDocument

Returns a W3C-compliant DID Document for a given DID.

Parameters:
  • didDID to resolve
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "@context": "https://www.w3.org/ns/did/v1",
    "id": "did:tenzro:human:550e8400-...",
    "verificationMethod": [...],
    "authentication": [...]
  },
  "id": 1
}

tenzro_listIdentities

List all identities registered on this node.

Response:
{
  "jsonrpc": "2.0",
  "result": [
    { "did": "did:tenzro:human:...", "display_name": "Alice", "status": "active" },
    { "did": "did:tenzro:machine:...", "status": "active" }
  ],
  "id": 1
}

tenzro_addCredential

Add a verifiable credential to an identity.

Parameters:
  • didDID to add credential to
  • credential_typeCredential type (e.g., KycAttestation)
  • issuerIssuer DID
  • claimsClaims object
Response:
{
  "jsonrpc": "2.0",
  "result": { "credential_id": "cred_abc123", "status": "issued" },
  "id": 1
}

tenzro_addService

Add a service endpoint to a DID Document.

Parameters:
  • didDID to add service to
  • service_typeService type (e.g., MCP, A2A, LinkedDomains)
  • endpointService endpoint URL
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "added" },
  "id": 1
}

tenzro_setUsername

Register a globally unique username for a DID. Usernames must be 3-20 characters, lowercase alphanumeric and underscores only.

Parameters:
  • didDID to set the username for
  • usernameDesired username (e.g., alice, bob_42)
Response:
{
  "jsonrpc": "2.0",
  "result": { "username": "alice", "did": "did:tenzro:human:abc..." },
  "id": 1
}

tenzro_resolveUsername

Resolve a username to its associated DID.

Parameters:
  • usernameUsername to resolve
Response:
{
  "jsonrpc": "2.0",
  "result": { "username": "alice", "did": "did:tenzro:human:abc..." },
  "id": 1
}

Network & Node Methods

tenzro_nodeInfo

Returns information about the node.

Response:
{
  "jsonrpc": "2.0",
  "result": {
    "version": "0.1.0",
    "role": "validator",
    "peer_id": "12D3KooWABC...",
    "chain_id": 1337,
    "block_height": 1207
  },
  "id": 1
}

tenzro_peerCount

Returns the number of connected peers.

Response:
{
  "jsonrpc": "2.0",
  "result": { "peer_count": 25 },
  "id": 1
}

tenzro_syncing

Returns sync status of the node.

Response:
{
  "jsonrpc": "2.0",
  "result": { "syncing": false, "current_block": 1207, "highest_block": 1207 },
  "id": 1
}

tenzro_getHardwareProfile

Detects and returns hardware profile (CPU, RAM, GPUs, TEE support).

Response:
{
  "jsonrpc": "2.0",
  "result": {
    "cpu_model": "AMD EPYC 7763",
    "cpu_cores": 64,
    "total_ram_gb": 256.0,
    "gpus": [{ "name": "NVIDIA A100", "memory_gb": 80.0 }],
    "tee_support": "AmdSevSnp"
  },
  "id": 1
}

tenzro_setRole

Set the node role.

Parameters:
  • role"validator", "provider", "tee-provider", or "user"
Response:
{
  "jsonrpc": "2.0",
  "result": { "role": "provider", "status": "active" },
  "id": 1
}

tenzro_exportConfig

Export the current node configuration.

Response:
{
  "jsonrpc": "2.0",
  "result": {
    "role": "validator",
    "listen_addr": "/ip4/0.0.0.0/tcp/9000",
    "rpc_addr": "127.0.0.1:8545",
    "chain_id": 1337
  },
  "id": 1
}

tenzro_shutdown

Gracefully shut down the node (admin only).

Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "shutting_down" },
  "id": 1
}

Model & Inference Methods

tenzro_listModels

List available AI models on the network.

Parameters:
  • categoryFilter by category (e.g., "llm", "vision") — optional
  • modalityFilter by modality (e.g., "text", "image") — optional
Response:
{
  "jsonrpc": "2.0",
  "result": [
    {
      "id": "gemma4-9b",
      "name": "Gemma 4 9B",
      "category": "llm",
      "modality": "text",
      "price_per_token": "0.0001"
    }
  ],
  "id": 1
}

tenzro_inferenceRequest

Request raw AI inference from a model. Uses the raw prompt without applying a chat template. For chat applications, prefer tenzro_chat instead.

Parameters:
  • model_idModel identifier
  • inputRaw prompt text (no chat template applied)
  • strategyRouting strategy: Cheapest, LowestLatency, HighestReputation, Weighted (optional)
  • max_tokensMaximum tokens to generate (optional)
Request:
{
  "jsonrpc": "2.0",
  "method": "tenzro_inferenceRequest",
  "params": [{
    "model_id": "gemma4-9b",
    "input": "What is the capital of France?",
    "strategy": "Cheapest",
    "max_tokens": 100
  }],
  "id": 1
}
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "request_id": "req_abc123",
    "status": "pending",
    "estimated_cost": "0.05 TNZO"
  },
  "id": 1
}
Note: Params is a flat JSON object (not an array of arguments). Does NOT apply chat templates — use tenzro_chat for proper chat formatting. The /no_think suffix for thinking models only works with tenzro_chat.

tenzro_chat

Send a chat message to a served model. Applies the model's chat template for proper formatting (recommended for chat apps and coding assistants).

Parameters:
  • model_idModel identifier
  • messageChat message text (string, not array)
  • max_tokensMaximum tokens (optional)
Request:
{
  "jsonrpc": "2.0",
  "method": "tenzro_chat",
  "params": [{
    "model_id": "qwen3.5-0.8b",
    "message": "Write a hello world function",
    "max_tokens": 200
  }],
  "id": 1
}
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "id": "chatcmpl-abc123",
    "choices": [{
      "message": { "role": "assistant", "content": "Hello! How can I help?" },
      "finish_reason": "stop"
    }],
    "usage": { "prompt_tokens": 10, "completion_tokens": 8, "total_tokens": 18 }
  },
  "id": 1
}
Note: Params is a flat JSON object with a single message string (not an array of messages). For thinking models (Qwen 3, Qwen 3.5, DeepSeek), append /no_think to the message to disable chain-of-thought reasoning. Example: "Write a hello world function /no_think"

tenzro_downloadModel

Download a GGUF model from HuggingFace via direct HTTP streaming. Files are saved to ~/.tenzro/models/<model-id>.gguf as a flat file.

Parameters:
  • model_idModel identifier or HuggingFace repo
Request:
{
  "jsonrpc": "2.0",
  "method": "tenzro_downloadModel",
  "params": [{ "model_id": "gemma4-9b" }],
  "id": 1
}
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "downloading", "model_id": "gemma4-9b" },
  "id": 1
}
Note: Downloads GGUF files directly from HuggingFace via HTTP (not the hf-hub crate). Progress is tracked with percentage updates via tenzro_getDownloadProgress.

tenzro_getDownloadProgress

Check download progress for a model. Includes percentage updates and an error field on failure.

Parameters:
  • model_idModel identifier
Response:
// Success (in progress):
{
  "jsonrpc": "2.0",
  "result": { "model_id": "gemma4-9b", "status": "downloading", "progress": 0.75, "downloaded_bytes": 37580963840, "total_bytes": 50107951787 },
  "id": 1
}

// Failure:
{
  "jsonrpc": "2.0",
  "result": { "model_id": "gemma4-9b", "status": "failed", "error": "HTTP 404 from HuggingFace" },
  "id": 1
}
Note: The error field is only present when status is "failed" and contains the actual error message from the download attempt.

tenzro_serveModel

Start serving a model for inference requests.

Parameters:
  • model_idModel to serve
  • price_per_tokenPrice per token in TNZO (optional)
Response:
{
  "jsonrpc": "2.0",
  "result": { "model_id": "gemma4-9b", "status": "serving", "price_per_token": "0.0001" },
  "id": 1
}

tenzro_stopModel

Stop serving a model. Waits for in-flight inference requests to complete before freeing the llama.cpp context to prevent OOM errors.

Parameters:
  • model_idModel to stop
Response:
{
  "jsonrpc": "2.0",
  "result": { "model_id": "gemma4-9b", "status": "stopped" },
  "id": 1
}
Note: The node gracefully waits for any in-flight inference requests to finish before unloading the model, preventing out-of-memory errors when switching between models.

tenzro_deleteModel

Delete a downloaded model from local storage.

Parameters:
  • model_idModel to delete
Response:
{
  "jsonrpc": "2.0",
  "result": { "model_id": "gemma4-9b", "deleted": true },
  "id": 1
}

tenzro_listModelEndpoints

List active model service endpoints with API and MCP URLs.

Response:
{
  "jsonrpc": "2.0",
  "result": [
    {
      "model_id": "gemma4-9b",
      "provider": "0x742d35Cc...",
      "api_url": "http://10.0.0.5:8080/v1",
      "mcp_url": "http://10.0.0.5:3001/mcp",
      "status": "active"
    }
  ],
  "id": 1
}

tenzro_getModelEndpoint

Get details for a specific model endpoint.

Parameters:
  • endpoint_idEndpoint identifier
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "endpoint_id": "ep_abc123",
    "model_id": "gemma4-9b",
    "api_url": "http://10.0.0.5:8080/v1",
    "status": "active"
  },
  "id": 1
}

tenzro_registerModelEndpoint

Register a new model service endpoint.

Parameters:
  • model_idModel being served
  • api_urlAPI endpoint URL
  • mcp_urlMCP endpoint URL (optional)
Response:
{
  "jsonrpc": "2.0",
  "result": { "endpoint_id": "ep_abc123", "status": "registered" },
  "id": 1
}

tenzro_unregisterModelEndpoint

Remove a model service endpoint from the registry.

Parameters:
  • endpoint_idEndpoint identifier
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "unregistered" },
  "id": 1
}

tenzro_discoverModels

Discover models available on the network with filtering.

Parameters:
  • querySearch query (optional)
  • categoryCategory filter (optional)
Response:
{
  "jsonrpc": "2.0",
  "result": [
    { "id": "gemma4-9b", "name": "Gemma 4 9B", "providers": 3, "avg_price": "0.0001" }
  ],
  "id": 1
}

Provider Methods

tenzro_registerProvider

Register as a network provider (validator, model provider, or TEE provider).

Parameters:
  • provider_type"validator", "inference", or "tee"
  • stake_amountAmount of TNZO to stake (optional)
Response:
{
  "jsonrpc": "2.0",
  "result": { "provider_id": "prov_abc123", "status": "registered" },
  "id": 1
}

tenzro_providerStats

Get provider statistics: served models, inferences, staking totals.

Parameters:
  • provider_idProvider identifier (optional, defaults to self)
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "models_served": 3,
    "total_inferences": 15420,
    "total_staked": "10000.0",
    "uptime_percentage": 99.7
  },
  "id": 1
}

tenzro_listProviders

List all registered providers on the network.

Response:
{
  "jsonrpc": "2.0",
  "result": [
    { "provider_id": "prov_abc123", "type": "inference", "models": 3, "status": "active" }
  ],
  "id": 1
}

tenzro_setProviderSchedule

Set provider availability schedule.

Parameters:
  • scheduleSchedule object with days and hours
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "schedule_set" },
  "id": 1
}

tenzro_getProviderSchedule

Get the current provider availability schedule.

Response:
{
  "jsonrpc": "2.0",
  "result": { "schedule": { "enabled": true, "days": ["mon","tue","wed","thu","fri"], "hours": "08:00-20:00" } },
  "id": 1
}

tenzro_setProviderPricing

Set pricing for provider services.

Parameters:
  • model_idModel to set pricing for
  • price_per_tokenPrice per token in TNZO
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "pricing_set", "model_id": "gemma4-9b", "price_per_token": "0.0001" },
  "id": 1
}

tenzro_getProviderPricing

Get current provider pricing configuration.

Response:
{
  "jsonrpc": "2.0",
  "result": { "models": [{ "model_id": "gemma4-9b", "price_per_token": "0.0001" }] },
  "id": 1
}

tenzro_addResource

Add a compute resource to the provider node.

Parameters:
  • resource_type"gpu", "cpu", or "storage"
  • detailsResource details object
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "resource_added" },
  "id": 1
}

Payment Methods

tenzro_createPaymentChallenge

Create an HTTP 402 payment challenge for a resource.

Parameters:
  • resourceResource URL or identifier
  • amountAmount in TNZO
  • protocol"mpp", "x402", or "native"
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "challenge_id": "ch_abc123",
    "protocol": "mpp",
    "amount": "0.05",
    "expires_at": "2026-04-10T13:00:00Z"
  },
  "id": 1
}

tenzro_payMpp

Pay using MPP (Machine Payments Protocol, co-authored by Stripe and Tempo).

Parameters:
  • challenge_idChallenge ID from createPaymentChallenge
  • wallet_addressPayer wallet address
Response:
{
  "jsonrpc": "2.0",
  "result": { "receipt_id": "rcpt_def456", "status": "paid", "transaction_hash": "0xabc123..." },
  "id": 1
}

tenzro_payX402

Pay using x402 (Coinbase HTTP 402 protocol).

Parameters:
  • challenge_idChallenge ID
  • wallet_addressPayer wallet address
Response:
{
  "jsonrpc": "2.0",
  "result": { "receipt_id": "rcpt_ghi789", "status": "paid", "facilitator": "coinbase_cdp" },
  "id": 1
}

tenzro_payVisaTap

Pay using Visa TAP (Token Authorization Protocol) for fiat-to-crypto settlement.

Parameters:
  • challenge_idChallenge ID
  • agent_didAgent DID for authorization
Response:
{
  "jsonrpc": "2.0",
  "result": { "receipt_id": "rcpt_visa001", "status": "paid", "rail": "visa_tap" },
  "id": 1
}

tenzro_payMastercard

Pay using Mastercard Agent Pay for autonomous agent transactions.

Parameters:
  • challenge_idChallenge ID
  • agent_didAgent DID for authorization
Response:
{
  "jsonrpc": "2.0",
  "result": { "receipt_id": "rcpt_mc001", "status": "paid", "rail": "mastercard_agent_pay" },
  "id": 1
}

tenzro_listPaymentSessions

List active payment sessions.

Response:
{
  "jsonrpc": "2.0",
  "result": [
    { "session_id": "sess_abc", "protocol": "mpp", "status": "active", "amount_spent": "0.5" }
  ],
  "id": 1
}

tenzro_paymentGatewayInfo

Get payment gateway configuration and supported protocols.

Response:
{
  "jsonrpc": "2.0",
  "result": {
    "supported_protocols": ["mpp", "x402", "native", "visa_tap", "mastercard_agent_pay"],
    "default_protocol": "mpp"
  },
  "id": 1
}

tenzro_getPaymentReceipt

Get a payment receipt by ID.

Parameters:
  • receipt_idReceipt identifier
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "receipt_id": "rcpt_def456",
    "protocol": "mpp",
    "amount": "0.05",
    "status": "confirmed",
    "transaction_hash": "0xabc123..."
  },
  "id": 1
}

Staking Methods

tenzro_stake

Stake TNZO tokens for validation, inference, or TEE provision.

Parameters:
  • amountAmount of TNZO to stake
  • provider_type"validator", "inference", or "tee"
  • lock_daysLock period in days (optional)
Response:
{
  "jsonrpc": "2.0",
  "result": { "stake_id": "stake_abc123", "transaction_hash": "0xdef456...", "status": "staked" },
  "id": 1
}

tenzro_unstake

Withdraw staked tokens (7-day unbonding period).

Parameters:
  • amountAmount to unstake
  • forceForce immediate unstake with penalty (optional)
Response:
{
  "jsonrpc": "2.0",
  "result": { "unbonding_period": "7 days", "available_after": "2026-04-17T12:00:00Z" },
  "id": 1
}

tenzro_getVotingPower

Get voting power and staking info for an address.

Parameters:
  • addressAddress to check
Response:
{
  "jsonrpc": "2.0",
  "result": { "total_staked": "1000.0", "rewards": "25.5", "apy": "12.5%" },
  "id": 1
}

Governance Methods

tenzro_listProposals

List all governance proposals.

Response:
{
  "jsonrpc": "2.0",
  "result": [
    {
      "proposal_id": "prop_001",
      "title": "Increase validator rewards",
      "proposal_type": "parameter",
      "status": "active",
      "votes_for": "50000",
      "votes_against": "12000",
      "approval_percentage": "80.6%"
    }
  ],
  "id": 1
}

tenzro_createProposal

Create a new governance proposal.

Parameters:
  • titleProposal title
  • descriptionDetailed description
  • proposal_type"parameter", "treasury", "upgrade", or "emergency"
Response:
{
  "jsonrpc": "2.0",
  "result": { "proposal_id": "prop_002", "status": "created" },
  "id": 1
}

tenzro_vote

Vote on a governance proposal.

Parameters:
  • proposal_idProposal identifier
  • vote"For", "Against", or "Abstain"
  • justificationOptional voting justification
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "vote_recorded" },
  "id": 1
}

tenzro_delegateVotingPower

Delegate voting power to another address.

Parameters:
  • delegatorDelegating address
  • delegateeReceiving address
  • amountAmount of voting power
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "delegated" },
  "id": 1
}

Agent Methods

tenzro_registerAgent

Register an AI agent on the network with capabilities.

Parameters:
  • nameAgent name
  • capabilitiesArray of capability strings
Response:
{
  "jsonrpc": "2.0",
  "result": { "agent_id": "agent_xyz789", "did": "did:tenzro:machine:...", "status": "active" },
  "id": 1
}

tenzro_listAgents

List all registered agents.

Response:
{
  "jsonrpc": "2.0",
  "result": [
    { "agent_id": "agent_xyz789", "name": "DataProcessor", "capabilities": ["inference"], "status": "active" }
  ],
  "id": 1
}

tenzro_sendAgentMessage

Send a message to a registered agent.

Parameters:
  • agent_idTarget agent identifier
  • messageMessage content
  • task_typeTask type classification (optional)
Response:
{
  "jsonrpc": "2.0",
  "result": { "task_id": "task_jkl456", "status": "queued" },
  "id": 1
}

tenzro_spawnAgent

Spawn a new autonomous agent instance.

Parameters:
  • nameAgent name
  • capabilitiesCapabilities array
  • configAgent configuration object (optional)
Response:
{
  "jsonrpc": "2.0",
  "result": { "agent_id": "agent_new123", "status": "spawned" },
  "id": 1
}

tenzro_runAgentTask

Execute a task on an existing agent.

Parameters:
  • agent_idAgent identifier
  • taskTask description
  • inputInput data
Response:
{
  "jsonrpc": "2.0",
  "result": { "task_id": "task_run123", "status": "running" },
  "id": 1
}

tenzro_createSwarm

Create a multi-agent swarm for complex tasks.

Parameters:
  • nameSwarm name
  • agentsArray of agent IDs
  • coordinatorCoordinator agent ID
Response:
{
  "jsonrpc": "2.0",
  "result": { "swarm_id": "swarm_abc", "agents": 3, "status": "active" },
  "id": 1
}

tenzro_getSwarmStatus

Get status of a multi-agent swarm.

Parameters:
  • swarm_idSwarm identifier
Response:
{
  "jsonrpc": "2.0",
  "result": { "swarm_id": "swarm_abc", "agents": 3, "tasks_completed": 12, "status": "active" },
  "id": 1
}

tenzro_terminateSwarm

Terminate a multi-agent swarm.

Parameters:
  • swarm_idSwarm identifier
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "terminated" },
  "id": 1
}

tenzro_delegateTask

Delegate a task from one agent to another.

Parameters:
  • from_agentSource agent ID
  • to_agentTarget agent ID
  • taskTask description
Response:
{
  "jsonrpc": "2.0",
  "result": { "delegation_id": "del_abc", "status": "delegated" },
  "id": 1
}

tenzro_discoverAgents

Discover agents on the network by capability.

Parameters:
  • capabilityRequired capability (optional)
Response:
{
  "jsonrpc": "2.0",
  "result": [
    { "agent_id": "agent_xyz", "capabilities": ["inference", "settlement"], "reputation": 0.95 }
  ],
  "id": 1
}

tenzro_spawnAgentWithSkill

Spawn an agent with a pre-registered skill from the Skills Registry.

Parameters:
  • skill_idSkill identifier
  • configAgent configuration (optional)
Response:
{
  "jsonrpc": "2.0",
  "result": { "agent_id": "agent_skill123", "skill": "solana-defi", "status": "spawned" },
  "id": 1
}

tenzro_fundAgent

Fund an agent wallet with TNZO for autonomous transactions.

Parameters:
  • agent_idAgent identifier
  • amountAmount in TNZO
Response:
{
  "jsonrpc": "2.0",
  "result": { "transaction_hash": "0xabc...", "new_balance": "100.0" },
  "id": 1
}

tenzro_swapToken

Swap tokens on behalf of an agent.

Parameters:
  • agent_idAgent identifier
  • from_tokenSource token
  • to_tokenTarget token
  • amountAmount to swap
Response:
{
  "jsonrpc": "2.0",
  "result": { "swap_id": "swap_abc", "received": "99.5", "status": "completed" },
  "id": 1
}

tenzro_agentPayForInference

Agent pays for an inference request using its wallet.

Parameters:
  • agent_idAgent identifier
  • model_idModel to pay for
  • amountAmount in TNZO
Response:
{
  "jsonrpc": "2.0",
  "result": { "payment_id": "pay_abc", "status": "paid" },
  "id": 1
}

Task Marketplace Methods

tenzro_postTask

Post a new task to the marketplace.

Parameters:
  • titleTask title
  • descriptionTask description
  • budgetMaximum budget in TNZO
  • requirementsRequired capabilities (optional)
Response:
{
  "jsonrpc": "2.0",
  "result": { "task_id": "task_mkt_001", "status": "open" },
  "id": 1
}

tenzro_listTasks

List tasks in the marketplace.

Parameters:
  • statusFilter by status: "open", "assigned", "completed" (optional)
Response:
{
  "jsonrpc": "2.0",
  "result": [
    { "task_id": "task_mkt_001", "title": "Analyze dataset", "budget": "10.0", "status": "open" }
  ],
  "id": 1
}

tenzro_getTask

Get details of a specific task.

Parameters:
  • task_idTask identifier
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "task_id": "task_mkt_001",
    "title": "Analyze dataset",
    "description": "...",
    "budget": "10.0",
    "status": "open",
    "quotes": []
  },
  "id": 1
}

tenzro_cancelTask

Cancel an open task.

Parameters:
  • task_idTask identifier
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "cancelled" },
  "id": 1
}

tenzro_quoteTask

Submit a quote for an open task.

Parameters:
  • task_idTask identifier
  • priceQuoted price in TNZO
  • estimated_timeEstimated completion time
Response:
{
  "jsonrpc": "2.0",
  "result": { "quote_id": "quote_abc", "status": "submitted" },
  "id": 1
}

tenzro_assignTask

Assign a task to a quoted provider.

Parameters:
  • task_idTask identifier
  • quote_idAccepted quote ID
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "assigned" },
  "id": 1
}

tenzro_completeTask

Mark a task as completed with result.

Parameters:
  • task_idTask identifier
  • resultTask result data
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "completed", "settlement_hash": "0xabc..." },
  "id": 1
}

tenzro_updateTask

Update task details or status.

Parameters:
  • task_idTask identifier
  • updatesFields to update
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "updated" },
  "id": 1
}

Agent Marketplace Methods

tenzro_registerAgentTemplate

Register an agent template in the marketplace.

Parameters:
  • nameTemplate name
  • descriptionTemplate description
  • capabilitiesCapabilities array
  • pricePrice to use template (TNZO)
Response:
{
  "jsonrpc": "2.0",
  "result": { "template_id": "tmpl_abc", "status": "registered" },
  "id": 1
}

tenzro_listAgentTemplates

List available agent templates.

Response:
{
  "jsonrpc": "2.0",
  "result": [
    { "template_id": "tmpl_abc", "name": "DeFi Trader", "capabilities": ["trade", "analysis"], "price": "5.0" }
  ],
  "id": 1
}

tenzro_getAgentTemplate

Get details of a specific agent template.

Parameters:
  • template_idTemplate identifier
Response:
{
  "jsonrpc": "2.0",
  "result": { "template_id": "tmpl_abc", "name": "DeFi Trader", "description": "...", "capabilities": [...] },
  "id": 1
}

tenzro_downloadAgentTemplate

Download an agent template for local use.

Parameters:
  • template_idTemplate identifier
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "downloaded", "path": "~/.tenzro/templates/tmpl_abc" },
  "id": 1
}

tenzro_updateAgentTemplate

Update an existing agent template.

Parameters:
  • template_idTemplate identifier
  • updatesFields to update
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "updated" },
  "id": 1
}

tenzro_spawnAgentTemplate

Spawn an agent from a marketplace template.

Parameters:
  • template_idTemplate identifier
  • configInstance configuration (optional)
Response:
{
  "jsonrpc": "2.0",
  "result": { "agent_id": "agent_tmpl_001", "template_id": "tmpl_abc", "status": "spawned" },
  "id": 1
}

tenzro_runAgentTemplate

Run a task using an agent template without persistent spawn.

Parameters:
  • template_idTemplate identifier
  • taskTask to execute
Response:
{
  "jsonrpc": "2.0",
  "result": { "task_id": "task_tmpl_001", "status": "running" },
  "id": 1
}

Skills Registry Methods

tenzro_registerSkill

Register a new skill in the Skills Registry.

Parameters:
  • nameSkill name (e.g., solana-defi)
  • categoryCategory (defi, bridge, oracle, etc.)
  • descriptionSkill description
  • tagsArray of tags
  • mcp_endpointMCP server endpoint (optional)
Response:
{
  "jsonrpc": "2.0",
  "result": { "skill_id": "skill_abc", "status": "registered" },
  "id": 1
}

tenzro_listSkills

List all registered skills.

Response:
{
  "jsonrpc": "2.0",
  "result": [
    { "skill_id": "openclaw-tenzro", "category": "blockchain", "tags": ["blockchain","ai","identity"] },
    { "skill_id": "solana-defi", "category": "defi", "tags": ["solana","defi","swap"] }
  ],
  "id": 1
}

tenzro_searchSkills

Search skills by keyword or tag.

Parameters:
  • querySearch query
Response:
{
  "jsonrpc": "2.0",
  "result": [
    { "skill_id": "solana-defi", "relevance": 0.95 }
  ],
  "id": 1
}

tenzro_useSkill

Invoke a registered skill.

Parameters:
  • skill_idSkill identifier
  • actionAction to perform
  • paramsAction parameters
Response:
{
  "jsonrpc": "2.0",
  "result": { "execution_id": "exec_abc", "status": "completed", "result": {...} },
  "id": 1
}

tenzro_getSkill

Get details of a specific skill.

Parameters:
  • skill_idSkill identifier
Response:
{
  "jsonrpc": "2.0",
  "result": { "skill_id": "solana-defi", "name": "Solana DeFi", "category": "defi", "tools": 14 },
  "id": 1
}

tenzro_updateSkill

Update a registered skill definition.

Parameters:
  • skill_idSkill identifier
  • updatesFields to update
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "updated" },
  "id": 1
}

Tools Registry Methods

tenzro_registerTool

Register a new tool (MCP server, API, etc.) in the Tools Registry.

Parameters:
  • nameTool name
  • tool_type"mcp", "api", or "cli"
  • endpointTool endpoint URL
  • descriptionTool description
Response:
{
  "jsonrpc": "2.0",
  "result": { "tool_id": "tool_abc", "status": "registered" },
  "id": 1
}

tenzro_listTools

List all registered tools.

Response:
{
  "jsonrpc": "2.0",
  "result": [
    { "tool_id": "tenzro-solana-mcp", "type": "mcp", "endpoint": "/mcp (port 3003)" },
    { "tool_id": "tenzro-ethereum-mcp", "type": "mcp", "endpoint": "/mcp (port 3004)" }
  ],
  "id": 1
}

tenzro_searchTools

Search tools by keyword or type.

Parameters:
  • querySearch query
  • typeTool type filter (optional)
Response:
{
  "jsonrpc": "2.0",
  "result": [{ "tool_id": "tenzro-solana-mcp", "relevance": 0.9 }],
  "id": 1
}

tenzro_useTool

Invoke a registered tool.

Parameters:
  • tool_idTool identifier
  • actionAction to perform
  • paramsAction parameters
Response:
{
  "jsonrpc": "2.0",
  "result": { "execution_id": "exec_tool_abc", "status": "completed", "result": {...} },
  "id": 1
}

tenzro_getTool

Get details of a specific tool.

Parameters:
  • tool_idTool identifier
Response:
{
  "jsonrpc": "2.0",
  "result": { "tool_id": "tenzro-solana-mcp", "type": "mcp", "endpoint": "/mcp (port 3003)" },
  "id": 1
}

tenzro_updateTool

Update a registered tool definition.

Parameters:
  • tool_idTool identifier
  • updatesFields to update
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "updated" },
  "id": 1
}

Token Registry Methods

tenzro_createToken

Create a new ERC-20 token via the factory and register in the unified registry.

Parameters:
  • nameToken name
  • symbolToken symbol
  • decimalsDecimal places (default 18)
  • initial_supplyInitial supply to mint
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "token_id": "tok_abc123",
    "address": "0x1234...",
    "symbol": "MYTOKEN",
    "status": "created"
  },
  "id": 1
}

tenzro_getToken

Lookup a token by symbol, address, or token ID.

Parameters:
  • identifierToken symbol, EVM address, or token ID
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "token_id": "tok_abc123",
    "name": "My Token",
    "symbol": "MYTOKEN",
    "decimals": 18,
    "total_supply": "1000000.0",
    "vm_type": "evm"
  },
  "id": 1
}

tenzro_listTokens

List registered tokens with optional VM type filter.

Parameters:
  • vm_type"evm", "svm", or "daml" (optional)
Response:
{
  "jsonrpc": "2.0",
  "result": [
    { "token_id": "tok_abc", "symbol": "MYTOKEN", "vm_type": "evm" },
    { "token_id": "native", "symbol": "TNZO", "vm_type": "native" }
  ],
  "id": 1
}

tenzro_crossVmTransfer

Atomic cross-VM token transfer using the TNZO pointer model (no bridge risk).

Parameters:
  • token_idToken identifier
  • from_vmSource VM type
  • to_vmTarget VM type
  • amountAmount to transfer
  • recipientRecipient address on target VM
Response:
{
  "jsonrpc": "2.0",
  "result": { "transfer_id": "xvm_abc", "status": "completed" },
  "id": 1
}

tenzro_wrapTnzo

Wrap native TNZO to a VM-specific representation (wTNZO ERC-20, SPL adapter, CIP-56).

Parameters:
  • amountAmount to wrap
  • target_vm"evm", "svm", or "daml"
Response:
{
  "jsonrpc": "2.0",
  "result": { "wrapped_amount": "100.0", "vm": "evm", "contract": "0x7a4bcb13..." },
  "id": 1
}
Note: In the pointer model, wrapping is a no-op — all VM representations share the same underlying balance.

tenzro_getTokenBalance

Get TNZO balance across all VMs with decimal conversion.

Parameters:
  • addressAccount address
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "native": "1000.0",
    "evm": "1000.0",
    "svm": "1000.0",
    "daml": "1000.0"
  },
  "id": 1
}

tenzro_deployContract

Deploy bytecode to EVM, SVM, or DAML via the MultiVmRuntime.

Parameters:
  • vm_type"evm", "svm", or "daml"
  • bytecodeContract bytecode (hex)
  • constructor_argsConstructor arguments (optional)
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "contract_address": "0x5678...",
    "vm_type": "evm",
    "transaction_hash": "0xabc...",
    "gas_used": 2100000
  },
  "id": 1
}

Settlement & Escrow Methods

tenzro_settle

Settle a payment between parties.

Parameters:
  • payerPayer address
  • payeePayee address
  • amountSettlement amount in TNZO
  • proofSettlement proof (optional)
Response:
{
  "jsonrpc": "2.0",
  "result": { "settlement_id": "settle_abc", "transaction_hash": "0xdef...", "status": "settled" },
  "id": 1
}

tenzro_getSettlement

Get details of a settlement by ID.

Parameters:
  • settlement_idSettlement identifier
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "settlement_id": "settle_abc",
    "payer": "0x742d...",
    "payee": "0x8Ba1...",
    "amount": "50.0",
    "status": "confirmed"
  },
  "id": 1
}

tenzro_createEscrow

Create an escrow for conditional payment.

Parameters:
  • payerPayer address
  • payeePayee address
  • amountEscrow amount in TNZO
Response:
{
  "jsonrpc": "2.0",
  "result": { "escrow_id": "escrow_mno123", "status": "pending" },
  "id": 1
}

tenzro_releaseEscrow

Release escrowed funds upon proof submission.

Parameters:
  • escrow_idEscrow identifier
  • proofProof data (hex, optional)
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "released", "transaction_hash": "0xabc456..." },
  "id": 1
}

tenzro_openPaymentChannel

Open a micropayment channel for off-chain per-token billing.

Parameters:
  • counterpartyCounterparty address
  • depositInitial deposit amount
Response:
{
  "jsonrpc": "2.0",
  "result": { "channel_id": "channel_stu456", "deposit": "100.0", "status": "open" },
  "id": 1
}

tenzro_closePaymentChannel

Close a micropayment channel and settle final balances.

Parameters:
  • channel_idChannel identifier
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "closed", "final_balances": { "spent": "35.2", "remaining": "64.8" } },
  "id": 1
}

AP2 (Agent Payment Protocol) Methods

tenzro_ap2CreateSession

Create an AP2 payment session between an agent and a provider.

Parameters:
  • agentDidDID of the paying agent
  • providerDidDID of the service provider
  • serviceType"inference", "tee", or "storage"
  • maxAmountMaximum TNZO authorized for this session
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "sessionId": "ap2_sess_abc123",
    "status": "active",
    "maxAmount": "10.0",
    "expiresAt": "2026-04-10T13:00:00Z"
  },
  "id": 1
}

tenzro_ap2AuthorizePayment

Authorize a payment within an active AP2 session.

Parameters:
  • sessionIdAP2 session identifier
  • amountAmount to authorize in TNZO
Response:
{
  "jsonrpc": "2.0",
  "result": { "authorizationId": "ap2_auth_xyz", "status": "authorized", "remainingBudget": "9.5" },
  "id": 1
}

tenzro_ap2ExecutePayment

Execute a previously authorized AP2 payment, settling on-chain.

Parameters:
  • sessionIdAP2 session identifier
  • authorizationIdAuthorization ID
Response:
{
  "jsonrpc": "2.0",
  "result": { "authorizationId": "ap2_auth_xyz", "status": "executed", "transactionHash": "0xabc..." },
  "id": 1
}

tenzro_ap2CancelSession

Cancel an active AP2 session. Remaining budget is released.

Parameters:
  • sessionIdAP2 session identifier
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "cancelled", "totalSpent": "0.5", "refunded": "9.5" },
  "id": 1
}

tenzro_ap2GetSession

Get details of an AP2 session including authorizations.

Parameters:
  • sessionIdAP2 session identifier
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "sessionId": "ap2_sess_abc123",
    "agentDid": "did:tenzro:machine:abc123",
    "providerDid": "did:tenzro:machine:def456",
    "maxAmount": "10.0",
    "totalSpent": "0.5",
    "remainingBudget": "9.5",
    "status": "active"
  },
  "id": 1
}

Nanopayment Methods

tenzro_openNanopaymentChannel

Open a nanopayment channel for high-frequency off-chain micropayments.

Parameters:
  • payerPayer address
  • payeePayee address
  • depositInitial deposit in TNZO
Response:
{
  "jsonrpc": "2.0",
  "result": { "channelId": "nano_ch_abc", "deposit": "50.0", "status": "open" },
  "id": 1
}

tenzro_sendNanopayment

Send an off-chain nanopayment within an open channel.

Parameters:
  • channelIdChannel identifier
  • amountPayment amount in TNZO
  • memoOptional memo (e.g., inference request ID)
Response:
{
  "jsonrpc": "2.0",
  "result": { "paymentId": "nano_pay_xyz", "cumulativeAmount": "0.0532", "status": "accepted" },
  "id": 1
}

tenzro_flushNanopaymentBatch

Settle accumulated off-chain nanopayments on-chain as a single batch.

Parameters:
  • channelIdChannel identifier
Response:
{
  "jsonrpc": "2.0",
  "result": { "batchSize": 532, "totalSettled": "0.0532", "transactionHash": "0xdef...", "status": "settled" },
  "id": 1
}

tenzro_closeNanopaymentChannel

Close a nanopayment channel. Unsettled payments are flushed and remaining deposit refunded.

Parameters:
  • channelIdChannel identifier
Response:
{
  "jsonrpc": "2.0",
  "result": { "totalSpent": "0.0532", "refunded": "49.9468", "status": "closed" },
  "id": 1
}

Circuit Breaker Methods

tenzro_getProviderHealth

Get circuit breaker state and health metrics for a provider.

Parameters:
  • providerIdProvider identifier
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "providerId": "provider_abc",
    "circuitState": "closed",
    "failureCount": 2,
    "successCount": 1483,
    "failureRate": 0.0013
  },
  "id": 1
}
Note: Circuit states: "closed" (healthy), "open" (rejecting), "half-open" (testing recovery)

tenzro_configureCircuitBreaker

Configure circuit breaker thresholds for a provider.

Parameters:
  • providerIdProvider identifier
  • failureThresholdFailures before opening (default 5)
  • resetTimeoutMsRecovery timeout in ms (default 30000)
  • halfOpenMaxAttemptsMax half-open attempts (default 3)
Response:
{
  "jsonrpc": "2.0",
  "result": { "status": "configured" },
  "id": 1
}

Canton/DAML Methods

tenzro_listCantonDomains

List configured Canton domains for enterprise DAML integration.

Response:
{
  "jsonrpc": "2.0",
  "result": {
    "enabled": true,
    "domains": [
      { "id": "enterprise-domain", "host": "canton.example.com", "port": 10011, "status": "connected" }
    ]
  },
  "id": 1
}

tenzro_listDamlContracts

List active DAML contracts on Canton ledger.

Parameters:
  • template_idTemplate filter (optional)
Response:
{
  "jsonrpc": "2.0",
  "result": {
    "contracts": [
      { "contract_id": "contract_vwx", "template_id": "AssetTransfer.Template", "party": "Alice::party" }
    ]
  },
  "id": 1
}

tenzro_submitDamlCommand

Submit a DAML command to the Canton ledger (JSON Ledger API v2).

Parameters:
  • command_type"create", "exercise", or "exercise_by_key"
  • template_idTemplate identifier
  • partyParty identifier
Response:
{
  "jsonrpc": "2.0",
  "result": { "submitted": true, "canton_host": "canton.example.com" },
  "id": 1
}

Web Verification API

HTTP endpoints on port 8080 for cryptographic verification. Testnet: https://api.tenzro.network

MethodDescription
POST /api/verify/zk-proofVerify Groth16, PlonK, or STARK proof
POST /api/verify/tee-attestationVerify TEE attestation (TDX, SEV-SNP, Nitro, NVIDIA)
POST /api/verify/transactionVerify transaction signature (Ed25519/Secp256k1)
POST /api/verify/settlementVerify settlement receipt
POST /api/verify/inferenceVerify inference result with ZK proof
GET /api/verify/healthHealth check
GET /api/healthHealth check (alias)
GET /api/statusNode status and metrics
POST /api/faucetRequest testnet TNZO (100 per request, 24h cooldown)

POST /api/verify/zk-proof

Verify a zero-knowledge proof with structural validation.

Request:
{
  "proof_type": "groth16",
  "proof_bytes": "0xabc123...",
  "public_inputs": ["0x123", "0x456"],
  "verification_key": "0xdef789..."
}
Response:
{
  "valid": true,
  "details": {
    "proof_type": "groth16",
    "public_inputs_count": 2,
    "proof_size_bytes": 128,
    "status": "verified"
  },
  "verified_at": "2026-04-10T12:00:00Z"
}
Note: Proof types: groth16 (>=128 bytes + public inputs), plonk (>=256 bytes), stark (>=32 bytes)

POST /api/verify/tee-attestation

Verify a TEE attestation report with X.509 certificate chain validation.

Request:
{
  "attestation_data": "0xdef456...",
  "vendor": "intel_tdx",
  "report_data": "0xabcdef..."
}
Response:
{
  "valid": true,
  "details": { "vendor": "intel_tdx", "attestation_size": 64 },
  "verified_at": "2026-04-10T12:00:00Z"
}
Note: Vendors: intel_tdx, amd_sev_snp, aws_nitro, nvidia_gpu

POST /api/verify/transaction

Verify a transaction signature using Ed25519 or Secp256k1.

Request:
{
  "tx_hash": "0x789abc...",
  "sender": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb5",
  "signature": "0xdef123...",
  "public_key": "0x0123456789abcdef..."
}
Response:
{
  "valid": true,
  "details": { "key_type": "ed25519", "sender_match": true, "signature_valid": true },
  "verified_at": "2026-04-10T12:00:00Z"
}

GET /api/status

Node status and network metrics.

Response:
{
  "block_height": 1207,
  "peer_count": 25,
  "chain_id": 1337,
  "sync_status": "synced"
}

Error Codes

All APIs return standard JSON-RPC 2.0 error responses:

{
  "jsonrpc": "2.0",
  "error": {
    "code": -32602,
    "message": "Invalid params"
  },
  "id": 1
}
MethodDescription
-32700Parse error — invalid JSON
-32600Invalid request — missing required fields
-32601Method not found
-32602Invalid params — wrong type or missing required params
-32603Internal error — server-side failure
-32000Server error — generic application error
-32001Resource not found (block, tx, identity)
-32002Insufficient funds
-32003Unauthorized — invalid credentials or permissions

Complete Method Reference

All 148 RPC methods organized by namespace:

Ethereum Compatible (18)

eth_blockNumber eth_getBalance eth_getTransactionCount eth_sendRawTransaction eth_getBlockByNumber eth_getBlockByHash eth_chainId eth_getTransactionReceipt eth_gasPrice eth_estimateGas eth_getCode eth_getStorageAt eth_call eth_getLogs eth_getBlockTransactionCountByNumber eth_getBlockTransactionCountByHash eth_getTransactionByBlockNumberAndIndex eth_syncing

Web3 & Network (5)

web3_clientVersion web3_sha3 net_version net_peerCount net_listening

Blockchain (7)

tenzro_blockNumber tenzro_getBlock tenzro_getTransaction tenzro_sendTransaction tenzro_submitBlock tenzro_getFinalizedBlock tenzro_getTransactionHistory

Accounts (7)

tenzro_createAccount tenzro_createWallet tenzro_getBalance tenzro_getNonce tenzro_listAccounts tenzro_tokenBalance tenzro_totalSupply

Onboarding (3)

tenzro_participate tenzro_importIdentity tenzro_joinAsMicroNode

Identity (9)

tenzro_registerIdentity tenzro_registerMachineIdentity tenzro_resolveIdentity tenzro_resolveDidDocument tenzro_listIdentities tenzro_addCredential tenzro_addService tenzro_setUsername tenzro_resolveUsername

Node & Network (7)

tenzro_nodeInfo tenzro_peerCount tenzro_syncing tenzro_getHardwareProfile tenzro_setRole tenzro_exportConfig tenzro_shutdown

Models & Inference (13)

tenzro_listModels tenzro_inferenceRequest tenzro_chat tenzro_downloadModel tenzro_getDownloadProgress tenzro_serveModel tenzro_stopModel tenzro_deleteModel tenzro_listModelEndpoints tenzro_getModelEndpoint tenzro_registerModelEndpoint tenzro_unregisterModelEndpoint tenzro_discoverModels

Provider (9)

tenzro_registerProvider tenzro_providerStats tenzro_listProviders tenzro_setProviderSchedule tenzro_getProviderSchedule tenzro_setProviderPricing tenzro_getProviderPricing tenzro_addResource tenzro_faucet

Payments (8)

tenzro_createPaymentChallenge tenzro_payMpp tenzro_payX402 tenzro_payVisaTap tenzro_payMastercard tenzro_listPaymentSessions tenzro_paymentGatewayInfo tenzro_getPaymentReceipt

Staking & Governance (7)

tenzro_stake tenzro_unstake tenzro_getVotingPower tenzro_listProposals tenzro_createProposal tenzro_vote tenzro_delegateVotingPower

Agents (14)

tenzro_registerAgent tenzro_listAgents tenzro_sendAgentMessage tenzro_spawnAgent tenzro_runAgentTask tenzro_createSwarm tenzro_getSwarmStatus tenzro_terminateSwarm tenzro_delegateTask tenzro_discoverAgents tenzro_spawnAgentWithSkill tenzro_fundAgent tenzro_swapToken tenzro_agentPayForInference

Task Marketplace (8)

tenzro_postTask tenzro_listTasks tenzro_getTask tenzro_cancelTask tenzro_quoteTask tenzro_assignTask tenzro_completeTask tenzro_updateTask

Agent Marketplace (7)

tenzro_registerAgentTemplate tenzro_listAgentTemplates tenzro_getAgentTemplate tenzro_downloadAgentTemplate tenzro_updateAgentTemplate tenzro_spawnAgentTemplate tenzro_runAgentTemplate

Skills Registry (6)

tenzro_registerSkill tenzro_listSkills tenzro_searchSkills tenzro_useSkill tenzro_getSkill tenzro_updateSkill

Tools Registry (6)

tenzro_registerTool tenzro_listTools tenzro_searchTools tenzro_useTool tenzro_getTool tenzro_updateTool

Token Registry (7)

tenzro_createToken tenzro_getToken tenzro_listTokens tenzro_crossVmTransfer tenzro_wrapTnzo tenzro_getTokenBalance tenzro_deployContract

Settlement & Escrow (6)

tenzro_settle tenzro_getSettlement tenzro_createEscrow tenzro_releaseEscrow tenzro_openPaymentChannel tenzro_closePaymentChannel

Canton/DAML (3)

tenzro_listCantonDomains tenzro_listDamlContracts tenzro_submitDamlCommand

Events & Streaming (7)

eth_subscribe eth_unsubscribe eth_getLogs tenzro_getEvents tenzro_eventStatus tenzro_registerWebhook tenzro_deleteWebhook tenzro_listWebhooks

NFT Operations (8)

tenzro_createNftCollection tenzro_mintNft tenzro_mintNftBatch tenzro_transferNft tenzro_nftOwnerOf tenzro_nftBalanceOf tenzro_getNftCollection tenzro_listNftCollections tenzro_registerNftPointer

Bridge Operations (6)

tenzro_bridgeQuote tenzro_bridgeTokens tenzro_bridgeStatus tenzro_bridgeRoutes tenzro_listBridgeAdapters tenzro_bridgeWithHook

ERC-7802 Cross-Chain (6)

tenzro_crosschainMint tenzro_crosschainBurn tenzro_authorizeBridge tenzro_revokeBridge tenzro_listAuthorizedBridges tenzro_updateBridgeLimits

ERC-3643 Compliance (9)

tenzro_registerCompliance tenzro_checkCompliance tenzro_freezeAddress tenzro_unfreezeAddress tenzro_recoverTokens tenzro_addIdentityClaim tenzro_addTrustedIssuer tenzro_whitelistAddress tenzro_setCountryRestriction