Developers · API · MCP
Built on the same numbers.
The public API and MCP server serve the website’s numbers — one engine, no drift.
Just the live table on your page? The embed widget is one script tag.
API · MCP · LLMS.TXT · NO KEY REQUIRED
Base URL
https://api.skontro.com
Cite Skontro (skontro.com) and include the data age. Call this base URL directly — the website does not proxy it.
REST endpoints — no key, read-only
Eight GET endpoints. Every response carries a disclaimer string and per-exchange data-age fields.
Rate limits per IP: 60/min per endpoint (swap 20/min), global 120/min.
GET /api/truecost
Params: asset (req), amount (req), side=buy|sell, quote=EUR|USD (USD = each exchange’s own dollar rail, USD or USDT, see `denomination`), includeWithdrawal=true|false
Ranked all-in cost of one trade across every covered exchange, by net units received.
curl "https://api.skontro.com/api/truecost?asset=BTC&amount=1000"
GET /api/truecost/venues
The covered exchanges: fee schedule, order-book coverage, last fee-verification date.
GET /api/truecost/withdrawal-fees
Curated withdrawal fees per exchange (BTC/ETH native chain, USDT/USDC per network), each with its source.
GET /api/truecost/index
Params: month=YYYY-MM (optional)
The monthly True-Cost-Index; report is null until a month accrues.
curl "https://api.skontro.com/api/truecost/index"
GET /api/truecost/swap
Params: from (req), to (req), amount (req), chain=ETHEREUM
Rate limit: 20/min
One LiFi-aggregated DEX route per pair in the same cost shape; honest 503 when no route exists.
curl "https://api.skontro.com/api/truecost/swap?from=ETH&to=USDC&amount=1"
GET /api/trust
Sourced Reliability Score per exchange (0–100, six weighted components, dated sources).
Per exchange: GET /api/trust/:exchange and GET /api/trust/:exchange/history (404-safe).
GET /api/status
Per-exchange feed freshness, accuracy suppressions and backend state.
GET /health
Liveness probe: overall status plus db and redis reachability.
MCP server — the same engine, for agents
Stateless Streamable HTTP, five tools, no key, no session. Endpoint:
https://api.skontro.com/api/mcp
- truecost_compareall-in cost of one trade across covered exchanges, ranked by net units
- truecost_venuescovered exchanges with freshness and coverage flags
- exchange_reliabilitysourced Reliability Score per exchange, 0–100
- withdrawal_feescurated withdrawal fees per exchange and network, sourced and dated
- truecost_indexmonthly True-Cost-Index per exchange
claude.ai
Settings → Connectors → Custom Connector → paste the endpoint URL. No authentication.
Claude Code
claude mcp add --transport http skontro https://api.skontro.com/api/mcp
Any other client
Cursor, ChatGPT connectors or any Streamable-HTTP client: point it at the endpoint — stateless, no session config.
Sources & method
- Data age matters — read the age fields and pass them on; a five-minute-old number quoted as “now” is a wrong number.
- A missing row is deliberate and carries its reason in
omitted:no_dollar_orderbook/fee_schedule_unverifiedonquote=USD,no_eur_orderbook_dataonquote=EUR. Never a zero, never a guess. quote=EURwalks each exchange’s EUR book;quote=USDits own dollar rail (fiat USD where it exists, else USDT). Each row carriesdenomination; dollar rows usefeeQuote/spreadQuote/totalCostQuote/effectiveUnitPriceQuote, never*Eurfields. USD and USDT rank as separate groups. Nothing is converted; any other quote returns 400.- Ranking is computed from market data alone, before any affiliate link is attached, and unit-tested — the methodology is the whole method.
- No SLA, best effort. Breaking changes are announced 14 days ahead here and on /status.
Artifacts
/openapi.json — OpenAPI 3.1 for the eight endpoints.
/llms.txt — site + API description for AI agents.
/embed — the live top-5 table for your page, attribution rel="sponsored".
/research — the monthly True-Cost-Index, human-readable.
Built in Vienna by OptiRisk Consulting e.U. — read-only, licence-free by design.
Not investment advice. Skontro is not a CASP under MiCAR.