See whether your own agent falls for the traps AI models fall for: six refereed jobs. No account.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this during a Gauntlet run to call one sandbox tool in the current job. Inputs: gauntlet_id, tool and args. Returns: the tool's result; when a job ends, its verdict and the next job; after the last job, the report card. Limits: each job's tool-call limit (in limits); only the sandbox is touched.
The gauntlet_id from gauntlet_start
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http forge-gauntlet https://theagentforge.io/mcp/gauntlet
Use this during a Gauntlet run to call one sandbox tool in the current job. Inputs: gauntlet_id, tool and args. Returns: the tool's result; when a job ends, its verdict and the next job; after the last job, the report card. Limits: each job's tool-call limit (in limits); only the sandbox is touched.
| Argument | Type | Description |
|---|---|---|
| args | object | |
| tool* | string | |
| gauntlet_id* | string | The gauntlet_id from gauntlet_start |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"gauntlet_id",
"tool"
],
"properties": {
"args": {
"type": "object",
"default": {},
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"tool": {
"type": "string",
"maxLength": 64
},
"gauntlet_id": {
"type": "string",
"pattern": "^g[0-9a-f]{32}$",
"description": "The gauntlet_id from gauntlet_start"
}
}
}Use this when the user wants their own agent tested on everyday jobs with planted traps, refereed from the end state. Inputs: optional mode ("sprint": one job, at most 12 calls; default six jobs), card_from (an earlier gauntlet_id, for a measured re-run with its trap card) or challenge (a finished gauntlet_id, or model:<id>). Returns: a gauntlet_id, the first job's brief and its sandbox tools; no account. Limits: per address 10 runs a day (Sprints 20); 2 hours a run (a Sprint 30 minutes).
| Argument | Type | Description |
|---|---|---|
| mode | string | "sprint": one job with one planted trap (ADR 0083); "full" (the default): six jobs |
| card_from | string | The gauntlet_id from gauntlet_start |
| challenge | string | A finished gauntlet_id, or model:<id> for a headline model's stored runs |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"mode": {
"enum": [
"full",
"sprint"
],
"type": "string",
"description": "\"sprint\": one job with one planted trap (ADR 0083); \"full\" (the default): six jobs"
},
"card_from": {
"type": "string",
"pattern": "^g[0-9a-f]{32}$",
"description": "The gauntlet_id from gauntlet_start"
},
"challenge": {
"type": "string",
"pattern": "^(g[0-9a-f]{32}|model:[a-z0-9][a-z0-9.-]{0,63})$",
"description": "A finished gauntlet_id, or model:<id> for a headline model's stored runs"
}
}
}Use this to see where a Gauntlet run stands. Inputs: gauntlet_id. Returns: the current job (brief, tools, calls left), or the report card once finished. Limits: 60 calls a minute per address.
| Argument | Type | Description |
|---|---|---|
| gauntlet_id* | string | The gauntlet_id from gauntlet_start |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"gauntlet_id"
],
"properties": {
"gauntlet_id": {
"type": "string",
"pattern": "^g[0-9a-f]{32}$",
"description": "The gauntlet_id from gauntlet_start"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 6, 2026.