Teardrop
About
Teardrop is the native financial infrastructure layer built specifically for autonomous economic agents. It equips AI agents with Web3 capabilities, secure wallets, real-time market data access, and an audited on-chain billing/payment protocol.
Details
- Author
- teardrop-ai
- Downloads
- 365
Jump to
- Streaming SSE responses with structured UI component trees
- Supports Anthropic, OpenAI, and Google as LLM providers
- Implements AG‑UI, A2A, MCP, and x402 protocols
- Per‑request USDC payments on Base (or prepaid credits)
- Three authentication methods: client credentials, email, SIWE
- Custom per‑org webhook tools and persistent memory
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
TeardropCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Clone the repo, create a Python virtual environment, install dependencies, copy .env.example to .env and set your LLM API key and Postgres connection string, generate RSA keys, run database migrations, seed default users, then start the API server with uvicorn app:app --reload. Alternatively, deploy via Docker Compose or Render.
calculate
Evaluate a safe arithmetic expression. Supports +,-,*,/,**,%,sqrt,abs,round,floor,ceil,log,sin,cos,tan,pi,e.
convert_currency
Convert between fiat currencies (USD, EUR, GBP, etc.) and crypto assets (BTC, ETH, USDC, SOL, etc.). Returns the converted amount and exchange rate.
decode_transaction
Decode a transaction's calldata into a human-readable function name and arguments. Also returns transaction status (1=success, 0=revert), gas used, and block number. Optionally provide an ABI for precise decoding; otherwise uses 4byte.directory. Supports Ethereum mainnet and Base.
delegate_to_agent
Delegate a task to a remote A2A-compliant agent. Discovers the agent's capabilities via its agent card, sends it a message, and returns the result. Use when a task requires specialist capabilities beyond your own tools.
get_datetime
Return the current UTC date and time. Optional strftime format parameter.
get_block
Get details for an Ethereum or Base block by number, hash, or 'latest'.
get_chain_metrics
Compare blockchain ecosystem health using DeFiLlama current TVL, 7-day and 30-day TVL changes, and aggregate fee activity. Pass chains such as ['Ethereum', 'Arbitrum', 'Solana'] for a focused comparison, or omit chains to inspect the highest-TVL ecosystems. Historical and fee fields fail open when DeFiLlama does not cover a chain.
get_dex_quote
Get the best Uniswap v3 swap quote on Ethereum (chain_id=1) or Base (chain_id=8453) via direct on-chain QuoterV2 calls. Queries all four fee tiers (100/500/3000/10000 bps) in parallel and returns the tier with the highest output amount, along with per-tier breakdown. Inputs are raw uint256 amounts and EIP-55 checksummed addresses; native ETH is not quoted directly — pass the WETH address. Returns no_liquidity=true when no pool exists for the pair. Point-in-time quote at the returned block_number; do not cache.
get_dex_volume
Compare decentralized exchange activity from DeFiLlama. Returns 24-hour, 7-day, and 30-day volume, period-over-period changes, and each protocol's share of reported global 24-hour DEX volume. Filter by protocol names or DeFiLlama slugs and rank by a 1-, 7-, or 30-day lookback window.
get_defi_positions
Aggregate DeFi positions for a wallet across Aave v3, Compound v3, Uniswap v3 LP, and canonical Ethereum (chain_id=1) or Base (chain_id=8453). Returns Aave aggregate account health (collateral, debt, health factor, LTV) with per-reserve breakdown for major assets, Compound v3 Comet market positions (supply, borrow, per-asset collateral, liquidation flag), and Uniswap v3 LP positions by token ID (token pair, fee tier, tick range, liquidity, uncollected fees). On Ethereum, also returns canonical Lido stETH/wstETH balances and the current wstETH-to-stETH equivalent. Per-protocol failures are isolated — other protocols still return.
get_gas_price
Get current EIP-1559 gas fees on Ethereum or Base. Returns base fee, priority fee, and next-block base fee estimate (useful for timing transactions). gas_used_ratio indicates network congestion (>0.5 = busy, >0.9 = very congested). Optional USD estimates include ETH spot price and rough transfer/swap costs. Results cached 10 seconds per chain.
get_lending_rates
Get current on-chain lending supply/borrow rates for expanded Aave v3 reserves and Compound v3 markets on Ethereum or Base. Returns per-asset APY snapshots and Compound utilization where available. Useful for protocol-specific stablecoin yield comparisons (e.g., USDC on Aave vs Compound).
get_liquidation_risk
Assess DeFi liquidation risk for up to 50 wallets across expanded Aave v3 and Compound v3 coverage on Ethereum (chain_id=1) or Base (chain_id=8453). Returns per-wallet health factor and tiered risk classification (liquidatable, critical, warning, caution, healthy, no_debt) plus an overall_tier aggregate across protocols, and a summary count for alert dashboards. Per-protocol failures are isolated — a Compound RPC error does not blank the Aave result (and vice versa). View-only (eth_call) against hardcoded protocol addresses; duplicate wallet addresses are silently removed.
get_token_approvals
Audit ERC-20 token allowances for a wallet address. By default, returns all non-zero approvals for assets in the shared tracked-asset registry across curated DeFi protocol spenders (Uniswap, Aave, Compound, 1inch, 0x, OpenSea). Flags unlimited approvals with risk levels: high=unknown spender, medium=trusted protocol, low=bounded amount. Use before swaps to verify approval state, or after security incidents to detect active exploit vectors. Ethereum mainnet and Base only.
get_wallet_approvals
Inspect a wallet's current ERC-20 token authorization exposure on one DeBank-supported chain. Returns discovered spenders, USD exposure, protocol attribution, and hacked or abandoned protocol flags. This is broader than the curated block-accurate get_token_approvals tool.
get_token_price
Get current price, 24h change, market cap, fully-diluted valuation, and volume for one or more crypto tokens. Accepts ticker symbols (BTC, ETH, LQTY), full token names (Bitcoin, Liquity, Chainlink), or CoinGecko IDs. Unknown symbols are resolved automatically against the full CoinGecko coin list. Supports batch queries up to 50 tokens. Bare 0x contract addresses are not resolvable by CoinGecko and should be treated as unknown. If get_wallet_portfolio already returned price_usd/value_usd for a held token, reuse that value instead of calling get_token_price again.
get_protocol_tvl
Get Total Value Locked (TVL) data for a DeFi protocol from DeFiLlama. Returns current TVL in USD, 7-day and 30-day percentage change, and a per-chain breakdown. Set include_historical=True to also retrieve a daily TVL series for trend analysis. When DeFiLlama reports them, also returns current fees and revenue in USD with 7-day and 30-day percentage change. You can also batch multiple protocols via protocols=[...]. Supports 3,000+ protocols including Aave, Uniswap, Curve, Compound, Lido, MakerDAO, and more. Batch responses retain one compact economic summary per requested protocol; single-protocol calls include chain and historical detail. A revenue_error_type identifies an upstream revenue lookup failure. Use the DeFiLlama slug format: 'aave-v3', 'uniswap-v3', 'curve-dex'. Common aliases such as 'spark-protocol' and 'compound' are auto-corrected.
get_token_price_historical
Get historical price data for crypto tokens over a specified time window (1–365 days). Returns period statistics (start, end, % change, high, low) plus a downsampled daily price series, plus high_30d (raw observation maximum), std_30d (population standard deviation of daily returns as a decimal), and dca_baseline_90d (weekly samples over the preceding 90 UTC days, excluding the latest observation). dca_baseline_90d_partial identifies incomplete history. Use for period comparisons (month-over-month, YTD), trend analysis, and price charts. Prefer over web_search for time-comparative financial queries. Pass stats_only=true when the daily series is unnecessary. These metrics are pre-computed and should not be re-derived with calculate.
get_yield_rates
Get DeFi yield pool rates from DeFiLlama, covering 1,000+ protocols across all chains. Returns pools sorted by APY with TVL, base rate, reward APY, and 7d/30d mean APY context. Filter by protocol (e.g. 'aave-v3', 'compound-v3'), chain (e.g. 'Ethereum', 'Base'), minimum TVL, and minimum APY. Use this to answer questions like 'Where can I get the best USDC yield?', 'What is Aave's current APY on Ethereum?', or 'Compare Aave vs Compound yields'. Returns up to 50 pools. Call once per query unless a genuinely disjoint filter is required. The returned `symbol` field contains the underlying tokens (e.g. 'USDC', 'ETH-USDC', 'WBTC'); filter on the client side by inspecting `symbol` rather than re-calling with different arguments. Use `min_apy`, `max_apy`, `min_tvl_usd`, and `symbols_any` to prune noise in a single call. `symbols_any` matches whole symbol tokens (e.g. 'USDC' matches 'USDC' and 'ETH-USDC' but not 'TULIPAUSDC') and returns the highest-ranked pools for EACH requested symbol, so one call gives a complete per-symbol comparison; symbols with no matching pool are named in `note`. Set `max_apy` (e.g. 30) to exclude leveraged/boosted pools so genuine yields surface. Set stable_only=true when you need consistent stablecoin yield screening; this ranks by 30d mean APY first and still returns spot/base/reward components.
web_search
Real-time web search via Tavily. Use for current events, fact-checking, and research. Set search_depth='advanced' for complex research queries (higher quality, higher cost). Set topic='news' for recent headlines or 'finance' for market information.
count_text_stats
Return word count, character count, sentence count, and paragraph statistics for a given text.
http_fetch
Fetch a web page and extract its main text content. Useful for reading articles, documentation, and web resources. Returns cleaned text, not raw HTML.
get_eth_balance
Get the native ETH balance of an Ethereum or Base address. NOTE: get_wallet_portfolio already includes the native ETH balance in its holdings list — only call get_eth_balance when you need a standalone ETH balance without a full portfolio scan.
get_erc20_balance
Get the ERC-20 token balance of a wallet, including symbol and decimals.
get_transaction
Get details and receipt for an Ethereum or Base transaction by hash. Includes bounded calldata, normalized event logs, transaction index, and receipt-derived effective gas price and fee when available.
get_wallet_portfolio
Get aggregated token holdings with USD values for a wallet address. Tracks 19 major assets on Ethereum and 12 on Base, including spot, lending, liquid-staking, restaking, and stablecoin assets. Sorted by USD value. Returns up to 20 holdings. Includes native ETH balance in the holdings list — calling get_eth_balance separately after this is redundant.
get_wallet_history
Get one page of decoded transaction history for an EVM wallet across DeBank-supported chains. Returns send, receive, and approval categories with protocol, token, exchange, gas, and USD metadata. Use the returned next_cursor as start_time to page backward.
get_wallet_positions
Get a wallet's DeFi positions across all DeBank-supported chains and protocols. Returns protocol-level positions, asset/debt/net USD values, token lists, and optional all-chain net worth. Set include_token_balances=true to also return DeBank's complete cross-chain wallet token list. This covers substantially more protocols and chains than the block-accurate get_defi_positions tool. Use raw-RPC tools for liquidation, swap quotes, or other transaction-critical questions.
read_contract
Call any view/pure function on a smart contract and return the result. Provide the ABI fragment (JSON array) and function name. State-changing functions (payable/nonpayable) are rejected for safety. Supports historical queries via block_identifier (block number or 'latest') and optional caller_address context for msg.sender-dependent views. Calls use Teardrop's bounded RPC timeout and rate-limit retry policy.
record_predictions
Record a complete structured prediction document for downstream evaluation. Call once with the exact machine-readable prediction; provide the human-readable report separately.
resolve_ens
Resolve an ENS name (e.g. 'vitalik.eth') to an Ethereum address, or pass an Ethereum address for reverse lookup to its primary ENS name. Also returns the avatar text record when available. Mainnet only.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"teardrop": {
"teardrop": {
"url": "https://teardrop.onrender.com/tools/mcp"
}
}
}
}
McpServers
{
"teardrop": {
"url": "https://teardrop.onrender.com/tools/mcp"
}
}
teardrop
Intelligence beyond the browser Teardrop is a streaming AI agent API. You send it a message; it reasons using your configured LLM (Anthropic, OpenAI, or Google), optionally calls tools, builds a structured UI component tree, and streams everything back as Server-Sent Events. It implements four open protocols simultaneously: AG-UI (streaming events), A2A (agent discoverability), MCP (tool serving), and x402 (per-request payments in USDC on Base, no subscription required). ---Requirements
- Python 3.11+ - An API key for your chosen LLM provider: Anthropic, OpenAI, or Google AI - A Postgres database (local via Docker, or Neon for production) ---Setup (PowerShell)
1. Clone and enter the project ``powershell
git clone https://github.com/teardrop-ai/teardrop.git
cd teardrop
`
2. Create and activate a virtual environment
`powershell
python -m venv venv
.\venv\Scripts\Activate.ps1
`
> If you get a script execution error, run first:
> `powershell
> Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
> `
3. Install dependencies
`powershell
pip install -r requirements.txt
`
4. Configure environment
`powershell
Copy-Item .env.example .env
`
Minimum required contents:
``Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.


