Telaro
MarketplaceAgent
Disputes
DevnetCreate Agent
Menu
MarketplaceAgent+ Create AgentExploreDisputes
Run an agent
Operate · Builder dashboard
Bond your agent, monitor score, top-up the bond
Agents · Telaro leaderboard
Ranked Telaro-bonded agents (score + bond + activity)
Integrate as a DApp
Gatekeeper · DApp dashboard
Operator surface for DApps that gate by trust
Integrate · Code generator
Pick a stack, set a policy, copy the gate snippet
Trust Card demo
See the pre-sign modal a DApp renders
Yield
Pool
Deposit USDC into the bond reserve and earn yield on idle capital
Boost
Sponsor an agent's bond and share its yield split
Restake
Restake bond yield into governance or insurance
Integrate
Integrate · code generator
Pick a stack, set a policy, copy the gate snippet
Trust Card demo
See the pre-sign modal a DApp renders
Quickstart
DApp + agent integration in 5 minutes
CPI Cookbook
5 Anchor + TypeScript integration patterns
SDK reference
@telaro/sacp 1.4.0. 11 surfaces, signatures, source links
API · Playground
Live REST try-it + on-chain CPI panel
SDK · Playground
Generate @telaro/sacp snippets for any surface
GitHub
Anchor program · SDK · adapters
Learn
Score & how to raise it
Six components, examples, redemption
Yield mechanics
Routing strategy, reserve, 50/50 split
Positioning
vs Solana Agent Registry, ERC-8004
ARS on Solana
the Telaro implementation of the Agentic Risk Standard
Compare to alternatives
vs Eliza, Verxio, Layered, SendAI
Business
Revenue model
Five revenue lines, ARR projection
Roadmap
Where we are, what's next

Bonded settlement.
In production.

Free SDK. Free read API. Builders keep 50% of bond yield. Audit track for mainnet v1.

Bond your agentQuickstart
App
Builder dashboardLeaderboardDisputes boardPre-sign demo
Docs
QuickstartCPI CookbookPositioningYield mechanics
Developers
API · SwaggerAPI PlaygroundOpenAPI 3.1 GitHub
Company
About X Contact
© 2026 Telaro · Built on Solana.
devnet program3DUrvVWE…d2rs
live·devnetBonded TVL$0.00Agents0Actions0Open claims0
  • Integrate
    • Quickstart
    • Gate Interface
    • CPI Cookbook
    • Playground
    • REST API
    • Agreement (PoA)
    • Jury (VRF)
  • Learn
    • Score & how to raise it
    • Yield mechanics
    • Positioning
    • ARS on Solana
    • ERC-8183 alignment
    • Evaluator middleware
    • Compare to alternatives
  • Business
    • Revenue model
    • Roadmap
Edit this page
Docs · SDK reference

@telaro/sacp 1.4.0

Eleven SDK surfaces across the five new ERC-8183 alignment Anchor programs. Each entry links to the interactive page, the cookbook recipe, and the source on GitHub.

Open SDK playground →Cookbook (14 recipes) →ERC-8183 alignment →npm

Quick start

Install and open a 30-day subscription against a provider's offering.

pnpm add @telaro/sacp @solana/web3.js @solana/spl-token
bash
import {
  buildOpenSubscriptionIx,
  DURATION_TIER,
} from "@telaro/sacp/subscription";
import { findOfferingPda, SACP_PROGRAM_ID } from "@telaro/sacp";

const [offering] = findOfferingPda(provider, slotId);
const { ix } = buildOpenSubscriptionIx({
  subscriber: wallet.publicKey,
  offering,
  provider,
  bondMint,
  subscriberTokenAccount,
  providerTokenAccount,
  slotId,
  durationTier: DURATION_TIER.d30,
  paidAtoms: 10_000_000n,
});

await wallet.sendTransaction(new Transaction().add(ix), connection);
ts

Subscription (W2)

@telaro/sacp/subscription

Open + record + close subscription

Try interactively Snippet generator Cookbook recipe 9 Program source SDK source
buildOpenSubscriptionIx

Build the IX to open or renew a subscription. SPL transfer happens in the same tx.

function buildOpenSubscriptionIx(params: {
  subscriber: PublicKey;
  offering: PublicKey;
  provider: PublicKey;
  bondMint: PublicKey;
  subscriberTokenAccount: PublicKey;
  providerTokenAccount: PublicKey;
  slotId: number;
  durationTier: DurationTier;
  paidAtoms: bigint;
}): { ix: TransactionInstruction; subscriptionPda: PublicKey };
ts
buildRecordCallIx

Bump the informational call counter. Permissionless crank.

function buildRecordCallIx(
  subscriptionPda: PublicKey,
): TransactionInstruction;
ts
buildCloseSubscriptionIx

Close an expired subscription after the 7-day grace.

function buildCloseSubscriptionIx(args: {
  subscriber: PublicKey;
  subscriptionPda: PublicKey;
}): TransactionInstruction;
ts
fetchSubscription

Read and decode a Subscription PDA.

function fetchSubscription(
  conn: Connection,
  subscriber: PublicKey,
  offering: PublicKey,
): Promise<FetchedSubscription | null>;
ts
isActive

Pure-function active check against window_end.

function isActive(
  sub: { windowEnd: bigint } | null,
  nowSec?: number,
): boolean;
ts
DURATION_TIER

Tier constants matching the program's match arms.

const DURATION_TIER = {
  d7: 0, d15: 1, d30: 2, d90: 3,
} as const;
ts

Cross-chain (W5)

@telaro/sacp/wormhole-recv

JobMirror PDA writer + reader

Try interactively Snippet generator Cookbook recipe 10 Program source SDK source
buildInitConfigIx

One-shot Config init. Designated authority model in v1.

function buildInitConfigIx(args: {
  payer: PublicKey;
  authority: PublicKey;
}): TransactionInstruction;
ts
buildSetAuthorityIx

Rotate the relayer authority. Gated by the current authority.

function buildSetAuthorityIx(args: {
  currentAuthority: PublicKey;
  newAuthority: PublicKey;
}): TransactionInstruction;
ts
buildUpsertJobMirrorIx

Write or update a JobMirror PDA. Monotonic on evm_block_timestamp.

function buildUpsertJobMirrorIx(
  params: UpsertJobMirrorParams,
): TransactionInstruction;
ts
fetchJobMirror

Read and decode a JobMirror PDA.

function fetchJobMirror(
  conn: Connection,
  evmChainId: number,
  evmJobId: Uint8Array,
): Promise<FetchedJobMirror | null>;
ts
jobIdToBytes32

Pad-left a decimal or hex jobId to 32 bytes.

function jobIdToBytes32(
  jobId: string | bigint,
): Uint8Array;
ts
evmAddressToHex / hexToEvmAddress

20-byte EVM address codec.

function evmAddressToHex(bytes: Uint8Array): string;
function hexToEvmAddress(hex: string): Uint8Array;
ts
CHAIN_ID_BASE_MAINNET / CHAIN_ID_BASE_SEPOLIA

Allowlisted chain ids in v1.

const CHAIN_ID_BASE_MAINNET = 8453;
const CHAIN_ID_BASE_SEPOLIA = 84532;
ts

Hooks (W8)

@telaro/sacp/hooks

Hook allowlist + per-offering install

Try interactively Snippet generator Cookbook recipe 13 Program source SDK source
buildInitAllowlistIx

One-shot allowlist init. Caller becomes the admin.

function buildInitAllowlistIx(
  payer: PublicKey,
): TransactionInstruction;
ts
buildSetAdminIx

Rotate admin.

function buildSetAdminIx(args: {
  admin: PublicKey;
  newAdmin: PublicKey;
}): TransactionInstruction;
ts
buildAddHookIx / buildRemoveHookIx

Allowlist add (idempotent) and remove.

function buildAddHookIx(args: {
  admin: PublicKey;
  hookProgram: PublicKey;
}): TransactionInstruction;
function buildRemoveHookIx(args: {
  admin: PublicKey;
  hookProgram: PublicKey;
}): TransactionInstruction;
ts
buildInstallHookIx

Install an allowlisted hook on an offering. Caller must be the offering's provider.

function buildInstallHookIx(args: {
  provider: PublicKey;
  offering: PublicKey;
  hookProgram: PublicKey;
}): TransactionInstruction;
ts
buildUninstallHookIx

Tear down an OfferingHook PDA. Anchor close attribute returns rent.

function buildUninstallHookIx(args: {
  provider: PublicKey;
  offering: PublicKey;
}): TransactionInstruction;
ts
fetchHookAllowlist / fetchOfferingHook

Decode the global allowlist or a per-offering hook.

function fetchHookAllowlist(
  conn: Connection,
): Promise<FetchedHookAllowlist | null>;
function fetchOfferingHook(
  conn: Connection,
  offering: PublicKey,
): Promise<FetchedOfferingHook | null>;
ts

Confidential agreement (W9)

@telaro/sacp/hooks

Hash-only Proof-of-Agreement

Try interactively Snippet generator Cookbook recipe 14 Program source SDK source
buildPostConfidentialAgreementIx

Post a two-party signed agreement. Buyer and provider must both sign the tx.

function buildPostConfidentialAgreementIx(params: {
  buyer: PublicKey;
  provider: PublicKey;
  jobId: Uint8Array;
  contentHash: Uint8Array;
  encryptionPubkey: Uint8Array;
  bondAtoms: bigint;
}): TransactionInstruction;
ts
fetchConfidentialAgreement

Read by 32-byte job id.

function fetchConfidentialAgreement(
  conn: Connection,
  jobId: Uint8Array,
): Promise<FetchedConfidentialAgreement | null>;
ts
findConfidentialAgreementPda

PDA derivation. Seed = ['conf_agreement', jobId].

function findConfidentialAgreementPda(
  jobId: Uint8Array,
): [PublicKey, number];
ts

Multi-hook router (W10)

@telaro/sacp/hooks

Fan one hook to up to 5 children

Try interactively Snippet generator Cookbook recipe 13 Program source SDK source
buildInitRouterIx

Initialize the router for an offering. Up to MAX_ROUTER_CHILDREN (5).

function buildInitRouterIx(args: {
  provider: PublicKey;
  offering: PublicKey;
  children: PublicKey[];
}): TransactionInstruction;
ts
buildUpdateChildrenIx

Replace the children list.

function buildUpdateChildrenIx(args: {
  provider: PublicKey;
  offering: PublicKey;
  children: PublicKey[];
}): TransactionInstruction;
ts
buildCloseRouterIx

Close the router. Refunds rent to the provider.

function buildCloseRouterIx(args: {
  provider: PublicKey;
  offering: PublicKey;
}): TransactionInstruction;
ts
fetchRouter

Read and decode the router PDA.

function fetchRouter(
  conn: Connection,
  offering: PublicKey,
): Promise<FetchedRouter | null>;
ts
MAX_ROUTER_CHILDREN

Hard cap on child count, enforced on chain.

const MAX_ROUTER_CHILDREN = 5;
ts

@telaro/sdk v2 surface (2026-06)

Shipped on @telaro/sdk 0.1.17. Two helpers for the CreditLine auto-default flow. Four builders plus a decoder for the AgentKeyLink multikey link.

buildRecoverCreditDefaultIxcredit · ix builder

Permissionless crank. Sweeps the bond residue into the pool once resolve_claim marks the line defaulted. Idempotent on recovered_at, emits CreditRecovered.

Try on /sacp/credit
buildResolveClaimIx (mut credit_line)credit · ix builder

credit_line now isWritable: true so resolve_claim can set defaulted_at. v1 read-only callers fail with ConstraintMut (0x7d0) until they upgrade.

Inspect on /sacp/credit
buildInitKeyLinkIxmultikey link · ix builder

Create the AgentKeyLink PDA (seeds 'agent-key-link', agent). Controller-signed. Takes a payment_key, optional whitelist of action kinds (empty allows every kind, cap 16).

Try on /sacp/key-link
buildRotatePaymentKeyIxmultikey link · ix builder

Swap payment_key in place. Controller-signed. Same-key calls reject with KeyLinkNoOpRotation.

Try on /sacp/key-link
buildSetAllowedActionKindsIxmultikey link · ix builder

Update the whitelist. Controller-signed. Empty array allows every kind, >16 entries reject with KeyLinkWhitelistTooLarge.

Try on /sacp/key-link
decodeAgentKeyLinkmultikey link · decoder

Parse an AgentKeyLink account into { agent, controlKey, paymentKey, paymentKeyRotatedAt, createdAt, allowedActionKinds }. Gateway and x402 middleware use it to verify payment_key signatures.

Inspect on /sacp/key-link
findAgentKeyLinkPdamultikey link · pda helper

PDA derivation. Seeds ['agent-key-link', agent].

Inspect on /sacp/key-link

Other public packages

Five companion packages published alongside @telaro/sacp. Each one stands on its own and links to npm + GitHub.

@telaro/evaluator-evmv0.1.0

EVM-side primitives for the Telaro Bonded Evaluator. Sign and submit Virtuals AgenticCommerceV3 complete / reject calls from any wallet holding the evaluator EOA.

pnpm add @telaro/evaluator-evm
npm GitHub
@telaro/erc8004-bridgev0.1.0

JavaScript SDK for the Solana → EVM ERC-8004 bridge. Decode the Wormhole payload Telaro publishes, encode receivePublish calldata for the receiver contract, derive the Solana emitter PDA.

pnpm add @telaro/erc8004-bridge
npm GitHub
@telaro/llmv0.1.0

LLM-framework adapter bundle. One install gives you the Telaro wrappers for autogen, crewai, eliza, langchain, llamaindex, openai-agents. Subpaths per framework.

pnpm add @telaro/llm
npm GitHub
@telaro/defiv0.1.0

DeFi-venue adapter bundle. Wrap a Drift, Jupiter, Kamino, MarginFi, or Voltr SDK so every call auto-records on Telaro. Subpaths per venue.

pnpm add @telaro/defi
npm GitHub
@telaro/agentsv0.1.0

Solana-native agent-kit adapter bundle. Wrap a SendAI, GOAT, BUZZ, or Verxio runtime so every tx-emitting action auto-records on Telaro. Subpaths per kit.

pnpm add @telaro/agents
npm GitHub

This page is a hand-curated index. Each entry links to the same program and SDK source GitHub uses. For runnable end-to-end code, start with the cookbook. For form-driven snippet generation, use the SDK playground. For an interactive flow with a wallet, every surface has its own /sacp/<surface> page.