Skip to content

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.

ProviderEnv varCapabilitiesNotes
CoinGeckoCOINGECKO_API_KEYprice, token-identityPublic tier (no key) works but is rate-limited.
FinnhubFINNHUB_API_KEYprice, token-identityPublic equities.
DeFiLlamanoneprice, token-identityFree. Coin spec is chain:address or coingecko:slug.
FrankfurternonepriceFree FX rates between fiat currencies.
Yahoo FinancenonepriceBackup pricing source for equities.
Google SheetsGOOGLE_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.
ProviderEnv varCapabilitiesNotes
BinanceBINANCE_OAUTH_CLIENT_ID/SECRET/REDIRECT_URIbalance, transactionOAuth flow. Other exchanges use user-pasted API keys.
Krakenuser-supplied API key/secretbalance, transaction, price, token-identityFull breadth.
Bybituserbalance, transaction
OKXuserbalance, transaction
Coinbaseuserbalance, transaction
KuCoinuserbalance, transaction
Gate.iouserbalance, transaction
HTX (Huobi)userbalance, transaction
Bitstampuserbalance, transaction
Bitgetuserbalance, transaction
Geminiuserbalance, transaction
MEXCuserbalance, transaction

User-supplied credentials are AES-256-GCM-encrypted in user_integration_credentials with ENCRYPTION_KEY. They never leave your api.

ProviderEnv varCapabilitiesNotes
Interactive Brokersuser-supplied Flex Web Service tokenbalance, transactionFlex token + query ID configured per user.
Wiseuser-supplied API tokenbalance, transaction
ProviderEnv varCapabilitiesNotes
Etherscan V2ETHERSCAN_API_KEYbalance, transaction, token-identityOne key covers every V2-supported EVM chain (Ethereum, Polygon, Arbitrum, Optimism, Base, BNB, …).
HeliusHELIUS_API_KEYbalance, transaction, token-identitySolana SPL + native.
Bitcoinnonebalance, transactionPublic RPC.
Tronnonebalance, transaction
TONnonebalance, transaction
ENSnoneidentityResolves vitalik.eth → address.
ProviderEnv varCapabilitiesNotes
OpenAIOPENAI_API_KEYAI inferenceDefault vision model: gpt-4o; override with OPENAI_VISION_MODEL.
PerplexityPERPLEXITY_API_KEYAI inferenceToken-identity enrichment helper. Optional.
DeepSeekDEEPSEEK_API_KEYAI inferenceToken-identity enrichment helper. Optional.

Minimum useful set for a self-hoster with a connected crypto exchange:

  • ETHERSCAN_API_KEY if you have an EVM wallet.
  • HELIUS_API_KEY if 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_KEY if 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.

ProviderMaturity
Etherscan V2, Helius, CoinGecko, FrankfurterSolid. Used by every Scani deployment.
KrakenSolid. Most-tested exchange adapter.
Binance, Coinbase, Bybit, OKXSolid for balance + recent transactions. Edge cases on multi-account / sub-account setups.
KuCoin, Gate, HTX, Bitstamp, Gemini, MEXC, BitgetFunctional. Less battle-tested.
IBKR (Flex), WiseFunctional. Flex query setup is the main user friction.
Bitcoin, Tron, TON, ENSFunctional. Public RPCs are slow on big wallets.
OpenAI VisionSolid for screenshots; quality degrades on dark-mode or non-English UIs.
Perplexity, DeepSeekOptional supplements; not required.

See Adding a provider — this is the highest-leverage kind of contribution.