Agent Marketplace
The Tenzro Agent Marketplace is a decentralised registry of reusable AI agent templates. Developers publish specialist, orchestrator, and multi-modal templates; users browse and deploy them with one call. Templates can be free, per-execution, per-token, or subscription-based.
Template Types
| Type | Description |
|---|---|
| specialist | Focused single-domain agent (code review, data analysis, translation) |
| orchestrator | Coordinates multiple specialist sub-agents in a pipeline |
| autonomous | Self-directed agent with long-horizon goals and tool use |
| multi_modal | Processes text, images, audio, and structured data |
| tool_agent | Wraps external APIs and MCP tools for agent consumption |
| custom | User-defined type for experimental or niche use cases |
Pricing Models
| Model | JSON | Use case |
|---|---|---|
| free | { "type": "free" } | Open-source, community templates |
| per_execution | { "type": "per_execution", "price": "5000000000000000000" } | One-off tasks, batch jobs |
| per_token | { "type": "per_token", "price_per_token": "1000000000000" } | Long-running inference, document processing |
| subscription | { "type": "subscription", "monthly_rate": "50000000000000000000" } | Always-on orchestrators, production pipelines |
| revenue_share | { "type": "revenue_share", "creator_share_bps": 9500 } | Variable-revenue pipelines split between creator and downstream providers |
All pricing models also accept a compact string form in tenzro_registerAgentTemplate, the CLI (tenzro marketplace register --pricing <form>), and both SDKs:
"free"
"per_execution:5000000000000000000" // 5 TNZO per execution
"per_token:1000000000000" // 1e12 wei per token
"subscription:50000000000000000000" // 50 TNZO / month
"revenue_share:9500" // 95% creator / 5% treasuryPaid Marketplace: Creator Identity and Payout Wallet
Paid templates bind each invocation fee to a creator identity and a mandatory payout wallet. The network treasury automatically collects a AGENT_MARKETPLACE_COMMISSION_BPS = 500 (5%) commission on every paid run.
| Field | Type | Semantics |
|---|---|---|
| creator_did | Option<String> | Optional DID binding (did:tenzro:human:…, did:tenzro:machine:…, did:pdis:guardian:…, did:pdis:agent:…). Immutable after registration. Used for reputation and attribution. |
| creator_wallet | Option<Address> | Mandatory for any non-Free pricing. Receives the 95% creator share of every paid invocation. Registration fails with MissingCreatorWallet if omitted for paid templates. |
| invocation_count | u64 | Monotonically incremented by tenzro_runAgentTemplate. |
| total_revenue | u128 | Cumulative fee_paid credited across all invocations. |
Fee Split (per invocation)
fee_paid = pricing.price_for(tokens_estimate, max_iterations)
network_commission = fee_paid * 500 / 10_000 // 5%
creator_share = fee_paid - network_commission // 95%
payer_wallet -= fee_paid // debited
treasury += network_commission // credited to NetworkTreasury
creator_wallet += creator_share // credited to template.creator_wallet
template.invocation_count += 1
template.total_revenue += fee_paidFree templates bypass the fee-collection path entirely — fee_paid = 0, no treasury or creator credits are made, and creator_wallet is not required.
Running a Paid Template
{
"jsonrpc": "2.0",
"method": "tenzro_runAgentTemplate",
"params": {
"agent_id": "<spawned-agent-id>",
"payer_wallet": "0x...02",
"tokens_estimate": 1024,
"max_iterations": 4,
"dry_run": false
}
}
// Response — RunAgentTemplateReport
{
"result": {
"steps_executed": 2,
"steps_failed": 0,
"steps_skipped_by_dry_run": 0,
"fee_paid": "5000000000000000000", // 5 TNZO
"commission_bps": 500,
"network_commission": "250000000000000000", // 0.25 TNZO
"creator_share": "4750000000000000000", // 4.75 TNZO
"payer_wallet": "0x...02",
"creator_wallet": "0x...01",
"treasury": "0x...treasury",
"invocation_count": 1,
"total_revenue": "5000000000000000000"
}
}Setting dry_run: true skips fee collection and persistence but still reports the estimated fee-split, step counts, and steps_skipped_by_dry_run. Use this for cost estimation before committing a paid invocation.
CLI Walkthrough
# 1. Register a paid per-execution specialist template
tenzro marketplace register \
--name "Premium Alpha Advisor" \
--description "Alpha signal generation" \
--template-type specialist \
--creator-did did:tenzro:human:alice \
--creator-wallet 0x...01 \
--pricing per_execution:5000000000000000000 \
--system-prompt "You are an alpha advisor..."
# 2. Spawn an instance from the template
tenzro marketplace spawn --template-id ref-premium-alpha-advisor-v1 \
--name "advisor-01"
# 3. Run it (payer is charged 5 TNZO; 4.75 to creator, 0.25 to treasury)
tenzro marketplace run \
--agent-id <spawned-agent-id> \
--payer-wallet 0x...02 \
--tokens-estimate 1024 \
--max-iterations 4TypeScript SDK
import { TenzroClient, TESTNET_CONFIG } from "@tenzro/sdk";
const client = await TenzroClient.connect({ ...TESTNET_CONFIG });
// Register a paid template with creator DID + payout wallet
const paid = await client.marketplace.registerAgentTemplate({
name: "Premium Alpha Advisor",
description: "Alpha signal generation",
template_type: "specialist",
creator_did: "did:tenzro:human:alice",
creator_wallet: "0x...01",
pricing: "per_execution:5000000000000000000",
system_prompt: "You are an alpha advisor...",
tags: ["paid", "alpha"],
});
// Invoke — returns the detailed fee-split report
const report = await client.marketplace.runAgentTemplate({
agent_id: "<spawned-agent-id>",
payer_wallet: "0x...02",
tokens_estimate: 1024,
max_iterations: 4,
dry_run: false,
});
console.log("fee_paid =", report.fee_paid);
console.log("network_commission =", report.network_commission);
console.log("creator_share =", report.creator_share);
console.log("invocation_count =", report.invocation_count);Rust SDK
use tenzro_sdk::{TenzroClient, config::SdkConfig};
let client = TenzroClient::connect(SdkConfig::testnet()).await?;
let marketplace = client.marketplace();
let report = marketplace.run_agent_template(
"<spawned-agent-id>",
"0x...02", // payer_wallet
Some(1024), // tokens_estimate
Some(4), // max_iterations
false, // dry_run
).await?;
println!("fee_paid = {}", report.fee_paid);
println!("network_commission = {}", report.network_commission);
println!("creator_share = {}", report.creator_share);RPC Methods
List Templates
// Browse free templates only
{
"jsonrpc": "2.0",
"method": "tenzro_listAgentTemplates",
"params": { "free_only": true, "limit": 20, "offset": 0 }
}
// Filter by type
{
"jsonrpc": "2.0",
"method": "tenzro_listAgentTemplates",
"params": { "template_type": "specialist", "limit": 10 }
}Register a Template
{
"jsonrpc": "2.0",
"method": "tenzro_registerAgentTemplate",
"params": {
"name": "TypeScript Code Reviewer",
"description": "Reviews TypeScript/JavaScript for type safety and best practices.",
"template_type": "specialist",
"system_prompt": "You are an expert TypeScript code reviewer...",
"tags": ["typescript", "javascript", "code-review"],
"pricing": { "type": "free" }
}
}Get Template Details
{
"jsonrpc": "2.0",
"method": "tenzro_getAgentTemplate",
"params": { "template_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7" }
}
// Response
{
"result": {
"template_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"name": "TypeScript Code Reviewer",
"creator": "addr_creator123...",
"version": "1.0.0",
"template_type": "specialist",
"status": "active",
"download_count": 42,
"rating": 87,
"tags": ["typescript", "javascript", "code-review"],
"pricing": { "type": "free" }
}
}Rust SDK
use tenzro_sdk::{TenzroClient, config::SdkConfig};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = TenzroClient::connect(SdkConfig::testnet()).await?;
let marketplace = client.marketplace();
// Browse free templates
let free = marketplace.list_agent_templates(Some(true), Some(20), Some(0)).await?;
println!("{} free templates", free.len());
// Register a free specialist template
let template = marketplace.register_agent_template(
"Rust Code Reviewer",
"Reviews Rust code for safety, idiomatic patterns, and performance.",
"specialist",
"You are an expert Rust code reviewer. Check for memory safety, error handling with Result/Option, and idiomatic patterns.",
vec!["rust".to_string(), "code-review".to_string()],
serde_json::json!({ "type": "free" }),
).await?;
println!("Template ID: {}", template.template_id);
// Register a paid per-execution template
let paid = marketplace.register_agent_template(
"Advanced Data Analyst",
"Statistical analysis and trend detection for CSV and JSON data.",
"specialist",
"You are an expert data analyst. Parse data, identify patterns, and return structured JSON insights.",
vec!["data".to_string(), "analytics".to_string()],
serde_json::json!({
"type": "per_execution",
"price": "5000000000000000000" // 5 TNZO
}),
).await?;
println!("Paid template ID: {}", paid.template_id);
// Get template details
let details = marketplace.get_agent_template(&template.template_id).await?;
println!("Downloads: {}", details.download_count);
println!("Rating: {}/100", details.rating);
Ok(())
}TypeScript SDK
import { TenzroClient, TESTNET_CONFIG } from "@tenzro/sdk";
const client = await TenzroClient.connect({ ...TESTNET_CONFIG });
// Browse free templates
const freeTemplates = await client.marketplace.listAgentTemplates({
free_only: true,
limit: 20,
offset: 0,
});
console.log(`${freeTemplates.length} free templates`);
// Register a free specialist template
const tsReviewer = await client.marketplace.registerAgentTemplate({
name: "TypeScript Code Reviewer",
description: "Autonomous agent for TypeScript/JavaScript code review.",
template_type: "specialist",
system_prompt:
"You are an expert TypeScript code reviewer. Check for type safety, " +
"correctness, performance, and adherence to modern best practices.",
tags: ["typescript", "javascript", "code-review"],
pricing: { type: "free" },
});
console.log("Template ID:", tsReviewer.template_id);
// Register a per-execution paid template
const dataAgent = await client.marketplace.registerAgentTemplate({
name: "Advanced Data Analyst",
description: "Statistical analysis and data visualisation specialist.",
template_type: "specialist",
system_prompt: "You are an expert data analyst...",
tags: ["data", "analytics", "statistics"],
pricing: {
type: "per_execution",
price: "5000000000000000000", // 5 TNZO per run
},
});
// Register a subscription-based orchestrator
const orchestrator = await client.marketplace.registerAgentTemplate({
name: "Research Pipeline Orchestrator",
description: "Coordinates search, analysis, and report generation agents.",
template_type: "orchestrator",
system_prompt: "You are a research pipeline orchestrator...",
tags: ["research", "orchestration", "multi-agent"],
pricing: {
type: "subscription",
monthly_rate: "50000000000000000000", // 50 TNZO/month
},
});
// Get template details
const details = await client.marketplace.getAgentTemplate(
tsReviewer.template_id
);
console.log("Downloads:", details.download_count);
console.log("Rating:", details.rating);
console.log("Pricing:", details.pricing);Reference Templates
The node bootstraps with 10 reference templates that demonstrate marketplace patterns across DeFi, payments, cross-chain, custody, and AI inference. These templates are loaded into CF_AGENT_TEMPLATES at startup and can be deployed immediately.
| Template | ID | Type | Description | Tags |
|---|---|---|---|---|
| yield_rebalancer | ref-yield-rebalancer-v1 | autonomous | DeFi yield optimization — monitors rates across lending protocols and DEX pools, rebalances positions to maximise APY | defi, yield, rebalancing, lending |
| mpp_payment_agent | ref-mpp-payment-agent-v1 | specialist | MPP payment automation — handles HTTP 402 challenge/credential/receipt flows with session management | payments, mpp, http-402, automation |
| canton_trade_settler | ref-canton-trade-settler-v1 | specialist | DAML trade settlement — executes DvP workflows on Canton with compliance checks and atomic settlement | canton, daml, trade, settlement, dvp |
| bridge_arbitrage_scanner | ref-bridge-arbitrage-scanner-v1 | autonomous | Cross-chain arbitrage — scans price differentials across chains via LayerZero, CCIP, and deBridge and executes profitable trades | arbitrage, cross-chain, bridge, defi |
| model_inference_proxy | ref-model-inference-proxy-v1 | specialist | AI inference routing — proxies inference requests to optimal providers based on latency, cost, and model availability | inference, ai, routing, models |
| multi_chain_portfolio_manager | ref-multi-chain-portfolio-manager-v1 | orchestrator | Manages diversified portfolios across Ethereum, Solana, and Tenzro chains with automated rebalancing, risk management, and cross-chain asset allocation | portfolio, multi-chain, rebalancing, defi, risk-management |
| intelligent_payment_router | ref-intelligent-payment-router-v1 | specialist | Routes payments through the optimal protocol (MPP, x402, Visa TAP, Mastercard) based on cost, speed, and recipient preferences | payments, routing, mpp, x402, visa-tap, mastercard |
| cross_chain_liquidity_aggregator | ref-cross-chain-liquidity-aggregator-v1 | autonomous | Discovers and aggregates liquidity across DEXes on multiple chains, finding optimal swap routes via LayerZero, CCIP, and deBridge | liquidity, cross-chain, dex, aggregation, bridge |
| autonomous_rwa_custodian | ref-autonomous-rwa-custodian-v1 | autonomous | Manages real-world asset tokenization and custody on Canton/DAML, handling compliance verification, attestation, and settlement | rwa, custody, canton, daml, compliance, tokenization |
| agentic_inference_marketplace | ref-agentic-inference-marketplace-v1 | orchestrator | Orchestrates a marketplace of AI model providers, handling discovery, pricing, quality scoring, and payment settlement for inference requests | inference, marketplace, ai, models, pricing |
| premium_alpha_advisor | ref-premium-alpha-advisor-v1 | specialist | Paid reference (5 TNZO / execution) — demonstrates the full end-to-end paid flow: creator_did binding, creator_wallet payout, 5%/95% fee split, read-only delegation with zero transaction caps. Emits auditable alpha recommendations with entry/target/invalidation/size/confidence. | paid, alpha, defi, specialist, trading-advice |
Template Capabilities
| Template | Capabilities |
|---|---|
| yield_rebalancer | rate monitoring, position rebalancing, APY optimization, protocol interaction |
| mpp_payment_agent | HTTP 402 flows, session management, credential handling, receipt verification |
| canton_trade_settler | DvP execution, DAML contract interaction, compliance checks, atomic settlement |
| bridge_arbitrage_scanner | price scanning, cross-chain execution, profit calculation, bridge routing |
| model_inference_proxy | provider routing, latency optimization, cost minimization, failover handling |
| multi_chain_portfolio_manager | cross-chain transfers, portfolio tracking, yield optimization, risk scoring |
| intelligent_payment_router | payment protocol selection, fee optimization, receipt aggregation |
| cross_chain_liquidity_aggregator | liquidity discovery, route optimization, slippage protection, MEV protection |
| autonomous_rwa_custodian | asset tokenization, compliance checks, TEE-verified custody, settlement |
| agentic_inference_marketplace | provider discovery, quality scoring, price negotiation, payment settlement |
Discovery and Ratings
Templates are discoverable via tag search, type filter, and popularity sort. Every execution increments download_count. Users can rate templates on-chain (0–100 score) — ratings are stake-weighted to prevent Sybil manipulation.
Revenue Distribution
Paid template revenue flows through the settlement engine:
- 95% → template creator (via micropayment channel)
- 5% → Tenzro Network treasury
Revenue-share templates split earnings between the creator and any downstream providers that contributed to execution.