YourAITools FX Rate API

The FXRate API from YourAITools — 4 operation(s) for fxrate.

GitHub OpenAPI

Operations 7

GET /fx/v1/convert Convert an amount between two currencies at the ECB reference rate ($0.001) #
POST /fx/v1/convert Same as GET, POST {"from":"USD","to":"EUR","amount":100} #
GET /fx/v1/rates Exchange rate table for a base currency (ECB reference rates) ($0.001) #
POST /fx/v1/rates Same as GET, POST {"base":"USD","quotes":"EUR,GBP,JPY"} #
GET /fx/v1/history Daily exchange rate history for a currency pair (up to 366 days) ($0.002) #
POST /fx/v1/history Same as GET, POST {"base":"EUR","quote":"USD","start":"2026-10-01","end":"2026-1… #
POST /fx/mcp Free remote MCP (Streamable HTTP, JSON-RPC): convert_currency, fx_rates… #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/youraitools-co:youraitools-co-fxrate-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

youraitools-co-fxrate-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: YourAITools FX Rate API
  version: 1.0.0
  description: Pay-per-call tools for AI agents, paid per request in USDC via x402 on Base, Polygon, Arbitrum One or Solana, with each tool's own spec at https://api.youraitools.co//openapi.json.
  contact:
    email: hello@youraitools.co
    url: https://youraitools.co/built-by-us
servers:
- url: https://api.youraitools.co
tags:
- name: FXRate
paths:
  /fx/v1/convert:
    get:
      operationId: fxrate_convert
      summary: Convert an amount between two currencies at the ECB reference rate ($0.001)
      description: 'Currency converter API for AI agents. Convert an amount from one currency to another (USD, EUR, GBP, JPY, CNY, INR, CAD, AUD, CHF and 22 more) at the official European Central Bank reference rate, today or on a past date back to 1999. Returns rate, result, inverse rate and the rate date. Search intents: currency converter api, fx convert, exchange rate api, convert usd to eur, forex rate, money conversion for agents.'
      tags:
      - FXRate
      x-payment-info:
        price:
          mode: fixed
          currency: USD
          amount: '0.001'
        protocols:
        - x402: {}
      x-x402:
        scheme: exact
        network: eip155:8453
        asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
        payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
        amount: '1000'
        assetSymbol: USDC
        x402Versions:
        - 2
        - 1
        networks:
        - network: eip155:8453
          name: Base
          asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
          symbol: USDC
          payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
        - network: eip155:137
          name: Polygon
          asset: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359'
          symbol: USDC
          payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
        - network: eip155:42161
          name: Arbitrum One
          asset: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
          symbol: USDC
          payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
      parameters:
      - name: from
        in: query
        required: true
        schema:
          type: string
        description: 'From currency: ISO 4217 code, e.g. USD, EUR, GBP, JPY (31 supported)'
      - name: to
        in: query
        required: true
        schema:
          type: string
        description: 'To currency: ISO 4217 code, e.g. USD, EUR, GBP, JPY (31 supported)'
      - name: amount
        in: query
        required: false
        schema:
          type: number
        description: Amount to convert (default 1), up to 1e15
      - name: date
        in: query
        required: false
        schema:
          type: string
        description: 'Optional YYYY-MM-DD (default: latest). Weekends/holidays use the previous ECB rate.'
      responses:
        '200':
          description: from, to, amount, rate, result, inverse_rate, date (ECB reference date), derived flag, source. (payment settled)
          content:
            application/json:
              example:
                from: USD
                to: EUR
                amount: 100
                rate: 0.89342
                result: 89.342
                inverse_rate: 1.119294
                date: '2026-10-23'
                derived: true
                source: 'Source: ECB statistics (euro foreign exchange reference rates), via the open-source Frankfurter API.'
        '400':
          description: Invalid input (never charged)
        '402':
          description: Payment Required (x402 v2 terms in the PAYMENT-REQUIRED header, v1 terms in the body)
        '404':
          description: Unknown pin (never charged)
        '413':
          description: Body too large (never charged)
        '422':
          description: Remote MCP server could not be listed (never charged)
        '503':
          description: Timeout or pin store unavailable (never charged)
    post:
      operationId: fxrate_convert_post
      summary: Same as GET, POST {"from":"USD","to":"EUR","amount":100}
      tags:
      - FXRate
      x-payment-info:
        price:
          mode: fixed
          currency: USD
          amount: '0.001'
        protocols:
        - x402: {}
      x-x402:
        scheme: exact
        network: eip155:8453
        asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
        payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
        amount: '1000'
        assetSymbol: USDC
        x402Versions:
        - 2
        - 1
        networks:
        - network: eip155:8453
          name: Base
          asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
          symbol: USDC
          payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
        - network: eip155:137
          name: Polygon
          asset: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359'
          symbol: USDC
          payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
        - network: eip155:42161
          name: Arbitrum One
          asset: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
          symbol: USDC
          payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                from:
                  type: string
                  description: 'From currency: ISO 4217 code, e.g. USD, EUR, GBP, JPY (31 supported)'
                to:
                  type: string
                  description: 'To currency: ISO 4217 code, e.g. USD, EUR, GBP, JPY (31 supported)'
                amount:
                  type: number
                  description: Amount to convert (default 1), up to 1e15
                date:
                  type: string
                  description: 'Optional YYYY-MM-DD (default: latest). Weekends/holidays use the previous ECB rate.'
              required:
              - from
              - to
      responses:
        '200':
          description: from, to, amount, rate, result, inverse_rate, date (ECB reference date), derived flag, source. (payment settled)
          content:
            application/json:
              example:
                from: USD
                to: EUR
                amount: 100
                rate: 0.89342
                result: 89.342
                inverse_rate: 1.119294
                date: '2026-10-23'
                derived: true
                source: 'Source: ECB statistics (euro foreign exchange reference rates), via the open-source Frankfurter API.'
        '400':
          description: Invalid input (never charged)
        '402':
          description: Payment Required (x402 v2 terms in the PAYMENT-REQUIRED header, v1 terms in the body)
        '404':
          description: Unknown pin (never charged)
        '413':
          description: Body too large (never charged)
        '422':
          description: Remote MCP server could not be listed (never charged)
        '503':
          description: Timeout or pin store unavailable (never charged)
      description: 'Currency converter API for AI agents. Same as GET, POST {"from":"USD","to":"EUR","amount":100}. Search intents: currency converter api, fx convert, exchange rate api, convert usd to eur, forex rate, money conversion for agents.'
  /fx/v1/rates:
    get:
      operationId: fxrate_rates
      summary: Exchange rate table for a base currency (ECB reference rates) ($0.001)
      description: 'Exchange rates API for AI agents. Every ECB reference rate for a base currency (or just the quotes you list) on the latest or a past date. Search intents: exchange rates api, fx rates table, currency rates today, usd exchange rates, ecb reference rates.'
      tags:
      - FXRate
      x-payment-info:
        price:
          mode: fixed
          currency: USD
          amount: '0.001'
        protocols:
        - x402: {}
      x-x402:
        scheme: exact
        network: eip155:8453
        asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
        payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
        amount: '1000'
        assetSymbol: USDC
        x402Versions:
        - 2
        - 1
        networks:
        - network: eip155:8453
          name: Base
          asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
          symbol: USDC
          payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
        - network: eip155:137
          name: Polygon
          asset: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359'
          symbol: USDC
          payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
        - network: eip155:42161
          name: Arbitrum One
          asset: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
          symbol: USDC
          payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
      parameters:
      - name: base
        in: query
        required: false
        schema:
          type: string
        description: 'Base currency (default EUR): ISO 4217 code, e.g. USD, EUR, GBP, JPY (31 supported)'
      - name: quotes
        in: query
        required: false
        schema:
          type: string
        description: 'Optional comma-separated currency codes (default: all 30)'
      - name: date
        in: query
        required: false
        schema:
          type: string
        description: 'Optional YYYY-MM-DD (default: latest). Weekends/holidays use the previous ECB rate.'
      responses:
        '200':
          description: 'base, date, rates {code: rate}, count, source. (payment settled)'
          content:
            application/json:
              example:
                base: USD
                date: '2026-10-23'
                rates:
                  EUR: 0.89342
                  GBP: 0.74805
                  JPY: 156.8
                count: 3
                derived: true
                source: 'Source: ECB statistics (euro foreign exchange reference rates), via the open-source Frankfurter API.'
        '400':
          description: Invalid input (never charged)
        '402':
          description: Payment Required (x402 v2 terms in the PAYMENT-REQUIRED header, v1 terms in the body)
        '404':
          description: Unknown pin (never charged)
        '413':
          description: Body too large (never charged)
        '422':
          description: Remote MCP server could not be listed (never charged)
        '503':
          description: Timeout or pin store unavailable (never charged)
    post:
      operationId: fxrate_rates_post
      summary: Same as GET, POST {"base":"USD","quotes":"EUR,GBP,JPY"}
      tags:
      - FXRate
      x-payment-info:
        price:
          mode: fixed
          currency: USD
          amount: '0.001'
        protocols:
        - x402: {}
      x-x402:
        scheme: exact
        network: eip155:8453
        asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
        payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
        amount: '1000'
        assetSymbol: USDC
        x402Versions:
        - 2
        - 1
        networks:
        - network: eip155:8453
          name: Base
          asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
          symbol: USDC
          payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
        - network: eip155:137
          name: Polygon
          asset: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359'
          symbol: USDC
          payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
        - network: eip155:42161
          name: Arbitrum One
          asset: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
          symbol: USDC
          payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                base:
                  type: string
                  description: 'Base currency (default EUR): ISO 4217 code, e.g. USD, EUR, GBP, JPY (31 supported)'
                quotes:
                  type: string
                  description: 'Optional comma-separated currency codes (default: all 30)'
                date:
                  type: string
                  description: 'Optional YYYY-MM-DD (default: latest). Weekends/holidays use the previous ECB rate.'
      responses:
        '200':
          description: 'base, date, rates {code: rate}, count, source. (payment settled)'
          content:
            application/json:
              example:
                base: USD
                date: '2026-10-23'
                rates:
                  EUR: 0.89342
                  GBP: 0.74805
                  JPY: 156.8
                count: 3
                derived: true
                source: 'Source: ECB statistics (euro foreign exchange reference rates), via the open-source Frankfurter API.'
        '400':
          description: Invalid input (never charged)
        '402':
          description: Payment Required (x402 v2 terms in the PAYMENT-REQUIRED header, v1 terms in the body)
        '404':
          description: Unknown pin (never charged)
        '413':
          description: Body too large (never charged)
        '422':
          description: Remote MCP server could not be listed (never charged)
        '503':
          description: Timeout or pin store unavailable (never charged)
      description: 'Exchange rates API for AI agents. Same as GET, POST {"base":"USD","quotes":"EUR,GBP,JPY"}. Search intents: exchange rates api, fx rates table, currency rates today, usd exchange rates, ecb reference rates.'
  /fx/v1/history:
    get:
      operationId: fxrate_history
      summary: Daily exchange rate history for a currency pair (up to 366 days) ($0.002)
      description: 'Historical exchange rate API for AI agents. Daily ECB reference rates for one currency pair between two dates (up to 366 days, back to 1999), with first, last, min, max and percent change. Search intents: historical exchange rates api, fx time series, currency history, eur usd chart data, forex history.'
      tags:
      - FXRate
      x-payment-info:
        price:
          mode: fixed
          currency: USD
          amount: '0.002'
        protocols:
        - x402: {}
      x-x402:
        scheme: exact
        network: eip155:8453
        asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
        payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
        amount: '2000'
        assetSymbol: USDC
        x402Versions:
        - 2
        - 1
        networks:
        - network: eip155:8453
          name: Base
          asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
          symbol: USDC
          payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
        - network: eip155:137
          name: Polygon
          asset: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359'
          symbol: USDC
          payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
        - network: eip155:42161
          name: Arbitrum One
          asset: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
          symbol: USDC
          payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
      parameters:
      - name: base
        in: query
        required: true
        schema:
          type: string
        description: 'Base currency: ISO 4217 code, e.g. USD, EUR, GBP, JPY (31 supported)'
      - name: quote
        in: query
        required: true
        schema:
          type: string
        description: 'Quote currency: ISO 4217 code, e.g. USD, EUR, GBP, JPY (31 supported)'
      - name: start
        in: query
        required: true
        schema:
          type: string
        description: YYYY-MM-DD start date
      - name: end
        in: query
        required: false
        schema:
          type: string
        description: 'YYYY-MM-DD end date (default: today); max 366 days after start'
      responses:
        '200':
          description: base, quote, start, end, points [{date, rate}], stats {first, last, min, max, change_pct}, source. (payment settled)
          content:
            application/json:
              example:
                base: EUR
                quote: USD
                start: '2026-10-01'
                end: '2026-10-23'
                count: 17
                points:
                - date: '2026-10-01'
                  rate: 1.1298
                - date: '2026-10-02'
                  rate: 1.1225
                - date: '2026-10-23'
                  rate: 1.1193
                stats:
                  first: 1.1298
                  last: 1.1193
                  min: 1.1172
                  max: 1.1298
                  change_pct: -0.93
                source: 'Source: ECB statistics (euro foreign exchange reference rates), via the open-source Frankfurter API.'
        '400':
          description: Invalid input (never charged)
        '402':
          description: Payment Required (x402 v2 terms in the PAYMENT-REQUIRED header, v1 terms in the body)
        '404':
          description: Unknown pin (never charged)
        '413':
          description: Body too large (never charged)
        '422':
          description: Remote MCP server could not be listed (never charged)
        '503':
          description: Timeout or pin store unavailable (never charged)
    post:
      operationId: fxrate_history_post
      summary: Same as GET, POST {"base":"EUR","quote":"USD","start":"2026-10-01","end":"2026-1…
      tags:
      - FXRate
      x-payment-info:
        price:
          mode: fixed
          currency: USD
          amount: '0.002'
        protocols:
        - x402: {}
      x-x402:
        scheme: exact
        network: eip155:8453
        asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
        payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
        amount: '2000'
        assetSymbol: USDC
        x402Versions:
        - 2
        - 1
        networks:
        - network: eip155:8453
          name: Base
          asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
          symbol: USDC
          payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
        - network: eip155:137
          name: Polygon
          asset: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359'
          symbol: USDC
          payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
        - network: eip155:42161
          name: Arbitrum One
          asset: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
          symbol: USDC
          payTo: '0x3c1A1E01e790Cd326495631B3b38Bd7068F08d6F'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                base:
                  type: string
                  description: 'Base currency: ISO 4217 code, e.g. USD, EUR, GBP, JPY (31 supported)'
                quote:
                  type: string
                  description: 'Quote currency: ISO 4217 code, e.g. USD, EUR, GBP, JPY (31 supported)'
                start:
                  type: string
                  description: YYYY-MM-DD start date
                end:
                  type: string
                  description: 'YYYY-MM-DD end date (default: today); max 366 days after start'
              required:
              - base
              - quote
              - start
      responses:
        '200':
          description: base, quote, start, end, points [{date, rate}], stats {first, last, min, max, change_pct}, source. (payment settled)
          content:
            application/json:
              example:
                base: EUR
                quote: USD
                start: '2026-10-01'
                end: '2026-10-23'
                count: 17
                points:
                - date: '2026-10-01'
                  rate: 1.1298
                - date: '2026-10-02'
                  rate: 1.1225
                - date: '2026-10-23'
                  rate: 1.1193
                stats:
                  first: 1.1298
                  last: 1.1193
                  min: 1.1172
                  max: 1.1298
                  change_pct: -0.93
                source: 'Source: ECB statistics (euro foreign exchange reference rates), via the open-source Frankfurter API.'
        '400':
          description: Invalid input (never charged)
        '402':
          description: Payment Required (x402 v2 terms in the PAYMENT-REQUIRED header, v1 terms in the body)
        '404':
          description: Unknown pin (never charged)
        '413':
          description: Body too large (never charged)
        '422':
          description: Remote MCP server could not be listed (never charged)
        '503':
          description: Timeout or pin store unavailable (never charged)
      description: 'Historical exchange rate API for AI agents. Same as GET, POST {"base":"EUR","quote":"USD","start":"2026-10-01","end":"2026-10-23"}. Search intents: historical exchange rates api, fx time series, currency history, eur usd chart data, forex history.'
  /fx/mcp:
    post:
      operationId: fxrate_mcp
      summary: 'Free remote MCP (Streamable HTTP, JSON-RPC): convert_currency, fx_rates…'
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: JSON-RPC result
        '202':
          description: Notification accepted
      tags:
      - FXRate
components:
  securitySchemes:
    creditsKey:
      type: http
      scheme: bearer
      description: yatc_... credits key