Use when a task needs live or historical money data - "convert USD to EUR", "current/past exchange rate", "FX rate on this date / over this range", or "current price of Bitcoin/Ethereum, market cap, 24h change". Frankfurter (ECB reference rates, no key) is the FX default; CoinGecko's free keyless tier covers crypto. Do NOT use for stock quotes or equities - no keyless stock API survives verification, say so instead of guessing; do NOT use for country economic indicators like GDP or inflation series - use government-open-data instead; if the request is a vague "I need live data", route through public-data-api-picker.
---
name: Finance & FX Data
description: Use when a task needs live or historical money data - "convert USD to EUR", "current/past exchange rate", "FX rate on this date / over this range", or "current price of Bitcoin/Ethereum, market cap, 24h change". Frankfurter (ECB reference rates, no key) is the FX default; CoinGecko's free keyless tier covers crypto. Do NOT use for stock quotes or equities - no keyless stock API survives verification, say so instead of guessing; do NOT use for country economic indicators like GDP or inflation series - use government-open-data instead; if the request is a vague "I need live data", route through public-data-api-picker.
---
# Finance & FX Data
Fetch exchange rates and crypto prices with keyless calls. The mistake this prevents: reaching for exchangerate.host, Fixer, or Alpha Vantage from training memory - all key-walled now - or hand-waving a stale rate from training data into a real calculation.
## Ranked APIs
1. **Frankfurter** (api.frankfurter.dev) - DEFAULT for fiat FX. European Central Bank reference rates, ~30 major currencies, history back to 1999, time series, no key, no rate limit worth worrying about.
2. **CoinGecko free tier** (api.coingecko.com) - crypto prices, market caps, 24h change for thousands of coins. No key, but a tight limit: roughly 5-15 calls/min from an anonymous IP. Batch ids into one call; on 429, back off 60s.
## Procedure
1. **Fiat or crypto?** Fiat → Frankfurter. Crypto → CoinGecko. Crypto→fiat conversion is one CoinGecko call (`vs_currencies=eur`), not two hops.
2. **Date the rate.** ECB reference rates update ~16:00 CET on business days; the response's `date` field tells you which day you actually got. Weekend/holiday requests return the previous business day - quote that date, don't present it as today's.
3. **Use CoinGecko ids, not tickers.** The `ids` param wants `bitcoin`, `ethereum`, `solana` - not BTC/ETH. For an unfamiliar coin, resolve once via `/api/v3/search?query={name}` → `coins[0].id`.
4. **Never do FX math from memory.** If the task multiplies money by a rate, the rate comes from one of these calls, with the date attached.
Ask the user only if missing: currency pair or coin (no default), date/range (default: latest), amount (default: 1).
## URL templates + real response shapes
… install to load the full skill