doco

Doco is an open-source collaborative document workspace where humans and AI agents write together.

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeCan modify data

What it can do

  • Doco Whoami: 自检身份:当前 Token 对应的用户与权限 scope
  • Doco List Knowledge Bases: 列出当前用户可见的全部知识库
  • Doco Get Tree: 获取一个知识库的完整目录树(文件夹 + 文档)

What data it sees

Do you need an account

No: the server works without sign-in

Doco is an open-source collaborative document workspace where humans and AI agents write together. It provides stable block IDs, optimistic concurrency, Markdown round-trip, and a 29-tool MCP server for safe knowledge-base operations.

Server tool list (29)

Raw names from tools/list. Only developers need these.

doco_whoami自检身份:当前 Token 对应的用户与权限 scope
doco_list_knowledge_bases列出当前用户可见的全部知识库
doco_get_tree获取一个知识库的完整目录树(文件夹 + 文档)
doco_list_documents按知识库 / 文件夹 / 关键词搜索文档列表(分页)
doco_search按标题和正文全文搜索文档。正文命中返回稳定 block_id 与摘要,适合先定位再用块 API 精确读取或修改。
doco_search_v2带查询级完整性证明的全文搜索。返回目录路径、标题路径、前后文、分数解释、source/indexed 水位;exhaustive 模式可用 cursor 完整遍历。projection.complete=false 时结果不完整,不能据此断言“知识不存在”。
doco_translations读取一个具体文档的 Document Set、源语言、可用语言版本和每种语言的新鲜度。
doco_translation_units读取目标语言的块级翻译单元、稳定块映射、source_version 和 missing/current/conflict 等状态。
doco_review_translation_unit在具体目标语言文档上确认当前译文或忽略单元;不接受机器结果直接覆盖,遇到 409 必须重读目标版本。
doco_get_document读取整篇文档正文。format: markdown(读懂语义,附带 warnings 降级提示)/ tiptap-json(无损,精确编辑用)/ html。返回含 version(后续写入需携带)。annotate=anchors 时 markdown 每个顶层块带 <!--@block=<id>--> 锚点,改完整篇写回(PUT content format=markdown)可按锚点保留未改动块的 ID。
doco_changes建立或增量读取文档的块级变更水位。首次不传 after 返回 manifest 与 cursor;后续传 cursor 获取 added/removed/modified/moved。sync_required=true 时必须重新读取正文并建立新基线。
doco_outline读取文档结构大纲:每个标题以稳定 block_id、heading_path 和顶层块区间表达,适合先规划再局部读取。
doco_read按 token 预算局部读取文档。可用 around 锚定任意嵌套 block_id,或用 next_cursor 续读;游标绑定正文版本,read_cursor_stale 时必须重新规划。
doco_traverse沿显式关系遍历文档。返回正向/反向关系、注册谓词、来源块与来源版本;status=dangling_* 时目标已失效,evidence_freshness=stale 时应重新确认证据,projection_freshness=stale 时不得当作完整关系图。
doco_create_relation从稳定来源块创建一条显式、可审计的类型关系。target_uri 使用 doco://doc/{id}#block={block_id};创建前服务端校验两端权限与块存在性。
doco_concepts统一读取概念层:列出/获取显式概念、沿概念关系遍历,或列出待审核候选。候选与显式概念严格分离。
doco_edit_concepts统一写入显式概念:创建、更新、补来源/关系、合并,以及接受/拒绝候选。客户端自动读取 ETag、发送 If-Match,并为每次写入生成幂等键。
doco_refresh_concept_candidates触发概念候选抽取/刷新。只生成待审核候选,不会直接污染显式概念层;写入自动带幂等键。
doco_summary读取章节、文档、文件夹或知识库摘要,或查询异步生成任务。结果带来源块、来源版本、覆盖率、freshness 与 fallback 语义;模型关闭时仍始终可用。
doco_save_summary人工编辑并可钉住摘要。客户端会先读取当前 summary/source 双版本后带保护写入;pinned 只防自动覆盖,来源变化后仍会显示 stale。
doco_rebuild_summary重建摘要。deterministic 同步返回可追溯 fallback;model 只创建异步任务,必须随后用 doco_summary(job_id) 查询,来源变化或摘要被钉住时结果会 obsolete 而不会覆盖。
doco_update_document整篇写回文档正文。markdown 写回凭 <!--@block=<id>--> 锚点保留未改动块 ID(配合 doco_get_document 的 annotate=anchors);tiptap-json 为整篇无损替换。强烈建议带 base_version,409 时重读合并重试。
doco_get_blocks按块读取文档:返回顶层(或 recursive=true 时全部)块及其稳定 block_id 与 version
doco_patch_block更新单个块:提供完整 node 替换,或用 attrs/content 局部修改。带 base_version 做乐观并发校验;不带则自动读取最新版本。409 时请重读合并重试。
doco_insert_blocks在指定位置插入一个或多个块。position 六选一:after_block_id / before_block_id / parent_block_id(+child_index) / document_start / document_end / after_heading(按标题文本定位,服务端匹配)
doco_delete_block删除单个块
doco_batch_edit单事务批量编辑(1–100 个操作,全有或全无):operations 为 {op: insert|replace|delete, ...} 数组。base_version 必填语义由服务端强制(不填自动读取)。
doco_create_document新建文档,可同时灌入初始正文(content: {format: markdown|tiptap-json|html, content|document})
doco_upload_attachment上传附件(图片/PDF/文本/Word),返回 attachment_id 与 URL;在文档块中用 image 节点 attrs.attachmentId 引用
doco: connect to Claude, ChatGPT, Cursor · Connectors.fun