{"ok":true,"site":{"host":"codesplitter.notryanquinn.workers.dev","url":"https://codesplitter.notryanquinn.workers.dev/","type":"live","desc":"Every line is its own record, so people and agents edit the same file at once without stepping on each other.","tools":[{"name":"current_page","kind":"answer","impl":"imperative","description":"What the page shows now: its view (home, r repo, f file, l level, c cut, s share, u profile, search…), the repo, file or level, the selected lines, what you may do there, and who is signed in.","title":"Where am I","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"agent_guide","kind":"act","impl":"imperative","description":"The prompt a person hands their own agent for steering this site: the CLI, MCP and WebMCP routes (CLI first), and the rules to follow.","title":"How to drive this site","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"open_page","kind":"act","impl":"imperative","description":"Go to a page by its hash: #/ home, #/r/owner/repo[/dir], #/f/owner/repo/path/to/file, #/l/level-slug[/path], #/u/handle, #/m/owner/repo (agents and branches, for a phone), #/b/owner/repo/branch (a branch's merge page, a card per conflict), #/search/query, #/about. Answers with the new page.","title":"Open a page","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"hash":{"type":"string","description":"like #/f/owner/repo/src/app.ts"}},"required":["hash"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_files","kind":"answer","impl":"imperative","description":"A repo folder's files and folders. Defaults to the repo and folder on screen.","title":"List files","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"owner":{"type":"string"},"repo":{"type":"string"},"path":{"type":"string","description":"folder, \"\" for the root"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"read_file","kind":"answer","impl":"imperative","description":"A file's lines, numbered, each with who last wrote it. Defaults to the file on screen.","title":"Read a file","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"owner":{"type":"string"},"repo":{"type":"string"},"path":{"type":"string"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_scenes","kind":"answer","impl":"imperative","description":"The scenes play_scene can play (the tour's chapters): each one's id, name and steps, with the steps that are a person's to press marked in `you`. A scene can be just some steps: \"id:2-3\" is the chapter's 2nd and 3rd, \"id:2\" its 2nd.","title":"List scenes","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"play_scene","kind":"act","impl":"imperative","description":"Start a scene on screen, the way the tour does: a card and a fake cursor, and scene_step does each step's real action. `scene` is an id from list_scenes, or \"id:2-3\" for just those steps; `queue` lists scenes to play after it. Scenes with steps on a repo's file page open that repo's page themselves when given `owner`/`repo` (or when one is on screen). Answers with the first step.","title":"Play a scene","inputSchema":{"type":"object","properties":{"scene":{"type":"string","description":"an id from list_scenes, or id:from-to for some of its steps"},"queue":{"type":"array","items":{"type":"string"}},"owner":{"type":"string"},"repo":{"type":"string"}},"required":["scene"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"scene_step","kind":"act","impl":"imperative","description":"Do the shown step of the scene playing: the cursor glides to it and its real action runs, then the scene moves on. Signing in, running an agent, merging and deploying are a person's to press, so on those it answers `held` and does nothing; `skip: true` moves past a step without doing it. Answers with what it did and the next step.","title":"Step a scene","inputSchema":{"type":"object","properties":{"skip":{"type":"boolean"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"list_conflicts","kind":"answer","impl":"imperative","description":"On a branch's merge page (#/b/owner/repo/branch; the repo page's Branches links to it), its merge conflicts as their cards show them: branch, path, line, base, main, branch_text, the picks it takes, the suggestion if any, and how it's settled so far.","title":"List merge conflicts","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"settle_conflict","kind":"act","impl":"imperative","description":"Settle one conflict card on a branch's merge page, as clicking would: pick main, branch, both, both:branch-first, suggestion, or text (with `text`, the lines that replace it). Nothing lands until the branch's Merge button is pressed.","title":"Settle a merge conflict","annotations":{"destructiveHint":false,"consequentialHint":false,"idempotentHint":true},"inputSchema":{"type":"object","properties":{"branch":{"type":"string"},"path":{"type":"string"},"line":{"type":"string","description":"the conflict's line, as list_conflicts says"},"pick":{"type":"string","enum":["main","branch","both","both:branch-first","suggestion","text"]},"text":{"type":"string","description":"with pick text: the settled lines"}},"required":["branch","path","line","pick"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"select_lines","kind":"act","impl":"imperative","description":"Select lines on the file on screen, as clicking their numbers would, so the line commands (share, cut, make private) act on them. Give `from` and `to` for one run, or `ranges` for several. `mode` says what to do with the current pick: replace it (the default), add to it, remove from it, or toggle. Answers with the pick as runs.","title":"Select lines","inputSchema":{"type":"object","properties":{"from":{"type":"integer","minimum":1},"to":{"type":"integer","minimum":1},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"integer","minimum":1},"to":{"type":"integer","minimum":1}},"required":["from"]}},"mode":{"type":"string","enum":["replace","add","remove","toggle"]}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"deselect_lines","kind":"act","impl":"imperative","description":"Drop the picked lines on the file on screen, as Esc does. With `from`/`to`, drop just those and keep the rest.","title":"Deselect lines","inputSchema":{"type":"object","properties":{"from":{"type":"integer","minimum":1},"to":{"type":"integer","minimum":1}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"select_all_lines","kind":"act","impl":"imperative","description":"Pick every line of the file on screen, as Cmd+A does.","title":"Select all lines","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"invert_selection","kind":"act","impl":"imperative","description":"Pick the lines that aren't picked and drop the ones that are, on the file on screen.","title":"Invert the selection","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"expand_selection","kind":"act","impl":"imperative","description":"Grow the pick one level of structure: to the lines around it at the same depth, then to the block that holds them (header to closing brace), out to the whole file. Call it again to go wider.","title":"Expand the selection","inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"select_matching","kind":"act","impl":"imperative","description":"Pick the lines of the file on screen that hold `match` (any case), or match it when written /regex/flags. `mode` as select_lines: replace (the default), add, remove or toggle. Answers with the pick as runs.","title":"Select lines matching","inputSchema":{"type":"object","properties":{"match":{"type":"string"},"mode":{"type":"string","enum":["replace","add","remove"]}},"required":["match"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"select_lines_by","kind":"act","impl":"imperative","description":"Pick the lines of the file on screen that `who` last wrote (a handle, or an agent's name as read_file shows it in `by`). Mode as select_matching.","title":"Select lines by an author","inputSchema":{"type":"object","properties":{"who":{"type":"string"},"mode":{"type":"string","enum":["replace","add","remove"]}},"required":["who"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"selected_lines","kind":"answer","impl":"imperative","description":"The lines picked on the file on screen: the runs ([from, to], 1-based) and each line's text and author.","title":"Read the selection","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"search_code","kind":"answer","impl":"imperative","description":"Anywhere: Search code (input: what to look for). The palette's GET /api/search?q=.","title":"Search code","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{"input":{"type":"string","description":"what to look for"}},"required":["input"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_mitt","kind":"act","impl":"imperative","description":"Levels: Go to mitt. The palette's GET /api/levels/mitt/tree.","title":"Go to mitt","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_clsx","kind":"act","impl":"imperative","description":"Levels: Go to clsx. The palette's GET /api/levels/clsx/tree.","title":"Go to clsx","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_ky","kind":"act","impl":"imperative","description":"Levels: Go to Ky. The palette's GET /api/levels/ky/tree.","title":"Go to Ky","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_zustand","kind":"act","impl":"imperative","description":"Levels: Go to Zustand. The palette's GET /api/levels/zustand/tree.","title":"Go to Zustand","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_hono","kind":"act","impl":"imperative","description":"Levels: Go to Hono. The palette's GET /api/levels/hono/tree.","title":"Go to Hono","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_express","kind":"act","impl":"imperative","description":"Levels: Go to Express. The palette's GET /api/levels/express/tree.","title":"Go to Express","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_preact","kind":"act","impl":"imperative","description":"Levels: Go to Preact. The palette's GET /api/levels/preact/tree.","title":"Go to Preact","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_actors","kind":"act","impl":"imperative","description":"Levels: Go to Actors. The palette's GET /api/levels/actors/tree.","title":"Go to Actors","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_containers","kind":"act","impl":"imperative","description":"Levels: Go to Containers. The palette's GET /api/levels/containers/tree.","title":"Go to Containers","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_workers_oauth_provider","kind":"act","impl":"imperative","description":"Levels: Go to Workers OAuth Provider. The palette's GET /api/levels/workers-oauth-provider/tree.","title":"Go to Workers OAuth Provider","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_partykit","kind":"act","impl":"imperative","description":"Levels: Go to PartyKit. The palette's GET /api/levels/partykit/tree.","title":"Go to PartyKit","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_cap_n_web","kind":"act","impl":"imperative","description":"Levels: Go to Cap'n Web. The palette's GET /api/levels/capnweb/tree.","title":"Go to Cap'n Web","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_workers_rs","kind":"act","impl":"imperative","description":"Levels: Go to workers-rs. The palette's GET /api/levels/workers-rs/tree.","title":"Go to workers-rs","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_chanfana","kind":"act","impl":"imperative","description":"Levels: Go to chanfana. The palette's GET /api/levels/chanfana/tree.","title":"Go to chanfana","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_sandbox_sdk","kind":"act","impl":"imperative","description":"Levels: Go to Sandbox SDK. The palette's GET /api/levels/sandbox-sdk/tree.","title":"Go to Sandbox SDK","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_pingora","kind":"act","impl":"imperative","description":"Levels: Go to Pingora. The palette's GET /api/levels/pingora/tree.","title":"Go to Pingora","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_agents","kind":"act","impl":"imperative","description":"Levels: Go to Agents. The palette's GET /api/levels/agents/tree.","title":"Go to Agents","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_workerd","kind":"act","impl":"imperative","description":"Levels: Go to workerd. The palette's GET /api/levels/workerd/tree.","title":"Go to workerd","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_redwoodsdk","kind":"act","impl":"imperative","description":"Levels: Go to RedwoodSDK. The palette's GET /api/levels/rwsdk/tree.","title":"Go to RedwoodSDK","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_effect","kind":"act","impl":"imperative","description":"Levels: Go to Effect. The palette's GET /api/levels/effect/tree.","title":"Go to Effect","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_react","kind":"act","impl":"imperative","description":"Levels: Go to React. The palette's GET /api/levels/react/tree.","title":"Go to React","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_alchemy","kind":"act","impl":"imperative","description":"Levels: Go to Alchemy. The palette's GET /api/levels/alchemy/tree.","title":"Go to Alchemy","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"go_to_bun","kind":"act","impl":"imperative","description":"Levels: Go to Bun. The palette's GET /api/levels/bun/tree.","title":"Go to Bun","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"home","kind":"act","impl":"imperative","description":"Anywhere: Home. The palette's navigation.","title":"Home","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"about_codesplitter","kind":"act","impl":"imperative","description":"Anywhere: About codeSplitter. The palette's navigation.","title":"About codeSplitter","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"privacy_what_we_keep_and_your_data","kind":"act","impl":"imperative","description":"Anywhere: Privacy: what we keep, and your data. The palette's navigation.","title":"Privacy: what we keep, and your data","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"api_reference","kind":"act","impl":"imperative","description":"Anywhere: API reference. The palette's GET /api.","title":"API reference","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"connect_your_ai_mcp","kind":"act","impl":"imperative","description":"Anywhere: Connect your AI (MCP). The palette's navigation.","title":"Connect your AI (MCP)","annotations":{"readOnlyHint":true,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"sign_in","kind":"act","impl":"imperative","description":"Anywhere: Sign in. The palette's POST /api/auth/sign-in/email.","title":"Sign in","annotations":{"readOnlyHint":false,"destructiveHint":false,"consequentialHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]}],"category":"Developer Tools","favicon":"/favicons/codesplitter.notryanquinn.workers.dev.svg","apiSurface":"spec","toolCount":48}}