Vault Digests
Vault digests are AI-generated narratives that analyze DeFi vaults. Each digest is broken into named sections -- opening summary, performance, allocations, TVL, and risks -- plus structured metadata like APY, trends, and an overall assessment. The blocks array provides renderable structured data for your UI.
list(limit?)
Retrieve a list of available vault digests. Each item is a full VaultDigestNarrative with all sections populated.
Parameters:
| Param | Type | Description |
|---|---|---|
limit | number | Optional. Maximum number of vault digests to return. |
Returns: VaultDigestListResponse
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';
const trend = v.apy_trend ?? 'unknown';
const assessment = v.overall_assessment ?? 'N/A';
console.log(`${name}`);
console.log(` APY: ${apy} (${trend})`);
console.log(` Assessment: ${assessment}`);
console.log(` Generated: ${v.generation_timestamp}\n`);
}digest(params)
Fetch the full AI-generated digest for a specific vault. Look up by vault name or on-chain address. At least one of vault_name or vault_address should be provided.
Parameters:
| Param | Type | Description |
|---|---|---|
vault_name | string | Optional. Human-readable vault name (e.g., 'Morpho Blue WETH'). |
vault_address | string | Optional. On-chain vault contract address. |
Returns: VaultDigestResponse -- the data field is null if no digest is available for the vault.
import { Chaos } from '@chaoslabs/ai-sdk';
const chaos = new Chaos({ apiKey: process.env.CHAOS_API_KEY! });
// Look up by name
const { data: digest } = await chaos.vaults.digest({ vault_name: 'Morpho Blue WETH' });
// Or by address
// const { data: digest } = await chaos.vaults.digest({ vault_address: '0x...' });
if (!digest) {
console.log('No digest available for this vault');
} else {
console.log('=== Opening Summary ===');
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=== TVL ===');
console.log(digest.tvl_summary);
console.log('\n=== Risks ===');
console.log(digest.risks_summary);
console.log(`\nAPY: ${digest.current_apy_pct}% (${digest.apy_trend})`);
console.log(`Assessment: ${digest.overall_assessment}`);
console.log(`Generated: ${digest.generation_timestamp}`);
}Working with Blocks and Sources
Digests include a blocks array containing structured data (charts, tables, metrics) that you can render in your UI. The sources array lists the data sources the AI used to generate the narrative.
import { Chaos } from '@chaoslabs/ai-sdk';
const chaos = new Chaos({ apiKey: process.env.CHAOS_API_KEY! });
const { data: digest } = await chaos.vaults.digest({ vault_name: 'Aave V3 USDC' });
if (digest) {
console.log(`Blocks: ${digest.blocks.length}`);
for (const block of digest.blocks) {
const blockType = (block as Record<string, unknown>).type ?? 'unknown';
console.log(` Block type: ${blockType}`);
}
if (digest.sources?.length) {
console.log('\nSources:');
for (const src of digest.sources) {
console.log(` - ${src}`);
}
}
if (digest.translated_reports) {
const languages = Object.keys(digest.translated_reports);
console.log(`\nTranslations available: ${languages.join(', ')}`);
}
}