{"serverId":"mcp-registry/com.botrecipe/loop","tools":[{"name":"check_step","fixed":{"name":"check_step","description":"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.","inputSchema":{"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.","type":"string"},"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)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: args. Change to number/boolean/array where that's what you accept.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":357,"tokensAfter":361},{"name":"loop_status","fixed":{"name":"loop_status","description":"Show a run's loops so far, whether it is halted, and its last 10 steps.","inputSchema":{"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)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":99,"tokensAfter":99}],"toolsChanged":2,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}