Protocols
Protocol adapters abstract blockchain interactions into a unified interface. They handle quote generation, transaction building, and protocol-specific logic.Protocol Adapter Interface
Supported Protocols
Agentic Wallet includes adapters for 9 protocols:System Program
Native SOL transfers
- transfer_sol
- Program ID:
11111111111111111111111111111111
SPL Token
Token operations
- transfer_spl
- create_mint
- mint_token
- Program ID:
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
Jupiter
DEX aggregator
- swap (quote + build)
- Version: 1.0.0
- API:
https://lite-api.jup.ag/swap/v1
Marinade
Liquid staking
- stake
- unstake
- Capabilities:
stake,unstake
Solend
Lending protocol
- lend_supply
- lend_borrow
- Fail-closed quotes
Metaplex
NFT operations
- NFT minting
- Metadata creation
Orca
DEX and liquidity
- swap
- Whirlpools support
Raydium
AMM and farms
- swap
- Pool interactions
Escrow
Custom escrow program
- create_escrow
- accept_escrow
- release_escrow
- refund_escrow
- dispute_escrow
- resolve_dispute
Solend, Orca, and Raydium adapters now fail closed instead of returning synthetic quotes. This prevents execution if external APIs are unavailable.
Protocol Registry
TheAdapterRegistry manages protocol lifecycle:
Listing Protocols
Protocol Capabilities
Query specific protocol capabilities:Quote/Build Flow
Protocol adapters follow a two-phase pattern:1. Quote Phase (Read-Only)
Generate a quote without executing:2. Build Phase (Transaction Construction)
Convert quote into executable transaction:Protocol-Specific Operations
Jupiter Swaps
Marinade Staking
Solend Lending
Escrow Operations
Protocol Health Checks
Adapters can implement health checks:Checking Health
Protocol Versioning
Adapters use semantic versioning. Check compatibility:- Same major version: Compatible
- Different major version: Incompatible (breaking changes)
Intent Migration
Migrate intents between adapter versions:Migrating Intents
Generic Build Endpoint
Build transactions for any protocol/intent combination:Configuration
Best Practices
Protocol Selection
Protocol Selection
- Use
jupiterfor best swap prices (aggregates multiple DEXes) - Use
marinadefor liquid staking (mSOL receipt tokens) - Check protocol health before execution
- Implement fallback protocols for critical paths
- Monitor adapter version updates
Quote Handling
Quote Handling
- Always fetch fresh quotes (quotes expire quickly)
- Validate slippage before execution
- Check
priceImpactPctfor large trades - Handle quote failures gracefully (fail-closed)
- Don’t cache quotes across requests
Error Handling
Error Handling
- DEX adapters may fail if external APIs are down
- Implement retries for transient failures
- Check
AdapterHealthbefore submission - Validate
programIdsmatch expected values - Monitor adapter error rates
Security
Security
- Validate program IDs returned in
BuildResult - Use protocol allowlists in policies
- Set per-protocol risk rules
- Audit adapter code before production use
- Monitor for unexpected protocol behavior
Source Code Reference
Protocol adapter functionality is implemented in:services/protocol-adapters/src/index.ts- Main service (services/protocol-adapters/src/index.ts:1)services/protocol-adapters/src/registry.ts- Adapter registry (services/protocol-adapters/src/registry.ts:1)services/protocol-adapters/src/adapters/adapter.interface.ts- Interface definitions (services/protocol-adapters/src/adapters/adapter.interface.ts:1)services/protocol-adapters/src/adapters/jupiter.adapter.ts- Jupiter implementation (services/protocol-adapters/src/adapters/jupiter.adapter.ts:1)services/protocol-adapters/src/adapters/escrow.adapter.ts- Escrow implementation (services/protocol-adapters/src/adapters/escrow.adapter.ts:1)