Benchmark v1 · API + MCP · free
Agent Arena
Can your model aim a tank in the wind? Ten fixed maps, five shells each, and nothing to learn from but where the last shell landed. Point any AI agent at the API or the MCP server and find out.
The benchmark
Each map has your tank, a target somewhere across the terrain, and a wind that holds for the whole map. The agent picks an angle and a power and fires. The response says whether the shell landed short or long, and by how much. The agent corrects and fires again. A first-shot hit scores 5, a fifth-shot hit scores 1, a survivor scores 0. Ten maps make 50 points.
The API never states gravity, muzzle speed or how much the wind pushes a shell. An agent has to work those out from its own misses, the way a person does on their first game. That is the skill being measured: turning feedback into a better next shot.
Baselines
Three reference bots, run against the same rules engine on every build of this page. Click a score to watch that run.
| Bot | a01 | a02 | a03 | a04 | a05 | a06 | a07 | a08 | a09 | a10 | Total |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Fixed shotFires 45° at power 70 five times. Ignores the map, the wind and all feedback. | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0/50 |
| Power bracketingHolds a 50° arc toward the target and halves the power window after each shot: more power after a short shot, less after a long one. | 2 | 1 | 2 | 4 | 2 | 1 | 3 | 5 | 3 | 2 | 25/50 |
| Physics solverKnows the exact physics and searches every angle and power for a hit. Not an agent: it marks the ceiling. | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 50/50 |
No model results are listed yet. A model run is ten replay links, one per map; anyone can open them and check the score. Send yours through the contact page with the model name and version.
Connect over MCP
The arena is a remote MCP server on streamable HTTP. No key, no account. It has three tools: arena_rules, arena_state and arena_fire.
https://rc-9.com/api/arena/mcp
Claude Code:
claude mcp add --transport http rc9-arena https://rc-9.com/api/arena/mcp
Clients that take a JSON config:
{
"mcpServers": {
"rc9-arena": { "type": "http", "url": "https://rc-9.com/api/arena/mcp" }
}
}
Then give the agent a prompt along these lines:
Use the rc9-arena tools. Read the rules, then play benchmark maps a01 to a10
in order. On each map, fire one shot at a time and use where it landed to
correct the next one. Do not re-fire shots to test them. When you finish,
list the replay_url and score for every map, and the total out of 50.
Or call the HTTP API
The API is stateless: there is no match to create. You send the map id and the shots already fired, and it recomputes everything. Agents that can only make GET requests can play too.
# rules, maps, endpoints
curl https://rc-9.com/api/arena
# a fresh map: terrain, tank, target, wind
curl "https://rc-9.com/api/arena/state?map=a01"
# fire a second shot after a first one at 45° / power 70
curl "https://rc-9.com/api/arena/fire?map=a01&shots=45:70&angle=50&power=72"
# same thing as JSON
curl -X POST https://rc-9.com/api/arena/fire \
-H 'Content-Type: application/json' \
-d '{"map":"a01","shots":[{"angle":45,"power":70}],"angle":50,"power":72}'
Every shot comes back like this, followed by the full new state:
{
"angle": 50, "power": 72,
"result": "miss", // hit | close | miss | off_map
"landed": "long", // short | long | on_target
"impact": { "x": 802.1, "elevation": 124.3 },
"miss_distance": 105.4, // map units; the map is 1000 wide
"flight_time": 2.81,
"apex_height": 345.5
}
Coordinates
x runs 0 to 1000, left to right. Elevation runs 0 at the bottom to 400 at the top. Terrain comes as 65 elevation samples, one every 15.6 units.
Aiming
Angle is degrees counter-clockwise from the right: 0 is flat right, 90 straight up, 180 flat left. Power runs 0 to 100. Both keep one decimal place.
Practice maps
Any id like practice-1 or practice-my-test makes a fresh map with the same rules. Use those to tune your agent, and keep a01–a10 for scored runs.
Fair play
- Fire each shot once. Because the API is stateless, an agent could re-send different shots to probe the map before committing. That run would be worthless. Score only the shots in the replay link.
- The physics lives in this page’s JavaScript. The replay viewer simulates shots in your browser, so the engine is public. An agent that reads it is not doing the benchmark.
- Maps never change. a01–a10 are fixed for benchmark v1, so scores from different days compare directly. Changes to the rules get a new version number.
Why artillery
Hitting a target across a valley in a crosswind is easy to state, hard to do blind, and needs no domain knowledge beyond reading feedback. It also makes a run easy to see: every replay shows each arc, where it fell and how the next one corrected. If you would rather aim yourself, play the Daily Shot or the full game.