SKILL.md
Currency Rates Skill
Currency conversion is a daily agent chore with a clean keyless answer: Frankfurter serves European Central Bank reference rates (current and historical) over bare HTTPS, and open.er-api.com covers the long tail of currencies Frankfurter doesn't track. This skill knows both, always quotes the rate and its date, and never confuses a reference rate with the rate any bank will actually give.
What This Skill Produces
- The conversion — the amount, converted, stated first
- The rate and its date — reference rates update on banking days; the date is part of the answer
- The command — exact curl, rerunnable and scriptable
- The caveat — reference rates ≠ what a card, bank, or exchange desk will charge; the spread is real
Required Inputs
Ask for these if not provided:
- From, to, and amount — ISO codes resolved from natural language ("dollars" → USD unless context says AUD/CAD/SGD — ask when genuinely ambiguous)
- When — today (default) or a historical date (Frankfurter serves history back to 1999)
- The purpose, if it matters — budgeting tolerance vs. invoice-precision changes how hard to caveat the spread
Framework: The Two Sources
- Frankfurter — primary (ECB reference rates): latest:
curl -s "https://api.frankfurter.dev/v1/latest?base=USD&symbols=EUR,INR"· convert directly:...?amount=500&base=USD&symbols=EUR· historical:https://api.frankfurter.dev/v1/2024-03-15?base=USD&symbols=EUR· a date range for trends:.../v1/2026-01-01..2026-07-01?base=USD&symbols=EUR. ~30 major currencies, updated ~16:00 CET on ECB working days. - open.er-api.com — fallback and long tail:
curl -s "https://open.er-api.com/v6/latest/USD"→ 160+ currencies in one response. Use when Frankfurter lacks the currency (many African, Asian, Latin American currencies) or is down. Quote itstime_last_update_utcfield. - Date honesty: both responses carry the rate's date — quote it verbatim. A Saturday question gets Friday's rate, and the answer says so.
