Vault Digests

New
Updated

Vault digests are AI-generated narratives that analyze DeFi vaults — covering performance, allocations, TVL, risks, and APY trends. Each digest is a structured summary you can display directly in your application.

In this guide you'll learn how to:

  • List all available vault digests
  • Retrieve a specific vault's analysis
  • Display digest sections in your app
[@portabletext/react] Unknown block type "callout", specify a component for it in the `components.types` prop

List Available Vaults

Start by fetching the list of vaults that have AI-generated digests.

list-vaults.ts
import { Chaos } from '@chaoslabs/ai-sdk';
 
const chaos = new Chaos({ apiKey: process.env.CHAOS_API_KEY! });
 
const { data: vaults } = await chaos.vaults.list(20);
 
for (const v of vaults) {
  const name = v.vault.vault_name ?? v.vault.vault_address ?? 'Unknown';
  const apy = v.current_apy_pct != null ? `${v.current_apy_pct.toFixed(1)}%` : 'N/A';
  console.log(`${name} — APY: ${apy} (${v.apy_trend ?? 'unknown'})`);
}

Read a Vault Digest

Fetch the full narrative for a specific vault. You can look up by name or on-chain address.

read-digest.ts
const { data: digest } = await chaos.vaults.digest({ vault_name: 'Morpho WETH' });
 
if (!digest) {
  console.log('No digest available for this vault');
} else {
  console.log('=== Opening ===');
  console.log(digest.opening_summary);
 
  console.log('\n=== Performance ===');
  console.log(digest.performance_summary);
 
  console.log('\n=== Allocations ===');
  console.log(digest.allocations_summary);
 
  console.log('\n=== Risks ===');
  console.log(digest.risks_summary);
 
  console.log(`\nOverall: ${digest.overall_assessment}`);
  console.log(`Generated: ${digest.generation_timestamp}`);
}

Display Structured Blocks

Digests include a blocks array with structured data (charts, tables, metrics) that you can render in your UI.

display-blocks.ts
if (digest) {
  for (const block of digest.blocks) {
    console.log(`Block type: ${(block as any).type ?? 'unknown'}`);
    // Render each block based on its type
  }
 
  if (digest.sources?.length) {
    console.log('\nSources:');
    for (const src of digest.sources) {
      console.log(`  - ${src}`);
    }
  }
}
Was this helpful?