Contract
{
"type": "object",
"required": [
"address"
],
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Results per page. Example: 20. Defaults to 20."
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Pagination offset. Example: 0. Defaults to 0."
},
"address": {
"type": "string",
"minLength": 1,
"description": "Wallet address — must be a raw 0x-prefixed hex address, not an ENS name. Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045."
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"chain": {
"type": "string",
"description": "Lowercase chain slug the position lives on, e.g. 'ethereum', 'base', 'polygon'."
},
"positions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The position's own type label, e.g. 'Liquidity Pool', 'Yield', 'Lending', 'Staked', 'Deposit', 'Rewards' -- not a person's name. A single protocol can repeat the same label many times (observed: 25 separate 'Deposit' entries under one Sablier protocol entry, one per open stream)."
},
"balance_usd": {
"type": "number"
},
"reward_tokens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"chain": {
"type": "string"
},
"price": {
"type": "number"
},
"amount": {
"type": "number"
},
"symbol": {
"type": "string"
},
"token_address": {
"type": "string"
}
},
"additionalProperties": true
},
"description": "Tokens this position is accruing as rewards. OMITTED entirely on positions that pay no rewards -- observed present on liquidity-pool/farming positions (iZUMi, Uniswap V3, SushiSwap V3) and also on at least one lending position (the Aave V2 lending position carries an AAVE reward token) but absent on plain yield/deposit positions (Yearn V3 yield, every Sablier deposit) -- treat its absence as 'no rewards for this position', not as missing data."
},
"supply_tokens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The token's own name, e.g. 'Wrapped Ether'."
},
"chain": {
"type": "string"
},
"price": {
"type": "number",
"description": "USD price per unit; observed as 0 for illiquid/unpriced tokens."
},
"amount": {
"type": "number"
},
"symbol": {
"type": "string"
},
"token_address": {
"type": "string",
"description": "The token's onchain contract address (not a personal or wallet address). Usually a 0x-prefixed hex address, but observed as a bare chain slug ('eth', 'base', 'op') for a chain's native gas token, which has no contract address of its own."
}
},
"additionalProperties": true
},
"description": "Tokens supplied into this position."
}
},
"additionalProperties": true
},
"description": "One entry per distinct position held in this protocol."
},
"total_usd": {
"type": "number",
"description": "Sum of every position's balance_usd for this protocol."
},
"protocol_name": {
"type": "string",
"description": "The DeFi protocol's own name, e.g. 'Uniswap V3', 'Aave V2', 'Sablier'."
}
},
"additionalProperties": true
},
"description": "One entry per DeFi protocol the wallet holds a position in, on this page."
},
"meta": {
"type": "object",
"properties": {
"limit": {
"type": "integer"
},
"total": {
"type": "integer",
"description": "Total protocol entries across every page, not just this one."
},
"cached": {
"type": "boolean"
},
"offset": {
"type": "integer"
}
},
"description": "Pagination metadata for this call.",
"additionalProperties": true
}
},
"description": "The wallet's DeFi protocol positions, one entry per protocol the address touches.",
"additionalProperties": true
}Pricing
Every real charge, itemised. A model that quietly omits one is a slow financial leak, so nothing here is rolled up, and a charge that only applies to some inputs says so rather than being added in.
Prices in this catalog are the provider's own list price, not your bill: Omnial MCP charges provider cost plus a platform markup on top, so what you are charged is higher than the figure shown. For the exact amount a specific call will cost, run omnial_execute with dry_run: true; that number includes the markup and is what we hold while the call runs. It is a quote, not a cap on the charge.
| Charge | Rate |
|---|---|
Per call Flat, regardless of what comes back | $0.01638 |
- Cost basis
- Not recorded
This tool's catalog entry does not record how its final bill is determined, so we will not tell you whether its cost is fixed before the call or reported by the provider afterwards. Either way what is held is a quote rather than a cap: you are charged what the call actually costs, bounded at 2x the quote.
- Updated
- Sep 23, 2026
