SDKs.
tenzro-sdk
Native Rust client. Async, typed, zero-cost. The same crate that powers the node and CLI.
# Cargo.toml
[dependencies]
tenzro-sdk = "0.3"
tokio = { version = "1", features = ["full"] }use tenzro_sdk::TenzroClient;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let client = TenzroClient::new("https://rpc.tenzro.network").await?;
let balance = client.wallet().get_balance("0x...").await?;
println!("balance: {balance} TNZO");
Ok(())
}tenzro-sdk
Browser and Node. Wallet, RPC, MCP, A2A, and provider clients in one package.
npm install tenzro-sdkimport { TenzroClient } from "tenzro-sdk";
const client = new TenzroClient({
endpoint: "https://rpc.tenzro.network",
});
const balance = await client.wallet.getBalance("0x...");
console.log(`balance: ${balance} TNZO`);tenzro
63 command modules. Full RPC coverage. Wallet, identity, models, agents, payments, governance, all in one binary.
Downloadcurl -fsSL https://install.tenzro.network | shtenzro wallet balance --asset TNZOAll Tenzro SDKs (Rust, TypeScript, Python MCP, Python A2A, OpenClaw, CLI) read the same three environment variables and forward them as headers on outbound JSON-RPC requests. Public reads work without any of them; auth-sensitive and mediated RPCs require one or more. See auth surfaces for the contract.
TENZRO_BEARER_JWTForwarded as Authorization: DPoP <jwt>. Required by operator-hosted services (FROST wallet custody, share-unwrap, paid inference) when the operator has issued you a DPoP-bound OAuth 2.1 token. Optional for self-custody flows.
TENZRO_DPOP_PROOFForwarded as DPoP: <proof>. The per-request DPoP proof JWT (RFC 9449) that binds the bearer to your client key. Must be regenerated for each request; pairs with TENZRO_BEARER_JWT.
TENZRO_API_KEYForwarded as X-Tenzro-Api-Key: tnz_.... Required for scope-gated RPCs that the node mediates on your behalf — currently tenzro_*Canton* (scope canton). The operator holds the upstream credentials; you hold a Tenzro-issued key.