---
title: "An OpenClaw Skill for Exchange Rates: Stop Your Agent Guessing the USD/EUR Rate"
description: "We published an AllRatesToday skill on ClawHub. One install teaches an OpenClaw agent to fetch the ECB daily table, the official tables of 127 central banks and tax authorities, and live rates with a key, and to quote the publication date every time."
canonical: https://allratestoday.com/blog/openclaw-exchange-rates-skill/
source: AllRatesToday (https://allratestoday.com/) — Markdown mirror of the page above; index of all pages at https://allratestoday.com/llms.txt
generated: 2026-10-29T21:58:35.846Z
---

Ask an agent built on [OpenClaw](https://github.com/openclaw/openclaw) what 2,400 dollars is in euros and, without a tool, it will answer from training data. The number will look right and be months old. We have published a skill on [ClawHub](https://clawhub.ai/cahthuranag/skills/allratestoday) that fixes that with one install:

```
openclaw skills install allratestoday
```

Full details and the FAQ live on the [OpenClaw skill page](https://allratestoday.com/openclaw/). This post is about what the skill actually makes the agent do, and why we wrote it the way we did.

## What an OpenClaw skill is

OpenClaw is an open-source agent framework that runs on your own machine and acts through tools such as `web_fetch` and the shell. A skill is a `SKILL.md` file: a description that tells the agent when to load it, and a body with the procedure to follow. Skills are published to the ClawHub registry, scanned for safety, and installed per agent or globally. There is no server to run, which is the main difference from our [MCP server](https://allratestoday.com/mcp/).

## Rule zero: never state a rate from memory

The first line of the skill body is the rule everything else depends on. A rate the model remembers is stale by definition, and in a checkout, an invoice line or a customs declaration that is a financial bug, not a rounding error. The skill tells the agent to fetch the rate and to quote the date that came back with it. If the fetch fails, the agent says the rate is unknown rather than filling in a plausible constant.

## Two kinds of rate, one decision

Most currency mistakes we see in agent output come from using a market rate where a rule names a publisher. The skill makes the agent decide first:

| The request | What the agent fetches | Key |
| --- | --- | --- |
| Convert an amount, show a price in another currency | `/api/open/latest/{BASE}`, the ECB daily table re-based to any currency | none |
| Invoice, VAT, customs, audit, “the ECB rate”, “the HMRC rate” | `/api/open/central-bank/{code}`, the named institution's own table | none, non-commercial |
| Live mid-market, 160+ currencies, several targets | `/api/v1/rates` | free key |
| A past date or a history series | paid-plan endpoints | paid key |

`The ECB table and an institution's table routinely differ by a percent or more. An auditor will ask which publisher a figure came from, so the skill has the agent name it: “ECB reference table, 2026-10-29” or “SAMA official reference rate, 2026-10-29”. Reading a central bank table without getting the direction wrong This is where we spent most of the effort, because it is where agents fail quietly. Institutions publish in both directions. Saudi Arabia's SAMA and the Bank of Korea quote home currency per foreign unit; the Reserve Bank of New Zealand and the Bank of England quote foreign units per home unit. Our API returns every row as 1 base = value quote with the base and quote spelled out, and the skill tells the agent to read those fields rather than assume. Many banks also publish several rows for one pair: buy, sell, middle, reference. The skill sets the preference order (reference, then middle, then official, and the buy/sell mean only as a last resort) and explains the stale flag, so a table the bank has not refreshed is reported with its real date instead of presented as today's. Because looking up institution codes at run time wastes a fetch, the skill ships a reference file listing all 127 codes with country and home currency, plus worked response examples for the ECB, HMRC and SAMA tables and the error shape. Why keyless first The skill works with nothing configured. The ECB table for any base currency and the latest table of every covered institution are open endpoints; the only requirement is a visible attribution link where rates are shown to other people. A free key, read from ALLRATESTODAY_API_KEY, adds live mid-market rates. History and dated tables are on paid plans, and the skill tells the agent to say so on a 403 instead of improvising. Try it openclaw skills install allratestoday Ask: “Convert 2,400 USD to EUR and tell me which table you used.” Ask: “What is HMRC's rate for AED this month?” and check that the answer carries the publication date. The skill is MIT licensed. Source and issues: AllRates-Today/openclaw-skill. Rates your agent can cite Keyless to start. A free key adds live mid-market rates for 160+ currencies. Get your free API key Related Articles OpenClaw skill page and FAQ AllRatesToday MCP Server with Claude Code and Cursor Central Bank Rates MCP Server AllRatesToday for AI agents Reading this with an AI assistant? This article is also published as plain Markdown for LLMs and agents. Copy as Markdown View Markdown Open in ChatGPT Open in Claude llms.txt document.querySelectorAll(".llm-actions [data-copy]").forEach(t=>{t.addEventListener("click",async()=>{const a=t.textContent;try{const e=await fetch(t.dataset.md,{headers:{Accept:"text/markdown"}});if(!e.ok)throw new Error(String(e.status));await navigator.clipboard.writeText(await e.text()),t.textContent="Copied"}catch{t.textContent="Copy failed"}setTimeout(()=>{t.textContent=a},2e3)})}); Madhushan Founder & Lead Developer Madhushan founded AllRatesToday and leads its development, including the exchange-rate API that serves real-time mid-market rates for 160+ currencies and official rates from 123 central banks and 4 tax authorities, plus its SDKs, MCP server and open central-bank dataset. LinkedIn GitHub`
