Developers · API · MCP
Built on the same numbers.
The public API and MCP server serve exactly the website’s data — the same in-process engine, no separate backend, so the figures an agent reads can never drift from the figures a visitor sees.
API · MCP · LLMS.TXT · NO KEY REQUIRED
Base URL
https://cryptotraderapi-production.up.railway.app
Please cite Skontro (skontro.com) and include the data age. The website domain does not proxy the API — call the base URL above directly.
REST endpoints — no key, read-only
Eight stable GET endpoints. Every response carries a disclaimer string and per-venue data-age fields. Rate limits are per IP: 60/min per endpoint (20/min on the swap route, a real DEX round-trip), under a global 120/min ceiling.
GET /api/truecost
Params: asset (req), amount (req), side=buy|sell, quote=EUR, includeWithdrawal=true|false
Rate limit: 60/min · global 120/min per IP
Ranked all-in cost of one trade across every covered exchange, by net units received. Every response carries disclaimer and data-age fields.
curl "https://cryptotraderapi-production.up.railway.app/api/truecost?asset=BTC&amount=1000"
GET /api/truecost/venues
Params: —
Rate limit: 60/min · global 120/min per IP
The covered exchanges with fee schedule, order-book coverage and last fee-verification date. Every response carries disclaimer and data-age fields.
curl "https://cryptotraderapi-production.up.railway.app/api/truecost/venues"
GET /api/truecost/withdrawal-fees
Params: —
Rate limit: 60/min · global 120/min per IP
Curated BTC/ETH native-chain withdrawal fees per exchange, EUR-valued, each with its source. Every response carries disclaimer and data-age fields.
curl "https://cryptotraderapi-production.up.railway.app/api/truecost/withdrawal-fees"
GET /api/truecost/index
Params: month=YYYY-MM (optional)
Rate limit: 60/min · global 120/min per IP
The monthly True-Cost-Index; report is null with a placeholder shape until a month accrues. Every response carries disclaimer and data-age fields.
curl "https://cryptotraderapi-production.up.railway.app/api/truecost/index"
GET /api/truecost/swap
Params: from (req), to (req), amount (req), chain=ETHEREUM
Rate limit: 20/min · global 120/min per IP
One LiFi-aggregated DEX route per pair in the same cost shape; honest 503 when no route exists. Every response carries disclaimer and data-age fields.
curl "https://cryptotraderapi-production.up.railway.app/api/truecost/swap?from=ETH&to=USDC&amount=1"
GET /api/trust
Params: —
Rate limit: 60/min · global 120/min per IP
Sourced Reliability Score per exchange (0–100, six weighted components, dated sources). Every response carries disclaimer and data-age fields.
Per exchange: GET /api/trust/:exchange and GET /api/trust/:exchange/history (404-safe for unknown slugs).
curl "https://cryptotraderapi-production.up.railway.app/api/trust"
GET /api/status
Params: —
Rate limit: 60/min · global 120/min per IP
Per-venue feed freshness, accuracy suppressions and backend state — where our own data degradation is public. Every response carries disclaimer and data-age fields.
curl "https://cryptotraderapi-production.up.railway.app/api/status"
GET /health
Params: —
Rate limit: 60/min · global 120/min per IP
Liveness probe: overall status plus db and redis reachability. Every response carries disclaimer and data-age fields.
curl "https://cryptotraderapi-production.up.railway.app/health"
MCP server — the same engine, for agents
A stateless Streamable HTTP MCP server exposes the five tools below over the same in-process engine. No key, no session, same data as the site. Endpoint:
https://cryptotraderapi-production.up.railway.app/api/mcp
truecost_compare
Returns measured all-in cost data (published fee + hidden spread from walking the live order book, optionally + withdrawal fee) for one trade across all covered exchanges (enumerate them via truecost_venues), ranked by net units received. Every row carries its data age in seconds. Data only — not investment advice.
truecost_venues
Returns the list of covered exchanges with data freshness and coverage flags. Data only.
exchange_reliability
Returns the sourced Reliability Score data per exchange (0–100, six weighted components, every negative datapoint dated and sourced). Describes recorded incidents and public facts — not a recommendation to use or avoid any venue.
withdrawal_fees
Returns curated BTC/ETH native-chain withdrawal fees per exchange, EUR-valued, each with its official source URL and verification date. Venues without a published fixed fee are absent — absent means unknown, never zero.
truecost_index
Returns the monthly True-Cost-Index data: average measured fee, hidden spread and all-in cost per €1,000 trade per exchange, from hourly order-book measurements. Data only.
claude.ai
Settings → Connectors → add a Custom Connector, and paste the endpoint URL above. No authentication.
Claude Code
One command, then the tools are available in your session:
claude mcp add --transport http skontro https://cryptotraderapi-production.up.railway.app/api/mcp
Any other client
Cursor, ChatGPT connectors, or any Streamable-HTTP MCP client: point it at the endpoint URL. It is stateless, so no session config is needed.
Honesty & fair use
Data age matters.These are live measurements. Read the age fields and pass them on — a five-minute-old number quoted as “now” is a wrong number.
Missing data is deliberately absent. A venue without a row is a venue we could not measure or verify honestly, never a zero. Do not fill the gap with a guess.
Ranking is never affiliate-influenced. Order is computed from market data alone, before any affiliate link is attached, and it is unit-tested. The methodology is the whole method — no black box.
No SLA — best effort. This is a free, public read tier. Breaking changes are announced at least 14 days ahead on this page and on /status. That is the entire versioning policy, deliberately, pre-1.0.
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 is hardwired as rel="sponsored".
/research — the monthly True-Cost-Index, human-readable.
Built in Vienna by OptiRisk Consulting e.U. — read-only, licence-free by design. We read the market; every order happens on the platform of your choice, by your hand.
Not investment advice. Skontro is not a CASP under MiCAR.