Provider matrix
Each provider lives in packages/clients/providers/src/providers/
and implements one or more capability interfaces.
Without the relevant env var, the capability is disabled and the
tRPC call returns PRECONDITION_FAILED.
Pricing
Section titled “Pricing”| Provider | Env var | Capabilities | Notes |
|---|---|---|---|
| CoinGecko | COINGECKO_API_KEY | price, token-identity | Public tier (no key) works but is rate-limited. |
| Finnhub | FINNHUB_API_KEY | price, token-identity | Public equities. |
| DeFiLlama | none | price, token-identity | Free. Coin spec is chain:address or coingecko:slug. |
| Frankfurter | none | price | Free FX rates between fiat currencies. |
| Yahoo Finance | none | price | Backup pricing source for equities. |
| Google Sheets | GOOGLE_SHEETS_ID + GOOGLE_SERVICE_ACCOUNT_KEY (base64 JSON) | price (current only) | Per-user manual-asset prices read from a sheet. Lives in its own workspace (packages/clients/providers-google-sheets). Historical falls through to Frankfurter. |
Exchanges
Section titled “Exchanges”| Provider | Env var | Capabilities | Notes |
|---|---|---|---|
| Binance | BINANCE_OAUTH_CLIENT_ID/SECRET/REDIRECT_URI | balance, transaction | OAuth flow. Other exchanges use user-pasted API keys. |
| Kraken | user-supplied API key/secret | balance, transaction, price, token-identity | Full breadth. |
| Bybit | user | balance, transaction | |
| OKX | user | balance, transaction | |
| Coinbase | user | balance, transaction | |
| KuCoin | user | balance, transaction | |
| Gate.io | user | balance, transaction | |
| HTX (Huobi) | user | balance, transaction | |
| Bitstamp | user | balance, transaction | |
| Bitget | user | balance, transaction | |
| Gemini | user | balance, transaction | |
| MEXC | user | balance, transaction |
User-supplied credentials are AES-256-GCM-encrypted in
user_integration_credentials with ENCRYPTION_KEY. They never
leave your api.
Brokerages & banks
Section titled “Brokerages & banks”| Provider | Env var | Capabilities | Notes |
|---|---|---|---|
| Interactive Brokers | user-supplied Flex Web Service token | balance, transaction | Flex token + query ID configured per user. |
| Wise | user-supplied API token | balance, transaction |
Blockchains
Section titled “Blockchains”| Provider | Env var | Capabilities | Notes |
|---|---|---|---|
| Etherscan V2 | ETHERSCAN_API_KEY | balance, transaction, token-identity | One key covers every V2-supported EVM chain (Ethereum, Polygon, Arbitrum, Optimism, Base, BNB, …). |
| Helius | HELIUS_API_KEY | balance, transaction, token-identity | Solana SPL + native. |
| Bitcoin | none | balance, transaction | Public RPC. |
| Tron | none | balance, transaction | |
| TON | none | balance, transaction | |
| ENS | none | identity | Resolves vitalik.eth → address. |
AI / parsing
Section titled “AI / parsing”| Provider | Env var | Capabilities | Notes |
|---|---|---|---|
| OpenAI | OPENAI_API_KEY | AI inference | Default vision model: gpt-4o; override with OPENAI_VISION_MODEL. |
| Perplexity | PERPLEXITY_API_KEY | AI inference | Token-identity enrichment helper. Optional. |
| DeepSeek | DEEPSEEK_API_KEY | AI inference | Token-identity enrichment helper. Optional. |
Picking what to enable
Section titled “Picking what to enable”Minimum useful set for a self-hoster with a connected crypto exchange:
ETHERSCAN_API_KEYif you have an EVM wallet.HELIUS_API_KEYif you have a Solana wallet.- Either
COINGECKO_API_KEY(paid tier) or rely on the free CoinGecko fallback if your portfolio is small. OPENAI_API_KEYif you want screenshot import.
Public-equity support adds FINNHUB_API_KEY.
Brokerages and banks don’t need an operator-side env var — they work with per-user credentials only.
Maturity
Section titled “Maturity”| Provider | Maturity |
|---|---|
| Etherscan V2, Helius, CoinGecko, Frankfurter | Solid. Used by every Scani deployment. |
| Kraken | Solid. Most-tested exchange adapter. |
| Binance, Coinbase, Bybit, OKX | Solid for balance + recent transactions. Edge cases on multi-account / sub-account setups. |
| KuCoin, Gate, HTX, Bitstamp, Gemini, MEXC, Bitget | Functional. Less battle-tested. |
| IBKR (Flex), Wise | Functional. Flex query setup is the main user friction. |
| Bitcoin, Tron, TON, ENS | Functional. Public RPCs are slow on big wallets. |
| OpenAI Vision | Solid for screenshots; quality degrades on dark-mode or non-English UIs. |
| Perplexity, DeepSeek | Optional supplements; not required. |
Adding a provider
Section titled “Adding a provider”See Adding a provider — this is the highest-leverage kind of contribution.