All guides
    Developers · AI builders

    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_freshness and as_of and 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.json can 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.

    See the data

    More guides