Public data API and MCP server

Official exchange rates, payout fees, freelancer tax and late payment interest as JSON, free and without a key. The same numbers our tools show, each with its source, its day and a link to cite.

Checked 22 October 2026

0 keys

Six answers over REST and MCP: rates, history, payout fees, tax, late interest and IBAN checks.

Start

No key and no sign-up. Send a GET; the answer is JSON. Every answer has source, as_of (the day the numbers hold for) and url, the page to link when you quote a number.

https://navorina.ai/api/public/v1
curl https://navorina.ai/api/public/v1/rates/usd-to-gel
{
  "object": "rate",
  "pair": "usd-to-gel",
  "from": "USD",
  "to": "GEL",
  "unit": "GEL per 1 USD",
  "rate": 2.5976,
  "date": "2026-10-22",
  "cite": "1 USD = 2.5976 GEL. Official rate for 22 Oct 2026, National Bank of Georgia. Navorina, https://navorina.ai/rates/usd-to-gel",
  "as_of": "2026-10-22",
  "source": [{ "name": "National Bank of Georgia", "url": "https://nbg.gov.ge/en/monetary-policy/currency" }],
  "url": "https://navorina.ai/rates/usd-to-gel"
}

The full description is OpenAPI 3.1: https://navorina.ai/api/public/v1/openapi.json. Import it into Postman, an SDK generator or an agent framework.

Endpoints

EndpointParametersReturns
GET /ratesNoneEvery pair with its latest rate, source and day
GET /rates/{pair}pair, like usd-to-gelThe latest rate of one pair and the line to cite
GET /rates/{pair}/historydays, 1 to 90 (default 30)Daily rates, oldest first
GET /payout-feesamount (USD), currency (GEL, KZT, AMD, UZS, EUR), upwork_feeWhat lands through Wise, Deel, Upwork, USDC, Payoneer and PayPal, best first
GET /tax-estimatecountry (GE, KZ, AM, UZ), income, period, currency, regimeTax, what you keep, the yearly limit and the next dates
GET /late-interestlaw (eu, uk), amount, due, paidStatutory interest per period, fixed compensation, total

What lands from USD 2,500 in lari, with a 5% Upwork fee:

curl "https://navorina.ai/api/public/v1/payout-fees?amount=2500&currency=GEL&upwork_fee=5"

Tax on USD 3,000 a month in Georgia with small business status, converted at today's official rate:

curl "https://navorina.ai/api/public/v1/tax-estimate?country=GE&income=3000&currency=USD"

Interest on a EUR 2,000 invoice due 31 August and paid 22 October 2026:

curl "https://navorina.ai/api/public/v1/late-interest?law=eu&amount=2000&due=2026-08-31&paid=2026-10-22"

MCP server

The same numbers as tools for an AI assistant, over the Model Context Protocol (Streamable HTTP, read-only, no sign-in). It speaks protocol 2026-07-28 and the earlier 2025 versions.

https://navorina.ai/mcp
ToolWhat it answers
get_rateThe latest official rate between two currencies, with up to 90 days of history
list_rate_pairsEvery pair we publish, with its latest rate
payout_costWhat lands from a USD payment, route by route
estimate_taxFreelancer tax in Georgia, Kazakhstan, Armenia or Uzbekistan
late_payment_interestStatutory interest on a late EU or UK business invoice
check_ibanCountry, length, format and check digits of an IBAN

Claude

In Claude on the web or desktop: open Settings, then Connectors, choose Add custom connector, name it Navorina and paste https://navorina.ai/mcp. Then turn it on in a chat from the tools menu. In Claude Code:

claude mcp add --transport http navorina https://navorina.ai/mcp

ChatGPT

In ChatGPT: open Settings, then Apps and Connectors, then Advanced settings, and turn on Developer mode. Back in Apps and Connectors choose Create, name it Navorina, paste https://navorina.ai/mcp as the MCP server URL and pick No authentication.

Other clients

Any client that takes a remote MCP server by URL works. In a JSON config:

{
  "mcpServers": {
    "navorina": { "type": "http", "url": "https://navorina.ai/mcp" }
  }
}

Errors and limits

Every error has one shape: {"error":{"code","message","status","parameter"},"request_id"}. Quote request_id when you write to us.

StatusCodeMeans
400MISSING_PARAMETERA required parameter is missing. error.parameter names it.
400INVALID_PARAMETERA parameter is out of range or not one of the allowed values.
404UNKNOWN_PAIRWe do not publish that pair. GET /rates lists them.
404NOT_FOUNDNo such endpoint.
405METHOD_NOT_ALLOWEDOnly GET (and HEAD, OPTIONS) is allowed.
422NOT_LATEpaid is on or before due, so no interest is owed.
429RATE_LIMITEDOver 60 requests a minute from your address. Wait Retry-After seconds.
503RATE_UNAVAILABLENo reference rate stored yet for that currency. Pass fx.

Limits: 60 requests a minute from one address, for the API and the MCP server each. Answers are cached for up to 15 minutes; rates change once a day. Open to any website for GET (CORS).

At a glance

Base URL
https://navorina.ai/api/public/v1
MCP server
https://navorina.ai/mcp, Streamable HTTP
Access
No key, GET only, open to any website (CORS)
Limits
60 requests a minute from one address; answers cached up to 15 minutes
Description
OpenAPI 3.1 at https://navorina.ai/api/public/v1/openapi.json
Licence
CC BY 4.0, with a link to the url in the answer

Questions

Yes. No key, no account and no charge. Keep under 60 requests a minute from one address and link the url in each answer when you publish a number.

No. Answers are worked out from public rates and published rules. We do not store or log the amounts, dates or IBANs in a request.

Rates update once a day from the National Bank of Georgia and Kraken; as_of says which day. Fees and tax rules carry the day we last checked them against the source.

Yes, under CC BY 4.0: credit Navorina with a link. Source rates stay under their publishers' own terms. Tax and interest figures are estimates, not advice.

This API reads public numbers only. The Navorina API, part of the Plus plan, reads and writes your own workspace with a key.

Read next

Invoices, payments and taxes in one place

Navorina puts these numbers to work on your own invoices and income. We open by invitation.

Join the waitlist