Add one MCP server. That is the whole setup.
Dantes is a Streamable HTTP MCP endpoint. Any client that speaks it can connect — and there is nothing to sign up for. Discovery, manifests and evidence are free and anonymous, most capabilities run free and anonymous, and the priced ones ask your agent for USDC at the moment it invokes them.
https://dantes.ai/exchange/mcp
Open · no authentication required
Three clients, one line each.
Copy, paste, start a session. Nothing to fill in.
claude mcp add --transport http dantes-exchange https://dantes.ai/exchange/mcp
# then, in a session:
# "What investing capabilities does Dantes have?"
# ~/.codex/config.toml
[mcp_servers.dantes-exchange]
url = "https://dantes.ai/exchange/mcp"
{
"mcpServers": {
"dantes-exchange": {
"type": "http",
"url": "https://dantes.ai/exchange/mcp"
}
}
}
search_capabilities— find a specialist by describing the job, not by knowing an id. Free.get_capability— the full manifest: contract, support envelope, limitations, price, access class. Free.get_capability_evidence— semantic and historical economic evidence, kept separate. Free.list_datasets— the hosted universe and its enumerable membership, so candidates can be originated rather than recalled. Free.invoke_capability— run it. Free capabilities execute immediately; priced ones return the exact amount, asset, network and recipient first.
Three access classes, and only one of them involves us.
Every capability states its class in its own manifest, so your agent can plan before it spends a
call finding out. get_capability returns it as
access_on_this_endpoint.
Most of the catalog
Deterministic capabilities that execute on the Dantes host with no third-party cost. Call them anonymously. No account, no key, no payment — including the universe scanners.
6 priced capabilities
Still no account. Invoke one and the endpoint answers with an x402 payment request — exact amount, USDC, Base, recipient — and runs it once your payment settles. Your wallet stays yours.
- trendline-pullback-locator · $1.00
- zigzag-pullback-screener · $2.00
- coil-detector · $0.25
- fresh-coil-scanner · $2.00
- long-term-support-scanner · $2.00
- atr-regime-classifier · $2.00
A few, for a reason
Where a single call spends real money on a third-party service — the fine-tuned Equity Analyst runs on a deployment billing by the hour — running it needs a token. Reading its contract and its evidence never does.
Anonymous limits. Dantes runs on one small host, so anonymous callers share a deliberate budget: 60 tool calls and 12 invocations per minute per client, 4 of which may be universe scans. Hitting one returns a structured refusal naming the limit and when to retry; nothing executes and nothing is charged. A token raises them.
Optional, and only for what needs it.
You do not need one to use Dantes. A token exists for four things: higher rate limits, capabilities whose execution costs real third-party money, private capabilities and datasets, and attributed testing during a partnership. Add it as one HTTP header.
claude mcp add --transport http dantes-exchange https://dantes.ai/exchange/mcp \
--header "Authorization: Bearer <your-token>"
[mcp_servers.dantes-exchange]
url = "https://dantes.ai/exchange/mcp"
http_headers = { "Authorization" = "Bearer <your-token>" }
{
"mcpServers": {
"dantes-exchange": {
"type": "http",
"url": "https://dantes.ai/exchange/mcp",
"headers": { "Authorization": "Bearer <your-token>" }
}
}
}
A token that is present but wrong is refused rather than quietly downgraded, so a stale credential tells you so instead of silently giving you less. Remove the header entirely and you connect anonymously with the full public surface.
This form is not the door. It is the handshake.
You do not need to fill this in to try Dantes — the public capabilities are already open to you. Use it when you want something the public surface does not give you: higher rate limits for a real workload, a capability whose execution we pay for, a private capability or dataset, attributed testing during a trial, or a commercial conversation.
It reaches a person at Dantes directly. It is also the right route if something fails — see Contact.
Check the connection yourself.
curl -s https://dantes.ai/exchange/health | jq
curl -s -X POST https://dantes.ai/exchange/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{
"protocolVersion":"2025-06-18","capabilities":{},
"clientInfo":{"name":"curl","version":"1"}}}'
401 unauthorized
You sent an Authorization header naming a token Dantes does not recognise, or one that has been revoked. This endpoint does NOT require a token for public capabilities: remove the header entirely and you will connect anonymously with the full public surface. Some MCP clients drop custom headers on redirect, which produces the same symptom.
authentication_required on one capability
That capability is public to read and token-gated to run, because each call spends real money on a third-party service. Its manifest and evidence stay free. Ask for access below if you need to run it — nothing was executed and nothing was charged.
A payment request instead of a result
You invoked a priced capability. The response is an x402 challenge naming the exact amount, USDC as the asset, Base as the network and the recipient address; the capability does not execute until a payment is verified. An x402-capable client pays and retries automatically. Buyer-side spend authority lives in your own wallet, never with Dantes.
rate_limited or server_busy
Anonymous protection, not a fault. Anonymous callers get 60 tool calls and 12 invocations per minute, 4 of them universe scans, and 1 at a time. Dantes runs on one small 2-core host and a universe scan is several seconds of real CPU, so anonymous scans are queued by refusal rather than piled up. Nothing executes and nothing is charged when you hit one; the refusal names the limit and when to retry. A token raises them.
A capability refuses instead of answering
That is the design. Thin inputs, out-of-envelope requests and unavailable dependencies return a named refusal with the reason rather than a guess. Read the refusal — it says exactly which condition failed.
The scan says the data is behind my request
The hosted universe is a dated snapshot and reports both the date you asked for and the newest bar it actually has. That warning is correct behaviour, not a bug. The current snapshot state is shown at the top of this page and on every capability listing.
If something fails, tell us.
Dantes is a small alpha and a person reads every message. Use the form above — it is the same route for partnership enquiries, bug reports and questions, and it reaches Dantes directly. Include the exact response you got: refusals are deliberate and the text names the condition that failed.