[{"data":1,"prerenderedAt":560},["ShallowReactive",2],{"navigation_docs":3,"-guide-agents":104,"-guide-agents-surround":555},[4,48],{"title":5,"path":6,"stem":7,"children":8,"icon":47},"Guide","\u002Fguide","1.guide\u002F01.index",[9,11,15,19,23,27,31,35,39,43],{"title":10,"path":6,"stem":7},"Getting Started",{"title":12,"path":13,"stem":14},"Registry and paths","\u002Fguide\u002Fregistry","1.guide\u002F02.registry",{"title":16,"path":17,"stem":18},"Running another harness","\u002Fguide\u002Finvoke","1.guide\u002F03.invoke",{"title":20,"path":21,"stem":22},"MCP servers","\u002Fguide\u002Fmcp-servers","1.guide\u002F04.mcp-servers",{"title":24,"path":25,"stem":26},"Instructions files","\u002Fguide\u002Fagents-sync","1.guide\u002F05.agents-sync",{"title":28,"path":29,"stem":30},"CLI","\u002Fguide\u002Fcli","1.guide\u002F06.cli",{"title":32,"path":33,"stem":34},"Agents","\u002Fguide\u002Fagents","1.guide\u002F07.agents",{"title":36,"path":37,"stem":38},"Sessions","\u002Fguide\u002Fsessions","1.guide\u002F08.sessions",{"title":40,"path":41,"stem":42},"Custom harnesses","\u002Fguide\u002Fcustom","1.guide\u002F09.custom",{"title":44,"path":45,"stem":46},"Explorer","\u002Fguide\u002Fexplorer","1.guide\u002F10.explorer","i-solar-book-2-linear",{"title":49,"path":50,"stem":51,"children":52,"icon":103},"Harnesses","\u002Fharnesses","2.harnesses\u002F00.index",[53,55,59,63,67,71,75,79,83,87,91,95,99],{"title":54,"path":50,"stem":51},"Overview",{"title":56,"path":57,"stem":58},"Claude Code","\u002Fharnesses\u002Fclaude","2.harnesses\u002F01.claude",{"title":60,"path":61,"stem":62},"Codex CLI","\u002Fharnesses\u002Fcodex","2.harnesses\u002F02.codex",{"title":64,"path":65,"stem":66},"Gemini CLI","\u002Fharnesses\u002Fgemini","2.harnesses\u002F03.gemini",{"title":68,"path":69,"stem":70},"Antigravity CLI","\u002Fharnesses\u002Fantigravity","2.harnesses\u002F04.antigravity",{"title":72,"path":73,"stem":74},"Grok CLI","\u002Fharnesses\u002Fgrok","2.harnesses\u002F05.grok",{"title":76,"path":77,"stem":78},"OpenCode","\u002Fharnesses\u002Fopencode","2.harnesses\u002F06.opencode",{"title":80,"path":81,"stem":82},"Pi","\u002Fharnesses\u002Fpi","2.harnesses\u002F07.pi",{"title":84,"path":85,"stem":86},"OMP","\u002Fharnesses\u002Fomp","2.harnesses\u002F08.omp",{"title":88,"path":89,"stem":90},"Cursor","\u002Fharnesses\u002Fcursor","2.harnesses\u002F09.cursor",{"title":92,"path":93,"stem":94},"GitHub Copilot","\u002Fharnesses\u002Fgithub-copilot","2.harnesses\u002F10.github-copilot",{"title":96,"path":97,"stem":98},"Mastra Code","\u002Fharnesses\u002Fmastracode","2.harnesses\u002F11.mastracode",{"title":100,"path":101,"stem":102},"Freebuff","\u002Fharnesses\u002Ffreebuff","2.harnesses\u002F12.freebuff","i-solar-library-linear",{"id":105,"title":32,"body":106,"description":547,"extension":548,"links":549,"meta":550,"navigation":552,"path":33,"seo":553,"stem":34,"__hash__":554},"docs\u002F1.guide\u002F07.agents.md",{"type":107,"value":108,"toc":541},"minimark",[109,114,127,267,272,276,334,341,455,461,465,497,500,504,520,530,537],[110,111,113],"h2",{"id":112},"nine-tools-three-surfaces","Nine tools, three surfaces",[115,116,117,118,122,123,126],"p",{},"MCP server, Pi extension and OMP extension all call the same executors in ",[119,120,121],"code",{},"src\u002Ftool-operations.ts",", with the same schemas from ",[119,124,125],{},"src\u002Ftool-schemas.ts",". They answer identically and a fix lands once.",[128,129,130,146],"table",{},[131,132,133],"thead",{},[134,135,136,140,143],"tr",{},[137,138,139],"th",{},"Tool",[137,141,142],{},"Kind",[137,144,145],{},"Does",[147,148,149,166,178,191,203,215,228,240,255],"tbody",{},[134,150,151,157,160],{},[152,153,154],"td",{},[119,155,156],{},"harnesses_detect",[152,158,159],{},"read",[152,161,162,163],{},"Installed harnesses and versions, scanned from ",[119,164,165],{},"PATH",[134,167,168,173,175],{},[152,169,170],{},[119,171,172],{},"harnesses_info",[152,174,159],{},[152,176,177],{},"Full metadata for one id, or a batch of up to 20 ids",[134,179,180,185,188],{},[152,181,182],{},[119,183,184],{},"harnesses_models",[152,186,187],{},"exec",[152,189,190],{},"Models a harness can use now, optionally filtered",[134,192,193,198,200],{},[152,194,195],{},[119,196,197],{},"harnesses_run",[152,199,187],{},[152,201,202],{},"One prompt through another harness",[134,204,205,210,212],{},[152,206,207],{},[119,208,209],{},"harnesses_mcp_list",[152,211,159],{},[152,213,214],{},"MCP servers in every config, normalized",[134,216,217,222,225],{},[152,218,219],{},[119,220,221],{},"harnesses_mcp_add",[152,223,224],{},"write",[152,226,227],{},"Add or replace one MCP server",[134,229,230,235,237],{},[152,231,232],{},[119,233,234],{},"harnesses_mcp_remove",[152,236,224],{},[152,238,239],{},"Remove one MCP server",[134,241,242,247,249],{},[152,243,244],{},[119,245,246],{},"harnesses_mcp_sync",[152,248,224],{},[152,250,251,252],{},"Reset user scope configs to ",[119,253,254],{},"~\u002F.config\u002Fagntn\u002Fmcp.jsonc",[134,256,257,262,264],{},[152,258,259],{},[119,260,261],{},"harnesses_agents_sync",[152,263,224],{},[152,265,266],{},"Link global instructions files to the master bundle, or check",[115,268,269,271],{},[119,270,172],{}," with a list keeps the input order and returns an error entry beside the successful ones for an unknown id, so one typo doesn't fail the batch.",[110,273,275],{"id":274},"mcp","MCP",[277,278,283],"pre",{"className":279,"code":280,"language":281,"meta":282,"style":282},"language-bash shiki shiki-themes github-light github-light poimandres","harnesses mcp\nclaude mcp add harnesses --scope user -- npx -y @agntn\u002Fharnesses mcp\n","bash","",[119,284,285,298],{"__ignoreMap":282},[286,287,290,294],"span",{"class":288,"line":289},"line",1,[286,291,293],{"class":292},"sseY5","harnesses",[286,295,297],{"class":296},"sX7Zv"," mcp\n",[286,299,301,304,307,310,313,317,320,323,326,329,332],{"class":288,"line":300},2,[286,302,303],{"class":292},"claude",[286,305,306],{"class":296}," mcp",[286,308,309],{"class":296}," add",[286,311,312],{"class":296}," harnesses",[286,314,316],{"class":315},"sqT1Y"," --scope",[286,318,319],{"class":296}," user",[286,321,322],{"class":315}," --",[286,324,325],{"class":296}," npx",[286,327,328],{"class":315}," -y",[286,330,331],{"class":296}," @agntn\u002Fharnesses",[286,333,297],{"class":296},[115,335,336,337,340],{},"Or in a client's config, or on the master list that ",[119,338,339],{},"mcp-servers sync"," distributes:",[277,342,346],{"className":343,"code":344,"language":345,"meta":282,"style":282},"language-json shiki shiki-themes github-light github-light poimandres","{\n  \"mcpServers\": {\n    \"harnesses\": { \"command\": \"npx\", \"args\": [\"-y\", \"@agntn\u002Fharnesses\", \"mcp\"] }\n  }\n}\n","json",[119,347,348,354,370,443,449],{"__ignoreMap":282},[286,349,350],{"class":288,"line":289},[286,351,353],{"class":352},"sKlNE","{\n",[286,355,356,360,364,367],{"class":288,"line":300},[286,357,359],{"class":358},"sy8Ar","  \"",[286,361,363],{"class":362},"saoiD","mcpServers",[286,365,366],{"class":358},"\"",[286,368,369],{"class":352},": {\n",[286,371,373,376,378,380,383,385,389,391,394,397,401,403,406,408,411,413,416,418,421,423,425,427,430,432,434,436,438,440],{"class":288,"line":372},3,[286,374,375],{"class":358},"    \"",[286,377,293],{"class":315},[286,379,366],{"class":358},[286,381,382],{"class":352},": { ",[286,384,366],{"class":358},[286,386,388],{"class":387},"s39Ir","command",[286,390,366],{"class":358},[286,392,393],{"class":352},": ",[286,395,366],{"class":396},"scVjq",[286,398,400],{"class":399},"sQ7BG","npx",[286,402,366],{"class":396},[286,404,405],{"class":352},", ",[286,407,366],{"class":358},[286,409,410],{"class":387},"args",[286,412,366],{"class":358},[286,414,415],{"class":352},": [",[286,417,366],{"class":396},[286,419,420],{"class":399},"-y",[286,422,366],{"class":396},[286,424,405],{"class":352},[286,426,366],{"class":396},[286,428,429],{"class":399},"@agntn\u002Fharnesses",[286,431,366],{"class":396},[286,433,405],{"class":352},[286,435,366],{"class":396},[286,437,274],{"class":399},[286,439,366],{"class":396},[286,441,442],{"class":352},"] }\n",[286,444,446],{"class":288,"line":445},4,[286,447,448],{"class":352},"  }\n",[286,450,452],{"class":288,"line":451},5,[286,453,454],{"class":352},"}\n",[115,456,457,458,460],{},"The server speaks MCP over stdio and validates every call against the published JSON Schema. Read tools are annotated read-only and idempotent; ",[119,459,197],{}," is marked destructive and open world, because it is.",[110,462,464],{"id":463},"running-another-harness-from-an-agent","Running another harness from an agent",[115,466,467,469,470,405,473,476,477,480,481,484,485,488,489,492,493,496],{},[119,468,197],{}," takes ",[119,471,472],{},"id",[119,474,475],{},"prompt",", and ",[119,478,479],{},"tools"," as a required boolean. The model has to choose. ",[119,482,483],{},"tools: false"," is the advisor without tools, ",[119,486,487],{},"tools: true"," the full agent, ",[119,490,491],{},"readOnly: true"," beside it demands a native read-only sandbox. A mode the target harness cannot provide comes back as a tool error with the retry that would work; it never widens access on its own. ",[119,494,495],{},"timeoutSeconds"," defaults to 600.",[115,498,499],{},"Cancellation follows the host's request signal, the one MCP, Pi and OMP hand to a tool when the user interrupts. It is not a JSON argument, because a model would forget to pass it.",[110,501,503],{"id":502},"pi-and-omp","Pi and OMP",[277,505,507],{"className":279,"code":506,"language":281,"meta":282,"style":282},"pi install npm:@agntn\u002Fharnesses\n",[119,508,509],{"__ignoreMap":282},[286,510,511,514,517],{"class":288,"line":289},[286,512,513],{"class":292},"pi",[286,515,516],{"class":296}," install",[286,518,519],{"class":296}," npm:@agntn\u002Fharnesses\n",[115,521,522,523,526,527,529],{},"Both extensions are declared in ",[119,524,525],{},"package.json",". Results render as a collapsed preview in the terminal, with the full text once you expand the row. ",[119,528,197],{}," output from a long review is where that matters.",[531,532,533,534,536],"note",{},"A second harness's answer is a hypothesis. When Claude asks Codex to review a patch through ",[119,535,197],{},", what comes back is text to check against the code, not a verdict to paste. The tool returns it as text on purpose.",[538,539,540],"style",{},"html pre.shiki code .sseY5, html code.shiki .sseY5{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#91B4D5}html pre.shiki code .sX7Zv, html code.shiki .sX7Zv{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#ADD7FF}html pre.shiki code .sqT1Y, html code.shiki .sqT1Y{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#ADD7FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sKlNE, html code.shiki .sKlNE{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#A6ACCD}html pre.shiki code .sy8Ar, html code.shiki .sy8Ar{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#A6ACCD}html pre.shiki code .saoiD, html code.shiki .saoiD{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#E4F0FB}html pre.shiki code .s39Ir, html code.shiki .s39Ir{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#91B4D5}html pre.shiki code .scVjq, html code.shiki .scVjq{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#A6ACCD}html pre.shiki code .sQ7BG, html code.shiki .sQ7BG{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#5DE4C7}",{"title":282,"searchDepth":300,"depth":300,"links":542},[543,544,545,546],{"id":112,"depth":300,"text":113},{"id":274,"depth":300,"text":275},{"id":463,"depth":300,"text":464},{"id":502,"depth":300,"text":503},"The same nine tools over MCP, the Pi extension and the OMP extension. What they read, what they run, what they write.","md",null,{"icon":551},"i-solar-bot-linear",true,{"title":32,"description":547},"rwPQ4s8o9prIxmfhGOIgfH_jykcymCqjAEVoaXTAEac",[556,558],{"title":28,"path":29,"stem":30,"description":557,"children":-1},"The harnesses command, nine subcommands, JSON and TOON output on all the read ones.",{"title":36,"path":37,"stem":38,"description":559,"children":-1},"Typed schemas for the transcript formats, and where each harness writes them.",1788622197937]