{"services":[{"service":"ReactionService","account":false,"doc":"","file":"spacesheep/v1/collaboration_service.proto","methods":[{"method":"CreateReaction","service":"ReactionService","doc":"Put an emoji on a comment. The same emoji from you again takes it off.","verb":"Create","noun":"Reaction","http":"POST","path":"/v1/spaces/{space.id}/comments/{comment.id}/reactions","where":"body","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"create_reaction","title":"Create reaction","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"refused":[],"description_chars":70,"inputSchema":{"type":"object","properties":{"space":{"type":"string","description":"The space the comment is on: its link, @handle/slug or uuid. (space name)"},"space_id":{"type":"string","description":"`space` by its id, instead of its name. (space id)"},"comment":{"type":"string","description":"The comment: its id. (comment id)"},"emoji":{"type":"string","description":"One emoji: 👍 👎 ❤️ 🎉 🚀 👀 💯 🔥 ⚡ ✅ ❌ 😂 🤔 😍 🙏 💡 ⭐ 🌮 📌 💬 (text)"}},"additionalProperties":false,"required":["comment","emoji"],"allOf":[{"anyOf":[{"required":["space"]},{"required":["space_id"]}]}]},"outputSchema":{"type":"object","properties":{"reaction":{"type":"object","properties":{"emoji":{"type":"string"},"author":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"created_at":{"type":"string","format":"date-time"}}},"removed":{"type":"boolean"}}}},"cli":{"command":"spacesheep reactions create","usage":"spacesheep reactions create (--space <space name> | --space-id <space id>) --comment <comment id> --emoji <text>","replaces":[],"args":[],"flags":[{"flag":"--space","input":"space","type":"space name","required":false,"either":"space","doc":"The space the comment is on: its link, @handle/slug or uuid."},{"flag":"--space-id","input":"space_id","type":"space id","required":false,"either":"space","doc":"`space` by its id, instead of its name."},{"flag":"--comment","input":"comment","type":"comment id","required":true,"doc":"The comment: its id."},{"flag":"--emoji","input":"emoji","type":"text","required":true,"doc":"One emoji: 👍 👎 ❤️ 🎉 🚀 👀 💯 🔥 ⚡ ✅ ❌ 😂 🤔 😍 🙏 💡 ⭐ 🌮 📌 💬"}]},"account":false,"read_key":false,"errors":["forbidden","invalid","not_found","rate_limited","read_only_grant"],"replaces":[{"tool":"react_to_comment","when":null,"renamed":["uuid=space","comment_id=comment"],"set":[],"retired":null}],"renamed":[],"answer_bytes":null,"mask":null,"inputs":[{"name":"space","type":"space name","required":false,"doc":"The space the comment is on: its link, @handle/slug or uuid.","limits":[],"at":["space"],"ref":"name","either":"space"},{"name":"space_id","type":"space id","required":false,"doc":"`space` by its id, instead of its name.","limits":[],"at":["space"],"ref":"id","either":"space"},{"name":"comment","type":"comment id","required":true,"doc":"The comment: its id.","limits":[],"at":["comment"],"ref":"id"},{"name":"emoji","type":"text","required":true,"doc":"One emoji: 👍 👎 ❤️ 🎉 🚀 👀 💯 🔥 ⚡ ✅ ❌ 😂 🤔 😍 🙏 💡 ⭐ 🌮 📌 💬","limits":[],"at":["reaction","emoji"]}],"response":"CreateReactionResponse"}]},{"service":"DiscussionService","account":false,"doc":"Only the space's editors (and their agents) can read, post or resolve.","file":"spacesheep/v1/collaboration_service.proto","methods":[{"method":"ListDiscussionPosts","service":"DiscussionService","doc":"A space's Discussion: open topics with their latest post, decisions, who's active. Can wait for the next post.","verb":"List","noun":"DiscussionPost","http":"GET","path":"/v1/spaces/{space.id}/discussionPosts","where":"query","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"list_discussion_posts","title":"List discussion posts","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"refused":[],"description_chars":110,"inputSchema":{"type":"object","properties":{"space":{"type":"string","description":"The space: its link, @handle/slug or uuid. (space name)"},"space_id":{"type":"string","description":"`space` by its id, instead of its name. (space id)"},"topic":{"type":"string","description":"One topic as a numbered outline of every reply; the summary of all topics when left out. (discussion topic id)"},"wait_seconds":{"type":"integer","minimum":0,"maximum":25,"description":"Wait up to this many seconds for something newer than `wait_after`; 0 answers now. A new post, a resolve, a reopen or a changed outcome all end the wait. (integer; 0 to 25)"},"after":{"type":"string","description":"Where to start: the last answer's `next`. From the start when left out. (text)"},"limit":{"type":"integer","minimum":1,"maximum":200,"description":"How many at most; 50 when left out, for every list. (integer; 1 to 200)"},"wait_after":{"type":"string","description":"Where `wait_seconds` starts waiting: the last answer's `wait_cursor`. From now when left out. (text)"}},"additionalProperties":false,"required":[],"allOf":[{"anyOf":[{"required":["space"]},{"required":["space_id"]}]}]},"outputSchema":{"type":"object","properties":{"posts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"title":{"type":"string"},"reply_to":{"type":"object","properties":{"id":{"type":"string"}}},"anchor":{"type":"string"},"author":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"outcome":{"type":"string"},"resolved":{"type":"boolean"},"replies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"title":{"type":"string"},"reply_to":{"type":"object","properties":{"id":{"type":"string"}}},"anchor":{"type":"string"},"author":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"outcome":{"type":"string"},"resolved":{"type":"boolean"},"replies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"title":{"type":"string"},"reply_to":{"type":"object","properties":{"id":{"type":"string"}}},"anchor":{"type":"string"},"author":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"outcome":{"type":"string"},"resolved":{"type":"boolean"},"replies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"title":{"type":"string"},"reply_to":{"type":"object"},"anchor":{"type":"string"},"author":{"type":"object"},"outcome":{"type":"string"},"resolved":{"type":"boolean"},"replies":{"type":"array","items":{"type":"object"}},"created_at":{"type":"string","format":"date-time"},"client":{"type":"object"}}}},"created_at":{"type":"string","format":"date-time"},"client":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"model":{"type":"string"},"session_id":{"type":"string"},"machine":{"type":"string"},"url":{"type":"string"},"account_id":{"type":"string"},"org_id":{"type":"string"},"repo":{"type":"string"},"branch":{"type":"string"},"commit":{"type":"string"},"extra":{"type":"array","items":{"type":"object"}},"transport":{"type":"string"},"user_agent":{"type":"string"},"other":{"type":"string"}}}}}},"created_at":{"type":"string","format":"date-time"},"client":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"model":{"type":"string"},"session_id":{"type":"string"},"machine":{"type":"string"},"url":{"type":"string"},"account_id":{"type":"string"},"org_id":{"type":"string"},"repo":{"type":"string"},"branch":{"type":"string"},"commit":{"type":"string"},"extra":{"type":"array","items":{"type":"object"}},"transport":{"type":"string"},"user_agent":{"type":"string"},"other":{"type":"string"}}}}}},"created_at":{"type":"string","format":"date-time"},"client":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"model":{"type":"string"},"session_id":{"type":"string"},"machine":{"type":"string"},"url":{"type":"string"},"account_id":{"type":"string"},"org_id":{"type":"string"},"repo":{"type":"string"},"branch":{"type":"string"},"commit":{"type":"string"},"extra":{"type":"array","items":{"type":"object"}},"transport":{"type":"string"},"user_agent":{"type":"string"},"other":{"type":"string"}}}}}},"active":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"page":{"type":"object","properties":{"next":{"type":"string"}}},"wait_cursor":{"type":"string"}}}},"cli":{"command":"spacesheep discussion-posts list","usage":"spacesheep discussion-posts list (--space <space name> | --space-id <space id>) [flags]","replaces":[],"args":[],"flags":[{"flag":"--space","input":"space","type":"space name","required":false,"either":"space","doc":"The space: its link, @handle/slug or uuid."},{"flag":"--space-id","input":"space_id","type":"space id","required":false,"either":"space","doc":"`space` by its id, instead of its name."},{"flag":"--topic","input":"topic","type":"discussion topic id","required":false,"doc":"One topic as a numbered outline of every reply; the summary of all topics when left out."},{"flag":"--wait-seconds","input":"wait_seconds","type":"integer","required":false,"doc":"Wait up to this many seconds for something newer than `wait_after`; 0 answers now. A new post, a resolve, a reopen or a changed outcome all end the wait.","limits":["0 to 25"]},{"flag":"--after","input":"after","type":"text","required":false,"doc":"Where to start: the last answer's `next`. From the start when left out."},{"flag":"--limit","input":"limit","type":"integer","required":false,"doc":"How many at most; 50 when left out, for every list.","limits":["1 to 200"]},{"flag":"--wait-after","input":"wait_after","type":"text","required":false,"doc":"Where `wait_seconds` starts waiting: the last answer's `wait_cursor`. From now when left out."}]},"account":false,"read_key":false,"errors":["forbidden","invalid","not_found","read_only_grant"],"replaces":[{"tool":"discussion_read","when":null,"renamed":["uuid=space","after=wait_after"],"set":[],"retired":null}],"renamed":[],"answer_bytes":null,"mask":null,"inputs":[{"name":"space","type":"space name","required":false,"doc":"The space: its link, @handle/slug or uuid.","limits":[],"at":["space"],"ref":"name","either":"space"},{"name":"space_id","type":"space id","required":false,"doc":"`space` by its id, instead of its name.","limits":[],"at":["space"],"ref":"id","either":"space"},{"name":"topic","type":"discussion topic id","required":false,"doc":"One topic as a numbered outline of every reply; the summary of all topics when left out.","limits":[],"at":["topic"],"ref":"id"},{"name":"wait_seconds","type":"integer","required":false,"doc":"Wait up to this many seconds for something newer than `wait_after`; 0 answers now. A new post, a resolve, a reopen or a changed outcome all end the wait.","limits":["0 to 25"],"range":{"min":0,"max":25},"at":["wait_seconds"]},{"name":"after","type":"text","required":false,"doc":"Where to start: the last answer's `next`. From the start when left out.","limits":[],"at":["page","after"]},{"name":"limit","type":"integer","required":false,"doc":"How many at most; 50 when left out, for every list.","limits":["1 to 200"],"range":{"min":1,"max":200},"at":["page","limit"]},{"name":"wait_after","type":"text","required":false,"doc":"Where `wait_seconds` starts waiting: the last answer's `wait_cursor`. From now when left out.","limits":[],"at":["wait_after"]}],"response":"ListDiscussionPostsResponse"},{"method":"CreateDiscussionPost","service":"DiscussionService","doc":"Start a topic in a space's Discussion, or reply under a post. Signed with your session; readers never see it.","verb":"Create","noun":"DiscussionPost","http":"POST","path":"/v1/spaces/{space.id}/discussionPosts","where":"body","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"create_discussion_post","title":"Create discussion post","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"refused":[],"description_chars":109,"inputSchema":{"type":"object","properties":{"space":{"type":"string","description":"The space: its link, @handle/slug or uuid. (space name)"},"space_id":{"type":"string","description":"`space` by its id, instead of its name. (space id)"},"text":{"type":"string","description":"What you're posting. (Markdown; at most 10,000 characters)"},"title":{"type":"string","description":"A new topic's title; its first line stands in without one. Ignored on a reply. (a title; at most 200 characters)"},"reply_to":{"type":"string","description":"The post you're answering, by its number (#2, #2.1); a new topic when left out. (discussion post id)"},"anchor":{"type":"string","pattern":"^[A-Za-z0-9._:~@+=/-]{1,400}$","description":"A new topic's part of the space: a data-ss-thing path (chip/shire-3) or a data-ss-id. (text)"},"client":{"type":"object","properties":{"name":{"type":"string","description":"Your harness, lowercase: claude-code, codex, opencode, grok, gemini-cli, cursor, chatgpt. (text)"},"version":{"type":"string","description":"Your harness's version. (text)"},"model":{"type":"string","description":"The model id you run as, if you know it. (text)"},"session_id":{"type":"string","description":"Your harness's session id, only one you actually read. (text)"},"machine":{"type":"string","description":"The machine's hostname. (text)"},"url":{"type":"string","description":"A link that opens this session, if your harness gives one. (text)"},"account_id":{"type":"string","description":"The harness account's id, never an email. (text)"},"org_id":{"type":"string","description":"That account's org or workspace id. (text)"},"repo":{"type":"string","description":"The working directory's git remote. (text)"},"branch":{"type":"string","description":"Its branch. (text)"},"commit":{"type":"string","description":"Its short HEAD sha. (text)"},"extra":{"type":"object","description":"Other small facts that identify the session (entrypoint, OS); never secrets. (JSON object)"},"transport":{"type":"string","description":"Set by the server from the door the call came through; ignored if sent: mcp, api or cli. (text)"},"user_agent":{"type":"string","description":"Set by the server: the request's User-Agent, cut to 200 characters; ignored if sent. (text)"},"other":{"type":"string","description":"Set by the server: what else saved it, in today's `via` words (edit, viewer, agent, automation, memory...); ignored if sent. (text)"}},"additionalProperties":false,"description":"Where you're posting from: harness, model, session id, machine. Only what you can read; never secrets. (client)"}},"additionalProperties":false,"required":["text"],"allOf":[{"anyOf":[{"required":["space"]},{"required":["space_id"]}]}]},"outputSchema":{"type":"object","properties":{"discussion_post":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"title":{"type":"string"},"reply_to":{"type":"object","properties":{"id":{"type":"string"}}},"anchor":{"type":"string"},"author":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"outcome":{"type":"string"},"resolved":{"type":"boolean"},"replies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"title":{"type":"string"},"reply_to":{"type":"object","properties":{"id":{"type":"string"}}},"anchor":{"type":"string"},"author":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"outcome":{"type":"string"},"resolved":{"type":"boolean"},"replies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"title":{"type":"string"},"reply_to":{"type":"object","properties":{"id":{"type":"string"}}},"anchor":{"type":"string"},"author":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"outcome":{"type":"string"},"resolved":{"type":"boolean"},"replies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"title":{"type":"string"},"reply_to":{"type":"object"},"anchor":{"type":"string"},"author":{"type":"object"},"outcome":{"type":"string"},"resolved":{"type":"boolean"},"replies":{"type":"array","items":{"type":"object"}},"created_at":{"type":"string","format":"date-time"},"client":{"type":"object"}}}},"created_at":{"type":"string","format":"date-time"},"client":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"model":{"type":"string"},"session_id":{"type":"string"},"machine":{"type":"string"},"url":{"type":"string"},"account_id":{"type":"string"},"org_id":{"type":"string"},"repo":{"type":"string"},"branch":{"type":"string"},"commit":{"type":"string"},"extra":{"type":"array","items":{"type":"object"}},"transport":{"type":"string"},"user_agent":{"type":"string"},"other":{"type":"string"}}}}}},"created_at":{"type":"string","format":"date-time"},"client":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"model":{"type":"string"},"session_id":{"type":"string"},"machine":{"type":"string"},"url":{"type":"string"},"account_id":{"type":"string"},"org_id":{"type":"string"},"repo":{"type":"string"},"branch":{"type":"string"},"commit":{"type":"string"},"extra":{"type":"array","items":{"type":"object"}},"transport":{"type":"string"},"user_agent":{"type":"string"},"other":{"type":"string"}}}}}},"created_at":{"type":"string","format":"date-time"},"client":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"model":{"type":"string"},"session_id":{"type":"string"},"machine":{"type":"string"},"url":{"type":"string"},"account_id":{"type":"string"},"org_id":{"type":"string"},"repo":{"type":"string"},"branch":{"type":"string"},"commit":{"type":"string"},"extra":{"type":"array","items":{"type":"object"}},"transport":{"type":"string"},"user_agent":{"type":"string"},"other":{"type":"string"}}}}}}}},"cli":{"command":"spacesheep discussion-posts create","usage":"spacesheep discussion-posts create <text> (--space <space name> | --space-id <space id>) [flags]","replaces":[],"args":["text"],"flags":[{"flag":"--space","input":"space","type":"space name","required":false,"either":"space","doc":"The space: its link, @handle/slug or uuid."},{"flag":"--space-id","input":"space_id","type":"space id","required":false,"either":"space","doc":"`space` by its id, instead of its name."},{"flag":"--title","input":"title","type":"a title","required":false,"doc":"A new topic's title; its first line stands in without one. Ignored on a reply.","limits":["at most 200 characters"]},{"flag":"--reply-to","input":"reply_to","type":"discussion post id","required":false,"doc":"The post you're answering, by its number (#2, #2.1); a new topic when left out."},{"flag":"--anchor","input":"anchor","type":"text","required":false,"doc":"A new topic's part of the space: a data-ss-thing path (chip/shire-3) or a data-ss-id.","pattern":"^[A-Za-z0-9._:~@+=/-]{1,400}$"},{"flag":"--client","input":"client","type":"client","required":false,"json":true,"doc":"Where you're posting from: harness, model, session id, machine. Only what you can read; never secrets.","fields":[{"name":"name","type":"text","required":false,"doc":"Your harness, lowercase: claude-code, codex, opencode, grok, gemini-cli, cursor, chatgpt."},{"name":"version","type":"text","required":false,"doc":"Your harness's version."},{"name":"model","type":"text","required":false,"doc":"The model id you run as, if you know it."},{"name":"session_id","type":"text","required":false,"doc":"Your harness's session id, only one you actually read."},{"name":"machine","type":"text","required":false,"doc":"The machine's hostname."},{"name":"url","type":"text","required":false,"doc":"A link that opens this session, if your harness gives one."},{"name":"account_id","type":"text","required":false,"doc":"The harness account's id, never an email."},{"name":"org_id","type":"text","required":false,"doc":"That account's org or workspace id."},{"name":"repo","type":"text","required":false,"doc":"The working directory's git remote."},{"name":"branch","type":"text","required":false,"doc":"Its branch."},{"name":"commit","type":"text","required":false,"doc":"Its short HEAD sha."},{"name":"extra","type":"JSON object","required":false,"doc":"Other small facts that identify the session (entrypoint, OS); never secrets."},{"name":"transport","type":"text","required":false,"doc":"Set by the server from the door the call came through; ignored if sent: mcp, api or cli."},{"name":"user_agent","type":"text","required":false,"doc":"Set by the server: the request's User-Agent, cut to 200 characters; ignored if sent."},{"name":"other","type":"text","required":false,"doc":"Set by the server: what else saved it, in today's `via` words (edit, viewer, agent, automation, memory...); ignored if sent."}]}]},"account":false,"read_key":false,"errors":["forbidden","invalid","not_found","quota_exceeded","rate_limited","read_only_grant"],"replaces":[{"tool":"discussion_post","when":null,"renamed":["uuid=space","session=client"],"set":[],"retired":null}],"renamed":[],"answer_bytes":null,"mask":null,"inputs":[{"name":"space","type":"space name","required":false,"doc":"The space: its link, @handle/slug or uuid.","limits":[],"at":["space"],"ref":"name","either":"space"},{"name":"space_id","type":"space id","required":false,"doc":"`space` by its id, instead of its name.","limits":[],"at":["space"],"ref":"id","either":"space"},{"name":"text","type":"Markdown","required":true,"doc":"What you're posting.","limits":["at most 10,000 characters"],"at":["discussion_post","text"]},{"name":"title","type":"a title","required":false,"doc":"A new topic's title; its first line stands in without one. Ignored on a reply.","limits":["at most 200 characters"],"at":["discussion_post","title"]},{"name":"reply_to","type":"discussion post id","required":false,"doc":"The post you're answering, by its number (#2, #2.1); a new topic when left out.","limits":[],"at":["discussion_post","reply_to"],"ref":"id"},{"name":"anchor","type":"text","required":false,"doc":"A new topic's part of the space: a data-ss-thing path (chip/shire-3) or a data-ss-id.","limits":[],"pattern":"^[A-Za-z0-9._:~@+=/-]{1,400}$","at":["discussion_post","anchor"]},{"name":"client","type":"client","required":false,"doc":"Where you're posting from: harness, model, session id, machine. Only what you can read; never secrets.","json":true,"fields":[{"name":"name","type":"text","required":false,"doc":"Your harness, lowercase: claude-code, codex, opencode, grok, gemini-cli, cursor, chatgpt.","limits":[],"at":["name"]},{"name":"version","type":"text","required":false,"doc":"Your harness's version.","limits":[],"at":["version"]},{"name":"model","type":"text","required":false,"doc":"The model id you run as, if you know it.","limits":[],"at":["model"]},{"name":"session_id","type":"text","required":false,"doc":"Your harness's session id, only one you actually read.","limits":[],"at":["session_id"]},{"name":"machine","type":"text","required":false,"doc":"The machine's hostname.","limits":[],"at":["machine"]},{"name":"url","type":"text","required":false,"doc":"A link that opens this session, if your harness gives one.","limits":[],"at":["url"]},{"name":"account_id","type":"text","required":false,"doc":"The harness account's id, never an email.","limits":[],"at":["account_id"]},{"name":"org_id","type":"text","required":false,"doc":"That account's org or workspace id.","limits":[],"at":["org_id"]},{"name":"repo","type":"text","required":false,"doc":"The working directory's git remote.","limits":[],"at":["repo"]},{"name":"branch","type":"text","required":false,"doc":"Its branch.","limits":[],"at":["branch"]},{"name":"commit","type":"text","required":false,"doc":"Its short HEAD sha.","limits":[],"at":["commit"]},{"name":"extra","type":"JSON object","required":false,"doc":"Other small facts that identify the session (entrypoint, OS); never secrets.","json":true,"limits":[],"at":["extra"]},{"name":"transport","type":"text","required":false,"doc":"Set by the server from the door the call came through; ignored if sent: mcp, api or cli.","limits":[],"at":["transport"]},{"name":"user_agent","type":"text","required":false,"doc":"Set by the server: the request's User-Agent, cut to 200 characters; ignored if sent.","limits":[],"at":["user_agent"]},{"name":"other","type":"text","required":false,"doc":"Set by the server: what else saved it, in today's `via` words (edit, viewer, agent, automation, memory...); ignored if sent.","limits":[],"at":["other"]}],"limits":[],"at":["client"]}],"response":"CreateDiscussionPostResponse"},{"method":"UpdateDiscussionTopic","service":"DiscussionService","doc":"Close a topic or a branch with what was decided, change that decision, or reopen it.","verb":"Update","noun":"DiscussionTopic","http":"PATCH","path":"/v1/spaces/{space.id}/discussionTopics/{discussion_topic.id}","where":"body","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"update_discussion_topic","title":"Update discussion topic","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"refused":[],"description_chars":84,"inputSchema":{"type":"object","properties":{"discussion_topic":{"type":"string","description":"The discussion topic to change. (discussion topic id)"},"space":{"type":"string","description":"The space: its link, @handle/slug or uuid. (space name)"},"space_id":{"type":"string","description":"`space` by its id, instead of its name. (space id)"},"outcome":{"type":"string","description":"What was decided, in one line. Closing it needs one; on a closed topic, a new one replaces it. (text; at most 500 characters)"},"resolved":{"type":"boolean","description":"Closed with its outcome: true closes it, false reopens it (and clears the outcome). (true or false)"}},"additionalProperties":false,"required":["discussion_topic"],"allOf":[{"anyOf":[{"required":["space"]},{"required":["space_id"]}]}]},"outputSchema":{"type":"object","properties":{"discussion_topic":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"outcome":{"type":"string"},"resolved":{"type":"boolean"},"resolved_by":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}}}}}}},"cli":{"command":"spacesheep discussion-topics update","usage":"spacesheep discussion-topics update <discussion_topic> (--space <space name> | --space-id <space id>) [flags]","replaces":[],"args":["discussion_topic"],"flags":[{"flag":"--space","input":"space","type":"space name","required":false,"either":"space","doc":"The space: its link, @handle/slug or uuid."},{"flag":"--space-id","input":"space_id","type":"space id","required":false,"either":"space","doc":"`space` by its id, instead of its name."},{"flag":"--outcome","input":"outcome","type":"text","required":false,"doc":"What was decided, in one line. Closing it needs one; on a closed topic, a new one replaces it.","limits":["at most 500 characters"]},{"flag":"--resolved","input":"resolved","type":"true or false","required":false,"doc":"Closed with its outcome: true closes it, false reopens it (and clears the outcome)."}]},"account":false,"read_key":false,"errors":["forbidden","invalid","not_found","rate_limited","read_only_grant"],"replaces":[{"tool":"discussion_resolve","when":"reopen=true","renamed":["uuid=space","num=discussion_topic","outcome="],"set":["resolved=false"],"retired":null},{"tool":"discussion_resolve","when":null,"renamed":["uuid=space","num=discussion_topic","reopen="],"set":["resolved=true"],"retired":null}],"renamed":[],"answer_bytes":null,"mask":{"field":"discussion_topic","paths":["outcome","resolved"]},"inputs":[{"name":"discussion_topic","type":"discussion topic id","ref":"id","required":true,"doc":"The discussion topic to change.","limits":[],"at":["discussion_topic","id"],"selects":true},{"name":"space","type":"space name","required":false,"doc":"The space: its link, @handle/slug or uuid.","limits":[],"at":["space"],"ref":"name","either":"space"},{"name":"space_id","type":"space id","required":false,"doc":"`space` by its id, instead of its name.","limits":[],"at":["space"],"ref":"id","either":"space"},{"name":"outcome","type":"text","required":false,"doc":"What was decided, in one line. Closing it needs one; on a closed topic, a new one replaces it.","limits":["at most 500 characters"],"at":["discussion_topic","outcome"]},{"name":"resolved","type":"true or false","required":false,"doc":"Closed with its outcome: true closes it, false reopens it (and clears the outcome).","limits":[],"at":["discussion_topic","resolved"]}],"response":"UpdateDiscussionTopicResponse"}]},{"service":"GroupService","account":true,"doc":"","file":"spacesheep/v1/people_service.proto","methods":[{"method":"ListGroups","service":"GroupService","doc":"Your groups (share lists) with their sizes; or one group's people and the spaces shared with it.","verb":"List","noun":"Group","http":"GET","path":"/v1/me/groups","where":"query","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"list_groups","title":"List groups","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"refused":[],"description_chars":96,"inputSchema":{"type":"object","properties":{"group":{"type":"string","description":"One group, to see its people and the spaces shared with it. Every group, with its size, when left out. (group name)"},"group_id":{"type":"string","description":"`group` by its id, instead of its name. (group id)"},"after":{"type":"string","description":"Where to start: the last answer's `next`. From the start when left out. (text)"},"limit":{"type":"integer","minimum":1,"maximum":200,"description":"How many at most; 50 when left out, for every list. (integer; 1 to 200)"}},"additionalProperties":false,"required":[]},"outputSchema":{"type":"object","properties":{"groups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"},"size":{"type":"integer"},"people":{"type":"array","items":{"type":"string"}},"spaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}}}}}},"page":{"type":"object","properties":{"next":{"type":"string"}}}}}},"cli":{"command":"spacesheep groups list","usage":"spacesheep groups list [flags]","replaces":[],"args":[],"flags":[{"flag":"--group","input":"group","type":"group name","required":false,"doc":"One group, to see its people and the spaces shared with it. Every group, with its size, when left out."},{"flag":"--group-id","input":"group_id","type":"group id","required":false,"doc":"`group` by its id, instead of its name."},{"flag":"--after","input":"after","type":"text","required":false,"doc":"Where to start: the last answer's `next`. From the start when left out."},{"flag":"--limit","input":"limit","type":"integer","required":false,"doc":"How many at most; 50 when left out, for every list.","limits":["1 to 200"]}]},"account":true,"read_key":false,"errors":["invalid","not_found","read_only_grant"],"replaces":[],"renamed":[],"answer_bytes":null,"mask":null,"inputs":[{"name":"group","type":"group name","required":false,"doc":"One group, to see its people and the spaces shared with it. Every group, with its size, when left out.","limits":[],"at":["group"],"ref":"name"},{"name":"group_id","type":"group id","required":false,"doc":"`group` by its id, instead of its name.","limits":[],"at":["group"],"ref":"id"},{"name":"after","type":"text","required":false,"doc":"Where to start: the last answer's `next`. From the start when left out.","limits":[],"at":["page","after"]},{"name":"limit","type":"integer","required":false,"doc":"How many at most; 50 when left out, for every list.","limits":["1 to 200"],"range":{"min":1,"max":200},"at":["page","limit"]}],"response":"ListGroupsResponse"},{"method":"CreateGroup","service":"GroupService","doc":"Make a group: its title, and the addresses or @handles on it. Nobody is emailed.","verb":"Create","noun":"Group","http":"POST","path":"/v1/me/groups","where":"body","callers":["person","key","connector","agent"],"machine_tokens":[],"mcp":{"name":"create_group","title":"Create group","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"refused":["box"],"description_chars":80,"inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Its title, e.g. F26. (a title; at most 60 characters)"},"add":{"type":"string","description":"Addresses or @handles to put on it, in any form: one per line, commas, a CSV row, 'Name <addr>'. (text; at most 200,000 characters)"},"remove":{"type":"string","description":"Addresses or @handles to take off it. (text; at most 200,000 characters)"},"share":{"type":"string","description":"A space you own to share with everyone on it: they may view, comment and fill in forms. Nobody is emailed. (space name)"},"share_id":{"type":"string","description":"`share` by its id, instead of its name. (space id)"},"unshare":{"type":"string","description":"A space you own to stop sharing with it. (space name)"},"unshare_id":{"type":"string","description":"`unshare` by its id, instead of its name. (space id)"}},"additionalProperties":false,"required":["title"]},"outputSchema":{"type":"object","properties":{"group":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"},"size":{"type":"integer"},"people":{"type":"array","items":{"type":"string"}},"spaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}}}}},"change":{"type":"object","properties":{"added":{"type":"integer"},"already":{"type":"integer"},"over":{"type":"integer"},"removed":{"type":"integer"},"invalid":{"type":"array","items":{"type":"string"}},"unknown":{"type":"array","items":{"type":"string"}}}}}}},"cli":{"command":"spacesheep groups create","usage":"spacesheep groups create <title> [flags]","replaces":[],"args":["title"],"flags":[{"flag":"--add","input":"add","type":"text","required":false,"doc":"Addresses or @handles to put on it, in any form: one per line, commas, a CSV row, 'Name <addr>'.","limits":["at most 200,000 characters"]},{"flag":"--remove","input":"remove","type":"text","required":false,"doc":"Addresses or @handles to take off it.","limits":["at most 200,000 characters"]},{"flag":"--share","input":"share","type":"space name","required":false,"doc":"A space you own to share with everyone on it: they may view, comment and fill in forms. Nobody is emailed."},{"flag":"--share-id","input":"share_id","type":"space id","required":false,"doc":"`share` by its id, instead of its name."},{"flag":"--unshare","input":"unshare","type":"space name","required":false,"doc":"A space you own to stop sharing with it."},{"flag":"--unshare-id","input":"unshare_id","type":"space id","required":false,"doc":"`unshare` by its id, instead of its name."}]},"account":true,"read_key":false,"errors":["forbidden","invalid","not_found","quota_exceeded","rate_limited","read_only_grant"],"replaces":[{"tool":"update_group","when":"action=create","renamed":["name=title","emails=add"],"set":[],"retired":null}],"renamed":[],"answer_bytes":null,"mask":null,"inputs":[{"name":"title","type":"a title","required":true,"doc":"Its title, e.g. F26.","limits":["at most 60 characters"],"at":["group","title"]},{"name":"add","type":"text","required":false,"doc":"Addresses or @handles to put on it, in any form: one per line, commas, a CSV row, 'Name <addr>'.","limits":["at most 200,000 characters"],"at":["group","add"]},{"name":"remove","type":"text","required":false,"doc":"Addresses or @handles to take off it.","limits":["at most 200,000 characters"],"at":["group","remove"]},{"name":"share","type":"space name","required":false,"doc":"A space you own to share with everyone on it: they may view, comment and fill in forms. Nobody is emailed.","limits":[],"at":["group","share"],"ref":"name"},{"name":"share_id","type":"space id","required":false,"doc":"`share` by its id, instead of its name.","limits":[],"at":["group","share"],"ref":"id"},{"name":"unshare","type":"space name","required":false,"doc":"A space you own to stop sharing with it.","limits":[],"at":["group","unshare"],"ref":"name"},{"name":"unshare_id","type":"space id","required":false,"doc":"`unshare` by its id, instead of its name.","limits":[],"at":["group","unshare"],"ref":"id"}],"response":"CreateGroupResponse"},{"method":"UpdateGroup","service":"GroupService","doc":"Rename a group, put people on it or take them off, or share a space of yours with it. Nobody is emailed.","verb":"Update","noun":"Group","http":"PATCH","path":"/v1/me/groups/{group.id}","where":"body","callers":["person","key","connector","agent"],"machine_tokens":[],"mcp":{"name":"update_group","title":"Update group","annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false},"refused":["box"],"description_chars":104,"inputSchema":{"type":"object","properties":{"group":{"type":"string","description":"The group to change. (group name)"},"group_id":{"type":"string","description":"`group` by its id, instead of its name. (group id)"},"title":{"type":"string","description":"Its title, e.g. F26. (a title; at most 60 characters)"},"add":{"type":"string","description":"Addresses or @handles to put on it, in any form: one per line, commas, a CSV row, 'Name <addr>'. (text; at most 200,000 characters)"},"remove":{"type":"string","description":"Addresses or @handles to take off it. (text; at most 200,000 characters)"},"share":{"type":"string","description":"A space you own to share with everyone on it: they may view, comment and fill in forms. Nobody is emailed. (space name)"},"share_id":{"type":"string","description":"`share` by its id, instead of its name. (space id)"},"unshare":{"type":"string","description":"A space you own to stop sharing with it. (space name)"},"unshare_id":{"type":"string","description":"`unshare` by its id, instead of its name. (space id)"}},"additionalProperties":false,"required":[],"allOf":[{"anyOf":[{"required":["group"]},{"required":["group_id"]}]}]},"outputSchema":{"type":"object","properties":{"group":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"},"size":{"type":"integer"},"people":{"type":"array","items":{"type":"string"}},"spaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}}}}},"change":{"type":"object","properties":{"added":{"type":"integer"},"already":{"type":"integer"},"over":{"type":"integer"},"removed":{"type":"integer"},"invalid":{"type":"array","items":{"type":"string"}},"unknown":{"type":"array","items":{"type":"string"}}}}}}},"cli":{"command":"spacesheep groups update","usage":"spacesheep groups update <group> [flags]","replaces":[],"args":["group"],"flags":[{"flag":"--title","input":"title","type":"a title","required":false,"doc":"Its title, e.g. F26.","limits":["at most 60 characters"]},{"flag":"--add","input":"add","type":"text","required":false,"doc":"Addresses or @handles to put on it, in any form: one per line, commas, a CSV row, 'Name <addr>'.","limits":["at most 200,000 characters"]},{"flag":"--remove","input":"remove","type":"text","required":false,"doc":"Addresses or @handles to take off it.","limits":["at most 200,000 characters"]},{"flag":"--share","input":"share","type":"space name","required":false,"doc":"A space you own to share with everyone on it: they may view, comment and fill in forms. Nobody is emailed."},{"flag":"--share-id","input":"share_id","type":"space id","required":false,"doc":"`share` by its id, instead of its name."},{"flag":"--unshare","input":"unshare","type":"space name","required":false,"doc":"A space you own to stop sharing with it."},{"flag":"--unshare-id","input":"unshare_id","type":"space id","required":false,"doc":"`unshare` by its id, instead of its name."}]},"account":true,"read_key":false,"errors":["forbidden","invalid","not_found","rate_limited","read_only_grant"],"replaces":[{"tool":"update_group","when":"action=add","renamed":["emails=add"],"set":[],"retired":null},{"tool":"update_group","when":"action=remove","renamed":["emails=remove"],"set":[],"retired":null},{"tool":"update_group","when":"action=share","renamed":["space=share"],"set":[],"retired":null},{"tool":"update_group","when":"action=unshare","renamed":["space=unshare"],"set":[],"retired":null}],"renamed":["action=","name=title"],"answer_bytes":null,"mask":{"field":"group","paths":["title","add","remove","share","unshare"]},"inputs":[{"name":"group","type":"group name","ref":"name","required":false,"either":"group","doc":"The group to change.","limits":[],"at":["group","name"],"selects":true,"positional":true},{"name":"group_id","type":"group id","ref":"id","required":false,"either":"group","doc":"`group` by its id, instead of its name.","limits":[],"at":["group","id"],"selects":true,"positional":true},{"name":"title","type":"a title","required":false,"doc":"Its title, e.g. F26.","limits":["at most 60 characters"],"at":["group","title"]},{"name":"add","type":"text","required":false,"doc":"Addresses or @handles to put on it, in any form: one per line, commas, a CSV row, 'Name <addr>'.","limits":["at most 200,000 characters"],"at":["group","add"]},{"name":"remove","type":"text","required":false,"doc":"Addresses or @handles to take off it.","limits":["at most 200,000 characters"],"at":["group","remove"]},{"name":"share","type":"space name","required":false,"doc":"A space you own to share with everyone on it: they may view, comment and fill in forms. Nobody is emailed.","limits":[],"at":["group","share"],"ref":"name"},{"name":"share_id","type":"space id","required":false,"doc":"`share` by its id, instead of its name.","limits":[],"at":["group","share"],"ref":"id"},{"name":"unshare","type":"space name","required":false,"doc":"A space you own to stop sharing with it.","limits":[],"at":["group","unshare"],"ref":"name"},{"name":"unshare_id","type":"space id","required":false,"doc":"`unshare` by its id, instead of its name.","limits":[],"at":["group","unshare"],"ref":"id"}],"response":"UpdateGroupResponse"},{"method":"DeleteGroup","service":"GroupService","doc":"Delete a group. Every space shared with it stops being shared with its people.","verb":"Delete","noun":"Group","http":"DELETE","path":"/v1/me/groups/{group.id}","where":"query","callers":["person","key","connector","agent"],"machine_tokens":[],"mcp":{"name":"delete_group","title":"Delete group","annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false},"refused":["box"],"description_chars":78,"inputSchema":{"type":"object","properties":{"group":{"type":"string","description":"One of your groups, by its title (any case). (group name)"},"group_id":{"type":"string","description":"`group` by its id, instead of its name. (group id)"}},"additionalProperties":false,"required":[],"allOf":[{"anyOf":[{"required":["group"]},{"required":["group_id"]}]}]},"outputSchema":{"type":"object","properties":{}}},"cli":{"command":"spacesheep groups delete","usage":"spacesheep groups delete <group>","replaces":[],"args":["group"],"flags":[]},"account":true,"read_key":false,"errors":["forbidden","invalid","not_found","rate_limited","read_only_grant"],"replaces":[],"renamed":[],"answer_bytes":null,"mask":null,"inputs":[{"name":"group","type":"group name","required":false,"doc":"One of your groups, by its title (any case).","doc_from":"GroupRef.name","limits":[],"at":["group"],"ref":"name","either":"group","positional":true},{"name":"group_id","type":"group id","required":false,"doc":"`group` by its id, instead of its name.","limits":[],"at":["group"],"ref":"id","either":"group","positional":true}],"response":"DeleteGroupResponse"}]},{"service":"TeamService","account":false,"doc":"","file":"spacesheep/v1/people_service.proto","methods":[{"method":"ListTeams","service":"TeamService","doc":"The teams you're in: each one's people and roles, plan and seats, auto-join domains and Slack workspaces.","verb":"List","noun":"Team","http":"GET","path":"/v1/teams","where":"query","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"list_teams","title":"List teams","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"refused":[],"description_chars":105,"inputSchema":{"type":"object","properties":{"after":{"type":"string","description":"Where to start: the last answer's `next`. From the start when left out. (text)"},"limit":{"type":"integer","minimum":1,"maximum":200,"description":"How many at most; 50 when left out, for every list. (integer; 1 to 200)"}},"additionalProperties":false,"required":[]},"outputSchema":{"type":"object","properties":{"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"},"kind":{"type":"string"},"url":{"type":"string"},"your_role":{"type":"string"},"your_default":{"type":"boolean"},"plan":{"type":"string"},"seats":{"type":"integer"},"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"},"role":{"type":"string"},"state":{"type":"string"},"invite_url":{"type":"string"},"expires_at":{"type":"string","format":"date-time"}}}},"domains":{"type":"array","items":{"type":"string"}},"slack":{"type":"array","items":{"type":"string"}}}}},"page":{"type":"object","properties":{"next":{"type":"string"}}}}}},"cli":{"command":"spacesheep teams list","usage":"spacesheep teams list [flags]","replaces":[],"args":[],"flags":[{"flag":"--after","input":"after","type":"text","required":false,"doc":"Where to start: the last answer's `next`. From the start when left out."},{"flag":"--limit","input":"limit","type":"integer","required":false,"doc":"How many at most; 50 when left out, for every list.","limits":["1 to 200"]}]},"account":false,"read_key":false,"errors":["invalid","read_only_grant"],"replaces":[{"tool":"set_team_domains","when":null,"renamed":["team="],"set":[],"retired":null}],"renamed":[],"answer_bytes":null,"mask":null,"inputs":[{"name":"after","type":"text","required":false,"doc":"Where to start: the last answer's `next`. From the start when left out.","limits":[],"at":["page","after"]},{"name":"limit","type":"integer","required":false,"doc":"How many at most; 50 when left out, for every list.","limits":["1 to 200"],"range":{"min":1,"max":200},"at":["page","limit"]}],"response":"ListTeamsResponse"},{"method":"UpdateTeam","service":"TeamService","doc":"Rename a team or set who joins it by email domain (team admins only), or make it your default.","verb":"Update","noun":"Team","http":"PATCH","path":"/v1/teams/{team.id}","where":"body","callers":["person","key","connector","agent"],"machine_tokens":[],"mcp":{"name":"update_team","title":"Update team","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"refused":["box"],"description_chars":94,"inputSchema":{"type":"object","properties":{"team":{"type":"string","description":"The team to change. (team name)"},"team_id":{"type":"string","description":"`team` by its id, instead of its name. (team id)"},"title":{"type":"string","description":"Its title, as people see it: 1–60 characters. (a title; at most 60 characters)"},"your_default":{"type":"boolean","description":"Your default team: the one your share dialog offers first. true makes it so. (true or false)"},"domains":{"type":"array","items":{"type":"string"},"description":"Email domains whose people join on their own when they sign in (acme.com). Empty clears it. Team plans only. (list of text)"}},"additionalProperties":false,"required":[],"allOf":[{"anyOf":[{"required":["team"]},{"required":["team_id"]}]}]},"outputSchema":{"type":"object","properties":{"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"},"kind":{"type":"string"},"url":{"type":"string"},"your_role":{"type":"string"},"your_default":{"type":"boolean"},"plan":{"type":"string"},"seats":{"type":"integer"},"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"},"role":{"type":"string"},"state":{"type":"string"},"invite_url":{"type":"string"},"expires_at":{"type":"string","format":"date-time"}}}},"domains":{"type":"array","items":{"type":"string"}},"slack":{"type":"array","items":{"type":"string"}}}}}}},"cli":{"command":"spacesheep teams update","usage":"spacesheep teams update <team> [flags]","replaces":[],"args":["team"],"flags":[{"flag":"--title","input":"title","type":"a title","required":false,"doc":"Its title, as people see it: 1–60 characters.","limits":["at most 60 characters"]},{"flag":"--your-default","input":"your_default","type":"true or false","required":false,"doc":"Your default team: the one your share dialog offers first. true makes it so."},{"flag":"--domains","input":"domains","type":"list of text","required":false,"doc":"Email domains whose people join on their own when they sign in (acme.com). Empty clears it. Team plans only."}]},"account":false,"read_key":false,"errors":["forbidden","invalid","not_found","rate_limited","read_only_grant"],"replaces":[{"tool":"set_team_domains","when":"domains","renamed":[],"set":[],"retired":null},{"tool":"manage_team","when":null,"renamed":["action=","name=title"],"set":["team=@default"],"retired":null},{"tool":"manage_team","when":"action=make_default","renamed":[],"set":["your_default=true","team=@default"],"retired":null}],"renamed":[],"answer_bytes":null,"mask":{"field":"team","paths":["title","your_default","domains"]},"inputs":[{"name":"team","type":"team name","ref":"name","required":false,"either":"team","doc":"The team to change.","limits":[],"at":["team","name"],"selects":true,"positional":true},{"name":"team_id","type":"team id","ref":"id","required":false,"either":"team","doc":"`team` by its id, instead of its name.","limits":[],"at":["team","id"],"selects":true,"positional":true},{"name":"title","type":"a title","required":false,"doc":"Its title, as people see it: 1–60 characters.","limits":["at most 60 characters"],"at":["team","title"]},{"name":"your_default","type":"true or false","required":false,"doc":"Your default team: the one your share dialog offers first. true makes it so.","limits":[],"at":["team","your_default"]},{"name":"domains","type":"list of text","required":false,"doc":"Email domains whose people join on their own when they sign in (acme.com). Empty clears it. Team plans only.","limits":[],"at":["team","domains"]}],"response":"UpdateTeamResponse"},{"method":"CreateTeamMember","service":"TeamService","doc":"Invite someone to a team by email or @handle and email them the link. They join when they open it.","verb":"Create","noun":"TeamMember","http":"POST","path":"/v1/teams/{team.id}/members","where":"body","callers":["person","key","connector","agent"],"machine_tokens":[],"mcp":{"name":"create_team_member","title":"Create team member","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"refused":["box"],"description_chars":98,"inputSchema":{"type":"object","properties":{"team":{"type":"string","description":"The team: its title, slug or id. (team name)"},"team_id":{"type":"string","description":"`team` by its id, instead of its name. (team id)"},"member":{"type":"string","description":"Who to invite: their @handle, or their email in member_id. Someone with no account signs up first. (person name)"},"member_id":{"type":"string","description":"`member` by its id, instead of its name. (person id)"}},"additionalProperties":false,"required":[],"allOf":[{"anyOf":[{"required":["team"]},{"required":["team_id"]}]},{"anyOf":[{"required":["member"]},{"required":["member_id"]}]}]},"outputSchema":{"type":"object","properties":{"member":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"},"role":{"type":"string"},"state":{"type":"string"},"invite_url":{"type":"string"},"expires_at":{"type":"string","format":"date-time"}}},"emailed":{"type":"boolean"}}}},"cli":{"command":"spacesheep team-members create","usage":"spacesheep team-members create (--team <team name> | --team-id <team id>) (--member <person name> | --member-id <person id>)","replaces":[],"args":[],"flags":[{"flag":"--team","input":"team","type":"team name","required":false,"either":"team","doc":"The team: its title, slug or id."},{"flag":"--team-id","input":"team_id","type":"team id","required":false,"either":"team","doc":"`team` by its id, instead of its name."},{"flag":"--member","input":"member","type":"person name","required":false,"either":"member","doc":"Who to invite: their @handle, or their email in member_id. Someone with no account signs up first."},{"flag":"--member-id","input":"member_id","type":"person id","required":false,"either":"member","doc":"`member` by its id, instead of its name."}]},"account":false,"read_key":false,"errors":["forbidden","invalid","not_found","quota_exceeded","rate_limited","read_only_grant"],"replaces":[{"tool":"invite_to_org","when":null,"renamed":["org=team","username=member","email=member_id","role="],"set":[],"retired":null},{"tool":"manage_team","when":"action=add","renamed":["who=member"],"set":["team=@default"],"retired":null}],"renamed":[],"answer_bytes":null,"mask":null,"inputs":[{"name":"team","type":"team name","required":false,"doc":"The team: its title, slug or id.","limits":[],"at":["team"],"ref":"name","either":"team"},{"name":"team_id","type":"team id","required":false,"doc":"`team` by its id, instead of its name.","limits":[],"at":["team"],"ref":"id","either":"team"},{"name":"member","type":"person name","required":false,"doc":"Who to invite: their @handle, or their email in member_id. Someone with no account signs up first.","limits":[],"at":["member"],"ref":"name","either":"member"},{"name":"member_id","type":"person id","required":false,"doc":"`member` by its id, instead of its name.","limits":[],"at":["member"],"ref":"id","either":"member"}],"response":"CreateTeamMemberResponse"},{"method":"UpdateTeamMember","service":"TeamService","doc":"Make someone on a team a Team admin, or a member again. Team admins only.","verb":"Update","noun":"TeamMember","http":"PATCH","path":"/v1/teams/{team.id}/members/{member.id}","where":"body","callers":["person","key","connector","agent"],"machine_tokens":[],"mcp":{"name":"update_team_member","title":"Update team member","annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false},"refused":["box"],"description_chars":73,"inputSchema":{"type":"object","properties":{"member":{"type":"string","description":"The team member to change. (team member name)"},"member_id":{"type":"string","description":"`member` by its id, instead of its name. (team member id)"},"team":{"type":"string","description":"The team: its title, slug or id. (team name)"},"team_id":{"type":"string","description":"`team` by its id, instead of its name. (team id)"},"role":{"type":"string","enum":["owner","member"],"description":"Their role: an owner is a Team admin. A team always keeps one. (one of owner, member)"}},"additionalProperties":false,"required":[],"allOf":[{"anyOf":[{"required":["member"]},{"required":["member_id"]}]},{"anyOf":[{"required":["team"]},{"required":["team_id"]}]}]},"outputSchema":{"type":"object","properties":{"member":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"},"role":{"type":"string"},"state":{"type":"string"},"invite_url":{"type":"string"},"expires_at":{"type":"string","format":"date-time"}}}}}},"cli":{"command":"spacesheep team-members update","usage":"spacesheep team-members update <member> (--team <team name> | --team-id <team id>) [flags]","replaces":[],"args":["member"],"flags":[{"flag":"--team","input":"team","type":"team name","required":false,"either":"team","doc":"The team: its title, slug or id."},{"flag":"--team-id","input":"team_id","type":"team id","required":false,"either":"team","doc":"`team` by its id, instead of its name."},{"flag":"--role","input":"role","type":"one of owner, member","required":false,"doc":"Their role: an owner is a Team admin. A team always keeps one."}]},"account":false,"read_key":false,"errors":["forbidden","invalid","not_found","rate_limited","read_only_grant"],"replaces":[{"tool":"manage_team","when":"action=set_role","renamed":["who=member"],"set":["team=@default"],"retired":null}],"renamed":[],"answer_bytes":null,"mask":{"field":"member","paths":["role"]},"inputs":[{"name":"member","type":"team member name","ref":"name","required":false,"either":"member","doc":"The team member to change.","limits":[],"at":["member","name"],"selects":true,"positional":true},{"name":"member_id","type":"team member id","ref":"id","required":false,"either":"member","doc":"`member` by its id, instead of its name.","limits":[],"at":["member","id"],"selects":true,"positional":true},{"name":"team","type":"team name","required":false,"doc":"The team: its title, slug or id.","limits":[],"at":["team"],"ref":"name","either":"team"},{"name":"team_id","type":"team id","required":false,"doc":"`team` by its id, instead of its name.","limits":[],"at":["team"],"ref":"id","either":"team"},{"name":"role","type":"one of owner, member","required":false,"doc":"Their role: an owner is a Team admin. A team always keeps one.","enum":"TeamRole","limits":[],"at":["member","role"]}],"response":"UpdateTeamMemberResponse"},{"method":"DeleteTeamMember","service":"TeamService","doc":"Take someone off a team, or leave it yourself. Team admins only, to take someone else off.","verb":"Delete","noun":"TeamMember","http":"DELETE","path":"/v1/teams/{team.id}/members/{member.id}","where":"query","callers":["person","key","connector","agent"],"machine_tokens":[],"mcp":{"name":"delete_team_member","title":"Delete team member","annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false},"refused":["box"],"description_chars":90,"inputSchema":{"type":"object","properties":{"team":{"type":"string","description":"The team: its title, slug or id. (team name)"},"team_id":{"type":"string","description":"`team` by its id, instead of its name. (team id)"},"member":{"type":"string","description":"Who to take off: their @handle, or their email in member_id. Your own to leave the team. (person name)"},"member_id":{"type":"string","description":"`member` by its id, instead of its name. (person id)"}},"additionalProperties":false,"required":[],"allOf":[{"anyOf":[{"required":["team"]},{"required":["team_id"]}]},{"anyOf":[{"required":["member"]},{"required":["member_id"]}]}]},"outputSchema":{"type":"object","properties":{}}},"cli":{"command":"spacesheep team-members delete","usage":"spacesheep team-members delete <member> (--team <team name> | --team-id <team id>)","replaces":[],"args":["member"],"flags":[{"flag":"--team","input":"team","type":"team name","required":false,"either":"team","doc":"The team: its title, slug or id."},{"flag":"--team-id","input":"team_id","type":"team id","required":false,"either":"team","doc":"`team` by its id, instead of its name."}]},"account":false,"read_key":false,"errors":["forbidden","invalid","not_found","rate_limited","read_only_grant"],"replaces":[{"tool":"manage_team","when":"action=remove","renamed":["who=member"],"set":["team=@default"],"retired":null},{"tool":"manage_team","when":"action=leave","renamed":[],"set":["member=@me","team=@default"],"retired":null}],"renamed":[],"answer_bytes":null,"mask":null,"inputs":[{"name":"team","type":"team name","required":false,"doc":"The team: its title, slug or id.","limits":[],"at":["team"],"ref":"name","either":"team"},{"name":"team_id","type":"team id","required":false,"doc":"`team` by its id, instead of its name.","limits":[],"at":["team"],"ref":"id","either":"team"},{"name":"member","type":"person name","required":false,"doc":"Who to take off: their @handle, or their email in member_id. Your own to leave the team.","limits":[],"at":["member"],"ref":"name","either":"member","positional":true},{"name":"member_id","type":"person id","required":false,"doc":"`member` by its id, instead of its name.","limits":[],"at":["member"],"ref":"id","either":"member","positional":true}],"response":"DeleteTeamMemberResponse"},{"method":"CreateTeam","service":"TeamService","doc":"Start a team you own. With a slug, an organization at its own address (invite-only for now).","verb":"Create","noun":"Team","http":"POST","path":"/v1/teams","where":"body","callers":["person","key","connector","agent"],"machine_tokens":[],"mcp":{"name":"create_team","title":"Create team","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"refused":["box"],"description_chars":92,"inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Its title, as people see it: 1–60 characters. (a title; at most 60 characters)"},"your_default":{"type":"boolean","description":"Your default team: the one your share dialog offers first. true makes it so. (true or false)"},"domains":{"type":"array","items":{"type":"string"},"description":"Email domains whose people join on their own when they sign in (acme.com). Empty clears it. Team plans only. (list of text)"},"slug":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,28}[a-z0-9])?$","description":"An organization's address, <slug>.spacesheep.dev (invite-only for now). A Team on spacesheep.dev when left out. (text)"}},"additionalProperties":false,"required":["title"]},"outputSchema":{"type":"object","properties":{"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"},"kind":{"type":"string"},"url":{"type":"string"},"your_role":{"type":"string"},"your_default":{"type":"boolean"},"plan":{"type":"string"},"seats":{"type":"integer"},"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"},"role":{"type":"string"},"state":{"type":"string"},"invite_url":{"type":"string"},"expires_at":{"type":"string","format":"date-time"}}}},"domains":{"type":"array","items":{"type":"string"}},"slack":{"type":"array","items":{"type":"string"}}}}}}},"cli":{"command":"spacesheep teams create","usage":"spacesheep teams create <title> [flags]","replaces":[],"args":["title"],"flags":[{"flag":"--your-default","input":"your_default","type":"true or false","required":false,"doc":"Your default team: the one your share dialog offers first. true makes it so."},{"flag":"--domains","input":"domains","type":"list of text","required":false,"doc":"Email domains whose people join on their own when they sign in (acme.com). Empty clears it. Team plans only."},{"flag":"--slug","input":"slug","type":"text","required":false,"doc":"An organization's address, <slug>.spacesheep.dev (invite-only for now). A Team on spacesheep.dev when left out.","pattern":"^[a-z0-9](?:[a-z0-9-]{0,28}[a-z0-9])?$"}]},"account":false,"read_key":false,"errors":["forbidden","invalid","not_found","rate_limited","read_only_grant"],"replaces":[{"tool":"create_org","when":null,"renamed":["name=title"],"set":[],"retired":null},{"tool":"manage_team","when":"action=create","renamed":["name=title"],"set":[],"retired":null}],"renamed":[],"answer_bytes":null,"mask":null,"inputs":[{"name":"title","type":"a title","required":true,"doc":"Its title, as people see it: 1–60 characters.","limits":["at most 60 characters"],"at":["team","title"]},{"name":"your_default","type":"true or false","required":false,"doc":"Your default team: the one your share dialog offers first. true makes it so.","limits":[],"at":["team","your_default"]},{"name":"domains","type":"list of text","required":false,"doc":"Email domains whose people join on their own when they sign in (acme.com). Empty clears it. Team plans only.","limits":[],"at":["team","domains"]},{"name":"slug","type":"text","required":false,"doc":"An organization's address, <slug>.spacesheep.dev (invite-only for now). A Team on spacesheep.dev when left out.","limits":[],"pattern":"^[a-z0-9](?:[a-z0-9-]{0,28}[a-z0-9])?$","at":["slug"]}],"response":"CreateTeamResponse"}]},{"service":"SpaceService","account":false,"doc":"","file":"spacesheep/v1/spaces_service.proto","methods":[{"method":"ListSpaces","service":"SpaceService","doc":"Every space you own or can open, newest first.","verb":"List","noun":"Space","http":"GET","path":"/v1/spaces","where":"query","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"list_spaces","title":"List spaces","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"refused":[],"description_chars":46,"inputSchema":{"type":"object","properties":{"after":{"type":"string","description":"Where to start: the last answer's `next`. From the start when left out. (text)"},"limit":{"type":"integer","minimum":1,"maximum":200,"description":"How many at most; 50 when left out, for every list. (integer; 1 to 200)"},"include_archived":{"type":"boolean","description":"Archived spaces too, each marked `archived`. Off: they stay out, as archiving's docs say. (true or false)"}},"additionalProperties":false,"required":[]},"outputSchema":{"type":"object","properties":{"spaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"},"emoji":{"type":"string"},"description":{"type":"string"},"visibility":{"type":"string"},"listed":{"type":"boolean"},"owner":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"url":{"type":"string"},"head":{"type":"object","properties":{"id":{"type":"string"}}},"updated_at":{"type":"string","format":"date-time"},"team_access":{"type":"string"},"design_system":{"type":"string"},"archived":{"type":"boolean"}}}},"page":{"type":"object","properties":{"next":{"type":"string"}}}}}},"cli":{"command":"spacesheep spaces list","usage":"spacesheep spaces list [flags]","replaces":[{"command":"spacesheep list","when":null,"renamed":[],"set":[],"retired":null}],"args":[],"flags":[{"flag":"--after","input":"after","type":"text","required":false,"doc":"Where to start: the last answer's `next`. From the start when left out."},{"flag":"--limit","input":"limit","type":"integer","required":false,"doc":"How many at most; 50 when left out, for every list.","limits":["1 to 200"]},{"flag":"--include-archived","input":"include_archived","type":"true or false","required":false,"doc":"Archived spaces too, each marked `archived`. Off: they stay out, as archiving's docs say."}]},"account":false,"read_key":true,"errors":["invalid"],"replaces":[],"renamed":["offset=after"],"answer_bytes":null,"mask":null,"inputs":[{"name":"after","type":"text","required":false,"doc":"Where to start: the last answer's `next`. From the start when left out.","limits":[],"at":["page","after"]},{"name":"limit","type":"integer","required":false,"doc":"How many at most; 50 when left out, for every list.","limits":["1 to 200"],"range":{"min":1,"max":200},"at":["page","limit"]},{"name":"include_archived","type":"true or false","required":false,"doc":"Archived spaces too, each marked `archived`. Off: they stay out, as archiving's docs say.","limits":[],"at":["include_archived"]}],"response":"ListSpacesResponse"},{"method":"GetSpace","service":"SpaceService","doc":"A space's details: title, address, who can open it and its head version.","verb":"Get","noun":"Space","http":"GET","path":"/v1/spaces/{space.id}","where":"query","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"get_space","title":"Get space","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"refused":[],"description_chars":72,"inputSchema":{"type":"object","properties":{"space":{"type":"string","description":"The space: its link, @handle/slug or uuid. (space name)"},"space_id":{"type":"string","description":"`space` by its id, instead of its name. (space id)"}},"additionalProperties":false,"required":[],"allOf":[{"anyOf":[{"required":["space"]},{"required":["space_id"]}]}]},"outputSchema":{"type":"object","properties":{"space":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"},"emoji":{"type":"string"},"description":{"type":"string"},"visibility":{"type":"string"},"listed":{"type":"boolean"},"owner":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"url":{"type":"string"},"head":{"type":"object","properties":{"id":{"type":"string"}}},"updated_at":{"type":"string","format":"date-time"},"team_access":{"type":"string"},"design_system":{"type":"string"},"archived":{"type":"boolean"}}},"discussion":{"type":"object","properties":{"topics":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"resolved":{"type":"boolean"},"outcome":{"type":"string"},"latest":{"type":"string"},"active_at":{"type":"string","format":"date-time"}}}},"open":{"type":"integer"},"decided":{"type":"integer"},"active":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}}}}}}}},"cli":{"command":"spacesheep spaces get","usage":"spacesheep spaces get <space>","replaces":[],"args":["space"],"flags":[]},"account":false,"read_key":false,"errors":["forbidden","invalid","not_found","read_only_grant"],"replaces":[],"renamed":["uuid=space"],"answer_bytes":null,"mask":null,"inputs":[{"name":"space","type":"space name","required":false,"doc":"The space: its link, @handle/slug or uuid.","limits":[],"at":["space"],"ref":"name","either":"space","positional":true},{"name":"space_id","type":"space id","required":false,"doc":"`space` by its id, instead of its name.","limits":[],"at":["space"],"ref":"id","either":"space","positional":true}],"response":"GetSpaceResponse"},{"method":"SearchSpaces","service":"SpaceService","doc":"Find spaces by the words inside them, not just their titles: yours, or every listed public space.","verb":"Search","noun":"Space","http":"GET","path":"/v1/spaces:search","where":"query","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"search_spaces","title":"Search spaces","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"refused":[],"description_chars":97,"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"What to look for, in words. (text; at most 500 characters)"},"scope":{"type":"string","enum":["mine","public"],"description":"Where a search looks. (one of mine, public)"},"after":{"type":"string","description":"Where to start: the last answer's `next`. From the start when left out. (text)"},"limit":{"type":"integer","minimum":1,"maximum":200,"description":"How many at most; 50 when left out, for every list. (integer; 1 to 200)"}},"additionalProperties":false,"required":["query"]},"outputSchema":{"type":"object","properties":{"spaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"},"emoji":{"type":"string"},"description":{"type":"string"},"visibility":{"type":"string"},"listed":{"type":"boolean"},"owner":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"url":{"type":"string"},"head":{"type":"object","properties":{"id":{"type":"string"}}},"updated_at":{"type":"string","format":"date-time"},"team_access":{"type":"string"},"design_system":{"type":"string"},"archived":{"type":"boolean"}}}},"page":{"type":"object","properties":{"next":{"type":"string"}}}}}},"cli":{"command":"spacesheep spaces search","usage":"spacesheep spaces search --query <text> [flags]","replaces":[],"args":[],"flags":[{"flag":"--query","input":"query","type":"text","required":true,"doc":"What to look for, in words.","limits":["at most 500 characters"]},{"flag":"--scope","input":"scope","type":"one of mine, public","required":false,"doc":"Where a search looks."},{"flag":"--after","input":"after","type":"text","required":false,"doc":"Where to start: the last answer's `next`. From the start when left out."},{"flag":"--limit","input":"limit","type":"integer","required":false,"doc":"How many at most; 50 when left out, for every list.","limits":["1 to 200"]}]},"account":false,"read_key":true,"errors":["invalid","unavailable"],"replaces":[],"renamed":[],"answer_bytes":null,"mask":null,"inputs":[{"name":"query","type":"text","required":true,"doc":"What to look for, in words.","limits":["at most 500 characters"],"at":["query"]},{"name":"scope","type":"one of mine, public","required":false,"doc":"Where a search looks.","doc_from":"SearchScope","enum":"SearchScope","limits":[],"at":["scope"]},{"name":"after","type":"text","required":false,"doc":"Where to start: the last answer's `next`. From the start when left out.","limits":[],"at":["page","after"]},{"name":"limit","type":"integer","required":false,"doc":"How many at most; 50 when left out, for every list.","limits":["1 to 200"],"range":{"min":1,"max":200},"at":["page","limit"]}],"response":"SearchSpacesResponse"},{"method":"CreateSpace","service":"SpaceService","doc":"Publish files as a new space: one HTML file, or a folder with an index.html. Private unless you say who can open it.","verb":"Create","noun":"Space","http":"POST","path":"/v1/spaces","where":"body","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"create_space","title":"Create space","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"refused":[],"description_chars":116,"inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Its title, as lists and link previews show it. (a title; at most 200 characters)"},"emoji":{"type":"string","description":"One emoji. (text; at most 16 characters)"},"description":{"type":"string","description":"One line on what it is. (text; at most 300 characters)"},"visibility":{"type":"string","enum":["private","members","signed_in","public"],"description":"Who can open a space. (one of private, members, signed_in, public)"},"listed":{"type":"boolean","description":"Listed in search and on the owner's profile (public spaces only). (true or false)"},"team":{"type":"string","description":"Its team, when it lives in one. (team name)"},"team_id":{"type":"string","description":"`team` by its id, instead of its name. (team id)"},"team_access":{"type":"string","enum":["view","edit"],"description":"With a team: what its members may do. View (read and comment) when left out. (one of view, edit)"},"design_system":{"type":"string","description":"A design system of yours, by name or id: later edits keep its look. (text)"},"archived":{"type":"boolean","description":"Whether it's archived: put away, not served, out of lists unless asked for. Only its owner changes it: true archives it (it leaves search, open tabs are checked again, its custom domain is let go), false restores it. (true or false)"},"files":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Its path inside the space: index.html, img/hero.jpg. (text; at most 512 characters)"},"content":{"type":"string","description":"Text, as it is. (HTML)"},"staged_sha":{"type":"string","pattern":"^[0-9a-f]{12}$","description":"What an upload staged: its staged sha. (text)"},"data":{"type":"string","description":"Small binary files only; anything bigger goes through an upload. (bytes)"}},"required":["path"],"additionalProperties":false},"description":"Its files: an index.html at least. (list of files)"},"label":{"type":"string","description":"What this version is, in a few words. (text; at most 80 characters)"},"client":{"type":"object","properties":{"name":{"type":"string","description":"Your harness, lowercase: claude-code, codex, opencode, grok, gemini-cli, cursor, chatgpt. (text)"},"version":{"type":"string","description":"Your harness's version. (text)"},"model":{"type":"string","description":"The model id you run as, if you know it. (text)"},"session_id":{"type":"string","description":"Your harness's session id, only one you actually read. (text)"},"machine":{"type":"string","description":"The machine's hostname. (text)"},"url":{"type":"string","description":"A link that opens this session, if your harness gives one. (text)"},"account_id":{"type":"string","description":"The harness account's id, never an email. (text)"},"org_id":{"type":"string","description":"That account's org or workspace id. (text)"},"repo":{"type":"string","description":"The working directory's git remote. (text)"},"branch":{"type":"string","description":"Its branch. (text)"},"commit":{"type":"string","description":"Its short HEAD sha. (text)"},"extra":{"type":"object","description":"Other small facts that identify the session (entrypoint, OS); never secrets. (JSON object)"},"transport":{"type":"string","description":"Set by the server from the door the call came through; ignored if sent: mcp, api or cli. (text)"},"user_agent":{"type":"string","description":"Set by the server: the request's User-Agent, cut to 200 characters; ignored if sent. (text)"},"other":{"type":"string","description":"Set by the server: what else saved it, in today's `via` words (edit, viewer, agent, automation, memory...); ignored if sent. (text)"}},"additionalProperties":false,"description":"What published it: your harness, session and machine. (client)"},"slug":{"type":"string","description":"Its address after @you/; made from the title when left out. (text; at most 80 characters)"},"people":{"type":"array","items":{"type":"string"},"description":"Share it with them as it's made: emails or @handles. (list of person name)"},"people_ids":{"type":"array","items":{"type":"string"},"description":"`people` by their ids, instead of their names. (list of person id)"},"org":{"type":"string","description":"An Enterprise organization to publish under, by slug or id (a team is `team`). (text)"}},"additionalProperties":false,"required":["files"]},"outputSchema":{"type":"object","properties":{"space":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"},"emoji":{"type":"string"},"description":{"type":"string"},"visibility":{"type":"string"},"listed":{"type":"boolean"},"owner":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"url":{"type":"string"},"head":{"type":"object","properties":{"id":{"type":"string"}}},"updated_at":{"type":"string","format":"date-time"},"team_access":{"type":"string"},"design_system":{"type":"string"},"archived":{"type":"boolean"}}}}}},"cli":{"command":"spacesheep spaces create","usage":"spacesheep spaces create <title> --files <list of files> [flags]","replaces":[{"command":"spacesheep deploy","when":null,"renamed":["message=label"],"set":[],"retired":null}],"args":["title"],"flags":[{"flag":"--emoji","input":"emoji","type":"text","required":false,"doc":"One emoji.","limits":["at most 16 characters"]},{"flag":"--description","input":"description","type":"text","required":false,"doc":"One line on what it is.","limits":["at most 300 characters"]},{"flag":"--visibility","input":"visibility","type":"one of private, members, signed_in, public","required":false,"doc":"Who can open a space."},{"flag":"--listed","input":"listed","type":"true or false","required":false,"doc":"Listed in search and on the owner's profile (public spaces only)."},{"flag":"--team","input":"team","type":"team name","required":false,"doc":"Its team, when it lives in one."},{"flag":"--team-id","input":"team_id","type":"team id","required":false,"doc":"`team` by its id, instead of its name."},{"flag":"--team-access","input":"team_access","type":"one of view, edit","required":false,"doc":"With a team: what its members may do. View (read and comment) when left out."},{"flag":"--design-system","input":"design_system","type":"text","required":false,"doc":"A design system of yours, by name or id: later edits keep its look."},{"flag":"--archived","input":"archived","type":"true or false","required":false,"doc":"Whether it's archived: put away, not served, out of lists unless asked for. Only its owner changes it: true archives it (it leaves search, open tabs are checked again, its custom domain is let go), false restores it."},{"flag":"--files","input":"files","type":"list of files","required":true,"json":true,"doc":"Its files: an index.html at least.","fields":[{"name":"path","type":"text","required":true,"doc":"Its path inside the space: index.html, img/hero.jpg."},{"name":"content","type":"HTML","required":false,"doc":"Text, as it is."},{"name":"staged_sha","type":"text","required":false,"doc":"What an upload staged: its staged sha."},{"name":"data","type":"bytes","required":false,"doc":"Small binary files only; anything bigger goes through an upload."}]},{"flag":"--label","input":"label","type":"text","required":false,"doc":"What this version is, in a few words.","limits":["at most 80 characters"]},{"flag":"--client","input":"client","type":"client","required":false,"json":true,"doc":"What published it: your harness, session and machine.","fields":[{"name":"name","type":"text","required":false,"doc":"Your harness, lowercase: claude-code, codex, opencode, grok, gemini-cli, cursor, chatgpt."},{"name":"version","type":"text","required":false,"doc":"Your harness's version."},{"name":"model","type":"text","required":false,"doc":"The model id you run as, if you know it."},{"name":"session_id","type":"text","required":false,"doc":"Your harness's session id, only one you actually read."},{"name":"machine","type":"text","required":false,"doc":"The machine's hostname."},{"name":"url","type":"text","required":false,"doc":"A link that opens this session, if your harness gives one."},{"name":"account_id","type":"text","required":false,"doc":"The harness account's id, never an email."},{"name":"org_id","type":"text","required":false,"doc":"That account's org or workspace id."},{"name":"repo","type":"text","required":false,"doc":"The working directory's git remote."},{"name":"branch","type":"text","required":false,"doc":"Its branch."},{"name":"commit","type":"text","required":false,"doc":"Its short HEAD sha."},{"name":"extra","type":"JSON object","required":false,"doc":"Other small facts that identify the session (entrypoint, OS); never secrets."},{"name":"transport","type":"text","required":false,"doc":"Set by the server from the door the call came through; ignored if sent: mcp, api or cli."},{"name":"user_agent","type":"text","required":false,"doc":"Set by the server: the request's User-Agent, cut to 200 characters; ignored if sent."},{"name":"other","type":"text","required":false,"doc":"Set by the server: what else saved it, in today's `via` words (edit, viewer, agent, automation, memory...); ignored if sent."}]},{"flag":"--slug","input":"slug","type":"text","required":false,"doc":"Its address after @you/; made from the title when left out.","limits":["at most 80 characters"]},{"flag":"--people","input":"people","type":"list of person name","required":false,"doc":"Share it with them as it's made: emails or @handles."},{"flag":"--people-ids","input":"people_ids","type":"list of person id","required":false,"doc":"`people` by their ids, instead of their names."},{"flag":"--org","input":"org","type":"text","required":false,"doc":"An Enterprise organization to publish under, by slug or id (a team is `team`)."}]},"account":false,"read_key":false,"errors":["content_blocked","forbidden","invalid","publish_failed","quota_exceeded","rate_limited","read_only_grant"],"replaces":[{"tool":"deploy","when":null,"renamed":["version_name=label","access.visibility=visibility","access.emails=people","session=client"],"set":[],"retired":null}],"renamed":[],"answer_bytes":null,"mask":null,"inputs":[{"name":"title","type":"a title","required":false,"doc":"Its title, as lists and link previews show it.","limits":["at most 200 characters"],"at":["space","title"]},{"name":"emoji","type":"text","required":false,"doc":"One emoji.","limits":["at most 16 characters"],"at":["space","emoji"]},{"name":"description","type":"text","required":false,"doc":"One line on what it is.","limits":["at most 300 characters"],"at":["space","description"]},{"name":"visibility","type":"one of private, members, signed_in, public","required":false,"doc":"Who can open a space.","doc_from":"Visibility","enum":"Visibility","limits":[],"at":["space","visibility"]},{"name":"listed","type":"true or false","required":false,"doc":"Listed in search and on the owner's profile (public spaces only).","limits":[],"at":["space","listed"]},{"name":"team","type":"team name","required":false,"doc":"Its team, when it lives in one.","limits":[],"at":["space","team"],"ref":"name"},{"name":"team_id","type":"team id","required":false,"doc":"`team` by its id, instead of its name.","limits":[],"at":["space","team"],"ref":"id"},{"name":"team_access","type":"one of view, edit","required":false,"doc":"With a team: what its members may do. View (read and comment) when left out.","enum":"TeamAccess","limits":[],"at":["space","team_access"]},{"name":"design_system","type":"text","required":false,"doc":"A design system of yours, by name or id: later edits keep its look.","limits":[],"at":["space","design_system"]},{"name":"archived","type":"true or false","required":false,"doc":"Whether it's archived: put away, not served, out of lists unless asked for. Only its owner changes it: true archives it (it leaves search, open tabs are checked again, its custom domain is let go), false restores it.","limits":[],"at":["space","archived"]},{"name":"files","type":"list of files","required":true,"doc":"Its files: an index.html at least.","json":true,"fields":[{"name":"path","type":"text","required":true,"doc":"Its path inside the space: index.html, img/hero.jpg.","limits":["at most 512 characters"],"at":["path"]},{"name":"content","type":"HTML","required":false,"doc":"Text, as it is.","limits":[],"at":["content"]},{"name":"staged_sha","type":"text","required":false,"doc":"What an upload staged: its staged sha.","limits":[],"pattern":"^[0-9a-f]{12}$","at":["staged_sha"]},{"name":"data","type":"bytes","required":false,"doc":"Small binary files only; anything bigger goes through an upload.","limits":[],"at":["data"]}],"limits":[],"at":["files"]},{"name":"label","type":"text","required":false,"doc":"What this version is, in a few words.","limits":["at most 80 characters"],"at":["label"]},{"name":"client","type":"client","required":false,"doc":"What published it: your harness, session and machine.","json":true,"fields":[{"name":"name","type":"text","required":false,"doc":"Your harness, lowercase: claude-code, codex, opencode, grok, gemini-cli, cursor, chatgpt.","limits":[],"at":["name"]},{"name":"version","type":"text","required":false,"doc":"Your harness's version.","limits":[],"at":["version"]},{"name":"model","type":"text","required":false,"doc":"The model id you run as, if you know it.","limits":[],"at":["model"]},{"name":"session_id","type":"text","required":false,"doc":"Your harness's session id, only one you actually read.","limits":[],"at":["session_id"]},{"name":"machine","type":"text","required":false,"doc":"The machine's hostname.","limits":[],"at":["machine"]},{"name":"url","type":"text","required":false,"doc":"A link that opens this session, if your harness gives one.","limits":[],"at":["url"]},{"name":"account_id","type":"text","required":false,"doc":"The harness account's id, never an email.","limits":[],"at":["account_id"]},{"name":"org_id","type":"text","required":false,"doc":"That account's org or workspace id.","limits":[],"at":["org_id"]},{"name":"repo","type":"text","required":false,"doc":"The working directory's git remote.","limits":[],"at":["repo"]},{"name":"branch","type":"text","required":false,"doc":"Its branch.","limits":[],"at":["branch"]},{"name":"commit","type":"text","required":false,"doc":"Its short HEAD sha.","limits":[],"at":["commit"]},{"name":"extra","type":"JSON object","required":false,"doc":"Other small facts that identify the session (entrypoint, OS); never secrets.","json":true,"limits":[],"at":["extra"]},{"name":"transport","type":"text","required":false,"doc":"Set by the server from the door the call came through; ignored if sent: mcp, api or cli.","limits":[],"at":["transport"]},{"name":"user_agent","type":"text","required":false,"doc":"Set by the server: the request's User-Agent, cut to 200 characters; ignored if sent.","limits":[],"at":["user_agent"]},{"name":"other","type":"text","required":false,"doc":"Set by the server: what else saved it, in today's `via` words (edit, viewer, agent, automation, memory...); ignored if sent.","limits":[],"at":["other"]}],"limits":[],"at":["client"]},{"name":"slug","type":"text","required":false,"doc":"Its address after @you/; made from the title when left out.","limits":["at most 80 characters"],"at":["slug"]},{"name":"people","type":"list of person name","required":false,"doc":"Share it with them as it's made: emails or @handles.","limits":[],"at":["people"],"ref":"name"},{"name":"people_ids","type":"list of person id","required":false,"doc":"`people` by their ids, instead of their names.","limits":[],"at":["people"],"ref":"id"},{"name":"org","type":"text","required":false,"doc":"An Enterprise organization to publish under, by slug or id (a team is `team`).","limits":[],"at":["org"]}],"response":"CreateSpaceResponse"},{"method":"UpdateSpace","service":"SpaceService","doc":"Change a space's title, emoji, description or who can open it, or archive it. Its files don't change.","verb":"Update","noun":"Space","http":"PATCH","path":"/v1/spaces/{space.id}","where":"body","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"update_space","title":"Update space","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"refused":[],"description_chars":101,"inputSchema":{"type":"object","properties":{"space":{"type":"string","description":"The space to change. (space name)"},"space_id":{"type":"string","description":"`space` by its id, instead of its name. (space id)"},"title":{"type":"string","description":"Its title, as lists and link previews show it. (a title; at most 200 characters)"},"emoji":{"type":"string","description":"One emoji. (text; at most 16 characters)"},"description":{"type":"string","description":"One line on what it is. (text; at most 300 characters)"},"visibility":{"type":"string","enum":["private","members","signed_in","public"],"description":"Who can open a space. (one of private, members, signed_in, public)"},"listed":{"type":"boolean","description":"Listed in search and on the owner's profile (public spaces only). (true or false)"},"team":{"type":"string","description":"Its team, when it lives in one. (team name)"},"team_id":{"type":"string","description":"`team` by its id, instead of its name. (team id)"},"team_access":{"type":"string","enum":["view","edit"],"description":"With a team: what its members may do. View (read and comment) when left out. (one of view, edit)"},"design_system":{"type":"string","description":"A design system of yours, by name or id: later edits keep its look. (text)"},"archived":{"type":"boolean","description":"Whether it's archived: put away, not served, out of lists unless asked for. Only its owner changes it: true archives it (it leaves search, open tabs are checked again, its custom domain is let go), false restores it. (true or false)"}},"additionalProperties":false,"required":[],"allOf":[{"anyOf":[{"required":["space"]},{"required":["space_id"]}]}]},"outputSchema":{"type":"object","properties":{"space":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"},"emoji":{"type":"string"},"description":{"type":"string"},"visibility":{"type":"string"},"listed":{"type":"boolean"},"owner":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"url":{"type":"string"},"head":{"type":"object","properties":{"id":{"type":"string"}}},"updated_at":{"type":"string","format":"date-time"},"team_access":{"type":"string"},"design_system":{"type":"string"},"archived":{"type":"boolean"}}}}}},"cli":{"command":"spacesheep spaces update","usage":"spacesheep spaces update <space> [flags]","replaces":[{"command":"spacesheep share","when":"visibility","renamed":["1=space"],"set":[],"retired":null}],"args":["space"],"flags":[{"flag":"--title","input":"title","type":"a title","required":false,"doc":"Its title, as lists and link previews show it.","limits":["at most 200 characters"]},{"flag":"--emoji","input":"emoji","type":"text","required":false,"doc":"One emoji.","limits":["at most 16 characters"]},{"flag":"--description","input":"description","type":"text","required":false,"doc":"One line on what it is.","limits":["at most 300 characters"]},{"flag":"--visibility","input":"visibility","type":"one of private, members, signed_in, public","required":false,"doc":"Who can open a space."},{"flag":"--listed","input":"listed","type":"true or false","required":false,"doc":"Listed in search and on the owner's profile (public spaces only)."},{"flag":"--team","input":"team","type":"team name","required":false,"doc":"Its team, when it lives in one."},{"flag":"--team-id","input":"team_id","type":"team id","required":false,"doc":"`team` by its id, instead of its name."},{"flag":"--team-access","input":"team_access","type":"one of view, edit","required":false,"doc":"With a team: what its members may do. View (read and comment) when left out."},{"flag":"--design-system","input":"design_system","type":"text","required":false,"doc":"A design system of yours, by name or id: later edits keep its look."},{"flag":"--archived","input":"archived","type":"true or false","required":false,"doc":"Whether it's archived: put away, not served, out of lists unless asked for. Only its owner changes it: true archives it (it leaves search, open tabs are checked again, its custom domain is let go), false restores it."}]},"account":false,"read_key":false,"errors":["forbidden","invalid","not_found","rate_limited","read_only_grant","wrong_kind"],"replaces":[{"tool":"share_space","when":"visibility","renamed":["uuid=space"],"set":[],"retired":null},{"tool":"share_space","when":"team","renamed":["uuid=space"],"set":[],"retired":null}],"renamed":[],"answer_bytes":null,"mask":{"field":"space","paths":["title","emoji","description","visibility","listed","team","team_access","design_system","archived"]},"inputs":[{"name":"space","type":"space name","ref":"name","required":false,"either":"space","doc":"The space to change.","limits":[],"at":["space","name"],"selects":true,"positional":true},{"name":"space_id","type":"space id","ref":"id","required":false,"either":"space","doc":"`space` by its id, instead of its name.","limits":[],"at":["space","id"],"selects":true,"positional":true},{"name":"title","type":"a title","required":false,"doc":"Its title, as lists and link previews show it.","limits":["at most 200 characters"],"at":["space","title"]},{"name":"emoji","type":"text","required":false,"doc":"One emoji.","limits":["at most 16 characters"],"at":["space","emoji"]},{"name":"description","type":"text","required":false,"doc":"One line on what it is.","limits":["at most 300 characters"],"at":["space","description"]},{"name":"visibility","type":"one of private, members, signed_in, public","required":false,"doc":"Who can open a space.","doc_from":"Visibility","enum":"Visibility","limits":[],"at":["space","visibility"]},{"name":"listed","type":"true or false","required":false,"doc":"Listed in search and on the owner's profile (public spaces only).","limits":[],"at":["space","listed"]},{"name":"team","type":"team name","required":false,"doc":"Its team, when it lives in one.","limits":[],"at":["space","team"],"ref":"name"},{"name":"team_id","type":"team id","required":false,"doc":"`team` by its id, instead of its name.","limits":[],"at":["space","team"],"ref":"id"},{"name":"team_access","type":"one of view, edit","required":false,"doc":"With a team: what its members may do. View (read and comment) when left out.","enum":"TeamAccess","limits":[],"at":["space","team_access"]},{"name":"design_system","type":"text","required":false,"doc":"A design system of yours, by name or id: later edits keep its look.","limits":[],"at":["space","design_system"]},{"name":"archived","type":"true or false","required":false,"doc":"Whether it's archived: put away, not served, out of lists unless asked for. Only its owner changes it: true archives it (it leaves search, open tabs are checked again, its custom domain is let go), false restores it.","limits":[],"at":["space","archived"]}],"response":"UpdateSpaceResponse"},{"method":"ShareSpace","service":"SpaceService","doc":"Share a space with people by email or @handle. They can read and comment, unless you pass `role: edit`.","verb":"Share","noun":"Space","http":"POST","path":"/v1/spaces/{space.id}:share","where":"body","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"share_space","title":"Share space","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"refused":[],"description_chars":100,"inputSchema":{"type":"object","properties":{"space":{"type":"string","description":"The space: its address, @handle/slug, or its link. (space name)"},"space_id":{"type":"string","description":"`space` by its id, instead of its name. (space id)"},"people":{"type":"array","items":{"type":"string"},"description":"Who: emails or @handles. (list of person name)"},"people_ids":{"type":"array","items":{"type":"string"},"description":"`people` by their ids, instead of their names. (list of person id)"},"role":{"type":"string","enum":["edit","view"],"description":"What they may do; view when left out. (one of edit, view)"}},"additionalProperties":false,"required":[],"allOf":[{"anyOf":[{"required":["space"]},{"required":["space_id"]}]},{"anyOf":[{"required":["people"]},{"required":["people_ids"]}]}]},"outputSchema":{"type":"object","properties":{"shared":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"refused":{"type":"array","items":{"type":"string"}}}}},"cli":{"command":"spacesheep spaces share","usage":"spacesheep spaces share <space> (--people <list of person name> | --people-ids <list of person id>) [flags]","replaces":[{"command":"spacesheep share","when":null,"renamed":["1=space","email=people"],"set":[],"retired":null}],"args":["space"],"flags":[{"flag":"--people","input":"people","type":"list of person name","required":false,"either":"people","doc":"Who: emails or @handles."},{"flag":"--people-ids","input":"people_ids","type":"list of person id","required":false,"either":"people","doc":"`people` by their ids, instead of their names."},{"flag":"--role","input":"role","type":"one of edit, view","required":false,"doc":"What they may do; view when left out."}]},"account":false,"read_key":false,"errors":["forbidden","invalid","not_found","rate_limited","read_only_grant"],"replaces":[],"renamed":["uuid=space","emails=people"],"answer_bytes":null,"mask":null,"inputs":[{"name":"space","type":"space name","required":false,"doc":"The space: its address, @handle/slug, or its link.","doc_from":"SpaceRef.name","limits":[],"at":["space"],"ref":"name","either":"space","positional":true},{"name":"space_id","type":"space id","required":false,"doc":"`space` by its id, instead of its name.","limits":[],"at":["space"],"ref":"id","either":"space","positional":true},{"name":"people","type":"list of person name","required":false,"doc":"Who: emails or @handles.","limits":[],"at":["people"],"ref":"name","either":"people"},{"name":"people_ids","type":"list of person id","required":false,"doc":"`people` by their ids, instead of their names.","limits":[],"at":["people"],"ref":"id","either":"people"},{"name":"role","type":"one of edit, view","required":false,"doc":"What they may do; view when left out.","enum":"ShareRole","limits":[],"at":["role"]}],"response":"ShareSpaceResponse"},{"method":"DeleteSpace","service":"SpaceService","doc":"Delete a space and every file in it, for good. Owner only.","verb":"Delete","noun":"Space","http":"DELETE","path":"/v1/spaces/{space.id}","where":"query","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"delete_space","title":"Delete space","annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false},"refused":[],"description_chars":58,"inputSchema":{"type":"object","properties":{"space":{"type":"string","description":"The space: its address, @handle/slug, or its link. (space name)"},"space_id":{"type":"string","description":"`space` by its id, instead of its name. (space id)"}},"additionalProperties":false,"required":[],"allOf":[{"anyOf":[{"required":["space"]},{"required":["space_id"]}]}]},"outputSchema":{"type":"object","properties":{}}},"cli":{"command":"spacesheep spaces delete","usage":"spacesheep spaces delete <space>","replaces":[{"command":"spacesheep delete","when":null,"renamed":["1=space","yes="],"set":[],"retired":null}],"args":["space"],"flags":[]},"account":false,"read_key":false,"errors":["forbidden","invalid","not_found","read_only_grant","signed_space"],"replaces":[],"renamed":["uuid=space"],"answer_bytes":null,"mask":null,"inputs":[{"name":"space","type":"space name","required":false,"doc":"The space: its address, @handle/slug, or its link.","doc_from":"SpaceRef.name","limits":[],"at":["space"],"ref":"name","either":"space","positional":true},{"name":"space_id","type":"space id","required":false,"doc":"`space` by its id, instead of its name.","limits":[],"at":["space"],"ref":"id","either":"space","positional":true}],"response":"DeleteSpaceResponse"}]},{"service":"VersionService","account":false,"doc":"","file":"spacesheep/v1/spaces_service.proto","methods":[{"method":"ListVersions","service":"VersionService","doc":"A space's history, newest first: each version's label, time, author and what published it.","verb":"List","noun":"Version","http":"GET","path":"/v1/spaces/{space.id}/versions","where":"query","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"list_versions","title":"List versions","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"refused":[],"description_chars":90,"inputSchema":{"type":"object","properties":{"space":{"type":"string","description":"The space: its address, @handle/slug, or its link. (space name)"},"space_id":{"type":"string","description":"`space` by its id, instead of its name. (space id)"},"after":{"type":"string","description":"Where to start: the last answer's `next`. From the start when left out. (text)"},"limit":{"type":"integer","minimum":1,"maximum":200,"description":"How many at most; 50 when left out, for every list. (integer; 1 to 200)"}},"additionalProperties":false,"required":[],"allOf":[{"anyOf":[{"required":["space"]},{"required":["space_id"]}]}]},"outputSchema":{"type":"object","properties":{"versions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"author":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"created_at":{"type":"string","format":"date-time"},"client":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"model":{"type":"string"},"session_id":{"type":"string"},"machine":{"type":"string"},"url":{"type":"string"},"account_id":{"type":"string"},"org_id":{"type":"string"},"repo":{"type":"string"},"branch":{"type":"string"},"commit":{"type":"string"},"extra":{"type":"array","items":{"type":"object"}},"transport":{"type":"string"},"user_agent":{"type":"string"},"other":{"type":"string"}}}}}},"page":{"type":"object","properties":{"next":{"type":"string"}}}}}},"cli":{"command":"spacesheep versions list","usage":"spacesheep versions list (--space <space name> | --space-id <space id>) [flags]","replaces":[{"command":"spacesheep versions","when":null,"renamed":["1=space"],"set":[],"retired":null}],"args":[],"flags":[{"flag":"--space","input":"space","type":"space name","required":false,"either":"space","doc":"The space: its address, @handle/slug, or its link."},{"flag":"--space-id","input":"space_id","type":"space id","required":false,"either":"space","doc":"`space` by its id, instead of its name."},{"flag":"--after","input":"after","type":"text","required":false,"doc":"Where to start: the last answer's `next`. From the start when left out."},{"flag":"--limit","input":"limit","type":"integer","required":false,"doc":"How many at most; 50 when left out, for every list.","limits":["1 to 200"]}]},"account":false,"read_key":true,"errors":["forbidden","invalid","not_found"],"replaces":[],"renamed":["uuid=space"],"answer_bytes":null,"mask":null,"inputs":[{"name":"space","type":"space name","required":false,"doc":"The space: its address, @handle/slug, or its link.","doc_from":"SpaceRef.name","limits":[],"at":["space"],"ref":"name","either":"space"},{"name":"space_id","type":"space id","required":false,"doc":"`space` by its id, instead of its name.","limits":[],"at":["space"],"ref":"id","either":"space"},{"name":"after","type":"text","required":false,"doc":"Where to start: the last answer's `next`. From the start when left out.","limits":[],"at":["page","after"]},{"name":"limit","type":"integer","required":false,"doc":"How many at most; 50 when left out, for every list.","limits":["1 to 200"],"range":{"min":1,"max":200},"at":["page","limit"]}],"response":"ListVersionsResponse"},{"method":"CreateVersion","service":"VersionService","doc":"Publish a new version of a space you can edit: its whole set of files, or exact changes to the current ones.","verb":"Create","noun":"Version","http":"POST","path":"/v1/spaces/{space.id}/versions","where":"body","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"create_version","title":"Create version","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"refused":[],"description_chars":108,"inputSchema":{"type":"object","properties":{"space":{"type":"string","description":"The space: its address, @handle/slug, or its link. (space name)"},"space_id":{"type":"string","description":"`space` by its id, instead of its name. (space id)"},"files":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Its path inside the space: index.html, img/hero.jpg. (text; at most 512 characters)"},"content":{"type":"string","description":"Text, as it is. (HTML)"},"staged_sha":{"type":"string","pattern":"^[0-9a-f]{12}$","description":"What an upload staged: its staged sha. (text)"},"data":{"type":"string","description":"Small binary files only; anything bigger goes through an upload. (bytes)"}},"required":["path"],"additionalProperties":false},"description":"Every file of the new version; leave out to send replacements instead. (list of files)"},"label":{"type":"string","description":"What this version is, in a few words. (text; at most 80 characters)"},"parent":{"type":"string","description":"The version you read. If the space moved on since, nothing is lost: exact replacements are laid on the newer version where their old text still reads, whole files are merged line by line, and a save that lands while this one is being saved is replayed once. Only a real clash is refused, as `conflict` naming the server's version. Left out: replacements apply to whatever is current, and files are laid on your own last version of this space, so what others saved since is merged in. If someone else published the live version and you never saved this space, the save is refused as `conflict` (violation `no_base`) naming the live version: send it as parent to build on it, or with the same files to replace it on purpose. (version id)"},"replacements":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Its file; index.html when left out. (text)"},"old_string":{"type":"string","description":"The words to find, exactly. They must appear once, unless replace_all. (text)"},"new_string":{"type":"string","description":"What goes in their place; empty deletes them. (text)"},"replace_all":{"type":"boolean","description":"Replace every match, not just one. (true or false)"}},"required":["old_string"],"additionalProperties":false},"description":"Exact changes to the current files, instead of sending every file. (list of replacements)"},"client":{"type":"object","properties":{"name":{"type":"string","description":"Your harness, lowercase: claude-code, codex, opencode, grok, gemini-cli, cursor, chatgpt. (text)"},"version":{"type":"string","description":"Your harness's version. (text)"},"model":{"type":"string","description":"The model id you run as, if you know it. (text)"},"session_id":{"type":"string","description":"Your harness's session id, only one you actually read. (text)"},"machine":{"type":"string","description":"The machine's hostname. (text)"},"url":{"type":"string","description":"A link that opens this session, if your harness gives one. (text)"},"account_id":{"type":"string","description":"The harness account's id, never an email. (text)"},"org_id":{"type":"string","description":"That account's org or workspace id. (text)"},"repo":{"type":"string","description":"The working directory's git remote. (text)"},"branch":{"type":"string","description":"Its branch. (text)"},"commit":{"type":"string","description":"Its short HEAD sha. (text)"},"extra":{"type":"object","description":"Other small facts that identify the session (entrypoint, OS); never secrets. (JSON object)"},"transport":{"type":"string","description":"Set by the server from the door the call came through; ignored if sent: mcp, api or cli. (text)"},"user_agent":{"type":"string","description":"Set by the server: the request's User-Agent, cut to 200 characters; ignored if sent. (text)"},"other":{"type":"string","description":"Set by the server: what else saved it, in today's `via` words (edit, viewer, agent, automation, memory...); ignored if sent. (text)"}},"additionalProperties":false,"description":"What published it: your harness, session and machine. (client)"},"background":{"type":"boolean","description":"For scheduled refreshes: saved without moving the space up in Recent. (true or false)"},"live_patch":{"type":"array","items":{"type":"object"},"description":"The edits you already showed with a live push: the save is announced as them, so open tabs don't reload. (list of JSON object)"}},"additionalProperties":false,"required":[],"allOf":[{"anyOf":[{"required":["space"]},{"required":["space_id"]}]}]},"outputSchema":{"type":"object","properties":{"version":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"author":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"created_at":{"type":"string","format":"date-time"},"client":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"model":{"type":"string"},"session_id":{"type":"string"},"machine":{"type":"string"},"url":{"type":"string"},"account_id":{"type":"string"},"org_id":{"type":"string"},"repo":{"type":"string"},"branch":{"type":"string"},"commit":{"type":"string"},"extra":{"type":"array","items":{"type":"object"}},"transport":{"type":"string"},"user_agent":{"type":"string"},"other":{"type":"string"}}}}},"space":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"title":{"type":"string"},"emoji":{"type":"string"},"description":{"type":"string"},"visibility":{"type":"string"},"listed":{"type":"boolean"},"owner":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"url":{"type":"string"},"head":{"type":"object","properties":{"id":{"type":"string"}}},"updated_at":{"type":"string","format":"date-time"},"team_access":{"type":"string"},"design_system":{"type":"string"},"archived":{"type":"boolean"}}},"outcome":{"type":"string"}}}},"cli":{"command":"spacesheep versions create","usage":"spacesheep versions create (--space <space name> | --space-id <space id>) [flags]","replaces":[{"command":"spacesheep deploy","when":"space","renamed":["message=label"],"set":[],"retired":null}],"args":[],"flags":[{"flag":"--space","input":"space","type":"space name","required":false,"either":"space","doc":"The space: its address, @handle/slug, or its link."},{"flag":"--space-id","input":"space_id","type":"space id","required":false,"either":"space","doc":"`space` by its id, instead of its name."},{"flag":"--files","input":"files","type":"list of files","required":false,"json":true,"doc":"Every file of the new version; leave out to send replacements instead.","fields":[{"name":"path","type":"text","required":true,"doc":"Its path inside the space: index.html, img/hero.jpg."},{"name":"content","type":"HTML","required":false,"doc":"Text, as it is."},{"name":"staged_sha","type":"text","required":false,"doc":"What an upload staged: its staged sha."},{"name":"data","type":"bytes","required":false,"doc":"Small binary files only; anything bigger goes through an upload."}]},{"flag":"--label","input":"label","type":"text","required":false,"doc":"What this version is, in a few words.","limits":["at most 80 characters"]},{"flag":"--parent","input":"parent","type":"version id","required":false,"doc":"The version you read. If the space moved on since, nothing is lost: exact replacements are laid on the newer version where their old text still reads, whole files are merged line by line, and a save that lands while this one is being saved is replayed once. Only a real clash is refused, as `conflict` naming the server's version. Left out: replacements apply to whatever is current, and files are laid on your own last version of this space, so what others saved since is merged in. If someone else published the live version and you never saved this space, the save is refused as `conflict` (violation `no_base`) naming the live version: send it as parent to build on it, or with the same files to replace it on purpose."},{"flag":"--replacements","input":"replacements","type":"list of replacements","required":false,"json":true,"doc":"Exact changes to the current files, instead of sending every file.","fields":[{"name":"path","type":"text","required":false,"doc":"Its file; index.html when left out."},{"name":"old_string","type":"text","required":true,"doc":"The words to find, exactly. They must appear once, unless replace_all."},{"name":"new_string","type":"text","required":false,"doc":"What goes in their place; empty deletes them."},{"name":"replace_all","type":"true or false","required":false,"doc":"Replace every match, not just one."}]},{"flag":"--client","input":"client","type":"client","required":false,"json":true,"doc":"What published it: your harness, session and machine.","fields":[{"name":"name","type":"text","required":false,"doc":"Your harness, lowercase: claude-code, codex, opencode, grok, gemini-cli, cursor, chatgpt."},{"name":"version","type":"text","required":false,"doc":"Your harness's version."},{"name":"model","type":"text","required":false,"doc":"The model id you run as, if you know it."},{"name":"session_id","type":"text","required":false,"doc":"Your harness's session id, only one you actually read."},{"name":"machine","type":"text","required":false,"doc":"The machine's hostname."},{"name":"url","type":"text","required":false,"doc":"A link that opens this session, if your harness gives one."},{"name":"account_id","type":"text","required":false,"doc":"The harness account's id, never an email."},{"name":"org_id","type":"text","required":false,"doc":"That account's org or workspace id."},{"name":"repo","type":"text","required":false,"doc":"The working directory's git remote."},{"name":"branch","type":"text","required":false,"doc":"Its branch."},{"name":"commit","type":"text","required":false,"doc":"Its short HEAD sha."},{"name":"extra","type":"JSON object","required":false,"doc":"Other small facts that identify the session (entrypoint, OS); never secrets."},{"name":"transport","type":"text","required":false,"doc":"Set by the server from the door the call came through; ignored if sent: mcp, api or cli."},{"name":"user_agent","type":"text","required":false,"doc":"Set by the server: the request's User-Agent, cut to 200 characters; ignored if sent."},{"name":"other","type":"text","required":false,"doc":"Set by the server: what else saved it, in today's `via` words (edit, viewer, agent, automation, memory...); ignored if sent."}]},{"flag":"--background","input":"background","type":"true or false","required":false,"doc":"For scheduled refreshes: saved without moving the space up in Recent."},{"flag":"--live-patch","input":"live_patch","type":"list of JSON object","required":false,"json":true,"doc":"The edits you already showed with a live push: the save is announced as them, so open tabs don't reload."}]},"account":false,"read_key":false,"errors":["conflict","content_blocked","forbidden","invalid","not_found","publish_failed","quota_exceeded","rate_limited","read_only_grant","suspended","turn_held","unavailable"],"replaces":[{"tool":"deploy","when":"uuid","renamed":["uuid=space","base_sha=parent","version_name=label","session=client"],"set":[],"retired":null},{"tool":"edit","when":null,"renamed":["uuid=space","edits=replacements","base_sha=parent","version_name=label","session=client"],"set":[],"retired":null}],"renamed":[],"answer_bytes":null,"mask":null,"inputs":[{"name":"space","type":"space name","required":false,"doc":"The space: its address, @handle/slug, or its link.","doc_from":"SpaceRef.name","limits":[],"at":["space"],"ref":"name","either":"space"},{"name":"space_id","type":"space id","required":false,"doc":"`space` by its id, instead of its name.","limits":[],"at":["space"],"ref":"id","either":"space"},{"name":"files","type":"list of files","required":false,"doc":"Every file of the new version; leave out to send replacements instead.","json":true,"fields":[{"name":"path","type":"text","required":true,"doc":"Its path inside the space: index.html, img/hero.jpg.","limits":["at most 512 characters"],"at":["path"]},{"name":"content","type":"HTML","required":false,"doc":"Text, as it is.","limits":[],"at":["content"]},{"name":"staged_sha","type":"text","required":false,"doc":"What an upload staged: its staged sha.","limits":[],"pattern":"^[0-9a-f]{12}$","at":["staged_sha"]},{"name":"data","type":"bytes","required":false,"doc":"Small binary files only; anything bigger goes through an upload.","limits":[],"at":["data"]}],"limits":[],"at":["files"]},{"name":"label","type":"text","required":false,"doc":"What this version is, in a few words.","limits":["at most 80 characters"],"at":["label"]},{"name":"parent","type":"version id","required":false,"doc":"The version you read. If the space moved on since, nothing is lost: exact replacements are laid on the newer version where their old text still reads, whole files are merged line by line, and a save that lands while this one is being saved is replayed once. Only a real clash is refused, as `conflict` naming the server's version. Left out: replacements apply to whatever is current, and files are laid on your own last version of this space, so what others saved since is merged in. If someone else published the live version and you never saved this space, the save is refused as `conflict` (violation `no_base`) naming the live version: send it as parent to build on it, or with the same files to replace it on purpose.","limits":[],"at":["parent"],"ref":"id"},{"name":"replacements","type":"list of replacements","required":false,"doc":"Exact changes to the current files, instead of sending every file.","json":true,"fields":[{"name":"path","type":"text","required":false,"doc":"Its file; index.html when left out.","limits":[],"at":["path"]},{"name":"old_string","type":"text","required":true,"doc":"The words to find, exactly. They must appear once, unless replace_all.","limits":[],"at":["old_string"]},{"name":"new_string","type":"text","required":false,"doc":"What goes in their place; empty deletes them.","limits":[],"at":["new_string"]},{"name":"replace_all","type":"true or false","required":false,"doc":"Replace every match, not just one.","limits":[],"at":["replace_all"]}],"limits":[],"at":["replacements"]},{"name":"client","type":"client","required":false,"doc":"What published it: your harness, session and machine.","json":true,"fields":[{"name":"name","type":"text","required":false,"doc":"Your harness, lowercase: claude-code, codex, opencode, grok, gemini-cli, cursor, chatgpt.","limits":[],"at":["name"]},{"name":"version","type":"text","required":false,"doc":"Your harness's version.","limits":[],"at":["version"]},{"name":"model","type":"text","required":false,"doc":"The model id you run as, if you know it.","limits":[],"at":["model"]},{"name":"session_id","type":"text","required":false,"doc":"Your harness's session id, only one you actually read.","limits":[],"at":["session_id"]},{"name":"machine","type":"text","required":false,"doc":"The machine's hostname.","limits":[],"at":["machine"]},{"name":"url","type":"text","required":false,"doc":"A link that opens this session, if your harness gives one.","limits":[],"at":["url"]},{"name":"account_id","type":"text","required":false,"doc":"The harness account's id, never an email.","limits":[],"at":["account_id"]},{"name":"org_id","type":"text","required":false,"doc":"That account's org or workspace id.","limits":[],"at":["org_id"]},{"name":"repo","type":"text","required":false,"doc":"The working directory's git remote.","limits":[],"at":["repo"]},{"name":"branch","type":"text","required":false,"doc":"Its branch.","limits":[],"at":["branch"]},{"name":"commit","type":"text","required":false,"doc":"Its short HEAD sha.","limits":[],"at":["commit"]},{"name":"extra","type":"JSON object","required":false,"doc":"Other small facts that identify the session (entrypoint, OS); never secrets.","json":true,"limits":[],"at":["extra"]},{"name":"transport","type":"text","required":false,"doc":"Set by the server from the door the call came through; ignored if sent: mcp, api or cli.","limits":[],"at":["transport"]},{"name":"user_agent","type":"text","required":false,"doc":"Set by the server: the request's User-Agent, cut to 200 characters; ignored if sent.","limits":[],"at":["user_agent"]},{"name":"other","type":"text","required":false,"doc":"Set by the server: what else saved it, in today's `via` words (edit, viewer, agent, automation, memory...); ignored if sent.","limits":[],"at":["other"]}],"limits":[],"at":["client"]},{"name":"background","type":"true or false","required":false,"doc":"For scheduled refreshes: saved without moving the space up in Recent.","limits":[],"at":["background"]},{"name":"live_patch","type":"list of JSON object","required":false,"doc":"The edits you already showed with a live push: the save is announced as them, so open tabs don't reload.","json":true,"limits":[],"at":["live_patch"]}],"response":"CreateVersionResponse"},{"method":"RestoreVersion","service":"VersionService","doc":"Make an older version the current one again, as a new version. Nothing in the history is lost.","verb":"Restore","noun":"Version","http":"POST","path":"/v1/spaces/{space.id}/versions/{version.id}:restore","where":"body","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"restore_version","title":"Restore version","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"refused":[],"description_chars":94,"inputSchema":{"type":"object","properties":{"space":{"type":"string","description":"The space: its address, @handle/slug, or its link. (space name)"},"space_id":{"type":"string","description":"`space` by its id, instead of its name. (space id)"},"version":{"type":"string","description":"A version of a space: its sha. (version id)"}},"additionalProperties":false,"required":["version"],"allOf":[{"anyOf":[{"required":["space"]},{"required":["space_id"]}]}]},"outputSchema":{"type":"object","properties":{"version":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"author":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"created_at":{"type":"string","format":"date-time"},"client":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"model":{"type":"string"},"session_id":{"type":"string"},"machine":{"type":"string"},"url":{"type":"string"},"account_id":{"type":"string"},"org_id":{"type":"string"},"repo":{"type":"string"},"branch":{"type":"string"},"commit":{"type":"string"},"extra":{"type":"array","items":{"type":"object"}},"transport":{"type":"string"},"user_agent":{"type":"string"},"other":{"type":"string"}}}}}}}},"cli":{"command":"spacesheep versions restore","usage":"spacesheep versions restore <version> (--space <space name> | --space-id <space id>)","replaces":[],"args":["version"],"flags":[{"flag":"--space","input":"space","type":"space name","required":false,"either":"space","doc":"The space: its address, @handle/slug, or its link."},{"flag":"--space-id","input":"space_id","type":"space id","required":false,"either":"space","doc":"`space` by its id, instead of its name."}]},"account":false,"read_key":false,"errors":["content_blocked","forbidden","invalid","not_found","publish_failed","rate_limited","read_only_grant","suspended","turn_held"],"replaces":[],"renamed":[],"answer_bytes":null,"mask":null,"inputs":[{"name":"space","type":"space name","required":false,"doc":"The space: its address, @handle/slug, or its link.","doc_from":"SpaceRef.name","limits":[],"at":["space"],"ref":"name","either":"space"},{"name":"space_id","type":"space id","required":false,"doc":"`space` by its id, instead of its name.","limits":[],"at":["space"],"ref":"id","either":"space"},{"name":"version","type":"version id","required":true,"doc":"A version of a space: its sha.","doc_from":"VersionRef","limits":[],"at":["version"],"ref":"id"}],"response":"RestoreVersionResponse"}]},{"service":"FileService","account":false,"doc":"","file":"spacesheep/v1/spaces_service.proto","methods":[{"method":"ListFiles","service":"FileService","doc":"A space's files and their paths: the current version, or an older one.","verb":"List","noun":"File","http":"GET","path":"/v1/spaces/{space.id}/files","where":"query","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"list_files","title":"List files","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"refused":[],"description_chars":70,"inputSchema":{"type":"object","properties":{"space":{"type":"string","description":"The space: its address, @handle/slug, or its link. (space name)"},"space_id":{"type":"string","description":"`space` by its id, instead of its name. (space id)"},"version":{"type":"string","description":"An older version; the current one when left out. (version id)"},"after":{"type":"string","description":"Where to start: the last answer's `next`. From the start when left out. (text)"},"limit":{"type":"integer","minimum":1,"maximum":200,"description":"How many at most; 50 when left out, for every list. (integer; 1 to 200)"}},"additionalProperties":false,"required":[],"allOf":[{"anyOf":[{"required":["space"]},{"required":["space_id"]}]}]},"outputSchema":{"type":"object","properties":{"files":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"content":{"type":"string"},"staged_sha":{"type":"string"},"data":{"type":"string"}}}},"version":{"type":"object","properties":{"id":{"type":"string"}}},"page":{"type":"object","properties":{"next":{"type":"string"}}}}}},"cli":{"command":"spacesheep files list","usage":"spacesheep files list (--space <space name> | --space-id <space id>) [flags]","replaces":[{"command":"spacesheep read","when":null,"renamed":["1=space"],"set":[],"retired":null}],"args":[],"flags":[{"flag":"--space","input":"space","type":"space name","required":false,"either":"space","doc":"The space: its address, @handle/slug, or its link."},{"flag":"--space-id","input":"space_id","type":"space id","required":false,"either":"space","doc":"`space` by its id, instead of its name."},{"flag":"--version","input":"version","type":"version id","required":false,"doc":"An older version; the current one when left out."},{"flag":"--after","input":"after","type":"text","required":false,"doc":"Where to start: the last answer's `next`. From the start when left out."},{"flag":"--limit","input":"limit","type":"integer","required":false,"doc":"How many at most; 50 when left out, for every list.","limits":["1 to 200"]}]},"account":false,"read_key":true,"errors":["forbidden","invalid","not_found"],"replaces":[{"tool":"read_space","when":null,"renamed":["uuid=space"],"set":[],"retired":null}],"renamed":[],"answer_bytes":null,"mask":null,"inputs":[{"name":"space","type":"space name","required":false,"doc":"The space: its address, @handle/slug, or its link.","doc_from":"SpaceRef.name","limits":[],"at":["space"],"ref":"name","either":"space"},{"name":"space_id","type":"space id","required":false,"doc":"`space` by its id, instead of its name.","limits":[],"at":["space"],"ref":"id","either":"space"},{"name":"version","type":"version id","required":false,"doc":"An older version; the current one when left out.","limits":[],"at":["version"],"ref":"id"},{"name":"after","type":"text","required":false,"doc":"Where to start: the last answer's `next`. From the start when left out.","limits":[],"at":["page","after"]},{"name":"limit","type":"integer","required":false,"doc":"How many at most; 50 when left out, for every list.","limits":["1 to 200"],"range":{"min":1,"max":200},"at":["page","limit"]}],"response":"ListFilesResponse"},{"method":"GetFile","service":"FileService","doc":"One file of a space: its contents in the current version, or an older one.","verb":"Get","noun":"File","http":"GET","path":"/v1/spaces/{space.id}/files/{file}","where":"query","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"get_file","title":"Get file","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"refused":[],"description_chars":74,"inputSchema":{"type":"object","properties":{"space":{"type":"string","description":"The space: its address, @handle/slug, or its link. (space name)"},"space_id":{"type":"string","description":"`space` by its id, instead of its name. (space id)"},"file":{"type":"string","description":"Its path inside the space: index.html, img/hero.jpg. (text; at most 512 characters)"},"version":{"type":"string","description":"An older version; the current one when left out. (version id)"},"offset":{"type":["integer","string"],"pattern":"^-?[0-9]+$","description":"From this character on, 60,000 at a time, for a file too long to read whole. Any offset given, 0 included, reads a part; left out, the whole file. (64-bit whole number; at least 0)"},"query":{"type":"string","description":"A JSONata expression run over the file on the server; only its result comes back. (text; at most 2,000 characters)"}},"additionalProperties":false,"required":["file"],"allOf":[{"anyOf":[{"required":["space"]},{"required":["space_id"]}]}]},"outputSchema":{"type":"object","properties":{"file":{"type":"object","properties":{"path":{"type":"string"},"content":{"type":"string"},"staged_sha":{"type":"string"},"data":{"type":"string"}}},"version":{"type":"object","properties":{"id":{"type":"string"}}},"next_offset":{"type":"string","pattern":"^-?[0-9]+$"}}}},"cli":{"command":"spacesheep files get","usage":"spacesheep files get <file> (--space <space name> | --space-id <space id>) [flags]","replaces":[{"command":"spacesheep read","when":"2","renamed":["1=space","2=file"],"set":[],"retired":null}],"args":["file"],"flags":[{"flag":"--space","input":"space","type":"space name","required":false,"either":"space","doc":"The space: its address, @handle/slug, or its link."},{"flag":"--space-id","input":"space_id","type":"space id","required":false,"either":"space","doc":"`space` by its id, instead of its name."},{"flag":"--version","input":"version","type":"version id","required":false,"doc":"An older version; the current one when left out."},{"flag":"--offset","input":"offset","type":"64-bit whole number","required":false,"doc":"From this character on, 60,000 at a time, for a file too long to read whole. Any offset given, 0 included, reads a part; left out, the whole file.","limits":["at least 0"]},{"flag":"--query","input":"query","type":"text","required":false,"doc":"A JSONata expression run over the file on the server; only its result comes back.","limits":["at most 2,000 characters"]}]},"account":false,"read_key":true,"errors":["answer_too_large","forbidden","invalid","not_found"],"replaces":[{"tool":"read_space","when":"path","renamed":["uuid=space","path=file"],"set":[],"retired":null}],"renamed":[],"answer_bytes":null,"mask":null,"inputs":[{"name":"space","type":"space name","required":false,"doc":"The space: its address, @handle/slug, or its link.","doc_from":"SpaceRef.name","limits":[],"at":["space"],"ref":"name","either":"space"},{"name":"space_id","type":"space id","required":false,"doc":"`space` by its id, instead of its name.","limits":[],"at":["space"],"ref":"id","either":"space"},{"name":"file","type":"text","required":true,"doc":"Its path inside the space: index.html, img/hero.jpg.","limits":["at most 512 characters"],"at":["file"]},{"name":"version","type":"version id","required":false,"doc":"An older version; the current one when left out.","limits":[],"at":["version"],"ref":"id"},{"name":"offset","type":"64-bit whole number","required":false,"doc":"From this character on, 60,000 at a time, for a file too long to read whole. Any offset given, 0 included, reads a part; left out, the whole file.","limits":["at least 0"],"range":{"min":0},"at":["offset"]},{"name":"query","type":"text","required":false,"doc":"A JSONata expression run over the file on the server; only its result comes back.","limits":["at most 2,000 characters"],"at":["query"]}],"response":"GetFileResponse"}]},{"service":"UploadService","account":false,"doc":"","file":"spacesheep/v1/spaces_service.proto","methods":[{"method":"CreateUpload","service":"UploadService","doc":"Links to upload big files to before you publish: PUT each file, then name it by its staged sha.","verb":"Create","noun":"Upload","http":"POST","path":"/v1/me/uploads","where":"body","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"create_upload","title":"Create upload","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"refused":[],"description_chars":95,"inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"What you're about to publish, for whoever reviews the call. (text; at most 200 characters)"},"space":{"type":"string","description":"The space it updates, when it updates one. (space name)"},"space_id":{"type":"string","description":"`space` by its id, instead of its name. (space id)"},"visibility":{"type":"string","enum":["private","members","signed_in","public"],"description":"Who will open it, for whoever reviews the call; the publish decides. (one of private, members, signed_in, public)"},"files":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Its path inside the space. (text)"},"size":{"type":["integer","string"],"pattern":"^-?[0-9]+$","description":"Its size in bytes. (64-bit whole number)"},"staged_sha":{"type":"string","description":"Its staged sha, when you have one. (text)"}},"required":["path"],"additionalProperties":false},"description":"For a big site: every file you're about to upload, so the answer can refuse it now, not after the upload. (list of planned files)"}},"additionalProperties":false,"required":[]},"outputSchema":{"type":"object","properties":{"upload":{"type":"object","properties":{"id":{"type":"string"},"upload_url":{"type":"string"},"browser_upload_url":{"type":"string"},"expires_at":{"type":"string","format":"date-time"}}},"preflight":{"type":"array","items":{"type":"string"}},"already_staged":{"type":"array","items":{"type":"string"}}}}},"cli":{"command":"spacesheep uploads create","usage":"spacesheep uploads create [flags]","replaces":[],"args":[],"flags":[{"flag":"--title","input":"title","type":"text","required":false,"doc":"What you're about to publish, for whoever reviews the call.","limits":["at most 200 characters"]},{"flag":"--space","input":"space","type":"space name","required":false,"doc":"The space it updates, when it updates one."},{"flag":"--space-id","input":"space_id","type":"space id","required":false,"doc":"`space` by its id, instead of its name."},{"flag":"--visibility","input":"visibility","type":"one of private, members, signed_in, public","required":false,"doc":"Who will open it, for whoever reviews the call; the publish decides."},{"flag":"--files","input":"files","type":"list of planned files","required":false,"json":true,"doc":"For a big site: every file you're about to upload, so the answer can refuse it now, not after the upload.","fields":[{"name":"path","type":"text","required":true,"doc":"Its path inside the space."},{"name":"size","type":"64-bit whole number","required":false,"doc":"Its size in bytes."},{"name":"staged_sha","type":"text","required":false,"doc":"Its staged sha, when you have one."}]}]},"account":false,"read_key":false,"errors":["forbidden","invalid","read_only_grant"],"replaces":[{"tool":"stage_begin","when":null,"renamed":[],"set":[],"retired":null}],"renamed":[],"answer_bytes":null,"mask":null,"inputs":[{"name":"title","type":"text","required":false,"doc":"What you're about to publish, for whoever reviews the call.","limits":["at most 200 characters"],"at":["title"]},{"name":"space","type":"space name","required":false,"doc":"The space it updates, when it updates one.","limits":[],"at":["space"],"ref":"name"},{"name":"space_id","type":"space id","required":false,"doc":"`space` by its id, instead of its name.","limits":[],"at":["space"],"ref":"id"},{"name":"visibility","type":"one of private, members, signed_in, public","required":false,"doc":"Who will open it, for whoever reviews the call; the publish decides.","enum":"Visibility","limits":[],"at":["visibility"]},{"name":"files","type":"list of planned files","required":false,"doc":"For a big site: every file you're about to upload, so the answer can refuse it now, not after the upload.","json":true,"fields":[{"name":"path","type":"text","required":true,"doc":"Its path inside the space.","limits":[],"at":["path"]},{"name":"size","type":"64-bit whole number","required":false,"doc":"Its size in bytes.","limits":[],"at":["size"]},{"name":"staged_sha","type":"text","required":false,"doc":"Its staged sha, when you have one.","limits":[],"at":["staged_sha"]}],"limits":[],"at":["files"]}],"response":"CreateUploadResponse"}]},{"service":"CommentService","account":false,"doc":"","file":"spacesheep/v1/spaces_service.proto","methods":[{"method":"ListComments","service":"CommentService","doc":"A space's comments, in the order they sit in the space, with their threads.","verb":"List","noun":"Comment","http":"GET","path":"/v1/spaces/{space.id}/comments","where":"query","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"list_comments","title":"List comments","annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"refused":[],"description_chars":75,"inputSchema":{"type":"object","properties":{"space":{"type":"string","description":"The space: its address, @handle/slug, or its link. (space name)"},"space_id":{"type":"string","description":"`space` by its id, instead of its name. (space id)"},"after":{"type":"string","description":"Where to start: the last answer's `next`. From the start when left out. (text)"},"limit":{"type":"integer","minimum":1,"maximum":200,"description":"How many at most; 50 when left out, for every list. (integer; 1 to 200)"}},"additionalProperties":false,"required":[],"allOf":[{"anyOf":[{"required":["space"]},{"required":["space_id"]}]}]},"outputSchema":{"type":"object","properties":{"comments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"author":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"block":{"type":"string"},"quote":{"type":"string"},"reply_to":{"type":"object","properties":{"id":{"type":"string"}}},"resolved":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"}}}},"page":{"type":"object","properties":{"next":{"type":"string"}}}}}},"cli":{"command":"spacesheep comments list","usage":"spacesheep comments list (--space <space name> | --space-id <space id>) [flags]","replaces":[],"args":[],"flags":[{"flag":"--space","input":"space","type":"space name","required":false,"either":"space","doc":"The space: its address, @handle/slug, or its link."},{"flag":"--space-id","input":"space_id","type":"space id","required":false,"either":"space","doc":"`space` by its id, instead of its name."},{"flag":"--after","input":"after","type":"text","required":false,"doc":"Where to start: the last answer's `next`. From the start when left out."},{"flag":"--limit","input":"limit","type":"integer","required":false,"doc":"How many at most; 50 when left out, for every list.","limits":["1 to 200"]}]},"account":false,"read_key":true,"errors":["forbidden","invalid","not_found"],"replaces":[],"renamed":["uuid=space"],"answer_bytes":null,"mask":null,"inputs":[{"name":"space","type":"space name","required":false,"doc":"The space: its address, @handle/slug, or its link.","doc_from":"SpaceRef.name","limits":[],"at":["space"],"ref":"name","either":"space"},{"name":"space_id","type":"space id","required":false,"doc":"`space` by its id, instead of its name.","limits":[],"at":["space"],"ref":"id","either":"space"},{"name":"after","type":"text","required":false,"doc":"Where to start: the last answer's `next`. From the start when left out.","limits":[],"at":["page","after"]},{"name":"limit","type":"integer","required":false,"doc":"How many at most; 50 when left out, for every list.","limits":["1 to 200"],"range":{"min":1,"max":200},"at":["page","limit"]}],"response":"ListCommentsResponse"},{"method":"CreateComment","service":"CommentService","doc":"Comment on a space: on the whole space, or pinned to a block. Write @spacesheep to ask its agent.","verb":"Create","noun":"Comment","http":"POST","path":"/v1/spaces/{space.id}/comments","where":"body","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"create_comment","title":"Create comment","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"refused":[],"description_chars":97,"inputSchema":{"type":"object","properties":{"space":{"type":"string","description":"The space: its address, @handle/slug, or its link. (space name)"},"space_id":{"type":"string","description":"`space` by its id, instead of its name. (space id)"},"body":{"type":"string","description":"What it says. Set when it's posted; only its author changes it, in the viewer. (Markdown; at most 10,000 characters)"},"block":{"type":"string","description":"The block it's pinned to (its data-ss-id); empty for the whole space. (text)"},"quote":{"type":"string","description":"The words it quotes. (text; at most 2,000 characters)"},"reply_to":{"type":"string","description":"The comment it answers, in a thread. (comment id)"},"resolved":{"type":"boolean","description":"Its thread is resolved: true resolves a top-level comment's thread, false reopens it. (true or false)"}},"additionalProperties":false,"required":[],"allOf":[{"anyOf":[{"required":["space"]},{"required":["space_id"]}]}]},"outputSchema":{"type":"object","properties":{"comment":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"author":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"block":{"type":"string"},"quote":{"type":"string"},"reply_to":{"type":"object","properties":{"id":{"type":"string"}}},"resolved":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"}}}}}},"cli":{"command":"spacesheep comments create","usage":"spacesheep comments create <body> (--space <space name> | --space-id <space id>) [flags]","replaces":[],"args":["body"],"flags":[{"flag":"--space","input":"space","type":"space name","required":false,"either":"space","doc":"The space: its address, @handle/slug, or its link."},{"flag":"--space-id","input":"space_id","type":"space id","required":false,"either":"space","doc":"`space` by its id, instead of its name."},{"flag":"--block","input":"block","type":"text","required":false,"doc":"The block it's pinned to (its data-ss-id); empty for the whole space."},{"flag":"--quote","input":"quote","type":"text","required":false,"doc":"The words it quotes.","limits":["at most 2,000 characters"]},{"flag":"--reply-to","input":"reply_to","type":"comment id","required":false,"doc":"The comment it answers, in a thread."},{"flag":"--resolved","input":"resolved","type":"true or false","required":false,"doc":"Its thread is resolved: true resolves a top-level comment's thread, false reopens it."}]},"account":false,"read_key":false,"errors":["forbidden","invalid","not_found","rate_limited","read_only_grant"],"replaces":[{"tool":"add_comment","when":null,"renamed":["uuid=space","parent_id=reply_to","anchor_id=block","anchor_text=quote"],"set":[],"retired":null}],"renamed":[],"answer_bytes":null,"mask":null,"inputs":[{"name":"space","type":"space name","required":false,"doc":"The space: its address, @handle/slug, or its link.","doc_from":"SpaceRef.name","limits":[],"at":["space"],"ref":"name","either":"space"},{"name":"space_id","type":"space id","required":false,"doc":"`space` by its id, instead of its name.","limits":[],"at":["space"],"ref":"id","either":"space"},{"name":"body","type":"Markdown","required":false,"doc":"What it says. Set when it's posted; only its author changes it, in the viewer.","limits":["at most 10,000 characters"],"at":["comment","body"]},{"name":"block","type":"text","required":false,"doc":"The block it's pinned to (its data-ss-id); empty for the whole space.","limits":[],"at":["comment","block"]},{"name":"quote","type":"text","required":false,"doc":"The words it quotes.","limits":["at most 2,000 characters"],"at":["comment","quote"]},{"name":"reply_to","type":"comment id","required":false,"doc":"The comment it answers, in a thread.","limits":[],"at":["comment","reply_to"],"ref":"id"},{"name":"resolved","type":"true or false","required":false,"doc":"Its thread is resolved: true resolves a top-level comment's thread, false reopens it.","limits":[],"at":["comment","resolved"]}],"response":"CreateCommentResponse"},{"method":"UpdateComment","service":"CommentService","doc":"Resolve a comment's thread, or reopen it. You say the state you want, so sending it twice changes nothing.","verb":"Update","noun":"Comment","http":"PATCH","path":"/v1/spaces/{space.id}/comments/{comment.id}","where":"body","callers":["person","key","connector","agent","box"],"machine_tokens":[],"mcp":{"name":"update_comment","title":"Update comment","annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"refused":[],"description_chars":106,"inputSchema":{"type":"object","properties":{"comment":{"type":"string","description":"The comment to change. (comment id)"},"space":{"type":"string","description":"The space: its address, @handle/slug, or its link. (space name)"},"space_id":{"type":"string","description":"`space` by its id, instead of its name. (space id)"},"resolved":{"type":"boolean","description":"Its thread is resolved: true resolves a top-level comment's thread, false reopens it. (true or false)"}},"additionalProperties":false,"required":["comment"],"allOf":[{"anyOf":[{"required":["space"]},{"required":["space_id"]}]}]},"outputSchema":{"type":"object","properties":{"comment":{"type":"object","properties":{"id":{"type":"string"},"body":{"type":"string"},"author":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"block":{"type":"string"},"quote":{"type":"string"},"reply_to":{"type":"object","properties":{"id":{"type":"string"}}},"resolved":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"}}}}}},"cli":{"command":"spacesheep comments update","usage":"spacesheep comments update <comment> (--space <space name> | --space-id <space id>) [flags]","replaces":[],"args":["comment"],"flags":[{"flag":"--space","input":"space","type":"space name","required":false,"either":"space","doc":"The space: its address, @handle/slug, or its link."},{"flag":"--space-id","input":"space_id","type":"space id","required":false,"either":"space","doc":"`space` by its id, instead of its name."},{"flag":"--resolved","input":"resolved","type":"true or false","required":false,"doc":"Its thread is resolved: true resolves a top-level comment's thread, false reopens it."}]},"account":false,"read_key":false,"errors":["forbidden","invalid","not_found","read_only_grant"],"replaces":[{"tool":"resolve_comment","when":null,"renamed":["uuid=space","comment_id=comment"],"set":["resolved=@flip"],"retired":null}],"renamed":[],"answer_bytes":null,"mask":{"field":"comment","paths":["resolved"]},"inputs":[{"name":"comment","type":"comment id","ref":"id","required":true,"doc":"The comment to change.","limits":[],"at":["comment","id"],"selects":true},{"name":"space","type":"space name","required":false,"doc":"The space: its address, @handle/slug, or its link.","doc_from":"SpaceRef.name","limits":[],"at":["space"],"ref":"name","either":"space"},{"name":"space_id","type":"space id","required":false,"doc":"`space` by its id, instead of its name.","limits":[],"at":["space"],"ref":"id","either":"space"},{"name":"resolved","type":"true or false","required":false,"doc":"Its thread is resolved: true resolves a top-level comment's thread, false reopens it.","limits":[],"at":["comment","resolved"]}],"response":"UpdateCommentResponse"}]}],"forwards":{"create_reaction":[{"to":"create_reaction","when":null,"renamed":[],"set":[],"kept":true}],"react_to_comment":[{"to":"create_reaction","when":null,"renamed":["uuid=space","comment_id=comment"],"set":[],"retired":null}],"list_discussion_posts":[{"to":"list_discussion_posts","when":null,"renamed":[],"set":[],"kept":true}],"discussion_read":[{"to":"list_discussion_posts","when":null,"renamed":["uuid=space","after=wait_after"],"set":[],"retired":null}],"create_discussion_post":[{"to":"create_discussion_post","when":null,"renamed":[],"set":[],"kept":true}],"discussion_post":[{"to":"create_discussion_post","when":null,"renamed":["uuid=space","session=client"],"set":[],"retired":null}],"update_discussion_topic":[{"to":"update_discussion_topic","when":null,"renamed":[],"set":[],"kept":true}],"discussion_resolve":[{"to":"update_discussion_topic","when":"reopen=true","renamed":["uuid=space","num=discussion_topic","outcome="],"set":["resolved=false"],"retired":null},{"to":"update_discussion_topic","when":null,"renamed":["uuid=space","num=discussion_topic","reopen="],"set":["resolved=true"],"retired":null}],"list_groups":[{"to":"list_groups","when":null,"renamed":[],"set":[],"kept":true}],"create_group":[{"to":"create_group","when":null,"renamed":[],"set":[],"kept":true}],"update_group":[{"to":"create_group","when":"action=create","renamed":["name=title","emails=add"],"set":[],"retired":null},{"to":"update_group","when":"action=add","renamed":["emails=add"],"set":[],"retired":null},{"to":"update_group","when":"action=remove","renamed":["emails=remove"],"set":[],"retired":null},{"to":"update_group","when":"action=share","renamed":["space=share"],"set":[],"retired":null},{"to":"update_group","when":"action=unshare","renamed":["space=unshare"],"set":[],"retired":null},{"to":"update_group","when":null,"renamed":["action=","name=title"],"set":[],"kept":true}],"delete_group":[{"to":"delete_group","when":null,"renamed":[],"set":[],"kept":true}],"list_teams":[{"to":"list_teams","when":null,"renamed":[],"set":[],"kept":true}],"set_team_domains":[{"to":"update_team","when":"domains","renamed":[],"set":[],"retired":null},{"to":"list_teams","when":null,"renamed":["team="],"set":[],"retired":null}],"update_team":[{"to":"update_team","when":null,"renamed":[],"set":[],"kept":true}],"manage_team":[{"to":"update_team","when":"action=make_default","renamed":[],"set":["your_default=true","team=@default"],"retired":null},{"to":"create_team_member","when":"action=add","renamed":["who=member"],"set":["team=@default"],"retired":null},{"to":"update_team_member","when":"action=set_role","renamed":["who=member"],"set":["team=@default"],"retired":null},{"to":"delete_team_member","when":"action=remove","renamed":["who=member"],"set":["team=@default"],"retired":null},{"to":"delete_team_member","when":"action=leave","renamed":[],"set":["member=@me","team=@default"],"retired":null},{"to":"create_team","when":"action=create","renamed":["name=title"],"set":[],"retired":null},{"to":"update_team","when":null,"renamed":["action=","name=title"],"set":["team=@default"],"retired":null}],"create_team_member":[{"to":"create_team_member","when":null,"renamed":[],"set":[],"kept":true}],"invite_to_org":[{"to":"create_team_member","when":null,"renamed":["org=team","username=member","email=member_id","role="],"set":[],"retired":null}],"update_team_member":[{"to":"update_team_member","when":null,"renamed":[],"set":[],"kept":true}],"delete_team_member":[{"to":"delete_team_member","when":null,"renamed":[],"set":[],"kept":true}],"create_team":[{"to":"create_team","when":null,"renamed":[],"set":[],"kept":true}],"create_org":[{"to":"create_team","when":null,"renamed":["name=title"],"set":[],"retired":null}],"list_spaces":[{"to":"list_spaces","when":null,"renamed":["offset=after"],"set":[],"kept":true}],"spacesheep list":[{"to":"spacesheep spaces list","when":null,"renamed":[],"set":[],"retired":null}],"get_space":[{"to":"get_space","when":null,"renamed":["uuid=space"],"set":[],"kept":true}],"search_spaces":[{"to":"search_spaces","when":null,"renamed":[],"set":[],"kept":true}],"create_space":[{"to":"create_space","when":null,"renamed":[],"set":[],"kept":true}],"deploy":[{"to":"create_version","when":"uuid","renamed":["uuid=space","base_sha=parent","version_name=label","session=client"],"set":[],"retired":null},{"to":"create_space","when":null,"renamed":["version_name=label","access.visibility=visibility","access.emails=people","session=client"],"set":[],"retired":null}],"spacesheep deploy":[{"to":"spacesheep versions create","when":"space","renamed":["message=label"],"set":[],"retired":null},{"to":"spacesheep spaces create","when":null,"renamed":["message=label"],"set":[],"retired":null}],"update_space":[{"to":"update_space","when":null,"renamed":[],"set":[],"kept":true}],"share_space":[{"to":"update_space","when":"visibility","renamed":["uuid=space"],"set":[],"retired":null},{"to":"update_space","when":"team","renamed":["uuid=space"],"set":[],"retired":null},{"to":"share_space","when":null,"renamed":["uuid=space","emails=people"],"set":[],"kept":true}],"spacesheep share":[{"to":"spacesheep spaces update","when":"visibility","renamed":["1=space"],"set":[],"retired":null},{"to":"spacesheep spaces share","when":null,"renamed":["1=space","email=people"],"set":[],"retired":null}],"delete_space":[{"to":"delete_space","when":null,"renamed":["uuid=space"],"set":[],"kept":true}],"spacesheep delete":[{"to":"spacesheep spaces delete","when":null,"renamed":["1=space","yes="],"set":[],"retired":null}],"list_versions":[{"to":"list_versions","when":null,"renamed":["uuid=space"],"set":[],"kept":true}],"spacesheep versions":[{"to":"spacesheep versions list","when":null,"renamed":["1=space"],"set":[],"retired":null}],"create_version":[{"to":"create_version","when":null,"renamed":[],"set":[],"kept":true}],"edit":[{"to":"create_version","when":null,"renamed":["uuid=space","edits=replacements","base_sha=parent","version_name=label","session=client"],"set":[],"retired":null}],"restore_version":[{"to":"restore_version","when":null,"renamed":[],"set":[],"kept":true}],"list_files":[{"to":"list_files","when":null,"renamed":[],"set":[],"kept":true}],"read_space":[{"to":"get_file","when":"path","renamed":["uuid=space","path=file"],"set":[],"retired":null},{"to":"list_files","when":null,"renamed":["uuid=space"],"set":[],"retired":null}],"spacesheep read":[{"to":"spacesheep files get","when":"2","renamed":["1=space","2=file"],"set":[],"retired":null},{"to":"spacesheep files list","when":null,"renamed":["1=space"],"set":[],"retired":null}],"get_file":[{"to":"get_file","when":null,"renamed":[],"set":[],"kept":true}],"create_upload":[{"to":"create_upload","when":null,"renamed":[],"set":[],"kept":true}],"stage_begin":[{"to":"create_upload","when":null,"renamed":[],"set":[],"retired":null}],"list_comments":[{"to":"list_comments","when":null,"renamed":["uuid=space"],"set":[],"kept":true}],"create_comment":[{"to":"create_comment","when":null,"renamed":[],"set":[],"kept":true}],"add_comment":[{"to":"create_comment","when":null,"renamed":["uuid=space","parent_id=reply_to","anchor_id=block","anchor_text=quote"],"set":[],"retired":null}],"update_comment":[{"to":"update_comment","when":null,"renamed":[],"set":[],"kept":true}],"resolve_comment":[{"to":"update_comment","when":null,"renamed":["uuid=space","comment_id=comment"],"set":["resolved=@flip"],"retired":null}]},"common_errors":["insufficient_scope","internal","payload_too_large","unauthenticated"],"error_meanings":{"invalid":"An input broke a rule (`violations` names it when it can). Fix it and send again.","unauthenticated":"No credential, or one that expired or was revoked. Sign in, or send a valid key.","forbidden":"This account, or this kind of connection, may not do this here. Resending won't help.","read_only_grant":"This read-only connection (a read key, or a spacesheep:read grant) can't make this call. Use a full key.","insufficient_scope":"This key opens only streams or session hooks, never calls. Use a full key.","content_blocked":"Screening refused the content (credentials sent to another site). Change it, or ask support to review it.","not_found":"Nothing by that name or id here: no such space, version, file, comment, post, list, team or member.","conflict":"The space has a newer version than your save builds on. Read it again, keep both changes, send it as parent.","turn_held":"Someone's Shepherd is changing this space now. Wait for that turn to end, read it again, then resend.","payload_too_large":"Too big: over the request's size cap, or over the plan's limits on files and bytes.","signed_space":"It has a signed version or an open signature request, so it can't be deleted. Archive it instead.","wrong_kind":"Not on this kind of space: a flock isn't archived, for one.","answer_too_large":"The answer is too big for this call (over 1 MB). Open the space's address instead.","rate_limited":"Too many calls too fast. Wait as long as Retry-After or the message says, then send again.","quota_exceeded":"A limit is reached: the day's publish budget, your share lists, a team's seats or a discussion's posts.","suspended":"The space was taken down, so it can't be changed. The message says where to appeal.","publish_failed":"The publish didn't finish, and nothing was saved. Try again.","internal":"Something failed on spacesheep's side; the call may not have finished. Read before you try again.","unimplemented":"The server knows this call but doesn't run it yet.","unavailable":"A service behind the call is down or unreachable. Try again soon."}}