Catch AI agent loops: halt runs that repeat the same failing step or tool call.
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.
Call AFTER each tool call or agent step with what you just did and whether it failed. Loop Breaker fingerprints the call (tool + normalized args + error) and returns verdict ok, loop_detected or halted. Pro: on a loop, halt=true; stop the run, do not retry, and tell your user what repeated. Free watch-only: never halts, returns would_halt and logs it for the weekly report.
The tool or step name you just ran, e.g. "browser.click" or "git push".
Any stable id for this agent run, e.g. "nightly-sync-2026-10-15". Use the same id for every step of the run (and its sub-agents).
The arguments you passed (object or string). Volatile values like timestamps and ids are normalized away.
The error message if the step failed. Omit or empty if it succeeded.
Same call this many times in a row (even if it succeeds) = loop. Default 5 (min 3, max 50).
Same failing call this many times = loop. Default 3 (min 2, max 20).
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Call AFTER each tool call or agent step with what you just did and whether it failed. Loop Breaker fingerprints the call (tool + normalized args + error) and returns verdict ok, loop_detected or halted. Pro: on a loop, halt=true; stop the run, do not retry, and tell your user what repeated. Free watch-only: never halts, returns would_halt and logs it for the weekly report.
| Argument | Type | Description |
|---|---|---|
| args | any | The arguments you passed (object or string). Volatile values like timestamps and ids are normalized away. |
| tool* | string | The tool or step name you just ran, e.g. "browser.click" or "git push". |
| error | string | The error message if the step failed. Omit or empty if it succeeded. |
| run_id* | string | Any stable id for this agent run, e.g. "nightly-sync-2026-10-15". Use the same id for every step of the run (and its sub-agents). |
| max_repeats | integer | Same call this many times in a row (even if it succeeds) = loop. Default 5 (min 3, max 50). |
| max_failures | integer | Same failing call this many times = loop. Default 3 (min 2, max 20). |
{
"type": "object",
"required": [
"run_id",
"tool"
],
"properties": {
"args": {
"description": "The arguments you passed (object or string). Volatile values like timestamps and ids are normalized away."
},
"tool": {
"type": "string",
"description": "The tool or step name you just ran, e.g. \"browser.click\" or \"git push\"."
},
"error": {
"type": "string",
"description": "The error message if the step failed. Omit or empty if it succeeded."
},
"run_id": {
"type": "string",
"description": "Any stable id for this agent run, e.g. \"nightly-sync-2026-10-15\". Use the same id for every step of the run (and its sub-agents)."
},
"max_repeats": {
"type": "integer",
"description": "Same call this many times in a row (even if it succeeds) = loop. Default 5 (min 3, max 50)."
},
"max_failures": {
"type": "integer",
"description": "Same failing call this many times = loop. Default 3 (min 2, max 20)."
}
}
}Show a run's loops so far, whether it is halted, and its last 10 steps.
| Argument | Type | Description |
|---|---|---|
| run_id* | string | Any stable id for this agent run, e.g. "nightly-sync-2026-10-15". Use the same id for every step of the run (and its sub-agents). |
{
"type": "object",
"required": [
"run_id"
],
"properties": {
"run_id": {
"type": "string",
"description": "Any stable id for this agent run, e.g. \"nightly-sync-2026-10-15\". Use the same id for every step of the run (and its sub-agents)."
}
}
}Show today's usage for your key or IP and the $49/month All Access upgrade link (cloudforbots.com/offer). Free tier: 500 calls/day. Not metered.
No arguments.
{
"type": "object",
"properties": {}
}Draft a plain-English report of the last 7 days for your key (or IP): runs, loops caught, wasted repeat steps, and the worst offenders. Read-only; sends nothing. Show it to your user.
No arguments.
{
"type": "object",
"properties": {}
}