Publishing a protocol?
Declare what your protocol exposes in a .tx3 spec — parties, types, transactions. Ship it as a TII artifact that any consumer can read.
Protocol authors publish a spec. Application developers generate typed clients from it. The interface is data, not lore.
Declare what your protocol exposes in a .tx3 spec — parties, types, transactions. Ship it as a TII artifact that any consumer can read.
Generate a typed client from a published .tii and invoke protocol transactions from TypeScript, Rust, Go or Python.
Open source · Apache 2.0 · docs.txpipe.io/tx3
Describe inputs, outputs and datums once in `.tx3`. Lint in VS Code, run a local devnet and ship with Trix — batteries included.
Production endpoints backed by a managed provider. Drop the typed SDK in TypeScript, Rust, Go or Python and call your dApp like any other API.
Every protocol ships with machine-readable specs, READMEs and an MCP server. Your agents call dApps the same way developers do.
Each protocol page on tx3.land exposes typed SDKs (TS · Rust · Go · Python),
a TRP-backed HTTP endpoint and a live transaction stream — all derived from the same TII.
import { Tx3Client, Protocol, TrpClient } from "tx3-sdk";
const protocol = await Protocol.fromFile("indigo.tii");
const trp = new TrpClient({ endpoint, headers });
const tx3 = new Tx3Client(protocol, trp);
const unstake = await tx3.tx("unstake")
.arg("owner_pkh", "0011…")
.arg("position_utxo", "tx_hash#0")
.resolve();
const submitted = await (await unstake.sign()).submit();TypeScript · Rust · Go · Python — all typed, all ready.
{
"jsonrpc": "2.0",
"method": "unstake",
"params": {
"owner_pkh": "0011…",
"position_utxo": "tx_hash#0"
},
"id": 0
}Build & resolve transactions from any HTTP client.
May 19, 2026
Every protocol transaction streamed in real time.
Browse the registry, grab the typed SDK and start calling endpoints.
Describe it once in Tx3 and we'll generate SDKs, docs and live activity.