{"name":"Coin Railz — Solana USDC Yield Portal","description":"Automated USDC yield for AI agents on Solana. Deposit USDC into Kamino Finance, earn real APY. 1-API-call transaction building. Optimized for ElizaOS agents.","chain":"solana","protocol":"Kamino Lending","version":"1.0.0","endpoints":{"rates":"https://coinrailz.com/api/solana-yield/rates","stats":"https://coinrailz.com/api/solana-yield/stats","position":"https://coinrailz.com/api/solana-yield/position/{wallet}","deposit_tx":"https://coinrailz.com/api/solana-yield/deposit-tx","withdraw_tx":"https://coinrailz.com/api/solana-yield/withdraw-tx","confirm":"https://coinrailz.com/api/solana-yield/confirm"},"fees":{"deposit":"0.50%","withdrawal":"0.50%","performance":"15% of yield earned"},"limits":{"min_deposit_usdc":5,"token":"USDC","mint":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"},"agent_instructions":{"step0_bridge_if_needed":"ONLY NEEDED if your USDC is on Base/Ethereum: bridge to Solana first via https://app.debridge.finance or https://portalbridge.com (Wormhole). Target mint: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v. Skip if you already hold Solana USDC.","step1_check_rate":"GET /api/solana-yield/rates — confirm current APY before committing capital.","step2_deposit":"POST /api/solana-yield/deposit-tx with {wallet, amount_usdc: 10, idempotency_key: \"<uuid>\"}. Returns array of base64 unsigned transactions and a bundle_expires_at timestamp.","step3_sign_submit":"Submit tx1 first, wait for confirmation, then submit tx2 — both must confirm before bundle_expires_at (~120s). Code: for (const {base64} of response.transactions) { const tx = Transaction.from(Buffer.from(base64,\"base64\")); tx.sign(keypair); const sig = await conn.sendRawTransaction(tx.serialize()); await conn.confirmTransaction(sig,\"confirmed\"); }","step4_confirm":"POST /api/solana-yield/confirm with {wallet, txSignature} after tx2 confirms. The server verifies on-chain before recording the position.","step5_check":"GET /api/solana-yield/position/{wallet} — returns depositedUsdc and currentValueUsdc.","withdraw_partial":"POST /api/solana-yield/withdraw-tx with {wallet, amount_usdc: 5} for $5 USDC.","withdraw_all":"POST /api/solana-yield/withdraw-tx with {wallet, amount: \"MAX\"} to exit fully.","retry_on_partial_fail":"If tx1 (fee) confirmed but tx2 (deposit) failed: do NOT reuse idempotency_key. Call /deposit-tx with a fresh key. Email support@coinrailz.com with the failed tx1 signature for a fee refund."},"signing_code_snippet":["const { Connection, Keypair, Transaction } = require(\"@solana/web3.js\");","const conn = new Connection(process.env.HELIUS_RPC || \"https://api.mainnet-beta.solana.com\");","const keypair = Keypair.fromSecretKey(Uint8Array.from(JSON.parse(process.env.SOLANA_PRIVATE_KEY)));","const { transactions, bundle_expires_at } = await fetch(\"/api/solana-yield/deposit-tx\", {","  method: \"POST\", headers: {\"Content-Type\":\"application/json\"},","  body: JSON.stringify({ wallet: keypair.publicKey.toString(), amount_usdc: 10, idempotency_key: crypto.randomUUID() })","}).then(r => r.json());","for (const { base64 } of transactions) {","  const tx = Transaction.from(Buffer.from(base64, \"base64\"));","  tx.sign(keypair);","  const sig = await conn.sendRawTransaction(tx.serialize(), { skipPreflight: false });","  await conn.confirmTransaction(sig, \"confirmed\");","  // Call /confirm after the LAST transaction","}"],"amount_formats":{"preferred":"amount_usdc: 10  (dollars — e.g. 10 = $10 USDC)","alternative":"amount_raw: 10000000  (raw USDC lamports, 6 decimals)","legacy":"amount: 10  (auto-detected: < 10000 treated as dollars)"},"cross_chain_note":{"supported_chain":"Solana mainnet-beta only","evm_agents":"EVM-native agents (Base, Ethereum) must bridge USDC to Solana before depositing.","recommended_bridge":"deBridge (https://app.debridge.finance) — non-custodial, ~2min, supports Base→Solana USDC","alt_bridge":"Wormhole Portal (https://portalbridge.com) — canonical bridge, ~2min","usdc_mint_solana":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","roadmap":"Native CCTP (Circle cross-chain transfer protocol) support planned for v3 — no manual bridge needed."},"comparison":{"solana_kamino":"Current APY: see /rates (recently ~3-5%; historically up to 12%)","base_aave":"~3.17% APY (Aave v3)","note":"Solana rates fluctuate with utilization. Check /rates before every deposit decision."}}