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.
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/v1curl 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
| Endpoint | Parameters | Returns |
|---|---|---|
GET /rates | None | Every pair with its latest rate, source and day |
GET /rates/{pair} | pair, like usd-to-gel | The latest rate of one pair and the line to cite |
GET /rates/{pair}/history | days, 1 to 90 (default 30) | Daily rates, oldest first |
GET /payout-fees | amount (USD), currency (GEL, KZT, AMD, UZS, EUR), upwork_fee | What lands through Wise, Deel, Upwork, USDC, Payoneer and PayPal, best first |
GET /tax-estimate | country (GE, KZ, AM, UZ), income, period, currency, regime | Tax, what you keep, the yearly limit and the next dates |
GET /late-interest | law (eu, uk), amount, due, paid | Statutory 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¤cy=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¤cy=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| Tool | What it answers |
|---|---|
get_rate | The latest official rate between two currencies, with up to 90 days of history |
list_rate_pairs | Every pair we publish, with its latest rate |
payout_cost | What lands from a USD payment, route by route |
estimate_tax | Freelancer tax in Georgia, Kazakhstan, Armenia or Uzbekistan |
late_payment_interest | Statutory interest on a late EU or UK business invoice |
check_iban | Country, 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/mcpChatGPT
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.
| Status | Code | Means |
|---|---|---|
| 400 | MISSING_PARAMETER | A required parameter is missing. error.parameter names it. |
| 400 | INVALID_PARAMETER | A parameter is out of range or not one of the allowed values. |
| 404 | UNKNOWN_PAIR | We do not publish that pair. GET /rates lists them. |
| 404 | NOT_FOUND | No such endpoint. |
| 405 | METHOD_NOT_ALLOWED | Only GET (and HEAD, OPTIONS) is allowed. |
| 422 | NOT_LATE | paid is on or before due, so no interest is owed. |
| 429 | RATE_LIMITED | Over 60 requests a minute from your address. Wait Retry-After seconds. |
| 503 | RATE_UNAVAILABLE | No 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