Stablecoin Single-Asset DeFi Earn Pools by Chain and Protocol (No Impermanent Loss Risk, TVL of 1M USD or More, First 100)
omnial/stablecoin-single-asset-earn-pools
For one chain and one DeFi protocol, returns up to 100 earn pools that hold only stablecoins, have single-asset exposure, no impermanent loss risk and TVL of at least 1M USD. Each pool has its id, pool, underlying and reward tokens, link, current, 7-day and 30-day APY (base, reward, total), any intrinsic yield, 30-day APY stability ratios, TVL and available supply in USD, and holder count, average position and top-10 share; plus the match count.
Price
Up to $0.001 per call; you pay what the call used
The price shown is the price you pay. No monthly minimum. Top-ups start at $5.
Data source
DefiLlama
Data from DefiLlama.
Use it
Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "omnial/stablecoin-single-asset-earn-pools" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "omnial/stablecoin-single-asset-earn-pools" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/stablecoin-single-asset-earn-pools", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/stablecoin-single-asset-earn-pools", input: { /* ... */ } })
// 5. settle: the call is charged when it finishes, nothing to doNot connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.
Pricing
Every charge this tool can incur.
| Charge | Price |
|---|---|
Per call | $0.001 |
- Updated
- Oct 14, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"chain",
"protocol"
],
"properties": {
"page": {
"enum": [
1
],
"type": "integer",
"default": 1,
"description": "Fixed: the first page only."
},
"chain": {
"type": "string",
"minLength": 1,
"description": "The chain's lowercase slug. One chain per call."
},
"limit": {
"enum": [
100
],
"type": "integer",
"default": 100,
"description": "Fixed: up to 100 pools."
},
"min_tvl": {
"enum": [
1000000
],
"type": "number",
"default": 1000000,
"description": "Fixed: only pools with TVL of at least 1M USD."
},
"protocol": {
"type": "string",
"minLength": 1,
"description": "The protocol's lowercase slug, including its version suffix where it has one. One protocol per call."
},
"stablecoin": {
"enum": [
true
],
"type": "boolean",
"default": true,
"description": "Fixed: only pools whose assets are all stablecoins."
},
"impermanent_loss_risk": {
"enum": [
false
],
"type": "boolean",
"default": false,
"description": "Fixed: only pools with no impermanent loss risk."
},
"single_asset_exposure": {
"enum": [
true
],
"type": "boolean",
"default": true,
"description": "Fixed: only pools exposed to a single asset."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The pool's id (a UUID)."
},
"apy": {
"type": "object",
"description": "APY in percent for `current`, `avg_7d` and `avg_30d`, each split into `base`, `reward` and `total`; `base` and `reward` may be null (two pools had null base and a total of 0)."
},
"url": {
"type": "string",
"description": "Link to the pool on the protocol's app."
},
"chain": {
"type": "string",
"description": "The chain's display name."
},
"holders": {
"type": "object",
"properties": {
"count": {
"type": "number",
"description": "Number of holders."
},
"avg_position_usd": {
"type": "number",
"description": "Average position, in USD."
},
"top_10_share_pct": {
"type": "number",
"description": "Share of the pool held by the top 10 holders, in percent."
}
}
},
"tvl_usd": {
"type": "number",
"description": "Total value locked, in USD."
},
"pool_key": {
"type": "string",
"description": "The pool token address and chain."
},
"protocol": {
"type": "string",
"description": "The protocol's display name."
},
"intrinsic": {
"type": "object",
"description": "Present on pools that pass through another pool's yield: that source pool's base APY (`apy.current`, `apy.avg_7d`, `apy.avg_30d`) and its `source_pool` (`id`, `pool_token` address and `symbol`)."
},
"attributes": {
"type": "object",
"description": "`stablecoin_only`, `single_asset_exposure` and `impermanent_loss_risk`, matching the fixed filters."
},
"pool_token": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"symbol": {
"type": "string"
},
"address": {
"type": "string",
"description": "The pool token's contract address."
}
}
},
"reward_tokens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"symbol": {
"type": "string"
},
"address": {
"type": "string",
"description": "The token's contract address."
},
"decimals": {
"type": "number"
}
}
},
"description": "Reward tokens; empty for most pools in testing."
},
"stability_30d": {
"type": "object",
"description": "30-day APY stability ratios (`base`, `base_reward`, `base_intrinsic`, `base_reward_intrinsic`), between 0 and 1 in testing; may be null."
},
"underlying_tokens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"symbol": {
"type": "string"
},
"address": {
"type": "string",
"description": "The token's contract address."
},
"decimals": {
"type": "number"
}
}
}
},
"available_supply_usd": {
"type": [
"number",
"null"
],
"description": "Available supply in USD; may be null."
},
"reference_asset_symbol": {
"type": "string",
"description": "The symbol of the asset the pool is measured in."
}
}
},
"description": "One row per pool, largest TVL first in testing."
},
"pagination": {
"type": "object",
"properties": {
"page": {
"type": "number"
},
"limit": {
"type": "number"
},
"total": {
"type": "number",
"description": "How many pools match."
}
}
}
},
"description": "Matching pools."
}