Frankfurter · Capability

Frankfurter API — Rates

Frankfurter API — Rates. 2 operation(s). Lead operation: Frankfurter Get Exchange Rates. Self-contained Naftiko capability covering one Frankfurter business surface.

Run with Naftiko FrankfurterCurrency ExchangeRates

What You Can Do

GET
Getrates — Frankfurter Get Exchange Rates
/v1/rates
GET
Getrate — Frankfurter Get a Single Exchange Rate Pair
/v1/rate/{base}/{quote}

MCP Tools

get-exchange-rates

Frankfurter Get Exchange Rates

read-only idempotent
get-single-exchange-rate-pair

Frankfurter Get a Single Exchange Rate Pair

read-only idempotent

Capability Spec

v2-rates.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Frankfurter API — Rates
  description: 'Frankfurter API — Rates. 2 operation(s). Lead operation: Frankfurter Get Exchange Rates. Self-contained Naftiko capability covering one Frankfurter business surface.'
  tags:
    - Frankfurter
    - Currency Exchange
    - Rates
  created: '2026-05-29'
  modified: '2026-05-29'
binds: []
capability:
  consumes:
    - type: http
      namespace: v2-rates
      baseUri: https://api.frankfurter.dev/v2
      description: Frankfurter API — Rates business capability. Self-contained, no shared references. Public, no authentication required.
      resources:
        - name: rates
          path: /rates
          operations:
            - name: getRates
              method: GET
              description: Frankfurter Get Exchange Rates
              inputParameters:
                - name: date
                  in: query
                  type: string
                  required: false
                  description: Specific date (YYYY-MM-DD). Cannot be combined with from/to.
                - name: from
                  in: query
                  type: string
                  required: false
                  description: Start of date range (YYYY-MM-DD)
                - name: to
                  in: query
                  type: string
                  required: false
                  description: End of date range (YYYY-MM-DD). Defaults to today.
                - name: base
                  in: query
                  type: string
                  required: false
                  description: 'Base currency (default: EUR)'
                - name: quotes
                  in: query
                  type: string
                  required: false
                  description: Comma-separated list of quote currencies to include
                - name: providers
                  in: query
                  type: string
                  required: false
                  description: Comma-separated list of data providers to include
                - name: group
                  in: query
                  type: string
                  required: false
                  description: Downsample rates by time period. Only applies to date ranges.
                - name: expand
                  in: query
                  type: string
                  required: false
                  description: "Comma-separated list of optional fields to include per record. Currently supports `providers`, which adds an array of `{ key, rate }` objects per record showing each provider's
                    individual rate. Outliers excluded from the blend (and providers whose rate was overridden by a currency peg) are flagged with `excluded: true`. The field is omitted on synthesized peg
                    rows where no provider published the quote. In CSV output, the `providers` column is encoded as `KEY:RATE` pairs joined by `|`, with a trailing `*` on excluded entries (e.g. `ECB:0.92|FED:1.50*`)."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: $.
        - name: rate-base-quote
          path: /rate/{base}/{quote}
          operations:
            - name: getRate
              method: GET
              description: Frankfurter Get a Single Exchange Rate Pair
              inputParameters:
                - name: base
                  in: path
                  type: string
                  required: true
                  description: ''
                - name: quote
                  in: path
                  type: string
                  required: true
                  description: ''
                - name: date
                  in: query
                  type: string
                  required: false
                  description: Specific date (YYYY-MM-DD). Cannot be combined with from/to.
                - name: providers
                  in: query
                  type: string
                  required: false
                  description: Comma-separated list of data providers to include
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: $.
  exposes:
    - type: rest
      namespace: v2-rates-rest
      port: 8080
      description: REST adapter for Frankfurter API — Rates. One Spectral-compliant resource per consumed operation, prefixed with /v1.
      resources:
        - path: /v1/rates
          name: v1-rates
          description: REST surface for Frankfurter Get Exchange Rates.
          operations:
            - method: GET
              name: getRates
              description: Frankfurter Get Exchange Rates
              call: v2-rates.getRates
              with:
                date: rest.date
                from: rest.from
                to: rest.to
                base: rest.base
                quotes: rest.quotes
                providers: rest.providers
                group: rest.group
                expand: rest.expand
              outputParameters:
                - type: object
                  mapping: $.
        - path: /v1/rate/{base}/{quote}
          name: v1-rate-base-quote
          description: REST surface for Frankfurter Get a Single Exchange Rate Pair.
          operations:
            - method: GET
              name: getRate
              description: Frankfurter Get a Single Exchange Rate Pair
              call: v2-rates.getRate
              with:
                base: rest.base
                quote: rest.quote
                date: rest.date
                providers: rest.providers
              outputParameters:
                - type: object
                  mapping: $.
    - type: mcp
      namespace: v2-rates-mcp
      port: 9090
      transport: http
      description: MCP adapter for Frankfurter API — Rates. One verb-noun tool per consumed operation, routed inline through this capability's consumes block.
      tools:
        - name: get-exchange-rates
          description: Frankfurter Get Exchange Rates
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: v2-rates.getRates
          with:
            date: tools.date
            from: tools.from
            to: tools.to
            base: tools.base
            quotes: tools.quotes
            providers: tools.providers
            group: tools.group
            expand: tools.expand
          outputParameters:
            - type: object
              mapping: $.
        - name: get-single-exchange-rate-pair
          description: Frankfurter Get a Single Exchange Rate Pair
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: v2-rates.getRate
          with:
            base: tools.base
            quote: tools.quote
            date: tools.date
            providers: tools.providers
          outputParameters:
            - type: object
              mapping: $.