canli-mcp / Paper market
How can AI agents trade against each other without real money?
canli-mcp's exchange_run runs a closed paper market with order books, margin and forced selling, where market makers, value traders, momentum traders and your own agents trade made-up money. In this recorded run of 200 steps there were 5,178 trades, and the first asset's worst price move was -26.23% while its true value was cut 10%.
Price: $0 to run. Updated 2026-11-02. Free and MIT-licensed, with no account and no API key. Or run claude mcp add canli -- npx -y canli-mcp in Claude Code.
Ask it
Run a paper market with market makers, value and momentum traders, and a 10% fall in true value halfway.
The agent finds the tool through canli-mcp's find_tool and runs it through run_tool. This is the call:
{
"name": "exchange_run",
"arguments": {
"seed": 7,
"assets": 2,
"personas": {
"market_maker": 2,
"value": 3,
"momentum": 3,
"noise": 4,
"deleverager": 1
},
"steps": 200,
"shocks": [
{
"step": 100,
"kind": "value",
"percent": -10
}
]
}
}What came back
Recorded from canli-mcp 0.16.1 on 2026-11-02, with no API key set. The model read 1,923 characters.
| who | agents | gain | gain per agent | forced sales | trades | about |
|---|---|---|---|---|---|---|
| value | 3 | 126502 | 42167.4 | 0 | 1958 | |
| market_maker | 2 | 3675.55 | 1837.77 | 0 | 4735 | |
| stop_loss | 4 | 7160.53 | 1790.13 | 0 | 223 | |
| noise | 4 | -13069 | -3267.26 | 0 | 695 | |
| momentum | 3 | -23989.1 | -7996.37 | 0 | 742 | |
| deleverager | 1 | -22012.1 | -22012.1 | 0 | 616 | |
| levered_long | 4 | -142188 | -35547.1 | 0 | 1387 |
The result exchange_run sent back, in full form
{
"ref": "r2",
"steps": 200,
"seed": 7,
"trades": 5178,
"tape_hash": "a597c9eb5c85ce8012ffdf03ca6907a707d850256a4c00e70bc2a2487bcff72c",
"assets": [
{
"asset": "ART1",
"last": 42.21,
"true_value": 43.37,
"worst_fall_percent": -26.23,
"worst_fall_from_step": 60,
"worst_fall_to_step": 200,
"steps_to_recover_to_within_5_percent": "not within this run",
"median_spread": 0.16,
"widest_spread": 0.49,
"thinnest_book": 0,
"usual_book": 169
},
{
"asset": "ART2",
"last": 57.12,
"true_value": 56.62,
"worst_fall_percent": -17.87,
"worst_fall_from_step": 103,
"worst_fall_to_step": 138,
"steps_to_recover_to_within_5_percent": "not within this run",
"median_spread": 0.18,
"widest_spread": 0.59,
"thinnest_book": 0,
"usual_book": 178
}
],
"who": {
"columns": [
"who",
"agents",
"gain",
"gain_per_agent",
"forced_sales",
"trades",
"…"
],
"rows": [
[
"value",
3,
126502,
42167.4,
0,
1958,
"…"
],
[
"market_maker",
2,
3675.55,
1837.77,
0,
4735,
"…"
],
[
"stop_loss",
4,
7160.53,
1790.13,
0,
223,
"…"
],
[
"noise",
4,
-13069,
-3267.26,
0,
695,
"…"
],
[
"momentum",
3,
-23989.1,
-7996.37,
0,
742,
"…"
],
[
"deleverager",
1,
-22012.1,
-22012.1,
0,
616,
"…"
],
"…"
]
},
"cascades": {
"forced_share_of_volume_percent": 0,
"accounts_forced_at_the_worst_step": 0,
"longest_chain_in_one_step": 0,
"steps_with_forced_sales": 0
},
"orders_refused_by_the_margin_rule": 10,
"how_to_check": "The tape_hash chains every trade. Rerun with the same seed, personas, shocks and joined agents' orders and the hash must match.",
"limits": [
"Paper only: made-up assets and made-up money. Nothing here represents or can reach a real security, token or currency.",
"A simulated market leaves out most of what moves real ones: no real news, no real funding, no real people. It shows how a set of rules can b…",
"Personas are simple scripts with parameters someone chose. Different parameters give different cascades, so a result here is a question to a…"
]
}Prices, filings and statistics are as the sources published them on that day; run the call again for today's. Nothing here is investment advice.
The tools behind the answer
| Tool | Pack | What it does |
|---|---|---|
exchange_run | backtest | Run a whole paper exchange of scripted traders in one call and report it: for comparing set-ups, such as how much leverage turns a shock into a cascade. A simulation, not a forecast. |
Add canli-mcp
claude mcp add canli -- npx -y canli-mcp{ "mcpServers": { "canli": { "command": "npx", "args": ["-y", "canli-mcp"] } } }https://canlicapital.com/mcp/canliEverything canli-mcp does · How it compares with other finance MCP servers
