[{"data":1,"prerenderedAt":2755},["ShallowReactive",2],{"docs.index":3,"docs.page.\u002Fdocs\u002Fagents\u002Freference\u002Frest-api":358},[4,20,26,33,43,52,59,65,71,76,82,89,95,100,104,111,115,119,123,132,137,141,147,152,157,163,170,177,183,189,193,199,205,211,217,222,226,230,236,242,247,252,256,260,265,271,277,283,287,294,299,305,310,314,318,322,328,333,338,343,347,353],{"path":5,"title":6,"navTitle":7,"seoTitle":8,"description":9,"type":10,"position":11,"updated":12,"release":13,"related":14,"plans":17},"\u002Fdocs\u002Faccount\u002Fbilling","Upgrade and manage billing","Billing",null,"Move a workspace onto Grove or Forest, understand how seats are charged, and what happens if a payment fails or you cancel.","how-to",2,"2026-09-29","public",[15,16],"\u002Fdocs\u002Faccount\u002Fplans-and-limits","\u002Fdocs\u002Fsharing\u002Finvite-people",[18,19],"grove","forest",{"path":21,"title":22,"navTitle":8,"seoTitle":8,"description":23,"type":24,"position":25,"updated":12,"release":13,"related":8,"plans":8},"\u002Fdocs\u002Faccount","Account and billing","What each plan includes, how billing and seats work, managing your account, and how Treehouse keeps your files safe.","hub",7,{"path":15,"title":27,"navTitle":8,"seoTitle":8,"description":28,"type":29,"position":30,"updated":12,"release":13,"related":31,"plans":8},"Plans and limits","What Seedling, Grove and Forest include, how usage is counted, and what happens when a workspace reaches a limit.","reference",1,[5,16,32],"\u002Fdocs\u002Fsharing\u002Fshare-links",{"path":34,"title":35,"navTitle":8,"seoTitle":8,"description":36,"type":37,"position":38,"updated":12,"release":13,"related":39,"plans":8},"\u002Fdocs\u002Faccount\u002Fsecurity-and-privacy","Security and privacy","How Treehouse encrypts your files, who can see what in a workspace, and how keys, share links and HTML pages are kept in check.","concept",4,[40,32,41,42],"\u002Fdocs\u002Fagents\u002Fconnect\u002Fapi-keys","\u002Fdocs\u002Ffiles\u002Fprivate-files","\u002Fdocs\u002Ffiles\u002Fhtml-pages",{"path":44,"title":45,"navTitle":46,"seoTitle":8,"description":47,"type":10,"position":48,"updated":12,"release":13,"related":49,"plans":8},"\u002Fdocs\u002Faccount\u002Fyour-account","Manage your account","Your account","Create an account, sign in and out, reset a forgotten password, and move between the workspaces you belong to.",3,[50,51,34],"\u002Fdocs\u002Fget-started\u002Fquickstart","\u002Fdocs\u002Fsharing\u002Fcustomise-your-workspace",{"path":40,"title":53,"navTitle":54,"seoTitle":8,"description":55,"type":10,"position":38,"updated":12,"release":13,"related":56,"plans":8},"Manage API keys","API keys","Create a key for each agent, see which keys can reach your workspaces, and revoke the ones you no longer need.",[57,58,34],"\u002Fdocs\u002Fagents\u002Fconnect\u002Fclaude-code","\u002Fdocs\u002Fagents\u002Freference\u002Fauthentication",{"path":57,"title":60,"navTitle":8,"seoTitle":8,"description":61,"type":10,"position":11,"updated":12,"release":13,"related":62,"plans":8},"Connect Claude Code","Give Claude Code access to a workspace through your synced folder, the Treehouse MCP server, or both.",[63,40,64],"\u002Fdocs\u002Fagents\u002Fconnect\u002Fhow-agents-work","\u002Fdocs\u002Fplaybooks\u002Fwrite-your-agents-md",{"path":63,"title":66,"navTitle":67,"seoTitle":8,"description":68,"type":37,"position":30,"updated":12,"release":13,"related":69,"plans":8},"How agents work with Treehouse","How agents work","The two ways an agent can reach a workspace, what it can do there, and how its work shows up for everyone else.",[57,40,70],"\u002Fdocs\u002Fagents\u002Fhandbook",{"path":72,"title":73,"navTitle":74,"seoTitle":8,"description":75,"type":24,"position":30,"updated":12,"release":13,"related":8,"plans":8},"\u002Fdocs\u002Fagents\u002Fconnect","Connect an agent","Connect","Give Claude Code, Codex, Cursor or any other agent access to a workspace, with its own key when you want its work labelled.",{"path":77,"title":78,"navTitle":8,"seoTitle":8,"description":79,"type":10,"position":48,"updated":12,"release":13,"related":80,"plans":8},"\u002Fdocs\u002Fagents\u002Fconnect\u002Fother-agents","Connect other agents","Connection settings for Cursor, VS Code, Codex, Gemini CLI, Claude Desktop and any other MCP client.",[57,40,81],"\u002Fdocs\u002Fagents\u002Freference\u002Fmcp-server",{"path":70,"title":83,"navTitle":83,"seoTitle":84,"description":85,"type":24,"position":11,"updated":12,"release":13,"related":86,"plans":8},"Agent handbook","Agent handbook: how agents work in Treehouse","Written for agents. How to reach a Treehouse workspace, the rules that keep everyone's work safe, and the conventions the web app understands.",[81,87,88],"\u002Fdocs\u002Fagents\u002Fhandbook\u002Fversions-and-conflicts","\u002Fdocs\u002Fplaybooks\u002Freview-loop",{"path":87,"title":90,"navTitle":8,"seoTitle":8,"description":91,"type":37,"position":30,"updated":12,"release":13,"related":92,"plans":8},"Versions and conflicts","The concurrency contract every Treehouse client shares - version numbers, compare-and-swap writes, conflicted copies, deletes, moves and restores.",[93,94,81],"\u002Fdocs\u002Ffiles\u002Fconflicted-copies","\u002Fdocs\u002Fagents\u002Freference\u002Frest-api",{"path":96,"title":97,"navTitle":8,"seoTitle":98,"description":99,"type":24,"position":30,"updated":12,"release":13,"related":8,"plans":8},"\u002Fdocs\u002Fagents","Agents","Treehouse for agents","Everything an agent needs to work in a Treehouse workspace, and everything you need to connect one.",{"path":58,"title":101,"navTitle":8,"seoTitle":8,"description":102,"type":29,"position":30,"updated":12,"release":13,"related":103,"plans":8},"Authentication","How API keys work, what each kind of key can reach, the device authorisation flow the CLI and desktop app use, and how keys are revoked.",[40,81,94],{"path":105,"title":106,"navTitle":8,"seoTitle":8,"description":107,"type":29,"position":38,"updated":12,"release":13,"related":108,"plans":8},"\u002Fdocs\u002Fagents\u002Freference\u002Fchange-feed","Change feed","Read every change to a workspace in order with a cursor, so a script or agent can react to new and edited files.",[109,110,87],"\u002Fdocs\u002Fsharing\u002Factivity","\u002Fdocs\u002Fplaybooks\u002Froutines",{"path":112,"title":113,"navTitle":8,"seoTitle":8,"description":114,"type":24,"position":48,"updated":12,"release":13,"related":8,"plans":8},"\u002Fdocs\u002Fagents\u002Freference","API reference","The protocol reference - authentication, every MCP tool, the REST API and the change feed.",{"path":81,"title":116,"navTitle":8,"seoTitle":8,"description":117,"type":29,"position":11,"updated":12,"release":13,"related":118,"plans":8},"MCP server","Every tool the Treehouse MCP server exposes, with parameters, outputs, limits and the instructions it gives connected agents.",[57,77,87],{"path":94,"title":120,"navTitle":8,"seoTitle":8,"description":121,"type":29,"position":48,"updated":12,"release":13,"related":122,"plans":8},"REST API","Endpoints for reading, writing, moving, searching, sharing and commenting on workspace files over HTTP, with headers, status codes and examples.",[58,87,105],{"path":124,"title":125,"navTitle":126,"seoTitle":8,"description":127,"type":29,"position":128,"updated":12,"release":13,"related":129,"plans":8},"\u002Fdocs\u002Fdesktop\u002Fcli-reference","Sync CLI reference","Sync CLI","Every treehouse command and flag, the files and environment variables the CLI reads, and the safety rules it follows while syncing.",5,[130,131,105],"\u002Fdocs\u002Fdesktop\u002Fsync-with-the-cli","\u002Fdocs\u002Fdesktop\u002Fhow-sync-works",{"path":131,"title":133,"navTitle":8,"seoTitle":8,"description":134,"type":37,"position":11,"updated":12,"release":13,"related":135,"plans":8},"How sync works","What the sync engine does in the background, which files it skips, and how it protects your work when things go wrong.",[93,41,109,136],"\u002Fdocs\u002Fget-started\u002Fhow-treehouse-works",{"path":138,"title":139,"navTitle":8,"seoTitle":8,"description":140,"type":24,"position":128,"updated":12,"release":13,"related":8,"plans":8},"\u002Fdocs\u002Fdesktop","Desktop app and sync","Keep a folder on your computer in step with a workspace, using the Mac app or the sync CLI.",{"path":142,"title":143,"navTitle":8,"seoTitle":8,"description":144,"type":10,"position":30,"updated":12,"release":13,"related":145,"plans":8},"\u002Fdocs\u002Fdesktop\u002Finstall-the-desktop-app","Install the desktop app","Download Treehouse for Mac, sign in and pick a folder, and your workspace's files appear on your computer and stay in sync.",[131,146,130],"\u002Fdocs\u002Fdesktop\u002Fmanage-synced-folders",{"path":146,"title":148,"navTitle":8,"seoTitle":8,"description":149,"type":10,"position":48,"updated":12,"release":13,"related":150,"plans":8},"Manage synced folders","Check sync status, pause, move or stop syncing a folder, add another workspace, and sign out, all from the Treehouse icon in your menu bar.",[131,130,151],"\u002Fdocs\u002Fhelp\u002Ftroubleshooting",{"path":130,"title":153,"navTitle":154,"seoTitle":8,"description":155,"type":10,"position":38,"updated":12,"release":13,"related":156,"plans":8},"Sync a folder with the CLI","Sync with the CLI","Install the treehouse command-line tool to sync a folder on Windows, Linux, a server or any machine where the desktop app doesn't run.",[124,131,146],{"path":93,"title":158,"navTitle":8,"seoTitle":8,"description":159,"type":37,"position":160,"updated":12,"release":13,"related":161,"plans":8},"Conflicted copies","When two edits to the same file collide, Treehouse keeps both. Here's what a conflicted copy is, how to spot one and how to resolve it.",9,[162,131,87],"\u002Fdocs\u002Ffiles\u002Fversion-history",{"path":164,"title":165,"navTitle":166,"seoTitle":8,"description":167,"type":10,"position":11,"updated":12,"release":13,"related":168,"plans":8},"\u002Fdocs\u002Ffiles\u002Fcreate-and-edit","Create and edit files","Create and edit","Make new files and folders in the web app, edit markdown, code and HTML, and save your changes.",[169,93,162],"\u002Fdocs\u002Ffiles\u002Ffront-matter",{"path":171,"title":172,"navTitle":173,"seoTitle":8,"description":174,"type":10,"position":128,"updated":12,"release":13,"related":175,"plans":8},"\u002Fdocs\u002Ffiles\u002Ffolder-pages","Turn a folder into a page or calendar","Folder pages and calendars","Give a folder a front page with a README, or show a folder of dated notes as a calendar you can reschedule by dragging.",[169,42,176],"\u002Fdocs\u002Fplaybooks\u002Fshape-your-workspace",{"path":169,"title":178,"navTitle":179,"seoTitle":8,"description":180,"type":29,"position":181,"updated":12,"release":13,"related":182,"plans":8},"Front matter reference","Front matter","The YAML block at the top of a markdown file, and the keys Treehouse reads from it to label, title and schedule your files.",6,[171,164,110],{"path":42,"title":184,"navTitle":185,"seoTitle":8,"description":186,"type":10,"position":25,"updated":12,"release":13,"related":187,"plans":8},"Publish an HTML page","HTML pages","Show HTML files as full pages, decide when their scripts may run, and share them publicly as reports, dashboards or decks.",[32,171,188],"\u002Fdocs\u002Ffiles\u002Fview-files",{"path":190,"title":191,"navTitle":8,"seoTitle":8,"description":192,"type":24,"position":48,"updated":12,"release":13,"related":8,"plans":8},"\u002Fdocs\u002Ffiles","Files and folders","Find, read, write, upload and organise the files in a workspace, and get back anything that changed.",{"path":194,"title":195,"navTitle":196,"seoTitle":8,"description":197,"type":10,"position":38,"updated":12,"release":13,"related":198,"plans":8},"\u002Fdocs\u002Ffiles\u002Forganise-files","Rename, move and organise files","Organise files","Rename, move, reorder and delete files and folders, and give them icons, from the sidebar tree.",[162,41,176],{"path":41,"title":200,"navTitle":201,"seoTitle":8,"description":202,"type":10,"position":203,"updated":12,"release":13,"related":204,"plans":8},"Keep files private","Private files","Make a file or folder visible only to you and your own agents, even in a workspace you share with others.",10,[194,32,63],{"path":206,"title":207,"navTitle":208,"seoTitle":8,"description":209,"type":10,"position":48,"updated":12,"release":13,"related":210,"plans":8},"\u002Fdocs\u002Ffiles\u002Fupload-and-download","Upload and download files","Upload and download","Add files from your computer to a workspace, decide what happens when names clash, and download a copy of any file.",[164,131,15],{"path":162,"title":212,"navTitle":213,"seoTitle":8,"description":214,"type":10,"position":215,"updated":12,"release":13,"related":216,"plans":8},"See and restore earlier versions","Version history","Look through every change to a file, see who made it, view or restore an older version, and catch up on what changed while you were away.",8,[93,109,87],{"path":188,"title":218,"navTitle":219,"seoTitle":8,"description":220,"type":10,"position":30,"updated":12,"release":13,"related":221,"plans":8},"Find and view files","Find and view","Browse the file tree, search by name, and see how Treehouse shows markdown, HTML, code, images and everything else.",[164,171,162],{"path":136,"title":223,"navTitle":8,"seoTitle":8,"description":224,"type":37,"position":48,"updated":12,"release":13,"related":225,"plans":8},"How Treehouse works","Workspaces, versions, conflicted copies and attribution - the handful of ideas the rest of Treehouse is built on.",[162,93,63,87],{"path":227,"title":228,"navTitle":8,"seoTitle":8,"description":229,"type":24,"position":11,"updated":12,"release":13,"related":8,"plans":8},"\u002Fdocs\u002Fget-started","Get started","What Treehouse is, how to set up your first workspace, and how it works underneath.",{"path":50,"title":231,"navTitle":8,"seoTitle":8,"description":232,"type":233,"position":11,"updated":12,"release":13,"related":234,"plans":8},"Quickstart","Create a workspace, sync it to your computer, connect an agent and let it set things up. About ten minutes.","guide",[235,57,64],"\u002Fdocs\u002Fget-started\u002Fset-up-with-an-agent",{"path":235,"title":237,"navTitle":238,"seoTitle":8,"description":239,"type":10,"position":38,"updated":12,"release":13,"related":240,"plans":8},"Set up a workspace with an agent","Set up with an agent","Hand a new, empty workspace to an agent. It interviews you, proposes a structure and builds it once you agree.",[176,64,241],"\u002Fdocs\u002Fplaybooks\u002Finbox-and-filing",{"path":243,"title":244,"navTitle":244,"seoTitle":8,"description":245,"type":37,"position":30,"updated":12,"release":13,"related":246,"plans":8},"\u002Fdocs\u002Fget-started\u002Fwhat-is-treehouse","What is Treehouse?","A shared workspace of plain files that people and agents both work in, with the sharing, history and review that plain folders lack.",[50,136,63],{"path":248,"title":249,"navTitle":250,"seoTitle":8,"description":251,"type":29,"position":11,"updated":12,"release":13,"related":8,"plans":8},"\u002Fdocs\u002Fhelp\u002Ffaq","Frequently asked questions","FAQ","Short answers to the questions people ask most about Treehouse, agents, sharing and data.",{"path":253,"title":254,"navTitle":8,"seoTitle":8,"description":255,"type":29,"position":48,"updated":12,"release":13,"related":8,"plans":8},"\u002Fdocs\u002Fhelp\u002Fglossary","Glossary","The words Treehouse uses, and what each one means in the app and in these docs.",{"path":257,"title":258,"navTitle":8,"seoTitle":8,"description":259,"type":24,"position":215,"updated":12,"release":13,"related":8,"plans":8},"\u002Fdocs\u002Fhelp","Help","Fixes for common problems, answers to common questions, and the words Treehouse uses.",{"path":151,"title":261,"navTitle":8,"seoTitle":262,"description":263,"type":10,"position":30,"updated":12,"release":13,"related":264,"plans":8},"Troubleshooting","Troubleshooting Treehouse sync, agents and sharing","The problems people hit most often with sync, agent connections, sharing and limits, and how to fix each one.",[146,57,93],{"path":266,"title":267,"navTitle":8,"seoTitle":268,"description":269,"type":24,"position":270,"updated":12,"release":13,"related":8,"plans":8},"\u002Fdocs","Treehouse docs","Treehouse documentation","How to set up a shared workspace for your team and your agents, and how to get the most out of it once you have.",0,{"path":272,"title":273,"navTitle":274,"seoTitle":8,"description":275,"type":233,"position":215,"updated":12,"release":13,"related":276,"plans":8},"\u002Fdocs\u002Fplaybooks\u002Fclient-work","Run client work","Client work","A folder per client, agents that prepare the deliverables, and share links that give clients exactly what they should see.",[32,42,88],{"path":241,"title":278,"navTitle":279,"seoTitle":8,"description":280,"type":233,"position":48,"updated":12,"release":13,"related":281,"plans":8},"Run an inbox your agent files","Inbox and filing","Drop anything into Inbox\u002F without deciding where it goes, and have an agent file it by rules you write once.",[110,282,176],"\u002Fdocs\u002Fplaybooks\u002Fsecond-brain",{"path":284,"title":285,"navTitle":8,"seoTitle":8,"description":286,"type":24,"position":181,"updated":12,"release":13,"related":8,"plans":8},"\u002Fdocs\u002Fplaybooks","Playbooks","Opinionated patterns for running a workspace with your agents, from the rulebook they follow to the routines that keep it alive.",{"path":288,"title":289,"navTitle":290,"seoTitle":8,"description":291,"type":233,"position":128,"updated":12,"release":13,"related":292,"plans":8},"\u002Fdocs\u002Fplaybooks\u002Fmemory-and-decisions","Give your agents a memory","Memory and decisions","Status pages, decision records and handoff notes that let any agent pick up where the last session left off.",[64,293,171],"\u002Fdocs\u002Fplaybooks\u002Fmultiple-agents",{"path":293,"title":295,"navTitle":296,"seoTitle":8,"description":297,"type":233,"position":25,"updated":12,"release":13,"related":298,"plans":8},"Work with several agents","Several agents","Give each agent its own key and its own lane, hand work over through files, and let versioning catch the collisions.",[40,288,93],{"path":88,"title":300,"navTitle":301,"seoTitle":8,"description":302,"type":233,"position":38,"updated":12,"release":13,"related":303,"plans":8},"Review your agent's work","Review loop","Let an agent draft, review it with comments in the web app, and have the agent work through your feedback thread by thread.",[304,162,57],"\u002Fdocs\u002Fsharing\u002Fcomments",{"path":110,"title":306,"navTitle":307,"seoTitle":8,"description":308,"type":233,"position":181,"updated":12,"release":13,"related":309,"plans":8},"Set up routines","Routines","Recurring agent work, like a morning inbox run or a weekly review, and where the schedule lives when Treehouse doesn't run agents itself.",[241,130,105],{"path":282,"title":311,"navTitle":8,"seoTitle":8,"description":312,"type":233,"position":160,"updated":12,"release":13,"related":313,"plans":8},"Build a second brain","A personal workspace where you capture everything quickly and an agent keeps it filed, linked and useful.",[241,110,171],{"path":176,"title":315,"navTitle":8,"seoTitle":8,"description":316,"type":233,"position":11,"updated":12,"release":13,"related":317,"plans":8},"Shape your workspace","Folder structures that work for people and agents alike, and the handful of habits that keep a workspace easy to navigate as it grows.",[64,171,194],{"path":64,"title":319,"navTitle":8,"seoTitle":8,"description":320,"type":233,"position":30,"updated":12,"release":13,"related":321,"plans":8},"Write your AGENTS.md","The one file every agent reads first. What to put in it so any agent, in any session, works the way your team does.",[176,63,235],{"path":323,"title":324,"navTitle":325,"seoTitle":8,"description":326,"type":24,"position":160,"updated":12,"release":13,"related":327,"plans":8},"\u002Fdocs\u002Fself-hosting","Self-host Treehouse","Self-hosting","Run your own Treehouse server - the architecture, required and optional environment variables, storage and encryption, and connecting clients.",[58,81,124],{"path":109,"title":329,"navTitle":330,"seoTitle":8,"description":331,"type":10,"position":38,"updated":12,"release":13,"related":332,"plans":8},"See what changed in a workspace","Activity","The activity feed shows every change and comment in a workspace, who made it, and whether it came from a person or an agent.",[63,40,162,93],{"path":304,"title":334,"navTitle":335,"seoTitle":8,"description":336,"type":10,"position":48,"updated":12,"release":13,"related":337,"plans":8},"Comment on a document","Comments","Leave comments on passages of a markdown file, reply and resolve threads, and let agents read and act on your feedback.",[88,162,109],{"path":51,"title":339,"navTitle":340,"seoTitle":8,"description":341,"type":10,"position":128,"updated":12,"release":13,"related":342,"plans":8},"Customise your workspace","Customise a workspace","Rename a workspace, give it an icon and colour, create new workspaces, and choose a theme for everyone or just for you.",[15,32],{"path":344,"title":345,"navTitle":8,"seoTitle":8,"description":346,"type":24,"position":38,"updated":12,"release":13,"related":8,"plans":8},"\u002Fdocs\u002Fsharing","Share and collaborate","Invite people into a workspace, share files with anyone by link, comment on documents and see who changed what.",{"path":16,"title":348,"navTitle":349,"seoTitle":8,"description":350,"type":10,"position":30,"updated":12,"release":13,"related":351,"plans":352},"Invite people to a workspace","Invite people","Bring teammates into a workspace with an invite link, see who's a member, and remove people when they no longer need access.",[32,5,40],[18,19],{"path":32,"title":354,"navTitle":355,"seoTitle":8,"description":356,"type":10,"position":11,"updated":12,"release":13,"related":357,"plans":8},"Share a file or folder with a link","Share links","Send members straight to a file, or give anyone read-only access to a file or folder, with an optional password and a pinned version.",[16,42,162,15],{"id":359,"title":120,"body":360,"description":121,"extension":2748,"meta":2749,"navTitle":8,"navigation":2750,"path":94,"plans":8,"position":48,"related":2751,"release":13,"seo":2752,"seoTitle":8,"stem":2753,"type":29,"updated":12,"__hash__":2754},"docs\u002Fdocs\u002Fagents\u002Freference\u002Frest-api.md",{"type":361,"value":362,"toc":2729},"minimark",[363,368,491,507,511,656,662,667,673,731,757,805,809,815,867,881,1053,1059,1127,1190,1193,1217,1220,1226,1434,1467,1471,1498,1511,1515,1527,1546,1550,1556,1685,1694,1698,1907,1910,1991,2027,2030,2131,2167,2215,2218,2227,2231,2444,2450,2454,2463,2665,2669,2725],[364,365,367],"h2",{"id":366},"conventions","Conventions",[369,370,371,384],"table",{},[372,373,374],"thead",{},[375,376,377,381],"tr",{},[378,379,380],"th",{},"Convention",[378,382,383],{},"Detail",[385,386,387,399,409,425,433,456,479],"tbody",{},[375,388,389,393],{},[390,391,392],"td",{},"Base URL",[390,394,395],{},[396,397,398],"code",{},"https:\u002F\u002Fapi.trytree.house",[375,400,401,404],{},[390,402,403],{},"Workspace routes",[390,405,406],{},[396,407,408],{},"\u002Fapi\u002Fworkspaces\u002F{workspaceId}\u002F…",[375,410,411,414],{},[390,412,413],{},"Auth",[390,415,416,419,420,424],{},[396,417,418],{},"x-api-key: \u003Ckey>"," or a signed-in browser session. See ",[421,422,423],"a",{"href":58},"authentication",".",[375,426,427,430],{},[390,428,429],{},"Request bodies",[390,431,432],{},"JSON, except file writes, which send the raw bytes",[375,434,435,438],{},[390,436,437],{},"Errors",[390,439,440,441,444,445,448,449,452,453,424],{},"JSON with ",[396,442,443],{},"statusCode"," and ",[396,446,447],{},"statusMessage",". Some errors carry details in ",[396,450,451],{},"data","; conflict and limit responses return a flat body such as ",[396,454,455],{},"{ \"error\": \"version_conflict\", … }",[375,457,458,461],{},[390,459,460],{},"Paths",[390,462,463,464,467,468,471,472,475,476,424],{},"Workspace-relative, ",[396,465,466],{},"\u002F","-separated, such as ",[396,469,470],{},"Projects\u002Fplan.md",". Encode each segment in the URL but keep the slashes. ",[396,473,474],{},"..",", backslashes and null bytes return ",[396,477,478],{},"400",[375,480,481,484],{},[390,482,483],{},"Private items",[390,485,486,487,490],{},"Another member's private file or folder behaves as if it doesn't exist (",[396,488,489],{},"404",").",[492,493,494,495,498,499,502,503,506],"p",{},"Find your workspace id in the web app URL (",[396,496,497],{},"\u002Fw\u002F\u003CworkspaceId>\u002F…","), with ",[396,500,501],{},"GET \u002Fapi\u002Fworkspace",", or with ",[396,504,505],{},"list_workspaces"," over MCP.",[364,508,510],{"id":509},"files","Files",[369,512,513,526],{},[372,514,515],{},[375,516,517,520,523],{},[378,518,519],{},"Method",[378,521,522],{},"Path",[378,524,525],{},"Purpose",[385,527,528,543,557,571,585,600,614,628,642],{},[375,529,530,535,540],{},[390,531,532],{},[396,533,534],{},"GET",[390,536,537],{},[396,538,539],{},"files\u002F{path}",[390,541,542],{},"Read a file's bytes",[375,544,545,550,554],{},[390,546,547],{},[396,548,549],{},"PUT",[390,551,552],{},[396,553,539],{},[390,555,556],{},"Create or update a file",[375,558,559,564,568],{},[390,560,561],{},[396,562,563],{},"DELETE",[390,565,566],{},[396,567,539],{},[390,569,570],{},"Delete a file",[375,572,573,577,582],{},[390,574,575],{},[396,576,534],{},[390,578,579],{},[396,580,581],{},"list?prefix=",[390,583,584],{},"List files",[375,586,587,592,597],{},[390,588,589],{},[396,590,591],{},"POST",[390,593,594],{},[396,595,596],{},"move",[390,598,599],{},"Move or rename one file",[375,601,602,606,611],{},[390,603,604],{},[396,605,591],{},[390,607,608],{},[396,609,610],{},"move-folder",[390,612,613],{},"Carry a folder's own privacy, icon and order to a new path",[375,615,616,620,625],{},[390,617,618],{},[396,619,534],{},[390,621,622],{},[396,623,624],{},"version?path=&version=",[390,626,627],{},"Read an earlier version",[375,629,630,634,639],{},[390,631,632],{},[396,633,591],{},[390,635,636],{},[396,637,638],{},"restore",[390,640,641],{},"Restore an earlier version as a new version",[375,643,644,648,653],{},[390,645,646],{},[396,647,534],{},[390,649,650],{},[396,651,652],{},"search?q=&limit=",[390,654,655],{},"Fuzzy search over names and paths",[492,657,658,659,424],{},"All paths in this section are relative to ",[396,660,661],{},"\u002Fapi\u002Fworkspaces\u002F{workspaceId}\u002F",[663,664,666],"h3",{"id":665},"read-a-file","Read a file",[492,668,669,672],{},[396,670,671],{},"GET files\u002F{path}"," returns the raw bytes with these headers:",[369,674,675,685],{},[372,676,677],{},[375,678,679,682],{},[378,680,681],{},"Header",[378,683,684],{},"Value",[385,686,687,697,711,721],{},[375,688,689,694],{},[390,690,691],{},[396,692,693],{},"X-Treehouse-Version",[390,695,696],{},"The file's current version. Prefer this header.",[375,698,699,704],{},[390,700,701],{},[396,702,703],{},"ETag",[390,705,706,707,710],{},"The same version, quoted (",[396,708,709],{},"\"3\"","). A CDN may weaken or strip it, so don't rely on it.",[375,712,713,718],{},[390,714,715],{},[396,716,717],{},"X-Treehouse-Content-Hash",[390,719,720],{},"SHA-256 of these exact bytes. Unlike a version number, it is never reused.",[375,722,723,728],{},[390,724,725],{},[396,726,727],{},"Content-Type",[390,729,730],{},"The stored content type.",[492,732,733,734,737,738,741,742,745,746,749,750,752,753,756],{},"Send ",[396,735,736],{},"If-None-Match: \"\u003Cversion>\""," to get ",[396,739,740],{},"304 Not Modified"," when you already have that version. Add ",[396,743,744],{},"?download=1"," to get a ",[396,747,748],{},"Content-Disposition: attachment"," response. Errors: ",[396,751,489],{}," not found, ",[396,754,755],{},"502"," if the stored bytes are missing.",[758,759,764],"pre",{"className":760,"code":761,"language":762,"meta":763,"style":763},"language-bash shiki shiki-themes everforest-dark","curl -i https:\u002F\u002Fapi.trytree.house\u002Fapi\u002Fworkspaces\u002F$WS\u002Ffiles\u002FProjects\u002Fplan.md \\\n  -H \"x-api-key: $TREEHOUSE_API_KEY\"\n","bash","",[396,765,766,791],{"__ignoreMap":763},[767,768,770,774,778,781,785,788],"span",{"class":769,"line":30},"line",[767,771,773],{"class":772},"sRC7j","curl",[767,775,777],{"class":776},"sySyC"," -i",[767,779,780],{"class":776}," https:\u002F\u002Fapi.trytree.house\u002Fapi\u002Fworkspaces\u002F",[767,782,784],{"class":783},"s9lfW","$WS",[767,786,787],{"class":776},"\u002Ffiles\u002FProjects\u002Fplan.md",[767,789,790],{"class":772}," \\\n",[767,792,793,796,799,802],{"class":769,"line":11},[767,794,795],{"class":776},"  -H",[767,797,798],{"class":772}," \"x-api-key: ",[767,800,801],{"class":783},"$TREEHOUSE_API_KEY",[767,803,804],{"class":772},"\"\n",[663,806,808],{"id":807},"write-a-file","Write a file",[492,810,811,814],{},[396,812,813],{},"PUT files\u002F{path}"," with the complete file as the request body. Choose one precondition:",[369,816,817,826],{},[372,818,819],{},[375,820,821,823],{},[378,822,681],{},[378,824,825],{},"Behaviour",[385,827,828,842,855],{},[375,829,830,835],{},[390,831,832],{},[396,833,834],{},"If-Match: \"\u003Cn>\"",[390,836,837,838,841],{},"Update, only if the current version is ",[396,839,840],{},"n",". Quotes are optional.",[375,843,844,849],{},[390,845,846],{},[396,847,848],{},"If-None-Match: *",[390,850,851,852,490],{},"Create only. If the path exists with different content, your bytes become a conflicted copy (",[396,853,854],{},"412",[375,856,857,860],{},[390,858,859],{},"Neither",[390,861,862,863,866],{},"Create if the path doesn't exist; ",[396,864,865],{},"428"," if it does.",[492,868,869,870,872,873,876,877,880],{},"The ",[396,871,727],{}," you send is stored with the file. If you send none, it is guessed from the extension. Note that ",[396,874,875],{},"curl --data-binary"," sends ",[396,878,879],{},"application\u002Fx-www-form-urlencoded"," unless you set the header yourself.",[369,882,883,896],{},[372,884,885],{},[375,886,887,890,893],{},[378,888,889],{},"Status",[378,891,892],{},"Body",[378,894,895],{},"Meaning",[385,897,898,913,929,948,963,974,995,1010,1024,1039],{},[375,899,900,905,910],{},[390,901,902],{},[396,903,904],{},"201",[390,906,907],{},[396,908,909],{},"{ \"path\", \"version\" }",[390,911,912],{},"Created",[375,914,915,920,924],{},[390,916,917],{},[396,918,919],{},"200",[390,921,922],{},[396,923,909],{},[390,925,926,927,424],{},"Updated. The new version is also in ",[396,928,703],{},[375,930,931,935,945],{},[390,932,933],{},[396,934,478],{},[390,936,937,940,941,944],{},[396,938,939],{},"Empty request body",", ",[396,942,943],{},"Invalid If-Match",", or a path error",[390,946,947],{},"Nothing written",[375,949,950,955,960],{},[390,951,952],{},[396,953,954],{},"402",[390,956,957],{},[396,958,959],{},"{ \"error\": \"workspace_read_only\" }",[390,961,962],{},"The subscription has lapsed. Reads, moves and deletes still work.",[375,964,965,969,971],{},[390,966,967],{},[396,968,489],{},[390,970],{},[390,972,973],{},"You can't write to that path (another member's private item)",[375,975,976,980,985],{},[390,977,978],{},[396,979,854],{},[390,981,982],{},[396,983,984],{},"{ \"error\": \"version_conflict\", \"current_version\", \"conflict_copy_path\" }",[390,986,987,988,991,992,424],{},"Stale ",[396,989,990],{},"If-Match",". Your bytes were saved at ",[396,993,994],{},"conflict_copy_path",[375,996,997,1002,1007],{},[390,998,999],{},[396,1000,1001],{},"413",[390,1003,1004],{},[396,1005,1006],{},"data: { \"error\": \"file_too_large\", \"limit_bytes\" }",[390,1008,1009],{},"Larger than the per-file limit",[375,1011,1012,1016,1021],{},[390,1013,1014],{},[396,1015,865],{},[390,1017,1018],{},[396,1019,1020],{},"If-Match required for existing file",[390,1022,1023],{},"The path exists and you sent no precondition",[375,1025,1026,1031,1036],{},[390,1027,1028],{},[396,1029,1030],{},"507",[390,1032,1033],{},[396,1034,1035],{},"{ \"error\": \"quota_exceeded\", \"used_bytes\", \"limit_bytes\" }",[390,1037,1038],{},"Storage limit reached",[375,1040,1041,1045,1050],{},[390,1042,1043],{},[396,1044,1030],{},[390,1046,1047],{},[396,1048,1049],{},"{ \"error\": \"file_count_exceeded\", \"used_files\", \"limit_files\" }",[390,1051,1052],{},"File limit reached",[492,1054,1055,1056,424],{},"A stale write with content identical to the current file succeeds without creating a copy. See ",[421,1057,1058],{"href":87},"versions and conflicts",[758,1060,1062],{"className":760,"code":1061,"language":762,"meta":763,"style":763},"# Update version 3 of a file\ncurl -X PUT https:\u002F\u002Fapi.trytree.house\u002Fapi\u002Fworkspaces\u002F$WS\u002Ffiles\u002FProjects\u002Fplan.md \\\n  -H \"x-api-key: $TREEHOUSE_API_KEY\" \\\n  -H 'If-Match: \"3\"' \\\n  -H \"Content-Type: text\u002Fmarkdown\" \\\n  --data-binary @plan.md\n",[396,1063,1064,1070,1088,1101,1110,1119],{"__ignoreMap":763},[767,1065,1066],{"class":769,"line":30},[767,1067,1069],{"class":1068},"s67c6","# Update version 3 of a file\n",[767,1071,1072,1074,1077,1080,1082,1084,1086],{"class":769,"line":11},[767,1073,773],{"class":772},[767,1075,1076],{"class":776}," -X",[767,1078,1079],{"class":776}," PUT",[767,1081,780],{"class":776},[767,1083,784],{"class":783},[767,1085,787],{"class":776},[767,1087,790],{"class":772},[767,1089,1090,1092,1094,1096,1099],{"class":769,"line":48},[767,1091,795],{"class":776},[767,1093,798],{"class":772},[767,1095,801],{"class":783},[767,1097,1098],{"class":772},"\"",[767,1100,790],{"class":772},[767,1102,1103,1105,1108],{"class":769,"line":38},[767,1104,795],{"class":776},[767,1106,1107],{"class":772}," 'If-Match: \"3\"'",[767,1109,790],{"class":772},[767,1111,1112,1114,1117],{"class":769,"line":128},[767,1113,795],{"class":776},[767,1115,1116],{"class":772}," \"Content-Type: text\u002Fmarkdown\"",[767,1118,790],{"class":772},[767,1120,1121,1124],{"class":769,"line":181},[767,1122,1123],{"class":776},"  --data-binary",[767,1125,1126],{"class":776}," @plan.md\n",[758,1128,1130],{"className":760,"code":1129,"language":762,"meta":763,"style":763},"# Create a new file, failing safely if it already exists\ncurl -X PUT https:\u002F\u002Fapi.trytree.house\u002Fapi\u002Fworkspaces\u002F$WS\u002Ffiles\u002FInbox\u002Fidea.md \\\n  -H \"x-api-key: $TREEHOUSE_API_KEY\" \\\n  -H \"If-None-Match: *\" \\\n  -H \"Content-Type: text\u002Fmarkdown\" \\\n  --data-binary @idea.md\n",[396,1131,1132,1137,1154,1166,1175,1183],{"__ignoreMap":763},[767,1133,1134],{"class":769,"line":30},[767,1135,1136],{"class":1068},"# Create a new file, failing safely if it already exists\n",[767,1138,1139,1141,1143,1145,1147,1149,1152],{"class":769,"line":11},[767,1140,773],{"class":772},[767,1142,1076],{"class":776},[767,1144,1079],{"class":776},[767,1146,780],{"class":776},[767,1148,784],{"class":783},[767,1150,1151],{"class":776},"\u002Ffiles\u002FInbox\u002Fidea.md",[767,1153,790],{"class":772},[767,1155,1156,1158,1160,1162,1164],{"class":769,"line":48},[767,1157,795],{"class":776},[767,1159,798],{"class":772},[767,1161,801],{"class":783},[767,1163,1098],{"class":772},[767,1165,790],{"class":772},[767,1167,1168,1170,1173],{"class":769,"line":38},[767,1169,795],{"class":776},[767,1171,1172],{"class":772}," \"If-None-Match: *\"",[767,1174,790],{"class":772},[767,1176,1177,1179,1181],{"class":769,"line":128},[767,1178,795],{"class":776},[767,1180,1116],{"class":772},[767,1182,790],{"class":772},[767,1184,1185,1187],{"class":769,"line":181},[767,1186,1123],{"class":776},[767,1188,1189],{"class":776}," @idea.md\n",[663,1191,570],{"id":1192},"delete-a-file",[492,1194,1195,1198,1199,1201,1202,1204,1205,1208,1209,1211,1212,1198,1214,424],{},[396,1196,1197],{},"DELETE files\u002F{path}"," with ",[396,1200,834],{}," (required, ",[396,1203,865],{}," without it). Returns ",[396,1206,1207],{},"204",". If the file has changed since version ",[396,1210,840],{},", nothing is deleted and you get ",[396,1213,854],{},[396,1215,1216],{},"{ \"error\": \"version_conflict\", \"current_version\" }",[663,1218,584],{"id":1219},"list-files",[492,1221,1222,1225],{},[396,1223,1224],{},"GET list?prefix=Projects"," returns every entry under the prefix in one response:",[758,1227,1231],{"className":1228,"code":1229,"language":1230,"meta":763,"style":763},"language-json shiki shiki-themes everforest-dark","{\n  \"entries\": [\n    { \"path\": \"Projects\u002Fplan.md\", \"size\": 1204, \"contentType\": \"text\u002Fmarkdown\", \"version\": 3 }\n  ],\n  \"icons\": { \"Projects\": \"📁\" },\n  \"orders\": { \"Projects\u002Fplan.md\": 0 },\n  \"privatePaths\": [],\n  \"nextCursor\": null\n}\n","json",[396,1232,1233,1239,1257,1328,1336,1371,1399,1415,1429],{"__ignoreMap":763},[767,1234,1235],{"class":769,"line":30},[767,1236,1238],{"class":1237},"sY0Nt","{\n",[767,1240,1241,1245,1249,1251,1254],{"class":769,"line":11},[767,1242,1244],{"class":1243},"s3WQq","  \"",[767,1246,1248],{"class":1247},"sDOmQ","entries",[767,1250,1098],{"class":1243},[767,1252,1253],{"class":1243},":",[767,1255,1256],{"class":1237}," [\n",[767,1258,1259,1262,1264,1267,1269,1271,1274,1276,1278,1281,1283,1286,1288,1290,1293,1295,1297,1300,1302,1304,1306,1309,1311,1313,1315,1318,1320,1322,1325],{"class":769,"line":48},[767,1260,1261],{"class":1237},"    { ",[767,1263,1098],{"class":1243},[767,1265,1266],{"class":1247},"path",[767,1268,1098],{"class":1243},[767,1270,1253],{"class":1243},[767,1272,1273],{"class":1243}," \"",[767,1275,470],{"class":772},[767,1277,1098],{"class":1243},[767,1279,1280],{"class":1243},",",[767,1282,1273],{"class":1243},[767,1284,1285],{"class":1247},"size",[767,1287,1098],{"class":1243},[767,1289,1253],{"class":1243},[767,1291,1292],{"class":783}," 1204",[767,1294,1280],{"class":1243},[767,1296,1273],{"class":1243},[767,1298,1299],{"class":1247},"contentType",[767,1301,1098],{"class":1243},[767,1303,1253],{"class":1243},[767,1305,1273],{"class":1243},[767,1307,1308],{"class":772},"text\u002Fmarkdown",[767,1310,1098],{"class":1243},[767,1312,1280],{"class":1243},[767,1314,1273],{"class":1243},[767,1316,1317],{"class":1247},"version",[767,1319,1098],{"class":1243},[767,1321,1253],{"class":1243},[767,1323,1324],{"class":783}," 3",[767,1326,1327],{"class":1237}," }\n",[767,1329,1330,1333],{"class":769,"line":38},[767,1331,1332],{"class":1237},"  ]",[767,1334,1335],{"class":1243},",\n",[767,1337,1338,1340,1343,1345,1347,1350,1352,1355,1357,1359,1361,1364,1366,1369],{"class":769,"line":128},[767,1339,1244],{"class":1243},[767,1341,1342],{"class":1247},"icons",[767,1344,1098],{"class":1243},[767,1346,1253],{"class":1243},[767,1348,1349],{"class":1237}," { ",[767,1351,1098],{"class":1243},[767,1353,1354],{"class":1247},"Projects",[767,1356,1098],{"class":1243},[767,1358,1253],{"class":1243},[767,1360,1273],{"class":1243},[767,1362,1363],{"class":772},"📁",[767,1365,1098],{"class":1243},[767,1367,1368],{"class":1237}," }",[767,1370,1335],{"class":1243},[767,1372,1373,1375,1378,1380,1382,1384,1386,1388,1390,1392,1395,1397],{"class":769,"line":181},[767,1374,1244],{"class":1243},[767,1376,1377],{"class":1247},"orders",[767,1379,1098],{"class":1243},[767,1381,1253],{"class":1243},[767,1383,1349],{"class":1237},[767,1385,1098],{"class":1243},[767,1387,470],{"class":1247},[767,1389,1098],{"class":1243},[767,1391,1253],{"class":1243},[767,1393,1394],{"class":783}," 0",[767,1396,1368],{"class":1237},[767,1398,1335],{"class":1243},[767,1400,1401,1403,1406,1408,1410,1413],{"class":769,"line":25},[767,1402,1244],{"class":1243},[767,1404,1405],{"class":1247},"privatePaths",[767,1407,1098],{"class":1243},[767,1409,1253],{"class":1243},[767,1411,1412],{"class":1237}," []",[767,1414,1335],{"class":1243},[767,1416,1417,1419,1422,1424,1426],{"class":769,"line":215},[767,1418,1244],{"class":1243},[767,1420,1421],{"class":1247},"nextCursor",[767,1423,1098],{"class":1243},[767,1425,1253],{"class":1243},[767,1427,1428],{"class":783}," null\n",[767,1430,1431],{"class":769,"line":160},[767,1432,1433],{"class":1237},"}\n",[492,1435,1436,1437,1440,1441,1444,1445,1447,1448,444,1451,1454,1455,1457,1458,1461,1462,1464,1465,424],{},"Omit ",[396,1438,1439],{},"prefix"," for the whole workspace. Entries include ",[396,1442,1443],{},".keep"," files, the hidden placeholders that keep empty folders in place. ",[396,1446,1405],{}," lists items that are private to you. ",[396,1449,1450],{},"limit",[396,1452,1453],{},"cursor"," are accepted for forward compatibility but currently have no effect, and ",[396,1456,1421],{}," is always ",[396,1459,1460],{},"null",". If you page, keep requesting until ",[396,1463,1421],{}," is ",[396,1466,1460],{},[663,1468,1470],{"id":1469},"move-a-file","Move a file",[492,1472,1473,1198,1476,1479,1480,1483,1484,1487,1488,1490,1491,1493,1494,1497],{},[396,1474,1475],{},"POST move",[396,1477,1478],{},"{ \"from\", \"to\", \"baseVersion\"? }",". Returns ",[396,1481,1482],{},"{ \"path\", \"version\": 1 }",": a moved file restarts at version 1. With ",[396,1485,1486],{},"baseVersion",", the move only happens if the source is still at that version (",[396,1489,854],{}," otherwise). ",[396,1492,489],{}," if the source is missing, ",[396,1495,1496],{},"409"," if the destination exists.",[492,1499,1500,1501,1198,1504,1507,1508,1510],{},"To move a folder, move each file, then call ",[396,1502,1503],{},"POST move-folder",[396,1505,1506],{},"{ \"from\", \"to\" }"," so the folder's own privacy setting, icon and ordering follow it. ",[396,1509,610],{}," does not move any files.",[663,1512,1514],{"id":1513},"versions-and-restore","Versions and restore",[492,1516,1517,1520,1521,1523,1524,1526],{},[396,1518,1519],{},"GET version?path=Projects\u002Fplan.md&version=2"," returns that version's bytes, with ",[396,1522,703],{}," set to the version. ",[396,1525,489],{}," if the path or version isn't available.",[492,1528,1529,1198,1532,1535,1536,1539,1540,1198,1542,1545],{},[396,1530,1531],{},"POST restore",[396,1533,1534],{},"{ \"path\", \"targetVersion\" }"," writes that version's bytes as a new version and returns ",[396,1537,1538],{},"{ \"path\", \"version\", \"restoredFrom\" }",". If concurrent writes keep winning, it returns ",[396,1541,1496],{},[396,1543,1544],{},"{ \"error\": \"restore_conflicted\", \"current_version\", \"conflict_copy_path\" }"," and the restored bytes are in the conflicted copy.",[663,1547,1549],{"id":1548},"search","Search",[492,1551,1552,1555],{},[396,1553,1554],{},"GET search?q=clinot&limit=20"," fuzzy-matches file and folder paths (not contents), ranked best first:",[758,1557,1559],{"className":1228,"code":1558,"language":1230,"meta":763,"style":763},"{\n  \"results\": [\n    { \"path\": \"Clients\u002Facme\u002Fnotes.md\", \"name\": \"notes.md\", \"isDir\": false, \"score\": 41.2 }\n  ],\n  \"totalMatches\": 1,\n  \"truncated\": false\n}\n",[396,1560,1561,1565,1578,1645,1651,1667,1681],{"__ignoreMap":763},[767,1562,1563],{"class":769,"line":30},[767,1564,1238],{"class":1237},[767,1566,1567,1569,1572,1574,1576],{"class":769,"line":11},[767,1568,1244],{"class":1243},[767,1570,1571],{"class":1247},"results",[767,1573,1098],{"class":1243},[767,1575,1253],{"class":1243},[767,1577,1256],{"class":1237},[767,1579,1580,1582,1584,1586,1588,1590,1592,1595,1597,1599,1601,1604,1606,1608,1610,1613,1615,1617,1619,1622,1624,1626,1629,1631,1633,1636,1638,1640,1643],{"class":769,"line":48},[767,1581,1261],{"class":1237},[767,1583,1098],{"class":1243},[767,1585,1266],{"class":1247},[767,1587,1098],{"class":1243},[767,1589,1253],{"class":1243},[767,1591,1273],{"class":1243},[767,1593,1594],{"class":772},"Clients\u002Facme\u002Fnotes.md",[767,1596,1098],{"class":1243},[767,1598,1280],{"class":1243},[767,1600,1273],{"class":1243},[767,1602,1603],{"class":1247},"name",[767,1605,1098],{"class":1243},[767,1607,1253],{"class":1243},[767,1609,1273],{"class":1243},[767,1611,1612],{"class":772},"notes.md",[767,1614,1098],{"class":1243},[767,1616,1280],{"class":1243},[767,1618,1273],{"class":1243},[767,1620,1621],{"class":1247},"isDir",[767,1623,1098],{"class":1243},[767,1625,1253],{"class":1243},[767,1627,1628],{"class":783}," false",[767,1630,1280],{"class":1243},[767,1632,1273],{"class":1243},[767,1634,1635],{"class":1247},"score",[767,1637,1098],{"class":1243},[767,1639,1253],{"class":1243},[767,1641,1642],{"class":783}," 41.2",[767,1644,1327],{"class":1237},[767,1646,1647,1649],{"class":769,"line":38},[767,1648,1332],{"class":1237},[767,1650,1335],{"class":1243},[767,1652,1653,1655,1658,1660,1662,1665],{"class":769,"line":128},[767,1654,1244],{"class":1243},[767,1656,1657],{"class":1247},"totalMatches",[767,1659,1098],{"class":1243},[767,1661,1253],{"class":1243},[767,1663,1664],{"class":783}," 1",[767,1666,1335],{"class":1243},[767,1668,1669,1671,1674,1676,1678],{"class":769,"line":181},[767,1670,1244],{"class":1243},[767,1672,1673],{"class":1247},"truncated",[767,1675,1098],{"class":1243},[767,1677,1253],{"class":1243},[767,1679,1680],{"class":783}," false\n",[767,1682,1683],{"class":769,"line":25},[767,1684,1433],{"class":1237},[492,1686,1687,1690,1691,1693],{},[396,1688,1689],{},"q"," is required and at most 200 characters. ",[396,1692,1450],{}," defaults to 50 and is capped at 200. There is no offset: narrow the query instead.",[364,1695,1697],{"id":1696},"workspace","Workspace",[369,1699,1700,1710],{},[372,1701,1702],{},[375,1703,1704,1706,1708],{},[378,1705,519],{},[378,1707,522],{},[378,1709,525],{},[385,1711,1712,1728,1761,1806,1823,1839,1859,1876,1893],{},[375,1713,1714,1718,1723],{},[390,1715,1716],{},[396,1717,534],{},[390,1719,1720],{},[396,1721,1722],{},"\u002Fapi\u002Fworkspaces\u002F{id}",[390,1724,1725],{},[396,1726,1727],{},"{ id, name, icon, color, theme, themeCss }",[375,1729,1730,1735,1739],{},[390,1731,1732],{},[396,1733,1734],{},"PATCH",[390,1736,1737],{},[396,1738,1722],{},[390,1740,1741,1742,1744,1745,940,1748,940,1751,940,1754,1757,1758,1760],{},"Update ",[396,1743,1603],{}," (1-100 characters), ",[396,1746,1747],{},"icon",[396,1749,1750],{},"color",[396,1752,1753],{},"theme",[396,1755,1756],{},"themeCss",". An empty string or ",[396,1759,1460],{}," clears a field.",[375,1762,1763,1767,1772],{},[390,1764,1765],{},[396,1766,534],{},[390,1768,1769],{},[396,1770,1771],{},"\u002Fapi\u002Fworkspaces\u002F{id}\u002Fusage",[390,1773,1774,940,1777,940,1780,940,1783,940,1786,940,1789,940,1792,940,1795,1798,1799,1802,1803,1805],{},[396,1775,1776],{},"usedBytes",[396,1778,1779],{},"limitBytes",[396,1781,1782],{},"remainingBytes",[396,1784,1785],{},"usedFiles",[396,1787,1788],{},"limitFiles",[396,1790,1791],{},"remainingFiles",[396,1793,1794],{},"warning",[396,1796,1797],{},"maxFileBytes",", share-view counts and ",[396,1800,1801],{},"billing",". Limits are ",[396,1804,1460],{}," when unlimited.",[375,1807,1808,1812,1817],{},[390,1809,1810],{},[396,1811,534],{},[390,1813,1814],{},[396,1815,1816],{},"\u002Fapi\u002Fworkspaces\u002F{id}\u002Fmembers",[390,1818,1819,1822],{},[396,1820,1821],{},"{ members: [{ id, name, image, role }] }",". No email addresses.",[375,1824,1825,1829,1834],{},[390,1826,1827],{},[396,1828,563],{},[390,1830,1831],{},[396,1832,1833],{},"\u002Fapi\u002Fworkspaces\u002F{id}\u002Fmembers\u002F{userId}",[390,1835,1836,1837,490],{},"Remove a member. Browser session only; owners and admins only. The last owner can't be removed (",[396,1838,1496],{},[375,1840,1841,1845,1850],{},[390,1842,1843],{},[396,1844,549],{},[390,1846,1847],{},[396,1848,1849],{},"\u002Fapi\u002Fworkspaces\u002F{id}\u002Fnode-icon",[390,1851,1852,1855,1856,1858],{},[396,1853,1854],{},"{ path, icon }"," sets a file or folder icon; empty ",[396,1857,1747],{}," clears it.",[375,1860,1861,1865,1870],{},[390,1862,1863],{},[396,1864,549],{},[390,1866,1867],{},[396,1868,1869],{},"\u002Fapi\u002Fworkspaces\u002F{id}\u002Fnode-private",[390,1871,1872,1875],{},[396,1873,1874],{},"{ path, kind, private }"," makes an item private to you or shared again.",[375,1877,1878,1882,1887],{},[390,1879,1880],{},[396,1881,549],{},[390,1883,1884],{},[396,1885,1886],{},"\u002Fapi\u002Fworkspaces\u002F{id}\u002Fnode-order",[390,1888,1889,1892],{},[396,1890,1891],{},"{ paths: [...] }"," sets a custom display order (up to 1000 paths).",[375,1894,1895,1899,1904],{},[390,1896,1897],{},[396,1898,591],{},[390,1900,1901],{},[396,1902,1903],{},"\u002Fapi\u002Fworkspaces\u002F{id}\u002Ficon",[390,1905,1906],{},"Raw image bytes (up to 1 MiB) as the workspace icon.",[364,1908,355],{"id":1909},"share-links",[369,1911,1912,1922],{},[372,1913,1914],{},[375,1915,1916,1918,1920],{},[378,1917,519],{},[378,1919,522],{},[378,1921,525],{},[385,1923,1924,1941,1961,1978],{},[375,1925,1926,1930,1935],{},[390,1927,1928],{},[396,1929,534],{},[390,1931,1932],{},[396,1933,1934],{},"\u002Fapi\u002Fworkspaces\u002F{id}\u002Fshares?path=",[390,1936,1937,1940],{},[396,1938,1939],{},"{ shares, inherited }",": shares on this path, and folder shares above it that also cover it",[375,1942,1943,1947,1952],{},[390,1944,1945],{},[396,1946,591],{},[390,1948,1949],{},[396,1950,1951],{},"\u002Fapi\u002Fworkspaces\u002F{id}\u002Fshares",[390,1953,1954,1955,1479,1958,424],{},"Create a link. Body ",[396,1956,1957],{},"{ path, kind, access, password?, pinnedVersion?, pinnedContentHash?, allowScripts? }",[396,1959,1960],{},"201 { share }",[375,1962,1963,1967,1972],{},[390,1964,1965],{},[396,1966,1734],{},[390,1968,1969],{},[396,1970,1971],{},"\u002Fapi\u002Fworkspaces\u002F{id}\u002Fshares\u002F{shareId}",[390,1973,1974,1977],{},[396,1975,1976],{},"{ allowScripts }"," turns script execution on or off for an HTML link",[375,1979,1980,1984,1988],{},[390,1981,1982],{},[396,1983,563],{},[390,1985,1986],{},[396,1987,1971],{},[390,1989,1990],{},"Revoke a link",[492,1992,1993,1464,1996,1999,2000,2003,2004,1464,2007,1999,2010,2012,2013,2017,2018,2021,2022,2024,2025,490],{},[396,1994,1995],{},"kind",[396,1997,1998],{},"file"," or ",[396,2001,2002],{},"folder","; ",[396,2005,2006],{},"access",[396,2008,2009],{},"member",[396,2011,13],{},". ",[2014,2015,2016],"strong",{},"API keys can only create member links."," Public links, password-protected links, and turning scripts on require a signed-in browser session; with a key they return ",[396,2019,2020],{},"403",". A key can turn scripts off. Private items can't be shared (",[396,2023,1496],{},"), and folder links can never run scripts (",[396,2026,478],{},[364,2028,335],{"id":2029},"comments",[369,2031,2032,2042],{},[372,2033,2034],{},[375,2035,2036,2038,2040],{},[378,2037,519],{},[378,2039,522],{},[378,2041,525],{},[385,2043,2044,2058,2071,2091,2113],{},[375,2045,2046,2050,2055],{},[390,2047,2048],{},[396,2049,534],{},[390,2051,2052],{},[396,2053,2054],{},"\u002Fapi\u002Fworkspaces\u002F{id}\u002Fcomments",[390,2056,2057],{},"List threads",[375,2059,2060,2064,2068],{},[390,2061,2062],{},[396,2063,591],{},[390,2065,2066],{},[396,2067,2054],{},[390,2069,2070],{},"Start a thread",[375,2072,2073,2077,2082],{},[390,2074,2075],{},[396,2076,591],{},[390,2078,2079],{},[396,2080,2081],{},"\u002Fapi\u002Fworkspaces\u002F{id}\u002Fcomments\u002F{threadId}\u002Freplies",[390,2083,2084,2085,2012,2088,424],{},"Reply. Body ",[396,2086,2087],{},"{ body, dedupeKey? }",[396,2089,2090],{},"201 { entry, deduped }",[375,2092,2093,2097,2102],{},[390,2094,2095],{},[396,2096,549],{},[390,2098,2099],{},[396,2100,2101],{},"\u002Fapi\u002Fworkspaces\u002F{id}\u002Fcomments\u002F{threadId}\u002Fresolved",[390,2103,2104,2105,2108,2109,2112],{},"Body ",[396,2106,2107],{},"{ \"resolved\": true }"," to resolve, ",[396,2110,2111],{},"false"," to reopen. Idempotent.",[375,2114,2115,2119,2124],{},[390,2116,2117],{},[396,2118,534],{},[390,2120,2121],{},[396,2122,2123],{},"\u002Fapi\u002Fworkspaces\u002F{id}\u002Fcomments\u002F{threadId}\u002Fpinned-content",[390,2125,2126,2127,2130],{},"The exact markdown the thread was written against, as a download. ",[396,2128,2129],{},"410"," if it's gone.",[492,2132,2133,2134,2137,2138,940,2140,940,2143,940,2146,940,2149,940,2152,940,2154,940,2157,940,2160,2163,2164,424],{},"The list accepts the same filters as the MCP ",[396,2135,2136],{},"list_comments"," tool, as query parameters: ",[396,2139,1266],{},[396,2141,2142],{},"threadId",[396,2144,2145],{},"status",[396,2147,2148],{},"anchorStatus",[396,2150,2151],{},"author",[396,2153,1450],{},[396,2155,2156],{},"offset",[396,2158,2159],{},"entriesLimit",[396,2161,2162],{},"entriesOffset",". It returns ",[396,2165,2166],{},"{ threads, total, nextOffset, truncated }",[492,2168,2169,2170,2173,2174,2176,2177,1999,2180,2183,2184,2187,2188,1198,2190,2193,2194,2197,2198,1999,2201,2204,2205,2208,2209,2211,2212,424],{},"Creating a thread takes ",[396,2171,2172],{},"{ path, body, kind, quote?, contextBefore?, contextAfter?, occurrence?, baseVersion? }",". Unlike MCP, ",[396,2175,1995],{}," (",[396,2178,2179],{},"range",[396,2181,2182],{},"point",") is required here. Success is ",[396,2185,2186],{},"201 { thread }",". A quote that can't be placed returns ",[396,2189,1496],{},[396,2191,2192],{},"anchor_ambiguous"," (plus ",[396,2195,2196],{},"occurrences","), ",[396,2199,2200],{},"anchor_not_found",[396,2202,2203],{},"base_version_conflict",". A non-markdown file returns ",[396,2206,2207],{},"400 { \"error\": \"not_markdown\" }",", and a read-only workspace ",[396,2210,954],{},". Size limits match the ",[421,2213,116],{"href":2214},"\u002Fdocs\u002Fagents\u002Freference\u002Fmcp-server#limits",[364,2216,106],{"id":2217},"change-feed",[492,2219,2220,2223,2224,424],{},[396,2221,2222],{},"GET \u002Fapi\u002Fworkspaces\u002F{id}\u002Fchanges?sinceSeq=\u003Cn>"," returns every change after a cursor. See ",[421,2225,2226],{"href":105},"change feed",[364,2228,2230],{"id":2229},"account-and-top-level-endpoints","Account and top-level endpoints",[369,2232,2233,2245],{},[372,2234,2235],{},[375,2236,2237,2239,2241,2243],{},[378,2238,519],{},[378,2240,522],{},[378,2242,413],{},[378,2244,525],{},[385,2246,2247,2266,2289,2309,2328,2348,2366,2389,2405,2421],{},[375,2248,2249,2253,2258,2261],{},[390,2250,2251],{},[396,2252,534],{},[390,2254,2255],{},[396,2256,2257],{},"\u002Fapi\u002Fhealth",[390,2259,2260],{},"None",[390,2262,2263],{},[396,2264,2265],{},"{ status: \"ok\", timestamp }",[375,2267,2268,2272,2277,2279],{},[390,2269,2270],{},[396,2271,534],{},[390,2273,2274],{},[396,2275,2276],{},"\u002Fapi\u002Fplans",[390,2278,2260],{},[390,2280,2281,2284,2285,2288],{},[396,2282,2283],{},"{ available, plans }",", the plans on offer. ",[396,2286,2287],{},"available: false"," on servers without billing.",[375,2290,2291,2295,2300,2303],{},[390,2292,2293],{},[396,2294,534],{},[390,2296,2297],{},[396,2298,2299],{},"\u002Fapi\u002Fme",[390,2301,2302],{},"Key or session",[390,2304,2305,2308],{},[396,2306,2307],{},"{ user }",", the account behind the credential",[375,2310,2311,2315,2320,2322],{},[390,2312,2313],{},[396,2314,534],{},[390,2316,2317],{},[396,2318,2319],{},"\u002Fapi\u002Fworkspace",[390,2321,2302],{},[390,2323,2324,2327],{},[396,2325,2326],{},"{ id, name }",": a workspace-scoped key's workspace, otherwise your oldest workspace",[375,2329,2330,2334,2339,2342],{},[390,2331,2332],{},[396,2333,534],{},[390,2335,2336],{},[396,2337,2338],{},"\u002Fapi\u002Fworkspaces",[390,2340,2341],{},"Session only",[390,2343,2344,2347],{},[396,2345,2346],{},"{ workspaces: [...] }",", every workspace you're a member of",[375,2349,2350,2354,2358,2360],{},[390,2351,2352],{},[396,2353,591],{},[390,2355,2356],{},[396,2357,2338],{},[390,2359,2341],{},[390,2361,2362,2363,424],{},"Create a workspace. Body ",[396,2364,2365],{},"{ name, icon?, color? }",[375,2367,2368,2372,2377,2379],{},[390,2369,2370],{},[396,2371,591],{},[390,2373,2374],{},[396,2375,2376],{},"\u002Fapi\u002Finvites",[390,2378,2341],{},[390,2380,2381,2384,2385,2388],{},[396,2382,2383],{},"{ workspaceId, expiresInDays?, maxUses? }"," returns an invite ",[396,2386,2387],{},"url"," (expiry 7 days by default, 90 at most)",[375,2390,2391,2395,2400,2402],{},[390,2392,2393],{},[396,2394,534],{},[390,2396,2397],{},[396,2398,2399],{},"\u002Fapi\u002Finvites\u002F{token}",[390,2401,2260],{},[390,2403,2404],{},"Preview an invite",[375,2406,2407,2411,2416,2418],{},[390,2408,2409],{},[396,2410,591],{},[390,2412,2413],{},[396,2414,2415],{},"\u002Fapi\u002Finvites\u002F{token}\u002Faccept",[390,2417,2341],{},[390,2419,2420],{},"Join the workspace",[375,2422,2423,2428,2436,2441],{},[390,2424,2425],{},[396,2426,2427],{},"*",[390,2429,2430,940,2433],{},[396,2431,2432],{},"\u002Fapi\u002Fkeys",[396,2434,2435],{},"\u002Fapi\u002Fdevice\u002F*",[390,2437,2438,2439],{},"See ",[421,2440,423],{"href":58},[390,2442,2443],{},"Keys and the device flow",[492,2445,2446,2447,2449],{},"To list workspaces with an API key, use the MCP ",[396,2448,505],{}," tool with an account-wide key.",[364,2451,2453],{"id":2452},"content-types","Content types",[492,2455,2456,2457,2459,2460,424],{},"When a write doesn't send a ",[396,2458,727],{},", the file's type comes from its extension. Anything else is stored as ",[396,2461,2462],{},"application\u002Foctet-stream",[369,2464,2465,2475],{},[372,2466,2467],{},[375,2468,2469,2472],{},[378,2470,2471],{},"Extension",[378,2473,2474],{},"Content type",[385,2476,2477,2491,2503,2515,2530,2542,2554,2566,2578,2590,2602,2617,2629,2641,2653],{},[375,2478,2479,2487],{},[390,2480,2481,940,2484],{},[396,2482,2483],{},".md",[396,2485,2486],{},".markdown",[390,2488,2489],{},[396,2490,1308],{},[375,2492,2493,2498],{},[390,2494,2495],{},[396,2496,2497],{},".txt",[390,2499,2500],{},[396,2501,2502],{},"text\u002Fplain",[375,2504,2505,2510],{},[390,2506,2507],{},[396,2508,2509],{},".json",[390,2511,2512],{},[396,2513,2514],{},"application\u002Fjson",[375,2516,2517,2525],{},[390,2518,2519,940,2522],{},[396,2520,2521],{},".html",[396,2523,2524],{},".htm",[390,2526,2527],{},[396,2528,2529],{},"text\u002Fhtml",[375,2531,2532,2537],{},[390,2533,2534],{},[396,2535,2536],{},".css",[390,2538,2539],{},[396,2540,2541],{},"text\u002Fcss",[375,2543,2544,2549],{},[390,2545,2546],{},[396,2547,2548],{},".js",[390,2550,2551],{},[396,2552,2553],{},"text\u002Fjavascript",[375,2555,2556,2561],{},[390,2557,2558],{},[396,2559,2560],{},".ts",[390,2562,2563],{},[396,2564,2565],{},"text\u002Ftypescript",[375,2567,2568,2573],{},[390,2569,2570],{},[396,2571,2572],{},".csv",[390,2574,2575],{},[396,2576,2577],{},"text\u002Fcsv",[375,2579,2580,2585],{},[390,2581,2582],{},[396,2583,2584],{},".svg",[390,2586,2587],{},[396,2588,2589],{},"image\u002Fsvg+xml",[375,2591,2592,2597],{},[390,2593,2594],{},[396,2595,2596],{},".png",[390,2598,2599],{},[396,2600,2601],{},"image\u002Fpng",[375,2603,2604,2612],{},[390,2605,2606,940,2609],{},[396,2607,2608],{},".jpg",[396,2610,2611],{},".jpeg",[390,2613,2614],{},[396,2615,2616],{},"image\u002Fjpeg",[375,2618,2619,2624],{},[390,2620,2621],{},[396,2622,2623],{},".gif",[390,2625,2626],{},[396,2627,2628],{},"image\u002Fgif",[375,2630,2631,2636],{},[390,2632,2633],{},[396,2634,2635],{},".webp",[390,2637,2638],{},[396,2639,2640],{},"image\u002Fwebp",[375,2642,2643,2648],{},[390,2644,2645],{},[396,2646,2647],{},".pdf",[390,2649,2650],{},[396,2651,2652],{},"application\u002Fpdf",[375,2654,2655,2660],{},[390,2656,2657],{},[396,2658,2659],{},".zip",[390,2661,2662],{},[396,2663,2664],{},"application\u002Fzip",[364,2666,2668],{"id":2667},"size-limits","Size limits",[369,2670,2671,2680],{},[372,2672,2673],{},[375,2674,2675,2678],{},[378,2676,2677],{},"Limit",[378,2679,684],{},[385,2681,2682,2690,2701,2709,2717],{},[375,2683,2684,2687],{},[390,2685,2686],{},"Single file",[390,2688,2689],{},"Your plan's per-file limit, and never more than the server's ceiling (100 MB unless the operator changes it). Oversized uploads are rejected before they are stored.",[375,2691,2692,2695],{},[390,2693,2694],{},"Storage and file count",[390,2696,2697,2698,424],{},"Per workspace, by plan. See ",[421,2699,2700],{"href":15},"plans and limits",[375,2702,2703,2706],{},[390,2704,2705],{},"Workspace icon",[390,2707,2708],{},"1 MiB",[375,2710,2711,2714],{},[390,2712,2713],{},"Search query",[390,2715,2716],{},"200 characters",[375,2718,2719,2722],{},[390,2720,2721],{},"Change feed page",[390,2723,2724],{},"1000 changes",[2726,2727,2728],"style",{},"html pre.shiki code .sRC7j, html code.shiki .sRC7j{--shiki-default:#A7C080}html pre.shiki code .sySyC, html code.shiki .sySyC{--shiki-default:#DBBC7F}html pre.shiki code .s9lfW, html code.shiki .s9lfW{--shiki-default:#D699B6}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 pre.shiki code .s67c6, html code.shiki .s67c6{--shiki-default:#859289;--shiki-default-font-style:italic}html pre.shiki code .sY0Nt, html code.shiki .sY0Nt{--shiki-default:#D3C6AA}html pre.shiki code .s3WQq, html code.shiki .s3WQq{--shiki-default:#859289}html pre.shiki code .sDOmQ, html code.shiki .sDOmQ{--shiki-default:#E69875}",{"title":763,"searchDepth":11,"depth":48,"links":2730},[2731,2732,2741,2742,2743,2744,2745,2746,2747],{"id":366,"depth":11,"text":367},{"id":509,"depth":11,"text":510,"children":2733},[2734,2735,2736,2737,2738,2739,2740],{"id":665,"depth":48,"text":666},{"id":807,"depth":48,"text":808},{"id":1192,"depth":48,"text":570},{"id":1219,"depth":48,"text":584},{"id":1469,"depth":48,"text":1470},{"id":1513,"depth":48,"text":1514},{"id":1548,"depth":48,"text":1549},{"id":1696,"depth":11,"text":1697},{"id":1909,"depth":11,"text":355},{"id":2029,"depth":11,"text":335},{"id":2217,"depth":11,"text":106},{"id":2229,"depth":11,"text":2230},{"id":2452,"depth":11,"text":2453},{"id":2667,"depth":11,"text":2668},"md",{},true,[58,87,105],{"title":120,"description":121},"docs\u002Fagents\u002Freference\u002Frest-api","Pn__X9h_2HZvZWvH1WNasAuksEuZ_X00Qe064DN5vtw",1790706077882]