{"uid":"cap_YV-fgK6sw-gEfcyaCjxfk","slug":"x402-ottoai-services-bf22ca0e","name":"Otto AI Multi-Chain Portfolio Snapshot","description":"Multi-chain portfolio snapshot with token balances and yield positions for a user's Otto AI Safe accounts across Base, Ethereum, Arbitrum, Polygon, BSC, Avalanche, and Solana.","url":"https://x402.ottoai.services/portfolio","method":"GET","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method"],"properties":{"type":{"type":"string","const":"http"},"method":{"enum":["GET"],"type":"string"},"queryParams":{"type":"object","required":["userId"],"properties":{"userId":{"type":"string","description":"EVM wallet address (0x...)"}}}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object","properties":{"status":{"type":"string"},"portfolio":{"type":"object"}}}}}}},"responseSchema":null,"example":{"request":{"input":{"type":"http","method":"GET","queryParams":{"userId":"0x742d35Cc6634C0532925a3b844Bc9e7595f42bE4"}}},"response":{"status":"success","portfolio":{"userId":"0x742d35Cc6634C0532925a3b844Bc9e7595f42bE4","success":true,"summary":{"idleCashUSD":0,"totalValueUSD":0,"yieldTotalValueUSD":0},"safeAddresses":[],"butler_recommendations":{"note":"This portfolio shows on-chain wallet balances and yield protocol positions (Aave V3 on all chains, Morpho on Ethereum/Base/Arbitrum/Polygon).","available_actions":["Use earn_yield to deposit idle tokens into yield protocols (Aave V3 or Morpho)","Use earn_yield with action: \"withdraw\" to redeem yield positions back to underlying tokens","Use swap_tokens to exchange tokens","Use bridge to move funds across chains","Use getHyperliquidAccount to view perpetual trading positions","Use getYieldMarkets to see all available yield opportunities across Aave and Morpho"],"hyperliquid_positions":"For Hyperliquid perpetual futures positions, use getHyperliquidAccount resource separately.","critical_yield_warning":["NEVER use withdraw job for yield positions - vault tokens (aUSDC, COUSDC) will be REJECTED","ALWAYS use earn_yield with action: \"withdraw\" to redeem yield positions","Yield positions shown in yieldPositions are NOT withdrawable as regular tokens"]}},"powered_by":"[Powered by $OTTO AI | @useOttoAI]"}},"exampleRequest":{"userId":"0x742d35Cc6634C0532925a3b844Bc9e7595f42bE4"},"tags":["x402"],"displayCostAmount":"0.001","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"settled","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.001/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.001","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.001","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_UD6nbr5FRtb0X3nRKIls0","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.001","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Retrieves token balances, yield positions, and total portfolio value across 7 chains for a given Otto AI Safe wallet address","exampleAgentPrompt":"Pull up my Otto AI Safe portfolio for wallet 0x742d35Cc6634C0532925a3b844Bc9e7595f42bE4 — I want to see my total value, idle cash, and any Aave or Morpho yield positions across all chains.","exampleUseCases":null,"resultDescription":"Returns a portfolio object containing total USD value, idle cash USD, yield position total USD, a list of Safe addresses, per-chain token balances, Aave V3 and Morpho yield positions, and butler recommendations for available DeFi actions like earning yield, swapping, or bridging.","failureModes":["Missing or invalid userId (non-0x address format) returns a validation error","Wallet address with no associated Otto AI Safe returns empty safeAddresses array and zero balances","Chain RPC timeouts may result in partial data for some chains","Invalid or malformed EVM address returns an error response","Rate limiting or payment failure returns a 402 Payment Required"],"whenToPreferThis":"Use this endpoint when you need a unified multi-chain DeFi portfolio view specifically for Otto AI Safe accounts, including both spot token balances and yield protocol positions (Aave V3, Morpho) in a single call. Prefer this over generic balance APIs when the user has an Otto AI Safe and wants actionable DeFi recommendations alongside their balances.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-14T18:51:26.933Z","isFirstParty":false}