FluentEDI Compute API

Calculation and conversion

Operations 8

GET /v1/math/eval Evaluate a mathematical expression exactly #
POST /v1/math/eval Evaluate a mathematical expression exactly #
GET /v1/unit/convert Convert between units of length, mass, temperature, data, time, speed, area… #
POST /v1/unit/convert Convert between units of length, mass, temperature, data, time, speed, area… #
GET /v1/color/convert Convert a colour between hex, RGB, HSL and OKLCh, and check WCAG contrast #
POST /v1/color/convert Convert a colour between hex, RGB, HSL and OKLCh, and check WCAG contrast #
GET /v1/money/convert Convert between 30 currencies at current or historical European Central Bank… #
POST /v1/money/convert Convert between 30 currencies at current or historical European Central Bank… #

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/fluentedi-compute-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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

fluentedi-compute-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: FluentEDI Compute API
  version: 1.1.0
  summary: Deterministic tools for AI agents. No key, no signup, no SDK.
  description: 'A public HTTP API of deterministic tools for the work a language model cannot do reliably by reasoning: knowing the current time in any timezone and whether an instant falls inside a window, exact arithmetic, hashing and signature verification, canonicalizing and content-addressing JSON, repairing malformed JSON and pinpointing where it broke, querying and diffing structured data, parsing CSV correctly, converting units, colours and currencies at live ECB rates, testing regular expressions…'
  license:
    name: Free to use
    identifier: MIT
servers:
- url: https://fluentedi.com
tags:
- name: Compute
  description: Calculation and conversion
paths:
  /v1/math/eval:
    get:
      operationId: math_eval_get
      summary: Evaluate a mathematical expression exactly
      description: Evaluates arithmetic with correct operator precedence, parentheses, exponentiation, factorials, named variables and 30+ functions. Language models perform arithmetic by pattern-matching and quietly get long multiplications and compounding wrong; this computes the number instead of predicting it.
      tags:
      - Compute
      parameters:
      - name: expression
        in: query
        required: true
        description: Expression to evaluate, e.g. "(1+0.07)^30 * 1000".
        schema:
          description: Expression to evaluate, e.g. "(1+0.07)^30 * 1000".
          type: string
          maxLength: 2000
          examples:
          - sqrt(2) * 10^3
      - name: variables
        in: query
        required: false
        description: 'Named values usable in the expression, e.g. {"rate": 0.07}.'
        schema:
          description: 'Named values usable in the expression, e.g. {"rate": 0.07}.'
          type: object
          default: {}
      - name: precision
        in: query
        required: false
        description: Decimal places to round the formatted result to.
        schema:
          description: Decimal places to round the formatted result to.
          type: integer
          default: 10
          minimum: 0
          maximum: 15
      responses:
        '200':
          description: Tool result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  tool:
                    type: string
                  result:
                    type: object
                    description: Tool-specific result payload.
        '400':
          description: Invalid input. The body carries the parameter schema and working examples.
    post:
      operationId: math_eval_post
      summary: Evaluate a mathematical expression exactly
      description: Evaluates arithmetic with correct operator precedence, parentheses, exponentiation, factorials, named variables and 30+ functions. Language models perform arithmetic by pattern-matching and quietly get long multiplications and compounding wrong; this computes the number instead of predicting it.
      tags:
      - Compute
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                expression:
                  description: Expression to evaluate, e.g. "(1+0.07)^30 * 1000".
                  type: string
                  maxLength: 2000
                  examples:
                  - sqrt(2) * 10^3
                variables:
                  description: 'Named values usable in the expression, e.g. {"rate": 0.07}.'
                  type: object
                  default: {}
                precision:
                  description: Decimal places to round the formatted result to.
                  type: integer
                  default: 10
                  minimum: 0
                  maximum: 15
              required:
              - expression
              additionalProperties: false
      responses:
        '200':
          description: Tool result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  tool:
                    type: string
                  result:
                    type: object
                    description: Tool-specific result payload.
        '400':
          description: Invalid input. The body carries the parameter schema and working examples.
  /v1/unit/convert:
    get:
      operationId: unit_convert_get
      summary: Convert between units of length, mass, temperature, data, time, speed, area…
      description: Exact unit conversion across eleven categories, using defined conversion factors rather than remembered approximations. Temperature handles offsets correctly (0°C is 32°F, not 0°F), and binary data prefixes are kept distinct from decimal ones (a GiB is not a GB).
      tags:
      - Compute
      parameters:
      - name: value
        in: query
        required: false
        description: Quantity to convert.
        schema:
          description: Quantity to convert.
          type: number
          examples:
          - 100
      - name: from
        in: query
        required: false
        description: Source unit, e.g. "km", "celsius", "gib".
        schema:
          description: Source unit, e.g. "km", "celsius", "gib".
          type: string
          examples:
          - km
      - name: to
        in: query
        required: false
        description: Target unit. Must be in the same category as `from`.
        schema:
          description: Target unit. Must be in the same category as `from`.
          type: string
          examples:
          - mi
      - name: list
        in: query
        required: false
        description: Return every supported unit grouped by category instead of converting.
        schema:
          description: Return every supported unit grouped by category instead of converting.
          type: boolean
          default: false
      - name: precision
        in: query
        required: false
        description: Decimal places in the rounded result.
        schema:
          description: Decimal places in the rounded result.
          type: integer
          default: 6
          minimum: 0
          maximum: 15
      responses:
        '200':
          description: Tool result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  tool:
                    type: string
                  result:
                    type: object
                    description: Tool-specific result payload.
        '400':
          description: Invalid input. The body carries the parameter schema and working examples.
    post:
      operationId: unit_convert_post
      summary: Convert between units of length, mass, temperature, data, time, speed, area…
      description: Exact unit conversion across eleven categories, using defined conversion factors rather than remembered approximations. Temperature handles offsets correctly (0°C is 32°F, not 0°F), and binary data prefixes are kept distinct from decimal ones (a GiB is not a GB).
      tags:
      - Compute
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                value:
                  description: Quantity to convert.
                  type: number
                  examples:
                  - 100
                from:
                  description: Source unit, e.g. "km", "celsius", "gib".
                  type: string
                  examples:
                  - km
                to:
                  description: Target unit. Must be in the same category as `from`.
                  type: string
                  examples:
                  - mi
                list:
                  description: Return every supported unit grouped by category instead of converting.
                  type: boolean
                  default: false
                precision:
                  description: Decimal places in the rounded result.
                  type: integer
                  default: 6
                  minimum: 0
                  maximum: 15
              required: []
              additionalProperties: false
      responses:
        '200':
          description: Tool result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  tool:
                    type: string
                  result:
                    type: object
                    description: Tool-specific result payload.
        '400':
          description: Invalid input. The body carries the parameter schema and working examples.
  /v1/color/convert:
    get:
      operationId: color_convert_get
      summary: Convert a colour between hex, RGB, HSL and OKLCh, and check WCAG contrast
      description: Parses any CSS colour notation and re-emits it in every format including OKLCh. Supply `against` to get the WCAG 2.1 contrast ratio and pass/fail verdicts for normal and large text — the check that decides whether an interface is legible, computed rather than eyeballed.
      tags:
      - Compute
      parameters:
      - name: color
        in: query
        required: true
        description: Colour in hex, rgb(), hsl(), or a CSS name.
        schema:
          description: Colour in hex, rgb(), hsl(), or a CSS name.
          type: string
          maxLength: 100
          examples:
          - '#3b82f6'
      - name: against
        in: query
        required: false
        description: Optional second colour to compute a WCAG contrast ratio against.
        schema:
          description: Optional second colour to compute a WCAG contrast ratio against.
          type: string
          default: ''
          maxLength: 100
          examples:
          - '#ffffff'
      - name: shades
        in: query
        required: false
        description: Also return a 50-950 lightness scale built from this hue.
        schema:
          description: Also return a 50-950 lightness scale built from this hue.
          type: boolean
          default: false
      responses:
        '200':
          description: Tool result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  tool:
                    type: string
                  result:
                    type: object
                    description: Tool-specific result payload.
        '400':
          description: Invalid input. The body carries the parameter schema and working examples.
    post:
      operationId: color_convert_post
      summary: Convert a colour between hex, RGB, HSL and OKLCh, and check WCAG contrast
      description: Parses any CSS colour notation and re-emits it in every format including OKLCh. Supply `against` to get the WCAG 2.1 contrast ratio and pass/fail verdicts for normal and large text — the check that decides whether an interface is legible, computed rather than eyeballed.
      tags:
      - Compute
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                color:
                  description: Colour in hex, rgb(), hsl(), or a CSS name.
                  type: string
                  maxLength: 100
                  examples:
                  - '#3b82f6'
                against:
                  description: Optional second colour to compute a WCAG contrast ratio against.
                  type: string
                  default: ''
                  maxLength: 100
                  examples:
                  - '#ffffff'
                shades:
                  description: Also return a 50-950 lightness scale built from this hue.
                  type: boolean
                  default: false
              required:
              - color
              additionalProperties: false
      responses:
        '200':
          description: Tool result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  tool:
                    type: string
                  result:
                    type: object
                    description: Tool-specific result payload.
        '400':
          description: Invalid input. The body carries the parameter schema and working examples.
  /v1/money/convert:
    get:
      operationId: money_convert_get
      summary: Convert between 30 currencies at current or historical European Central Bank…
      description: 'Converts an amount between currencies using the European Central Bank''s daily reference rates — the closest thing to a neutral, citable exchange rate that exists, reaching back to 1999 for historical dates. Exchange rates are the canonical example of a fact a language model cannot know: they moved after every training cutoff and will move again tomorrow. Rates are published on ECB working days around 16:00 CET; a weekend or holiday query returns the last working day''s rate, and the response always states which date the rate is actually from. These are reference rates for calculation and record-keeping — a bank or card network will apply its own spread on a real transaction.'
      tags:
      - Compute
      parameters:
      - name: amount
        in: query
        required: false
        description: Amount to convert.
        schema:
          description: Amount to convert.
          type: number
          default: 1
          minimum: 0
          examples:
          - 250
      - name: from
        in: query
        required: true
        description: ISO 4217 code of the source currency.
        schema:
          description: ISO 4217 code of the source currency.
          type: string
          maxLength: 10
          examples:
          - USD
      - name: to
        in: query
        required: false
        description: Target currency code, or several separated by commas. Empty returns every supported currency.
        schema:
          description: Target currency code, or several separated by commas. Empty returns every supported currency.
          type: string
          default: ''
          maxLength: 200
      - name: date
        in: query
        required: false
        description: Historical date (YYYY-MM-DD, back to 1999-01-04). Empty means the latest published rate.
        schema:
          description: Historical date (YYYY-MM-DD, back to 1999-01-04). Empty means the latest published rate.
          type: string
          default: ''
          maxLength: 10
      responses:
        '200':
          description: Tool result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  tool:
                    type: string
                  result:
                    type: object
                    description: Tool-specific result payload.
        '400':
          description: Invalid input. The body carries the parameter schema and working examples.
    post:
      operationId: money_convert_post
      summary: Convert between 30 currencies at current or historical European Central Bank…
      description: 'Converts an amount between currencies using the European Central Bank''s daily reference rates — the closest thing to a neutral, citable exchange rate that exists, reaching back to 1999 for historical dates. Exchange rates are the canonical example of a fact a language model cannot know: they moved after every training cutoff and will move again tomorrow. Rates are published on ECB working days around 16:00 CET; a weekend or holiday query returns the last working day''s rate, and the response always states which date the rate is actually from. These are reference rates for calculation and record-keeping — a bank or card network will apply its own spread on a real transaction.'
      tags:
      - Compute
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                amount:
                  description: Amount to convert.
                  type: number
                  default: 1
                  minimum: 0
                  examples:
                  - 250
                from:
                  description: ISO 4217 code of the source currency.
                  type: string
                  maxLength: 10
                  examples:
                  - USD
                to:
                  description: Target currency code, or several separated by commas. Empty returns every supported currency.
                  type: string
                  default: ''
                  maxLength: 200
                date:
                  description: Historical date (YYYY-MM-DD, back to 1999-01-04). Empty means the latest published rate.
                  type: string
                  default: ''
                  maxLength: 10
              required:
              - from
              additionalProperties: false
      responses:
        '200':
          description: Tool result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  tool:
                    type: string
                  result:
                    type: object
                    description: Tool-specific result payload.
        '400':
          description: Invalid input. The body carries the parameter schema and working examples.