このMCPでできること
Provides shared team memory, collections, wikis, artifacts, comments, approvals, review workflows, presence, and controlled sharing.
ツール
入力スキーマ
{'type': 'object', 'required': ['approved'], 'properties': {'note': {'type': 'string', 'description': 'note explains the decision; required when approved=false (a rejection).'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'approved': {'type': 'boolean', 'description': 'approved=false is a rejection and requires a note.'}, 'artifactId': {'type': 'string', 'description': 'artifact_id approves/rejects a single artifact (from get_artifact); use\n instead of collection_id.'}, 'collectionId': {'type': 'string', 'description': 'Exactly one of collection_id / artifact_id.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'pinnedVersion': {'type': 'integer'}, 'pinnedRevision': {'type': 'integer'}}}
入力スキーマ
{'type': 'object', 'required': ['action'], 'properties': {'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in.'}, 'action': {'type': 'string', 'description': "action is the action's id."}, 'assignee': {'type': 'string', 'description': 'assignee names who owes it: "me" to take it, "owner" to hand it to the\n person you act for, one of your agents, or a person\'s user id. Leave it\n EMPTY to put it back on the unassigned pile.'}}}
出力スキーマ
{'type': 'object', 'properties': {}}
入力スキーマ
{'type': 'object', 'properties': {'peek': {'type': 'boolean', 'description': 'peek reads the catchup delta without advancing the cursor. Default false:\n brief is the session opener, so it consumes the delta like catchup does.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to brief (an id or name from\n list_spaces). Omit it when you belong to a single space.'}, 'project': {'type': 'string', 'description': 'project optionally scopes the memory index to one project (a project-kind\n tag name, or the value from resolve_project); empty briefs the whole\n workspace.'}}}
出力スキーマ
{'type': 'object', 'properties': {'guide': {'type': 'string', 'description': 'guide is the workspace operating manual - the house rules for working here.'}, 'catchup': {'type': 'array', 'items': {'type': 'string'}, 'description': "catchup lists, compactly, what changed since this instance last looked\n (publishes, versions, feedback, promotions) - excluding your own instance's\n writes. catchup_more counts entries beyond this list; first_look is true for\n a brand-new instance with no delta window yet."}, 'project': {'type': 'string', 'description': 'project is the scope the index reflects (empty = the whole workspace).'}, 'firstLook': {'type': 'boolean'}, 'startHere': {'type': 'string', 'description': "start_here is set ONLY when this workspace holds no memories at all, and it\n carries what to do about that (#153). An empty workspace is the one state\n where every other field is blank and the tools all look broken: recall\n returns nothing, so the assistant reasonably concludes Kythene has nothing\n to offer and stops calling it - the workspace then stays empty forever.\n This is the instruction that breaks that loop, and it is delivered HERE\n because brief is the one call every client is told to make first, whether\n it loaded a skill, a plugin or nothing at all. It disappears by itself the\n moment the workspace has content, so it can never become stale advice.\n\n Do not confuse it with first_look, which is about this INSTANCE's cursor: a\n brand-new instance connecting to a mature workspace sets first_look and\n must NOT be given onboarding."}, 'truncated': {'type': 'boolean', 'description': 'truncated is true when any list here was capped to keep the brief small, so\n a reader knows it has not seen everything (rather than mistaking the cap for\n the whole - the manufactured-absence trap).'}, 'inboxCount': {'type': 'integer', 'description': 'inbox_count is how many items await you across your workspaces; headlines is\n a short preview of the most recent.'}, 'catchupMore': {'type': 'integer'}, 'memoryIndex': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'hook': {'type': 'string', 'description': 'hook is a one-line snippet - enough to know whether the memory matters,\n NOT the body. Fetch the full memory by id (recall) when it does.'}, 'type': {'type': 'string'}, 'title': {'type': 'string', 'description': 'title is what the memory is about.'}, 'project': {'type': 'string'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}}}, 'description': "memory_index is the project's memory as titles + one-line hooks + ids, NOT\n bodies - enough to know what exists and whether it matters, then fetch by id."}, 'memoryTotal': {'type': 'integer', 'description': 'memory_total is how many memories are in scope; the index may be capped to\n keep the brief compact, so total greater than len(memory_index) means there\n is more - recall to page it.'}, 'workspaceId': {'type': 'string'}, 'workspaceName': {'type': 'string'}, 'inboxHeadlines': {'type': 'array', 'items': {'type': 'string'}}}}
入力スキーマ
{'type': 'object', 'properties': {'peek': {'type': 'boolean', 'description': 'peek reads the delta WITHOUT advancing the cursor (a non-consuming check).\n Default (false) is the normal catch-up: reading advances the cursor.'}, 'limit': {'type': 'integer', 'description': 'limit caps the digest (default 50). The overflow is reported as `more`.'}}}
出力スキーマ
{'type': 'object', 'properties': {'more': {'type': 'integer', 'description': 'more is the count of entries beyond `limit` ("and N more").'}, 'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'at': {'type': 'string', 'format': 'date-time'}, 'url': {'type': 'string'}, 'kind': {'type': 'string', 'description': 'kind is the event: "collection:publish" | "collection:share".'}, 'space': {'type': 'string', 'description': 'space is the space it happened in, by name.'}, 'title': {'type': 'string', 'description': 'title is what was published or shared.'}, 'collection': {'type': 'string'}}}}, 'actions': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'body': {'type': 'string', 'description': 'body is what is being asked for.'}, 'mine': {'type': 'boolean', 'description': "mine is true when this action is on the CALLING identity's own plate."}, 'page': {'type': 'string', 'description': 'page is the wiki page it concerns, if any.'}, 'state': {'type': 'string', 'description': 'state is pending | in_progress | resolved | closed.'}, 'memory': {'type': 'string', 'description': 'memory is the memory it concerns, if any.'}, 'project': {'type': 'string', 'description': 'project is the project tag it is scoped to, if any.'}, 'artifact': {'type': 'string', 'description': 'artifact is the artifact it concerns, if any.'}, 'assignee': {'type': 'string', 'description': 'assignee is who owes it, and is empty when nobody owns it yet.'}, 'createdAt': {'type': 'string', 'format': 'date-time', 'description': 'created_at is when it was raised.'}, 'requester': {'type': 'string', 'description': 'requester and assignee are display labels for the two parties. Either can\n be a person or an agent; assignee is empty when nobody owns it yet.\n requester is who raised it.'}, 'updatedAt': {'type': 'string', 'format': 'date-time', 'description': 'updated_at is when it last moved.'}, 'collection': {'type': 'string', 'description': 'collection is the collection it concerns, if any. Like every link an action\n holds, it goes quiet rather than dangling if the target is deleted.'}, 'resolution': {'type': 'string', 'description': 'resolution is why it left the queue - done | wont_do | cancelled - and is\n empty while it is still open.'}, 'parentAction': {'type': 'string', 'description': 'parent_action is the action this one follows on from, when it does.'}, 'assigneeIsAgent': {'type': 'boolean', 'description': 'assignee_is_agent says which kind of party owes it, so a caller can tell\n "waiting on a colleague" from "waiting on a machine".'}}}, 'description': 'actions is work put on YOUR plate since you last looked. It is an\n announcement, not the record: an action announced here keeps being owed\n whether or not you read this, so call list_actions for what you still owe\n rather than treating this list as the queue.'}, 'firstLook': {'type': 'boolean', 'description': 'first_look is true when this agent had no cursor yet: the watermark is set\n to now and the digest is empty (a brand-new agent has no "while you were\n away" window).'}}}
入力スキーマ
{'type': 'object', 'required': ['body'], 'properties': {'body': {'type': 'string', 'description': 'body is the comment text (markdown welcome).'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'artifactId': {'type': 'string', 'description': 'artifact_id comments on a single artifact (from get_artifact); use instead\n of collection_id.'}, 'collectionId': {'type': 'string', 'description': 'Exactly one of collection_id / artifact_id.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'pinnedVersion': {'type': 'integer'}, 'pinnedRevision': {'type': 'integer'}}}
入力スキーマ
{'type': 'object', 'required': ['artifacts'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'tags to attach (created in the space if they do not exist yet).'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'title': {'type': 'string', 'description': "title names the collection; defaults to the first artifact's name."}, 'producer': {'type': 'string', 'description': 'producer names the publishing instance (e.g. "claude-on-heavy") for\n provenance; defaults to the authenticated user\'s name.'}, 'artifacts': {'type': 'array', 'items': {'type': 'object', 'properties': {'mime': {'type': 'string', 'description': 'mime is the content type; defaults to application/octet-stream.'}, 'name': {'type': 'string', 'description': 'name is the artifact\'s filename-like name, e.g. "bench-results.json".'}, 'note': {'type': 'string', 'description': 'note is an optional version note.'}, 'content': {'type': 'string', 'description': "content carries the artifact bytes (32 MiB max per artifact over the API\n and the CLI). An MCP request is capped far lower - the tool description\n carries that endpoint's real ceiling.", 'contentEncoding': 'base64'}}}, 'description': 'artifacts is the new content to publish.'}, 'idempotencyKey': {'type': 'string', 'description': 'idempotency_key makes a publish safe to retry: if a publish times out on the\n client (a large body embeds synchronously and can outlast the client timeout,\n even though the write has already committed) but the same key is sent again,\n the server returns the collection already created for that key instead of\n creating a duplicate. Optional; a client should generate one per publish\n attempt and reuse it across retries of that attempt.'}, 'reviewRequested': {'type': 'boolean', 'description': 'review_requested opts this collection into the approval flow, so the space\n sees approve/reject controls; otherwise it is shared content with comments.'}, 'existingArtifactIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'existing_artifact_ids references already-published artifacts into this\n collection (curation/re-bundling).'}}}
出力スキーマ
{'type': 'object', 'properties': {'collection': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string', 'description': 'url is the canonical link to this collection (.../c/<id>) - the thing to hand\n to a person or paste into a message. It redirects through sign-in to the\n right space, so it works for anyone with access, from any device.'}, 'tags': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'isInternal': {'type': 'boolean'}, 'hasPassword': {'type': 'boolean'}}}}, 'title': {'type': 'string', 'description': 'title is what the collection is called.'}, 'revision': {'type': 'integer'}, 'artifacts': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}}}}}}}}
入力スキーマ
{'type': 'object', 'required': ['wiki', 'title'], 'properties': {'body': {'type': 'string', 'description': "body is the page's markdown. Omitted, it starts as the title as a heading."}, 'slug': {'type': 'string', 'description': 'slug is the page\'s own path segment; derived from the title when omitted.\n It must be unique among its SIBLINGS, not across the wiki - two branches can\n each hold a "setup".'}, 'wiki': {'type': 'string', 'description': 'wiki is the wiki to add to - its id or slug.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'title': {'type': 'string', 'description': "title is the page's heading, and the name it is listed under."}, 'parent': {'type': 'string', 'description': "parent is the page to create under - an id or a path. Omit it for a page\n directly under the wiki's root."}}}
出力スキーマ
{'type': 'object', 'properties': {'url': {'type': 'string'}, 'page': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'path': {'type': 'string', 'description': 'path is the page\'s full path within its wiki, e.g. "handbook/day-one".'}, 'depth': {'type': 'integer'}, 'state': {'type': 'string', 'description': 'state is one of: draft, awaiting_approval, published,\n published_draft_changes, archived, deletion_scheduled.'}, 'title': {'type': 'string', 'description': "title is the page's heading."}, 'parent': {'type': 'string', 'description': "parent is the id of the page above it; empty for the wiki's root."}, 'restricted': {'type': 'boolean', 'description': 'restricted is true when this page sits in a subtree that is fenced off to\n named people - you can see it, so you are one of them.'}}}, 'baseRevision': {'type': 'integer', 'description': 'base_revision is what to pass to update_page for the first edit.'}}}
入力スキーマ
{'type': 'object', 'required': ['tag', 'label'], 'properties': {'pin': {'type': 'string', 'description': 'pin optionally sets a second-factor PIN on the code (#364): the link admits\n only after the holder also enters this PIN, sent by a different channel. 4-8\n digits, not an obvious sequence. Empty (the default) means no PIN. Never\n returned after creation. It can be added or changed later with set_share_pin.'}, 'tag': {'type': 'string', 'description': "tag is the tag (a label or a project) to mint the code for - an id, or a\n name in the acting space. A share code admits its holder to that tag's\n collections; internal tags cannot have share codes."}, 'label': {'type': 'string', 'description': "label records who the code is for (required) - it identifies the holder's\n comments and approvals."}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'expiresDays': {'type': 'integer', 'description': 'expires_days time-boxes the code: after this many days it stops admitting,\n so a leaked link does not stay live until someone remembers to revoke it.\n 0 (the default) means it never expires.'}}}
出力スキーマ
{'type': 'object', 'properties': {'shareCode': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string', 'description': "url is the anonymous view page for the code's tag, where the holder enters\n the code. Absolute when the app base url is configured, else a /v path."}, 'code': {'type': 'string', 'description': 'code is the secret the holder enters at `url` to be admitted.'}, 'label': {'type': 'string', 'description': "label records who the code is for - it identifies the holder's feedback."}, 'tagId': {'type': 'string'}, 'hasPin': {'type': 'boolean', 'description': 'has_pin is true when the code carries a second-factor PIN (the PIN itself is\n never returned).'}, 'locked': {'type': 'boolean', 'description': 'locked is true when the code is locked out after too many wrong PINs; it\n admits nobody until unlocked.'}, 'expired': {'type': 'boolean', 'description': 'expired is true when expires_at has passed (the code no longer admits).'}, 'revoked': {'type': 'boolean', 'description': 'revoked is true when the code has been revoked (no longer admits).'}, 'tagName': {'type': 'string'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'expiresAt': {'type': 'string', 'format': 'date-time', 'description': 'expires_at is when the code stops admitting; unset means it never expires.'}}}}}
入力スキーマ
{'type': 'object', 'required': ['filename'], 'properties': {'mime': {'type': 'string', 'description': 'mime is the content type, e.g. "text/markdown". Guessed from the filename\n when you leave it out.'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'tags are the projects and labels to file it under, exactly as publish takes\n them.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name from\n list_spaces). Omit it when you belong to a single space.'}, 'title': {'type': 'string', 'description': "title is the collection's title. Defaults to the filename."}, 'filename': {'type': 'string', 'description': 'filename is what the file will be called in Kythene, e.g. "handover.md".'}, 'idempotencyKey': {'type': 'string', 'description': 'idempotency_key makes a retried upload safe: the same key publishes once.'}}}
出力スキーマ
{'type': 'object', 'properties': {}}
入力スキーマ
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'name is what people call it.'}, 'slug': {'type': 'string', 'description': 'slug is its segment in a page URL; derived from the name when omitted.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your workspaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single workspace.'}, 'rootBody': {'type': 'string', 'description': "root_body is the markdown of the wiki's root page. It starts as a DRAFT, so\n publish it before anyone can read it."}, 'description': {'type': 'string', 'description': 'description is one line on what the wiki holds. It is what someone reads in\n list_wikis when they are choosing between several.'}, 'approvalRequired': {'type': 'boolean', 'description': 'approval_required makes every publish need an approval first.'}}}
出力スキーマ
{'type': 'object', 'properties': {'url': {'type': 'string', 'description': "url is the wiki's canonical link - hand THAT to a person, not the id."}, 'wiki': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'slug': {'type': 'string', 'description': "slug is the wiki's segment in a page URL."}, 'pages': {'type': 'integer', 'description': 'pages is how many pages you can see in it, and published is how many of\n those readers can see - together, whether the wiki is alive.'}, 'rootPage': {'type': 'string', 'description': "root_page is the id of the wiki's root page."}, 'published': {'type': 'integer'}, 'description': {'type': 'string', 'description': 'description is one line on what the wiki holds.'}, 'lastPublished': {'type': 'string', 'description': 'last_published is when anything in it last went live (YYYY-MM-DD), empty if\n nothing has.'}, 'approvalRequired': {'type': 'boolean', 'description': 'approval_required is true when a page in this wiki needs an approval before\n it goes live.'}}}}}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'id is the memory (collection) id to deprecate.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'restore': {'type': 'boolean', 'description': 'restore=true un-deprecates the memory (clears deprecated + replaced_by).\n Default false deprecates it.'}, 'replacedBy': {'type': 'string', 'description': 'replaced_by optionally names the collection id of the replacement memory (a\n citable successor). Ignored when restore=true.'}}}
出力スキーマ
{'type': 'object', 'properties': {}}
入力スキーマ
{'type': 'object', 'required': ['collectionId', 'action'], 'properties': {'note': {'type': 'string', 'description': 'add: optional version note.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'action': {'type': 'string', 'description': 'action is one of: "add" (add files), "reorder" (set the full member order),\n "move" (move a file to another collection).'}, 'artifacts': {'type': 'array', 'items': {'type': 'object', 'properties': {'mime': {'type': 'string', 'description': 'mime is the content type; defaults to application/octet-stream.'}, 'name': {'type': 'string', 'description': 'name is the artifact\'s filename-like name, e.g. "bench-results.json".'}, 'note': {'type': 'string', 'description': 'note is an optional version note.'}, 'content': {'type': 'string', 'description': "content carries the artifact bytes (32 MiB max per artifact over the API\n and the CLI). An MCP request is capped far lower - the tool description\n carries that endpoint's real ceiling.", 'contentEncoding': 'base64'}}}, 'description': 'add: new files to create and append.'}, 'artifactId': {'type': 'string', 'description': 'move: the artifact to move, and the destination collection (same space);\n collection_id is the source.'}, 'artifactIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'reorder: the FULL current member set, every artifact once, in the order you\n want (a partial or unknown-id list is rejected; work from a fresh\n get_collection).'}, 'collectionId': {'type': 'string', 'description': 'collection_id is the collection to edit (for a move, the SOURCE collection).'}, 'toCollectionId': {'type': 'string', 'description': 'to_collection_id is the collection to move the artifact INTO; collection_id\n is the one it leaves. Both must be in the same space.'}, 'existingArtifactIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'add: references to already-published artifacts of the same space to append.'}}}
出力スキーマ
{'type': 'object', 'properties': {'ok': {'type': 'boolean', 'description': 'ok is true when the edit applied.'}, 'revision': {'type': 'integer', 'description': "revision is the collection's revision after add/reorder."}, 'toRevision': {'type': 'integer'}, 'fromRevision': {'type': 'integer', 'description': 'from_revision / to_revision are the source and destination revisions after a\n move.'}, 'shareCodeHolders': {'type': 'array', 'items': {'type': 'string'}, 'description': 'share_code_holders lists share-code labels whose holders can now read a\n newly-added or newly-moved file anonymously (the exposure the edit created).'}}}
入力スキーマ
{'type': 'object', 'required': ['collectionId'], 'properties': {'force': {'type': 'boolean', 'description': 'force ends review even while threads are still open. Default false: the call\n refuses and names the open threads, because minting a clean read is the\n whole point of ending review - the refusal is the useful part.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'collectionId': {'type': 'string', 'description': 'collection_id is the collection to take out of review.'}}}
出力スキーマ
{'type': 'object', 'properties': {}}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'id is the memory (collection) id to forget.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}}}
出力スキーマ
{'type': 'object', 'properties': {}}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': "id is the artifact's id (from a collection's artifact list)."}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'version': {'type': 'integer', 'description': "version selects which version's content to include; 0 = latest."}, 'includeContent': {'type': 'boolean', 'description': 'include_content adds the content bytes of one version to the response.'}}}
出力スキーマ
{'type': 'object', 'properties': {'blocks': {'type': 'array', 'items': {'type': 'object', 'properties': {'kind': {'type': 'string', 'description': 'kind is heading | paragraph | list_item | blockquote | code | table.'}, 'text': {'type': 'string', 'description': "text is the block's normalised content (what to read / quote)."}, 'setBy': {'type': 'string'}, 'anchor': {'type': 'string', 'description': 'anchor is the stable identity - address a block by this in review_block.'}, 'status': {'type': 'string', 'description': 'status is "" when unflagged, else one of: needs_review (look again),\n needs_work (changes required), done (action complete), approved (signed off),\n reject_remove (should be removed). set_by is "human" or "instance" (who\n judged it). changed_since = the block was edited after it was last flagged.'}, 'ordinal': {'type': 'integer'}, 'rewritten': {'type': 'boolean', 'description': 'rewritten is true for a thread whose block was edited away: it has no live\n block, `text` is what the comment originally referred to, and it is\n addressable only by annotation_id.'}, 'annotationId': {'type': 'string', 'description': 'annotation_id identifies the review thread on this block, when flagged. Use it\n in review_block to address a thread whose block was REWRITTEN (its anchor no\n longer resolves) - the only way to close or reply to it. Empty when unflagged.'}, 'changedSince': {'type': 'boolean'}}}, 'description': "Block-level review (app#75-78): the artifact's rendered blocks, each with a\n stable anchor + text + current status, when the artifact is under review\n (a collection has requested review); empty otherwise. Use these anchors with\n review_block."}, 'content': {'type': 'string', 'contentEncoding': 'base64'}, 'artifact': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'mime': {'type': 'string'}, 'name': {'type': 'string'}, 'author': {'type': 'string', 'description': 'author names the human who created it (created_by, resolved).'}, 'producer': {'type': 'string'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'createdBy': {'type': 'string'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'latestSize': {'type': 'string', 'format': 'int64'}, 'latestVersion': {'type': 'integer'}}}, 'versions': {'type': 'array', 'items': {'type': 'object', 'properties': {'mime': {'type': 'string'}, 'note': {'type': 'string'}, 'size': {'type': 'string', 'format': 'int64'}, 'sha256': {'type': 'string'}, 'version': {'type': 'integer'}, 'producer': {'type': 'string'}, 'createdAt': {'type': 'string', 'format': 'date-time'}}}}, 'approvedBy': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Approval state at the current version (feedback pins to artifact_version;\n a new version clears it). Labels of who currently approves / rejects.'}, 'rejectedBy': {'type': 'array', 'items': {'type': 'string'}}, 'contentMime': {'type': 'string'}, 'staleReviews': {'type': 'integer'}, 'contentVersion': {'type': 'integer'}}}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': "id is the collection's id (from list/timeline, or a recall hit's ref)."}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}}}
出力スキーマ
{'type': 'object', 'properties': {'collection': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string', 'description': 'url is the canonical link to this collection (.../c/<id>) - the thing to hand\n to a person or paste into a message. It redirects through sign-in to the\n right space, so it works for anyone with access, from any device.'}, 'tags': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'isInternal': {'type': 'boolean'}, 'hasPassword': {'type': 'boolean'}}}}, 'title': {'type': 'string', 'description': 'title is what the collection is called.'}, 'author': {'type': 'string', 'description': 'author names the human who published it (created_by, resolved).'}, 'producer': {'type': 'string'}, 'revision': {'type': 'integer'}, 'artifacts': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string', 'description': "url is a canonical link an assistant can hand to a person - the containing\n collection's page anchored to this file (.../c/<collection>#a-<id>). Set only\n when the artifact is returned as part of a collection; empty on a standalone\n get_artifact, because an artifact has no page of its own independent of a\n collection (it can belong to several)."}, 'mime': {'type': 'string'}, 'name': {'type': 'string'}, 'author': {'type': 'string', 'description': 'author names the human who created it (created_by, resolved).'}, 'producer': {'type': 'string'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'createdBy': {'type': 'string'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'latestSize': {'type': 'string', 'format': 'int64'}, 'latestVersion': {'type': 'integer'}}}}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'createdBy': {'type': 'string'}, 'isExternal': {'type': 'boolean', 'description': "is_external is true when the origin space differs from the caller's\n viewing space (the collection was shared in from elsewhere)."}, 'openThreads': {'type': 'integer', 'description': 'open_threads and resolved_threads count the block-review threads on this\n collection: open = a status still owed (needs review / needs work / reject),\n resolved = done or approved. Populated by get_collection so an instance can\n tell whether a review is finished without reading the whole thing; 0 on\n responses from other calls.'}, 'originSpace': {'type': 'string', 'description': 'origin_space names the workspace it was published from, when you belong to\n that workspace; empty otherwise, and is_external still says it came from\n elsewhere.'}, 'originSpaceId': {'type': 'string', 'description': 'origin_space_id is the space the collection was published from.'}, 'resolvedThreads': {'type': 'integer'}, 'reviewRequested': {'type': 'boolean', 'description': 'review_requested is true while the collection is under review (the\n approve/reject flow is on). Read it to tell whether you are looking at a\n collection that still expects a review decision.'}}}}}
入力スキーマ
{'type': 'object', 'properties': {'since': {'type': 'string', 'description': 'since bounds the inbox: only feedback created after this instant (RFC\n 3339). Empty = the last 7 days.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}}}
出力スキーマ
{'type': 'object', 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'body': {'type': 'string', 'description': 'body is the comment text or the approval/rejection note.'}, 'kind': {'type': 'string', 'description': 'kind is comment | approval | rejection.'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'artifactId': {'type': 'string'}, 'authorLabel': {'type': 'string', 'description': 'author_label names who left it (user name or share-code label).'}, 'artifactName': {'type': 'string'}, 'collectionId': {'type': 'string'}, 'pinnedVersion': {'type': 'integer'}, 'pinnedRevision': {'type': 'integer'}, 'collectionTitle': {'type': 'string'}, 'isAgainstCurrent': {'type': 'boolean', 'description': 'is_against_current is false when the feedback refers to a superseded\n version/revision.'}}}}}}
入力スキーマ
{'type': 'object', 'required': ['page'], 'properties': {'page': {'type': 'string', 'description': "page is the page's id or its full path within the wiki."}, 'wiki': {'type': 'string', 'description': 'wiki is the wiki the page is in - its id or slug. Required when addressing\n a page by path; optional when `page` is an id.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}}}
出力スキーマ
{'type': 'object', 'properties': {'url': {'type': 'string', 'description': "url is the page's canonical link."}, 'body': {'type': 'string', 'description': 'body is the markdown you are reading: the published version for a reader,\n the newest version for someone who can edit.'}, 'page': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'path': {'type': 'string', 'description': 'path is the page\'s full path within its wiki, e.g. "handbook/day-one".'}, 'depth': {'type': 'integer'}, 'state': {'type': 'string', 'description': 'state is one of: draft, awaiting_approval, published,\n published_draft_changes, archived, deletion_scheduled.'}, 'title': {'type': 'string', 'description': "title is the page's heading."}, 'parent': {'type': 'string', 'description': "parent is the id of the page above it; empty for the wiki's root."}, 'restricted': {'type': 'boolean', 'description': 'restricted is true when this page sits in a subtree that is fenced off to\n named people - you can see it, so you are one of them.'}}}, 'linksTo': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'path': {'type': 'string'}, 'title': {'type': 'string', 'description': "title is the page's heading."}}}, 'description': 'links_to is the pages this one links to.'}, 'watchers': {'type': 'integer', 'description': 'watchers is how many people are watching this page. Check it before\n publishing a significant change - it should be a deliberate act.'}, 'linksHere': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'path': {'type': 'string'}, 'title': {'type': 'string', 'description': "title is the page's heading."}}}, 'description': 'links_here is the pages that link TO this one - who depends on it, which is\n the half that matters before you change something.'}, 'publishedAt': {'type': 'string', 'description': 'published_at is when the live version went out (YYYY-MM-DD), empty if never.'}, 'baseRevision': {'type': 'integer', 'description': 'base_revision is the revision this body came from. Pass it back as\n base_revision on update_page - a write against a superseded revision is\n refused rather than silently overwriting whoever got there first.'}, 'viewingDraft': {'type': 'boolean', 'description': 'viewing_draft is true when this body is NOT what readers see.'}, 'publishedRevision': {'type': 'integer', 'description': 'published_revision is the revision readers currently see; 0 when nothing\n has been published.'}}}
入力スキーマ
{'type': 'object', 'properties': {'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (id or name from\n list_spaces). Omit it when you belong to a single space.'}}}
出力スキーマ
{'type': 'object', 'properties': {'entries': {'type': 'array', 'items': {'type': 'object', 'properties': {'at': {'type': 'string', 'format': 'date-time'}, 'note': {'type': 'string'}, 'areas': {'type': 'array', 'items': {'type': 'string'}}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'producer': {'type': 'string'}}}}, 'conflicts': {'type': 'array', 'items': {'type': 'string'}, 'description': 'conflicts lists areas touched by more than one instance in the window.'}}}
入力スキーマ
{'type': 'object', 'properties': {'days': {'type': 'integer', 'description': 'days is the window to report over (default 30, clamped to 1..365).'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}}}
出力スキーマ
{'type': 'object', 'properties': {'days': {'type': 'integer', 'description': 'days is the window actually reported over.'}, 'reads': {'type': 'integer', 'description': 'reads is the number of work reads (collections/artifacts/memories).'}, 'recalls': {'type': 'integer', 'description': 'recalls is the number of recalls in the window.'}, 'comments': {'type': 'integer', 'description': 'comments is the number of comments left.'}, 'approvals': {'type': 'integer', 'description': 'approvals / rejections are review decisions recorded.'}, 'publishes': {'type': 'integer', 'description': 'publishes is the number of collections published.'}, 'promotions': {'type': 'integer'}, 'rejections': {'type': 'integer'}, 'newVersions': {'type': 'integer', 'description': 'new_versions is the number of artifact versions pushed.'}, 'deprecations': {'type': 'integer', 'description': 'deprecations / promotions are memory-curation actions.'}, 'zeroResultRate': {'type': 'number', 'description': 'zero_result_rate is that as a percentage (0 when there were no recalls).'}, 'recallsByCaller': {'type': 'object', 'description': 'recalls_by_caller splits recalls by caller kind (mcp / cli / web).', 'additionalProperties': {'type': 'integer'}}, 'zeroResultRecalls': {'type': 'integer', 'description': 'zero_result_recalls is how many returned nothing - the product-health canary.'}}}
入力スキーマ
{'type': 'object', 'properties': {'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}}}
出力スキーマ
{'type': 'object', 'properties': {'body': {'type': 'string', 'description': 'body is the workspace operating manual (markdown).'}, 'version': {'type': 'integer', 'description': 'version increments on each edit; 0 means the built-in default (never edited).'}, 'isDefault': {'type': 'boolean', 'description': 'is_default is true when body is the built-in default (no owner has set one).'}, 'updatedAt': {'type': 'string', 'format': 'date-time'}, 'updatedBy': {'type': 'string', 'description': 'updated_by is the id of the member who last saved it (empty for the default).'}}}
入力スキーマ
{'type': 'object', 'required': ['fromId', 'toId'], 'properties': {'toId': {'type': 'string', 'description': 'to_id is the target memory the link points to (see from_id).'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'fromId': {'type': 'string', 'description': "from_id is the memory the link starts at; to_id is the memory it points to.\n Both are memory (collection) ids in the caller's space."}, 'remove': {'type': 'boolean', 'description': 'remove deletes the from_id -> to_id link instead of creating it.'}}}
出力スキーマ
{'type': 'object', 'properties': {}}
入力スキーマ
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'description': 'limit caps how many come back.'}, 'scope': {'type': 'string', 'description': 'scope picks which queue:\n "mine" - what is on YOUR plate (the default, and the authoritative\n answer to "what do I still owe")\n "unassigned" - raised into the workspace, nobody\'s yet\n "all" - every open action here'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in.'}, 'project': {'type': 'string', 'description': 'project optionally narrows to one project tag.'}, 'includeClosed': {'type': 'boolean', 'description': 'include_closed brings in the finished ones; by default a queue is open work.'}}}
出力スキーマ
{'type': 'object', 'properties': {}}
入力スキーマ
{'type': 'object', 'properties': {'tag': {'type': 'string', 'description': 'tag narrows the timeline to one tag (by name).'}, 'limit': {'type': 'integer', 'description': 'default 20, max 100'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'offset': {'type': 'integer', 'description': 'skip this many results for paging (0 = start)'}, 'search': {'type': 'string', 'description': 'search narrows by title substring.'}}}
出力スキーマ
{'type': 'object', 'properties': {'total': {'type': 'string', 'format': 'int64'}, 'collections': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string', 'description': 'url is the canonical link to this collection (.../c/<id>) - the thing to hand\n to a person or paste into a message. It redirects through sign-in to the\n right space, so it works for anyone with access, from any device.'}, 'tags': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'isInternal': {'type': 'boolean'}, 'hasPassword': {'type': 'boolean'}}}}, 'title': {'type': 'string', 'description': 'title is what the collection is called.'}, 'author': {'type': 'string', 'description': 'author names the human who published it (created_by, resolved).'}, 'producer': {'type': 'string'}, 'revision': {'type': 'integer'}, 'artifacts': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}}}}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'createdBy': {'type': 'string'}, 'isExternal': {'type': 'boolean', 'description': "is_external is true when the origin space differs from the caller's\n viewing space (the collection was shared in from elsewhere)."}, 'openThreads': {'type': 'integer', 'description': 'open_threads and resolved_threads count the block-review threads on this\n collection: open = a status still owed (needs review / needs work / reject),\n resolved = done or approved. Populated by get_collection so an instance can\n tell whether a review is finished without reading the whole thing; 0 on\n responses from other calls.'}, 'originSpace': {'type': 'string', 'description': 'origin_space names the workspace it was published from, when you belong to\n that workspace; empty otherwise, and is_external still says it came from\n elsewhere.'}, 'originSpaceId': {'type': 'string', 'description': 'origin_space_id is the space the collection was published from.'}, 'resolvedThreads': {'type': 'integer'}, 'reviewRequested': {'type': 'boolean', 'description': 'review_requested is true while the collection is under review (the\n approve/reject flow is on). Read it to tell whether you are looking at a\n collection that still expects a review decision.'}}}}}}
入力スキーマ
{'type': 'object', 'required': ['wiki'], 'properties': {'wiki': {'type': 'string', 'description': 'wiki is the wiki to walk - its id or its slug.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}}}
出力スキーマ
{'type': 'object', 'properties': {'pages': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'path': {'type': 'string', 'description': 'path is the page\'s full path within its wiki, e.g. "handbook/day-one".'}, 'depth': {'type': 'integer'}, 'state': {'type': 'string', 'description': 'state is one of: draft, awaiting_approval, published,\n published_draft_changes, archived, deletion_scheduled.'}, 'title': {'type': 'string', 'description': "title is the page's heading."}, 'parent': {'type': 'string', 'description': "parent is the id of the page above it; empty for the wiki's root."}, 'restricted': {'type': 'boolean', 'description': 'restricted is true when this page sits in a subtree that is fenced off to\n named people - you can see it, so you are one of them.'}}}}}}
入力スキーマ
{'type': 'object', 'properties': {}}
出力スキーマ
{'type': 'object', 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'body': {'type': 'string'}, 'kind': {'type': 'string', 'description': 'kind: comment | approval | rejection | block_feedback |\n memory_review_requested | memory_reviewed.'}, 'title': {'type': 'string', 'description': 'title is the one-line summary of what is waiting.'}, 'unread': {'type': 'boolean'}, 'severity': {'type': 'string'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'actorLabel': {'type': 'string', 'description': 'actor_label names who caused it.'}, 'originSpace': {'type': 'string', 'description': 'origin_space NAMES the workspace the item came from - pass it as `space` to\n act on the item. url deep-links into it.'}}}}}}
入力スキーマ
{'type': 'object', 'properties': {'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'search': {'type': 'string', 'description': 'search optionally narrows projects by name substring.'}}}
出力スキーマ
{'type': 'object', 'properties': {'projects': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'isInternal': {'type': 'boolean', 'description': "is_internal excludes the project's collections from every anonymous view."}, 'hasPassword': {'type': 'boolean', 'description': 'has_password is true when the project admits anonymous viewers by password.'}}}}}}
入力スキーマ
{'type': 'object', 'properties': {'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'artifactId': {'type': 'string', 'description': 'artifact_id lists readers of a single artifact (from get_artifact); use\n instead of collection_id.'}, 'collectionId': {'type': 'string', 'description': 'Exactly one of collection_id / artifact_id.'}}}
出力スキーマ
{'type': 'object', 'properties': {'readers': {'type': 'array', 'items': {'type': 'object', 'properties': {'at': {'type': 'string', 'format': 'date-time'}, 'version': {'type': 'integer'}, 'producer': {'type': 'string'}}}}}}
入力スキーマ
{'type': 'object', 'properties': {'tag': {'type': 'string', 'description': "tag optionally narrows to one tag's codes (an id or a name). Omit to list\n every share code in the space. Revoked codes are included."}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}}}
出力スキーマ
{'type': 'object', 'properties': {'shareCodes': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string', 'description': "url is the anonymous view page for the code's tag, where the holder enters\n the code. Absolute when the app base url is configured, else a /v path."}, 'code': {'type': 'string', 'description': 'code is the secret the holder enters at `url` to be admitted.'}, 'label': {'type': 'string', 'description': "label records who the code is for - it identifies the holder's feedback."}, 'tagId': {'type': 'string'}, 'hasPin': {'type': 'boolean', 'description': 'has_pin is true when the code carries a second-factor PIN (the PIN itself is\n never returned).'}, 'locked': {'type': 'boolean', 'description': 'locked is true when the code is locked out after too many wrong PINs; it\n admits nobody until unlocked.'}, 'expired': {'type': 'boolean', 'description': 'expired is true when expires_at has passed (the code no longer admits).'}, 'revoked': {'type': 'boolean', 'description': 'revoked is true when the code has been revoked (no longer admits).'}, 'tagName': {'type': 'string'}, 'createdAt': {'type': 'string', 'format': 'date-time'}, 'expiresAt': {'type': 'string', 'format': 'date-time', 'description': 'expires_at is when the code stops admitting; unset means it never expires.'}}}}}}
入力スキーマ
{'type': 'object', 'properties': {}}
出力スキーマ
{'type': 'object', 'properties': {'spaces': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'slug': {'type': 'string', 'description': "slug is the workspace's readable URL segment (empty if it has none). It is\n what appears in a share link: /v/{slug}/{tag}/..."}, 'isCurrent': {'type': 'boolean'}}}}}}
入力スキーマ
{'type': 'object', 'properties': {'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'search': {'type': 'string', 'description': 'search narrows by name or description.'}}}
出力スキーマ
{'type': 'object', 'properties': {'wikis': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'slug': {'type': 'string', 'description': "slug is the wiki's segment in a page URL."}, 'pages': {'type': 'integer', 'description': 'pages is how many pages you can see in it, and published is how many of\n those readers can see - together, whether the wiki is alive.'}, 'rootPage': {'type': 'string', 'description': "root_page is the id of the wiki's root page."}, 'published': {'type': 'integer'}, 'description': {'type': 'string', 'description': 'description is one line on what the wiki holds.'}, 'lastPublished': {'type': 'string', 'description': 'last_published is when anything in it last went live (YYYY-MM-DD), empty if\n nothing has.'}, 'approvalRequired': {'type': 'boolean', 'description': 'approval_required is true when a page in this wiki needs an approval before\n it goes live.'}}}}}}
入力スキーマ
{'type': 'object', 'required': ['page'], 'properties': {'page': {'type': 'string', 'description': "page is the page's id or its full path within the wiki."}, 'slug': {'type': 'string', 'description': "slug is the page's new path segment. Omit to leave the name alone."}, 'wiki': {'type': 'string', 'description': 'wiki is the wiki the page is in - its id or slug.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'parent': {'type': 'string', 'description': 'parent is the page to move under - an id or a path. Omit to leave it where\n it is and only rename.'}}}
出力スキーマ
{'type': 'object', 'properties': {}}
入力スキーマ
{'type': 'object', 'required': ['id', 'targetSpace'], 'properties': {'id': {'type': 'string', 'description': 'id is the memory (collection) id to promote.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act FROM (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'targetSpace': {'type': 'string', 'description': 'target_space is the workspace to promote INTO (an id or name from\n list_spaces) - not your current space. You must belong to it.'}}}
出力スキーマ
{'type': 'object', 'properties': {}}
入力スキーマ
{'type': 'object', 'required': ['artifactId', 'content'], 'properties': {'mime': {'type': 'string', 'description': "mime overrides the artifact's content type; empty keeps it."}, 'note': {'type': 'string', 'description': 'note is an optional version note describing what changed.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'content': {'type': 'string', 'description': "content is the new version's bytes.", 'contentEncoding': 'base64'}, 'producer': {'type': 'string', 'description': 'producer names the publishing instance (e.g. "claude-on-heavy"); defaults\n to the authenticated user\'s name.'}, 'artifactId': {'type': 'string', 'description': "artifact_id is the artifact to add a new version to (from get_artifact or a\n collection's artifact list)."}}}
出力スキーマ
{'type': 'object', 'properties': {'version': {'type': 'object', 'properties': {'mime': {'type': 'string'}, 'note': {'type': 'string'}, 'size': {'type': 'string', 'format': 'int64'}, 'sha256': {'type': 'string'}, 'version': {'type': 'integer'}, 'producer': {'type': 'string'}, 'createdAt': {'type': 'string', 'format': 'date-time'}}}, 'artifact': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'latestVersion': {'type': 'integer'}}}}}
入力スキーマ
{'type': 'object', 'required': ['body'], 'properties': {'body': {'type': 'string', 'description': 'body says what is being asked for. Write it so somebody who was not in the\n conversation can act on it.'}, 'page': {'type': 'string', 'description': 'page is the wiki page this action is about, if it is about one.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'memory': {'type': 'string', 'description': 'memory is the memory this action is about, if it is about one.'}, 'project': {'type': 'string', 'description': 'project optionally scopes it to a project tag, as collections are scoped.'}, 'artifact': {'type': 'string', 'description': 'artifact is the artifact this action is about, if it is about one.'}, 'assignee': {'type': 'string', 'description': 'assignee optionally names who owes it: "me", "owner" (the person you act\n for), one of YOUR agents by name or id, or a person\'s user id. Leave it out\n to raise it for anybody to claim.'}, 'collection': {'type': 'string', 'description': 'collection is the collection this action is about, if it is about one.'}, 'parentAction': {'type': 'string', 'description': 'parent_action carries a closed action forward: the way to continue past a\n close is a new action, not a reopen.'}}}
出力スキーマ
{'type': 'object', 'properties': {}}
入力スキーマ
{'type': 'object', 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'tags narrows recall to memories carrying all of these tags.'}, 'type': {'type': 'string', 'description': 'type optionally narrows recall to memories of this classifier\n (case-insensitive); empty returns memories of any type. See\n RememberRequest.type for the suggested set.'}, 'limit': {'type': 'integer', 'description': 'default 20, max 100'}, 'scope': {'type': 'string', 'description': 'scope selects the corpus: "everything" (the default) recalls team/project\n memory AND published, non-memory collections you can access; "memory"\n narrows to memory only. Each result\'s kind says which it is.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'cursor': {'type': 'string', 'description': 'cursor pages through a result set larger than one limit. Pass the\n next_cursor from a previous recall to get the following page; omit it for\n the first page. Use it to read a whole project to completeness rather than\n trusting a single capped call - a silent cap makes an agent treat what it\n did not fetch as absent.'}, 'search': {'type': 'string', 'description': 'search matches memory titles.'}, 'project': {'type': 'string', 'description': "project narrows recall to this project's memory; empty = space-wide."}, 'includeDeprecated': {'type': 'boolean', 'description': 'include_deprecated also returns memories that have been deprecated (flagged\n via MemoryEntry.deprecated). Default false: deprecated memories are hidden\n so instances stop applying them.'}}}
出力スキーマ
{'type': 'object', 'properties': {'guide': {'type': 'string', 'description': "guide is the workspace's operating manual (house rules), returned inline so\n an instance picks up the space's conventions at session start without a\n second call - the equivalent of auto-loading a project's house style. Follow\n it when writing memories and collections here. See GetWorkspaceGuide."}, 'total': {'type': 'integer', 'description': 'total is how many memories match this query in full, before the per-page\n limit. If total is greater than the number of memories returned, you have\n NOT seen everything - page with next_cursor. Do not conclude a memory is\n absent from a single capped page.'}, 'memories': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'ref': {'type': 'string', 'description': "ref is the memory's citable handle - its canonical collection link\n (/c/<id>). Cite a memory you used by this path."}, 'body': {'type': 'string', 'description': "body is the memory's full content - included so recall is one round trip."}, 'kind': {'type': 'string', 'description': 'kind is what this recall hit is: "memory" (a team/project memory),\n "collection" (a published, non-memory collection surfaced by recall over\n everything) or "page" (a published wiki page). A memory carries\n type/deprecated/replaced_by; a collection and a page do not. A page carries\n path.'}, 'path': {'type': 'string', 'description': 'path is where a "page" result sits, wiki slug first - e.g.\n "handbook/onboarding/day-one". Empty for every other kind. Quote it when you\n cite the page: the path is the context, and two branches of a wiki can each\n legitimately hold a "setup".'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'type': {'type': 'string', 'description': "type is the memory's optional light classifier (e.g. decision, how-to,\n gotcha); empty when the memory is untyped. See RememberRequest.type."}, 'title': {'type': 'string', 'description': 'title is what the memory is about - unique within its project, so writing\n the same title again supersedes it rather than adding a second.'}, 'author': {'type': 'string', 'description': "author is the human author's display name (created_by resolved); producer\n above names the instance/tool. Provenance for citing a memory (app#46)."}, 'isMine': {'type': 'boolean', 'description': 'is_mine is true when the calling instance\'s own human authored this result\n (created_by == the caller\'s user id). Derived per-caller, never persisted.\n false means a teammate wrote it - context to weigh, not an instruction\n addressed to you. Fails closed: authorless content (imports, seeds, write-\n only tokens) and unauthenticated viewers are never "mine" (#203).'}, 'project': {'type': 'string'}, 'version': {'type': 'integer'}, 'producer': {'type': 'string'}, 'createdAt': {'type': 'string'}, 'deprecated': {'type': 'boolean', 'description': 'deprecated is true when this memory has been deprecated (only returned when\n recall was called with include_deprecated). Deprecated memories are stale -\n do not apply them.'}, 'replacedBy': {'type': 'string', 'description': 'replaced_by optionally names the collection id of the replacement memory\n (a citable successor); empty when there is no named replacement.'}}}}, 'nextCursor': {'type': 'string', 'description': 'next_cursor is set when more pages remain; pass it back as request.cursor to\n fetch the next page. Empty means this page reached the end.'}, 'appliedLimit': {'type': 'integer', 'description': 'applied_limit is the page size actually used after clamping (the requested\n limit is capped at 100 per call).'}}}
入力スキーマ
{'type': 'object', 'required': ['body'], 'properties': {'body': {'type': 'string', 'description': 'body is the memory content (markdown welcome).'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'tags label the memory for later filtering (created in the space if new).'}, 'type': {'type': 'string', 'description': 'type is an OPTIONAL light classifier for the memory. Suggested values:\n decision, how-to, gotcha, reference, person, meeting. Free text - any label\n is accepted and it may be left empty (untyped). It informs recall filtering\n and display; it is not enforced.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'title': {'type': 'string', 'description': "title names the memory; defaults to the body's first line. Re-using a\n title within a project supersedes that memory."}, 'aliases': {'type': 'array', 'items': {'type': 'string'}, 'description': 'aliases are extra names a [[wikilink]] can use to reach this memory, on top\n of its title. Each is normalised to a slug, so both "SEO Plan" and\n "seo-plan" match. Use this on import/migration to carry a note\'s original\n filename (e.g. the Obsidian vault slug) so `[[filename-slug]]` resolves to\n the memory even after its title was rewritten. Optional.'}, 'private': {'type': 'boolean', 'description': "private, when true, stores the memory author-private: visible only to you,\n never returned by anyone else's recall. Use it when the memory summarises\n sensitive material. It only tightens - leaving it false does not override a\n restriction the server inherits from restricted content you read this session."}, 'project': {'type': 'string', 'description': 'project scopes the memory (per-project memory); empty = space-wide.'}, 'supersedes': {'type': 'string', 'description': 'supersedes optionally names the id of an EXISTING memory to replace,\n regardless of its title. Use it to be certain you are updating a specific\n memory rather than trusting a title match - and to heal a near-miss fork\n (e.g. "Deploy gotcha" vs "Deployment gotcha") by superseding the old memory\n with the corrected title in one call. The id must be a memory in this space\n that you can write, or the call errors. When set, the title-match path is\n bypassed; leave it empty for the default conversational behaviour.'}}}
出力スキーマ
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'restricted': {'type': 'boolean', 'description': 'restricted is true when the memory was stored private (author-private or a\n shared private project) - because you set private, or because it was derived\n from restricted content you read this session and the server scoped it down\n so it cannot leak. Surfaced so a scoping-down is visible, not silent.'}, 'superseded': {'type': 'boolean'}}}
入力スキーマ
{'type': 'object', 'required': ['areas'], 'properties': {'note': {'type': 'string', 'description': 'note is an optional short description of what you are doing now.'}, 'areas': {'type': 'array', 'items': {'type': 'string'}, 'description': 'areas name what is being worked on: file paths, modules, topics.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'producer': {'type': 'string', 'description': "producer names this instance; defaults to the user's name."}}}
出力スキーマ
{'type': 'object', 'properties': {}}
入力スキーマ
{'type': 'object', 'properties': {'dir': {'type': 'string', 'description': "dir is the working directory's basename - the weakest signal, used only\n when the marker and remote produce nothing."}, 'marker': {'type': 'string', 'description': 'marker is the verbatim contents of a .kythene file at the working directory\n root, if the client found one. It names the workspace and project\n explicitly and is authoritative. Format: `key: value` lines, keys\n `workspace` and `project` (workspace optional; an id or name).'}, 'gitRemote': {'type': 'string', 'description': 'git_remote is the origin remote URL of the repo, if any - e.g.\n https://github.com/acme/widgets or git@host:acme/widgets.git. The\n owner/repo and repo name are matched against project names.'}}}
出力スキーマ
{'type': 'object', 'properties': {'matches': {'type': 'array', 'items': {'type': 'object', 'properties': {'via': {'type': 'string', 'description': 'via names the signal that matched: "marker", "remote" or "dir".'}, 'project': {'type': 'string', 'description': 'project is the resolved project (tag) name; project_id its tag id.'}, 'projectId': {'type': 'string'}, 'confidence': {'type': 'string', 'description': 'confidence is "high" (an explicit .kythene marker), "medium" (matched the\n git remote\'s owner/repo or repo name) or "low" (matched the directory name).'}, 'workspaceId': {'type': 'string'}, 'workspaceName': {'type': 'string'}}}, 'description': 'matches, most confident first. A repo can map to more than one project and\n a project can span repos, so this is a list. Empty when nothing matched\n confidently - briefing the wrong project reads as authoritative, so no\n guess is returned.'}}}
入力スキーマ
{'type': 'object', 'required': ['artifactId'], 'properties': {'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'anchor': {'type': 'string', 'description': 'address by anchor (preferred) ...'}, 'status': {'type': 'string', 'description': 'status is one of needs_review, needs_work, done, approved, reject_remove.\n Empty clears the flag.'}, 'comment': {'type': 'string', 'description': 'optional; allowed only when a status is set'}, 'artifactId': {'type': 'string', 'description': 'the artifact within it (from get_artifact)'}, 'quotedText': {'type': 'string', 'description': "... or by quoting the block's text (server resolves)"}, 'annotationId': {'type': 'string', 'description': "annotation_id addresses an existing thread by id instead - the ONLY way to\n reach one whose block was rewritten (from get_artifact's block.annotation_id)."}, 'collectionId': {'type': 'string', 'description': 'the collection you are reviewing (access + opt-in)'}}}
出力スキーマ
{'type': 'object', 'properties': {'anchor': {'type': 'string'}, 'status': {'type': 'string'}}}
入力スキーマ
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'id is the share code to revoke (from list_share_codes).'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}}}
出力スキーマ
{'type': 'object', 'properties': {}}
入力スキーマ
{'type': 'object', 'required': ['action', 'state'], 'properties': {'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in.'}, 'state': {'type': 'string', 'description': 'state is the target:\n "in_progress" - you have started. Yours to say, as the assignee.\n "pending" - not now (from in_progress), or REOPEN a resolved action.\n Either party may reopen: disagreeing with "done" is the\n whole reason resolved exists.\n "resolved" - you think it is finished. Reversible on purpose.\n "closed" - finished, do not touch it. Terminal, and it needs a\n `resolution`. To carry on afterwards, raise a new action\n with this one as its parent_action.'}, 'action': {'type': 'string', 'description': "action is the action's id."}, 'resolution': {'type': 'string', 'description': 'resolution is REQUIRED when closing: done | wont_do | cancelled. It is\n stored rather than guessed from who closed it.'}}}
出力スキーマ
{'type': 'object', 'properties': {}}
入力スキーマ
{'type': 'object', 'required': ['id', 'state'], 'properties': {'id': {'type': 'string', 'description': 'id is the collection to move.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'state': {'type': 'string', 'description': 'state is the target lifecycle state:\n "live" - make an archived collection live again (restore);\n "archived" - archive a live collection, OR cancel a scheduled\n deletion, leaving the collection archived;\n "deletion_scheduled" - schedule permanent deletion of an archived\n collection after the 30-day grace window. This\n transition still requires delete permission (the\n domain enforces it), even though the tool is gated\n on update - an update-only caller is refused here.'}}}
出力スキーマ
{'type': 'object', 'properties': {}}
入力スキーマ
{'type': 'object', 'required': ['page', 'state'], 'properties': {'note': {'type': 'string', 'description': 'note is required when requesting changes.'}, 'page': {'type': 'string', 'description': "page is the page's id or its full path within the wiki."}, 'wiki': {'type': 'string', 'description': 'wiki is the wiki the page is in - its id or slug.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'state': {'type': 'string', 'description': 'state is the target:\n "published" - publish the newest version. Where the wiki requires\n an approval this is refused: ask for one instead.\n "awaiting_approval" - ask for an approval. Optionally name a `reviewer`.\n "approved" - approve AND publish in one act.\n "changes_requested" - send it back to draft with a `note` saying why.\n "draft" - withdraw an approval request, or unpublish a live\n page (readers lose it).\n "discarded" - drop unpublished changes and go back to what is\n live. The discarded version stays in the history.\n "archived" - archive the page AND everything beneath it. It\n leaves the tree, search and every reader path; its\n paths keep redirecting.\n "restored" - bring an archived page and its subtree back.'}, 'reviewer': {'type': 'string', 'description': 'reviewer optionally directs an approval request at one person (a user id).'}}}
出力スキーマ
{'type': 'object', 'properties': {}}
入力スキーマ
{'type': 'object', 'required': ['collectionId', 'requested'], 'properties': {'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'requested': {'type': 'boolean', 'description': 'requested turns the approval-review flow on (true) or off (false).'}, 'collectionId': {'type': 'string', 'description': 'collection_id is the collection to toggle review on.'}}}
出力スキーマ
{'type': 'object', 'properties': {}}
入力スキーマ
{'type': 'object', 'required': ['body'], 'properties': {'body': {'type': 'string', 'description': 'body is the new operating manual (markdown). An empty body resets to the\n built-in default.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}}}
出力スキーマ
{'type': 'object', 'properties': {'version': {'type': 'integer', 'description': 'version of the saved guide (0 when reset to the default).'}, 'isDefault': {'type': 'boolean'}}}
入力スキーマ
{'type': 'object', 'required': ['collectionId', 'spaceId'], 'properties': {'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'remove': {'type': 'boolean', 'description': "remove unmaps the collection from space_id instead of mapping it in. It\n cannot remove the collection's origin space (the domain enforces this)."}, 'spaceId': {'type': 'string', 'description': 'space_id is the TARGET space to map the collection into - an id or a name\n from list_spaces. (Do NOT confuse it with `space` below, which is the\n space you are acting FROM.)'}, 'collectionId': {'type': 'string', 'description': 'collection_id is the collection to map into the target space.'}}}
出力スキーマ
{'type': 'object', 'properties': {}}
入力スキーマ
{'type': 'object', 'required': ['page', 'body', 'baseRevision'], 'properties': {'body': {'type': 'string', 'description': 'body is the new markdown, in full - this replaces the page, it does not\n append to it.'}, 'note': {'type': 'string', 'description': "note is a short line about what changed - it shows on the page's history."}, 'page': {'type': 'string', 'description': "page is the page's id or its full path within the wiki."}, 'wiki': {'type': 'string', 'description': 'wiki is the wiki the page is in - its id or slug.'}, 'space': {'type': 'string', 'description': 'space optionally selects which of your spaces to act in (an id or name\n from list_spaces). Omit it when you belong to a single space.'}, 'title': {'type': 'string', 'description': 'title optionally retitles the page.'}, 'baseRevision': {'type': 'integer', 'description': 'base_revision is the revision you read before writing (from get_page).\n REQUIRED: if it is no longer current the write is refused, naming the newer\n one, so a second writer cannot silently overwrite the first.'}}}
出力スキーマ
{'type': 'object', 'properties': {}}
最近のツール変更
類似のMCPサーバー
Dock
Provides collaborative workspaces with tables, documents, HTML surfaces, files, formulas, comments, activity tracking, agent mess…
bridgeapp
Connects to a workspace containing tasks, chats, threads, pages, and projects.
Local MCP
Connects AI assistants to Mac email, calendars, reminders, notes, tasks, files, Microsoft 365, Todoist, spreadsheets, and daily b…
Stable Baseline
Manages company documents, knowledge graphs, whiteboards, projects, plans, tasks, teams, and improvement workflows.
mu
Supports personal and collaborative tasks including web browsing, app creation, blogs, bookmarks, discussions, and contact manage…
Dayze — Life Context
Provides authenticated personal life-context data and tools for contacts, memories, events, expenses, trips, assets, places, and …
YouSpot
Connects personal contacts, companies, notes, files, CRM records, email, Slack, LinkedIn, and calendars, with search, relationshi…
mcp
Manages Nestr workspaces, roles, circles, tensions, governance proposals, comments, daily plans, graph relationships, agents, and…