Give an AI agent live African FX rates with MCP
A language model asked for today's GBP→NGN rate will produce a plausible number from its training data. Connected to a source it can query, it produces the actual quotes, with timestamps, and can say which provider delivers the most. The Model Context Protocol is how that connection works.
Updated 2 Sep 2026 · 5 min read · by Modan
Why a tool beats a search
Search results give a model pages to read, most of which show a mid nobody transacts at and few of which carry a timestamp the model can trust. A tool gives it structured, dated data with definitions attached. Modan's MCP server returns the same objects as the REST API — provider entries with rate, fee, spread_bps, vs_mid_bps, rate_type and last_updated — and the server's own instructions tell the model what each field means, so it does not have to guess that spread is measured within a rate type.
What the model can do with it
get_rates— the full provider book for a corridor, with the independent mid.convert— what an amount delivers per provider net of fees, and who delivers the most.fetch_rates— mid-market rates from one base to up to 20 quotes in one call.get_history— timestamped observations over a window, optionally one provider.list_corridors,list_providers,list_currencies— discovery, so the model can answer "what do you cover?" without browsing.
Connecting a client
The server is remote — nothing to install — at https://modan.io/api/mcp, streamable HTTP with plain JSON responses, authenticated with an X-API-Key header. The MCP setup page has the exact configuration for Claude Code, Cursor, VS Code and a generic JSON block for other clients, plus a keyless tools/list probe to confirm the connection before adding a key.
claude mcp add --transport http modan https://modan.io/api/mcp \ --header "X-API-Key: mdn_live_YOUR_KEY_HERE"
What a conversation looks like
Ask "Which provider gives the most naira for £500 right now?" and the model calls convert with GBP, NGN and 500, then answers with the provider, the net amount, and — if it is well behaved — the observation time and the plan's freshness. Ask "how has LemFi's GBP→NGN rate moved this month?" and it calls get_history with a provider filter. Ask "what corridors do you cover into GHS?" and it calls list_corridors and filters.
What to know before you rely on it
- Each tool call uses one request of the key's daily quota — 50 on a free key, 250 on Individual, 1,000 on Team — shared with the REST API.
- Answers are labelled hourly or real-time by plan; the model receives
data_freshnessandas_ofand can repeat them. Ask it to. - Reference prints (official, parallel) come back labelled and are never chosen as best; stablecoin corridors carry no mid.
- ChatGPT's connectors cannot send an API-key header today; a Custom GPT Action built from
openapi.jsoncan call the REST endpoints instead.
Frequently asked questions
- Does the agent get real-time rates?
- It gets what the key's plan allows and the response says which: hourly (as of the top of the current UTC hour) on Free and Individual keys, real-time on Team keys. Either way every provider entry carries its own last_updated timestamp.
- What does it cost?
- A key is free on signup and allows 50 requests a day, each tool call counting as one. Individual (250 a day) and Team (1,000 a day, real-time) plans are on the pricing page.
- Which clients work?
- Any MCP client that accepts a remote streamable-HTTP server URL with a custom header: Claude Code, Cursor, VS Code with GitHub Copilot, Codex, Windsurf and others. The setup page shows the configuration for the first three and a generic block for the rest.