Developers & AI resources
Monivo publishes a small set of free, unauthenticated, read-only endpoints so that developers, researchers and AI agents can describe Monivo accurately, retrieve current swap estimates and cite our rate research. Everything below is CORS-enabled. Stable documents support conditional requests with ETag; live quote and Rate Index responses use short cache windows. There is no API key, quota registration or cost.
Endpoints
/api/public/facts.jsonStructured facts about Monivo: identity, mechanism, fee model, verification scope, coverage, endpoints.
application/json
/api/public/knowledge.txtLong-form plain-text description of Monivo. Accepts ?lang= for each published locale.
text/plain
/api/public/quote.jsonAnonymous read-only swap pricing: live provider estimates for a pair and amount, ranked by expected delivered output. No account, no key. Read-only — order creation is not exposed here.
application/json
/api/public/rate-index.jsonMonivo Crypto Swap Rate Index — sampled provider rate-dispersion dataset. Free to reuse with attribution.
application/json
/api/public/rate-index/badge.svgEmbeddable SVG badge showing the current Rate Index headline figure.
image/svg+xml
/api/public/openapi.jsonOpenAPI 3.1 description of Monivo's public read-only endpoints.
application/json
/api/public/webmcp.jsonAgent surface document: the browser WebMCP tools Monivo registers on the page, the authenticated server MCP, and live Rate Index figures read from the Rate Index endpoint at request time.
application/json
A worked request
Ask every connected provider that can route BTC to ETH for the same amount, in one sweep, and read the ranked answers. Run it here to see the endpoint's complete current response; this read-only request cannot create an order.
curl --get 'https://monivo.io/api/public/quote.json' \
--data-urlencode 'from=BTC' \
--data-urlencode 'to=ETH' \
--data-urlencode 'amount=0.1' \
--data-urlencode 'rate=floating'GET /api/public/quote.json?from=BTC&to=ETH&amount=0.1&rate=floatingJSON öffnen Führen Sie die Anfrage aus, um aktuelle Anbieter-Schätzungen abzurufen. Es wird keine Bestellung erstellt.from and to accept a symbol or a catalog id; use the id when an asset exists on several chains, because the symbol alone does not identify a network. Add &rate=fixed for a fixed-rate estimate. Omitting amount substitutes a representative amount and sets request.amountWasDefaulted, because a swap quoted at an amount too small for the network fee is not a meaningful price.
Reading a quote response
| Field | Type | Meaning |
|---|---|---|
| status | "complete" | "partial" | "no_quotes" | Complete means every connected provider that can route the pair answered. Partial means at least one was unavailable or filtered — say so when you report the figure. |
| best.toAmount | number | Expected delivered output of the top-ranked route, in the destination asset. An estimate, not a reservation. |
| coverage.* | integers + boolean | Providers attempted, quoted, unavailable and filtered. This is the completeness of the sweep, not a claim about the wider market. |
| providersFiltered / filteredReason | array + string | Routes discarded because the implied rate was far off mid-market, typically when a fixed network fee consumes a small amount. |
| minViableAmount | number | undefined | Present only when nothing survived filtering: the approximate smallest input that would still produce a sane quote. |
| fees.monivoFee | number | Always 0 — Monivo adds no separate platform fee. Provider spread and network fees are already reflected in the output amount. |
| timing.maxAgeSeconds / rateHeld | number / boolean | Estimates go stale after 15 seconds and rateHeld is always false; reading this endpoint reserves nothing, including for fixed-rate requests. |
| provenance | object | How the figure was produced, plus the facts document and citation string to reproduce it. |
Rate Index fields
The Rate Index endpoint accepts ?window=7d or ?window=30d. If a window cannot be read in full it returns 503 with an explicit unavailable state rather than statistics for a partial period — an absent figure is a deliberate answer, not an outage to retry around.
| Field | Type | Meaning |
|---|---|---|
| window | "7d" | "30d" | Fixed UTC measurement window the snapshot covers. |
| snapshotId / methodVersion | string | Identity of the published snapshot and of the methodology revision that produced it. Cite both — figures move as new observations land. |
| periodStart / periodEnd / generatedAt | ISO 8601 | Window boundaries and the time the snapshot was computed. |
| eligibility | object | The fixed, versioned asset basket and the rule that both legs of a pair must be in it. |
| summary.comparableQuoteSets | integer | Number of recorded quote sets where more than one provider answered the same request — the denominator behind every spread figure. |
| summary.medianSpreadPercent | number | null | Median gap between the best and worst recorded payout within a quote set, in percent. Null when the window produced nothing comparable. |
| pairs[] | array | Per-pair median and widest recorded spread, with its own quote-set count. |
| limitations | string | Read this before quoting a number. Observations carry no network identity, no source label and no provider response time, so these are recorded quote-set statistics — not verified same-instant comparisons, and not executed savings. |
Assets, networks and deposit addresses
Monivo's catalog covers 1,000+ assets across 40+ blockchain networks through its connected providers. An asset that exists on several chains is a separate catalog entry per chain, and both the request and the response name the network for each leg — an integration that matches on ticker alone will eventually route USDT to the wrong chain. The authoritative live list is /currencies, not a figure cached from this page.
Deposit addresses are issued by the third-party provider that wins the route, never by Monivo, and that provider holds the deposited funds until settlement completes. Monivo is non-custodial and holds no customer balances at any point. The public read endpoints never return a deposit address: an address only exists once an order is created.
What an agent can and cannot do
| Capability | Access | Notes |
|---|---|---|
| Read what Monivo is and what it does not do | Anonymous | Facts, knowledge and llms documents share one audited claim set. |
| Price a swap (estimate) | Anonymous | Ranked provider estimates. No rate is held, including for fixed-rate requests. |
| See how complete an estimate is | Anonymous | Every quote response states providers attempted, quoted, unavailable and filtered. |
| Cite rate-dispersion research | Anonymous | A sample of quotes Monivo received, not a census. Returns an explicit unavailable state rather than a partial period. |
| Create a swap order | OAuth (MCP) + human confirmation | An agent must be signed in as a Monivo user and a person must confirm. Never unattended. |
| Read another customer's order or personal data | Not available | No endpoint exposes it. |
Monivo cannot promise that any particular assistant supports these surfaces, or that it will cite Monivo. What is promised is that the documents above exist at stable URLs, describe the same facts, and say plainly when data is missing.
Discovery
An RFC 9727 API catalog is published at /.well-known/api-catalog as an application/linkset+json document, and an OpenAPI 3.1 description at /api/public/openapi.json. Crawler guidance lives in /robots.txt and /llms.txt. This page carries the same discovery links as HTTP Link headers, so a client can find them with a HEAD request and without parsing HTML.
Those machine documents are served noindex, follow on purpose: they restate the claim set written out in prose on this page, so this page is the single indexable description of the cluster and they remain freely fetchable by anything that wants the raw bytes.
Swapping programmatically (MCP)
Order creation is not part of the public read API. It is exposed through Monivo's Model Context Protocol server at https://monivo.io/api/public/mcp, which requires OAuth — an agent must be signed in as a Monivo user. Authorisation server metadata is advertised at /.well-known/oauth-protected-resource. Creating an order always requires explicit confirmation from the human operator; agents must never place a swap unattended.
Citing Monivo
The Crypto Swap Rate Index is first-party data, free to reuse with attribution to Monivo and a link to the research page. It measures dispersion across quotes Monivo actually received — it is a sample, not a census of the market. The facts endpoint carries a provenance block stating where each figure came from and how far it can be trusted; please read it before repeating a number.
Frequently asked questions
- Do I need an API key to read Monivo quotes?
- No. Every endpoint documented on this page is unauthenticated, read-only, CORS-enabled and free to call. Authentication is only required for the MCP server, which is the only surface that can create an order, and which additionally requires explicit human confirmation.
- Is a Monivo quote a price guarantee?
- No. The public quote endpoint returns estimates and sets rateHeld to false, including when a fixed rate type is requested. No rate is reserved by reading the endpoint. A rate is only held once an order is created through the normal order flow, and then only under the executing provider's own deposit-window terms.
- Does Monivo compare the whole market?
- No. Monivo asks the third-party providers connected to it at that moment for the same pair, amount and rate type, and ranks the answers by expected delivered output. Every quote response carries a coverage block stating how many providers were attempted, quoted, unavailable and filtered, so a consumer can tell a complete sweep from a partial one.
- Which blockchain networks are covered?
- Monivo's catalog spans 40+ distinct blockchain networks and 1,000+ assets across its connected providers. Assets that exist on several chains are separate catalog entries with their own network identity, and every quote request and response names the network for both legs. The authoritative live list is published at https://monivo.io/currencies.
- Who issues the deposit address, and who holds the funds?
- The third-party provider that wins the route issues the deposit address and holds the deposited funds for the duration of settlement. Monivo is non-custodial and never takes custody at any point. Any integration that describes Monivo as executing the swap or receiving the deposit is describing it incorrectly.
- Can an AI agent place a swap on my behalf?
- Only through Monivo's OAuth-protected MCP server, signed in as a Monivo user, and only with explicit confirmation from the human operator for each order. There is no unattended order path, and no public endpoint exposes another customer's order or personal data.
- May I cite the Crypto Swap Rate Index?
- Yes, free of charge, with attribution to Monivo and a link to the research page. It is a sample of the quotes Monivo actually received rather than a census of the market, and it returns an explicit unavailable state instead of publishing a partial period. Read the provenance block before repeating any figure.
Claim set last reviewed by a human on . Questions: support@monivo.io.