Protocol TVL & Fundamentals
Protocol due diligence for agents interacting with DeFi. Look up any protocol by name or slug fragment ('aave', 'uniswap', 'morpho') and get the fundamentals that size counterparty risk: current TVL in USD, 1-day and 7-day TVL change (a sudden drain is the loudest on-chain alarm), category (Lending, DEX, Bridge...), the chains it is deployed on and its website. Or screen: filter the whole tracked universe by category and/or chain, ranked by TVL — 'top lending protocols on Base' is one call. Protocols under $10k TVL are excluded to keep answers meaningful. Data is DefiLlama's open protocols API, cached server-side and refreshed every 15 minutes. Pairs with defi-yields (which pool) and token-risk (is the protocol's token safe).
Call with x402
1. Send the request. 2. Receive 402 with accepts[]. 3. Sign the payment and retry with the X-PAYMENT header.
curl -X POST https://agentbit.app/v1/defi/protocol \
-H 'Content-Type: application/json' \
-d '{"category":"lending","chain":"base","limit":5}'
Input schema
{
"type": "object",
"properties": {
"protocol": {
"type": "string",
"description": "Protocol name or slug fragment, e.g. aave"
},
"category": {
"type": "string",
"description": "Filter by category, e.g. lending, dexes, bridge"
},
"chain": {
"type": "string",
"description": "Filter to protocols deployed on this chain, e.g. base"
},
"limit": {
"type": "integer",
"description": "Max results (1-50, default 10)"
}
}
}Output schema
{
"type": "object",
"properties": {
"result_count": {
"type": "integer"
},
"protocols": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"category": {
"type": [
"string",
"null"
]
},
"tvl_usd": {
"type": "number"
},
"change_1d_percent": {
"type": [
"number",
"null"
]
},
"change_7d_percent": {
"type": [
"number",
"null"
]
},
"chains": {
"type": "array",
"items": {
"type": "string"
}
},
"url": {
"type": [
"string",
"null"
]
}
}
}
},
"universe_size": {
"type": "integer"
}
}
}Code examples
// JavaScript (x402-fetch)
import { wrapFetchWithPayment } from "x402-fetch";
const fetchWithPay = wrapFetchWithPayment(fetch, wallet);
const r = await fetchWithPay("https://agentbit.app/v1/defi/protocol", {
method: "POST",
headers: {"Content-Type": "application/json"},
body: JSON.stringify({"category":"lending","chain":"base","limit":5})
});
console.log(await r.json());
# Python (x402 client)
from x402.clients.requests import x402_requests
s = x402_requests(account)
r = s.post("https://agentbit.app/v1/defi/protocol",
json={"category":"lending","chain":"base","limit":5})
print(r.json())
// PHP
$r = Http::withHeaders(['X-PAYMENT' => $signedPayment])
->post('https://agentbit.app/v1/defi/protocol',
array (
'category' => 'lending',
'chain' => 'base',
'limit' => 5,
));
$data = $r->json();