{"bazaar":{"privacyNote":"Input is processed by a third-party inference provider and is not stored or used for training (data-sharing OFF).","routes":{"loop-review":{"bodyType":"json","description":"Critique an AI agent loop spec (and optional execution transcript). Returns a strict-JSON health score, verdict, evidence-backed findings with verbatim quotes, and the single highest-leverage fix. Request body capped at 256 KB.","input":{"goal":"Fix all lint errors in the repository","loop":{"max_turns":50,"prompt":"You are a coding agent. Read files, apply fixes, and continue until done.","stop":"","tools":["read_file","write_file","grep"]},"transcript_text":"turn 1: grep 'TODO'\nturn 3: grep 'TODO' (same args as turn 1)\nturn 5: grep 'TODO' (same args as turn 1)"},"inputSchema":{"additionalProperties":false,"properties":{"goal":{"description":"What the loop should accomplish (required)","type":"string"},"loop":{"description":"Loop specification (required; loop or transcript — loop recommended)","properties":{"max_turns":{"description":"Optional maximum turns","minimum":1,"type":"number"},"prompt":{"description":"Driver/system prompt","type":"string"},"stop":{"description":"Stop condition, if any","type":"string"},"tools":{"description":"Tool names available to the agent","items":{"type":"string"},"type":"array"}},"required":["prompt"],"type":"object"},"transcript_text":{"description":"Optional executed turns; unlocks retry-loop and wasted-turns findings (truncated head+tail if oversized)","type":"string"}},"required":["goal","loop"],"type":"object"},"method":"POST","output":{"example":{"estimated_waste_pct":35,"findings":[{"confidence":1.0,"detail":"Loop has no stop condition; the agent may run until max_turns is exhausted.","fix":"Add an explicit stop condition, e.g. 'when all lint errors are fixed and tests pass'.","kind":"no-stop-condition","severity":"high","where":{"index":0,"quote":"stop","type":"field"}},{"confidence":1.0,"detail":"Same tool with near-identical arguments repeated at least three times.","fix":"Track attempted grep patterns and stop after two identical calls with no new results.","kind":"retry-loop","severity":"med","where":{"index":5,"quote":"grep 'TODO' (same args as turn 1)","type":"turn"}}],"fixed_loop_snippet":"\"stop\": \"when goal is achieved or after 50 turns\", \"max_turns\": 30","meta":{"degraded":false,"llm_calls":1},"score":42,"top_fix":"Add an explicit stop condition to loop.stop","verdict":"wasteful"},"schema":{"properties":{"estimated_waste_pct":{"description":"Derived from confirmed findings, not guessed","maximum":80,"minimum":0,"type":"integer"},"findings":{"items":{"properties":{"confidence":{"description":"0–1; code-detected findings use 1.0","maximum":1,"minimum":0,"type":"number"},"detail":{"description":"What is wrong","type":"string"},"fix":{"description":"Concrete actionable change","type":"string"},"kind":{"enum":["wasted-turns","missing-verify","no-stop-condition","context-bloat","retry-loop","tool-misuse","unbounded-cost"],"type":"string"},"severity":{"enum":["high","med","low"],"type":"string"},"where":{"properties":{"index":{"minimum":0,"type":"integer"},"quote":{"description":"Verbatim substring of the input","type":"string"},"type":{"enum":["turn","line","field"],"type":"string"}},"required":["type","index","quote"],"type":"object"}},"required":["severity","kind","where","detail","fix","confidence"],"type":"object"},"type":"array"},"fixed_loop_snippet":{"description":"Optional corrected stop/max_turns line to paste","type":"string"},"meta":{"properties":{"degraded":{"type":"boolean"},"llm_calls":{"description":"0 means harness-only resolution","minimum":0,"type":"integer"}},"required":["llm_calls","degraded"],"type":"object"},"score":{"description":"Rubric-derived health score","maximum":100,"minimum":0,"type":"integer"},"top_fix":{"description":"Single highest-leverage change","type":"string"},"verdict":{"enum":["healthy","wasteful","stuck","unsafe","underspecified"],"type":"string"}},"required":["score","verdict","findings","estimated_waste_pct","top_fix","meta"],"type":"object"}},"path":"/loop-review","price":"$0.04"}},"serviceName":"Loop Doctor — Agent Loop Linter","tags":["agent","llm-ops","x402"]},"name":"Loop Doctor — Agent Loop Linter","network":"base-mainnet","payTo":"0x30bfee8d55b7befc69873915cb6e4d47bf9e83bd","privacy":"Input is processed by a third-party inference provider and is not stored or used for training (data-sharing OFF).","publicBase":"https://loop-doctor.pages.dev","services":{"loop-review":{"bodyType":"json","description":"Critique an AI agent loop spec (and optional execution transcript). Returns a strict-JSON health score, verdict, evidence-backed findings with verbatim quotes, and the single highest-leverage fix. Request body capped at 256 KB.","input":{"goal":"Fix all lint errors in the repository","loop":{"max_turns":50,"prompt":"You are a coding agent. Read files, apply fixes, and continue until done.","stop":"","tools":["read_file","write_file","grep"]},"transcript_text":"turn 1: grep 'TODO'\nturn 3: grep 'TODO' (same args as turn 1)\nturn 5: grep 'TODO' (same args as turn 1)"},"inputSchema":{"additionalProperties":false,"properties":{"goal":{"description":"What the loop should accomplish (required)","type":"string"},"loop":{"description":"Loop specification (required; loop or transcript — loop recommended)","properties":{"max_turns":{"description":"Optional maximum turns","minimum":1,"type":"number"},"prompt":{"description":"Driver/system prompt","type":"string"},"stop":{"description":"Stop condition, if any","type":"string"},"tools":{"description":"Tool names available to the agent","items":{"type":"string"},"type":"array"}},"required":["prompt"],"type":"object"},"transcript_text":{"description":"Optional executed turns; unlocks retry-loop and wasted-turns findings (truncated head+tail if oversized)","type":"string"}},"required":["goal","loop"],"type":"object"},"method":"POST","output":{"example":{"estimated_waste_pct":35,"findings":[{"confidence":1.0,"detail":"Loop has no stop condition; the agent may run until max_turns is exhausted.","fix":"Add an explicit stop condition, e.g. 'when all lint errors are fixed and tests pass'.","kind":"no-stop-condition","severity":"high","where":{"index":0,"quote":"stop","type":"field"}},{"confidence":1.0,"detail":"Same tool with near-identical arguments repeated at least three times.","fix":"Track attempted grep patterns and stop after two identical calls with no new results.","kind":"retry-loop","severity":"med","where":{"index":5,"quote":"grep 'TODO' (same args as turn 1)","type":"turn"}}],"fixed_loop_snippet":"\"stop\": \"when goal is achieved or after 50 turns\", \"max_turns\": 30","meta":{"degraded":false,"llm_calls":1},"score":42,"top_fix":"Add an explicit stop condition to loop.stop","verdict":"wasteful"},"schema":{"properties":{"estimated_waste_pct":{"description":"Derived from confirmed findings, not guessed","maximum":80,"minimum":0,"type":"integer"},"findings":{"items":{"properties":{"confidence":{"description":"0–1; code-detected findings use 1.0","maximum":1,"minimum":0,"type":"number"},"detail":{"description":"What is wrong","type":"string"},"fix":{"description":"Concrete actionable change","type":"string"},"kind":{"enum":["wasted-turns","missing-verify","no-stop-condition","context-bloat","retry-loop","tool-misuse","unbounded-cost"],"type":"string"},"severity":{"enum":["high","med","low"],"type":"string"},"where":{"properties":{"index":{"minimum":0,"type":"integer"},"quote":{"description":"Verbatim substring of the input","type":"string"},"type":{"enum":["turn","line","field"],"type":"string"}},"required":["type","index","quote"],"type":"object"}},"required":["severity","kind","where","detail","fix","confidence"],"type":"object"},"type":"array"},"fixed_loop_snippet":{"description":"Optional corrected stop/max_turns line to paste","type":"string"},"meta":{"properties":{"degraded":{"type":"boolean"},"llm_calls":{"description":"0 means harness-only resolution","minimum":0,"type":"integer"}},"required":["llm_calls","degraded"],"type":"object"},"score":{"description":"Rubric-derived health score","maximum":100,"minimum":0,"type":"integer"},"top_fix":{"description":"Single highest-leverage change","type":"string"},"verdict":{"enum":["healthy","wasteful","stuck","unsafe","underspecified"],"type":"string"}},"required":["score","verdict","findings","estimated_waste_pct","top_fix","meta"],"type":"object"}},"path":"/loop-review","price":"$0.04"}},"tags":["agent","llm-ops","x402"]}