ToolAssay

Use when you need historical exchange rates, forex history or the recent trend o

Use when you need historical exchange rates, forex history or the recent trend of a currency. Do not use for rates older than 90 days, live quotes or crypto (one ECB rate per business day). Returns JSON with 90 days of daily ECB euro reference rates (free at ecb.europa.eu) for up to 10 currencies, rebased to any base as cross rates we calculate, with min, max and percent change for 0.005 USDC per call. Typical response time 1500 ms (p95). Category: Data.

Answeringour last check, 2026-10-18
1 of 1checks answered this week
2669 msmedian answer time
$0.005listed price per call
$0.005price it asked us

Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.

Endpoint

POST https://x402-gateway.blackwoodstate8.workers.dev/v1/fx-history

CategoryMarket data
Provider hostx402-gateway.blackwoodstate8.workers.dev
Networkseip155:8453
Payment schemesexact, upto
Self-reported calls, 30 days3 from 1 payers (the provider's figure, not ours)

Our checks, last 30 days

DayResultHTTPAskedTime
2026-10-18 valid payment request 402$0.005 2669 ms

Example input (from the provider)

{
  "body": {
    "days": 7,
    "symbols": [
      "USD",
      "BRL"
    ]
  },
  "bodyType": "json",
  "method": "POST",
  "type": "http"
}

Promised output schema (from the provider)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "properties": {
            "base": {
              "description": "Base currency, ISO 4217 (EUR when omitted), e.g. USD",
              "pattern": "^[A-Za-z]{3}$",
              "type": "string"
            },
            "days": {
              "description": "Calendar days back from endDate, 1 to 90 (90 when omitted; ignored with startDate), e.g. 30",
              "maximum": 90,
              "minimum": 1,
              "type": "integer"
            },
            "endDate": {
              "description": "Last day, YYYY-MM-DD (latest ECB day when omitted), e.g. 2026-09-30",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string"
            },
            "startDate": {
              "description": "First day, YYYY-MM-DD, within the last 90 days, e.g. 2026-09-01",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string"
            },
            "symbols": {
              "description": "Currencies to return, ISO 4217, up to 10, e.g. [\"USD\", \"BRL\"]",
              "items": {
                "pattern": "^[A-Za-z]{3}$",
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            }
          },
          "required": [
            "symbols"
          ],
          "type": "object"
        },
        "bodyType": {
          "enum": [
            "json",
            "form-data",
            "text"
          ],
          "type": "string"
        },
        "method": {
          "enum": [
            "POST"
          ],
          "type": "string"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method",
        "bodyType",
        "body"
      ],
      "type": "object"
    },
    "output": {
      "properties": {
        "example": {
          "additionalProperties": false,
          "properties": {
            "attribution": {
              "type": "string"
            },
            "base": {
              "type": "string"
            },
            "days": {
              "type": "number"
            },
            "endDate": {
              "type": "string"
            },
            "next": {
              "additionalProperties": false,
              "description": "Suggested next paid call in the same family (call it in a loop when the task continues)",
              "properties": {
                "method": {
                  "enum": [
                    "GET",
                    "POST"
                  ],
                  "type": "string"
                },
                "sample": {
                  "description": "Free fixed sample of the whole family",
                  "type": "string"
                },
                "service": {
                  "description": "Service id of the suggested next paid call",
                  "type": "string"
                },
                "tool": {
                  "description": "MCP tool name of the same call",
                  "type": "string"
                },
                "url": {
                  "description": "Paid route of the next call",
                  "type": "string"
                },
                "useWhen": {
                  "description": "When the next call is the right one",
                  "type": "string"
                }
              },
              "required": [
                "service",
                "tool",
                "method",
                "url",
                "useWhen",
                "sample"
              ],
              "type": "object"
            },
            "note": {
              "type": "string"
            },
            "series": {
              "items": {
                "additionalProperties": false,
                "properties": {
                  "date": {
                    "type": "string"
                  },
                  "rates": {
                    "additionalProperties": {
                      "type": "number"
                    },
                    "propertyNames": {
                      "type": "string"
                    },
                    "type": "object"
                  }
                },
                "required": [
                  "date",
                  "rates"
                ],
                "type": "object"
              },
              "type": "array"
            },
            "startDate": {
              "type": "string"
            },
            "stats": {
              "additionalProperties": {
                "additionalProperties": false,
                "properties": {
                  "changePct": {
                    "type": "number"
                  },
                  "first": {
                    "type": "number"
                  },
                  "last": {
                    "type": "number"
                  },
                  "max": {
                    "type": "number"
                  },
                  "min": {
                    "type": "number"
                  }
                },
                "required": [
                  "first",
                  "last",
                  "min",
                  "max",
                  "changePct"
                ],
                "type": "object"
              },
              "propertyNames": {
                "type": "string"
              },
              "type": "object"
            },
            "truncated": {
              "type": "boolean"
            }
          },
          "required": [
            "base",
            "startDate",
            "endDate",
            "days",
            "truncated",
            "series",
            "stats",
            "attribution",
            "note"
         

This page as JSON