affine_apply_doc_updates
Apply CRDT updates to documents in AFFiNE workspaces, enabling advanced synchronization and modification of collaborative content via specified operations and updates.
Instructions
Apply CRDT updates to a doc (advanced).
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| docId | Yes | ||
| op | Yes | ||
| updates | Yes | ||
| workspaceId | No |
Implementation Reference
- src/tools/updates.ts:7-13 (handler)The async handler function that applies CRDT updates to a document via a GraphQL mutation.const applyDocUpdatesHandler = async (parsed: { workspaceId?: string; docId: string; op: string; updates: string }) => { const workspaceId = parsed.workspaceId || defaults.workspaceId || parsed.workspaceId; if (!workspaceId) throw new Error("workspaceId required (or set AFFINE_WORKSPACE_ID)"); const query = `query Apply($workspaceId:String!,$docId:String!,$op:String!,$updates:String!){ applyDocUpdates(workspaceId:$workspaceId, docId:$docId, op:$op, updates:$updates) }`; const data = await gql.request<{ applyDocUpdates: string }>(query, { workspaceId, docId: parsed.docId, op: parsed.op, updates: parsed.updates }); return text(data.applyDocUpdates); };
- src/tools/updates.ts:19-24 (schema)Zod input schema defining the parameters: workspaceId (optional), docId, op, updates.inputSchema: { workspaceId: z.string().optional(), docId: z.string(), op: z.string(), updates: z.string() }
- src/tools/updates.ts:14-27 (registration)Registration of the 'affine_apply_doc_updates' tool with the MCP server, including title, description, schema, and handler.server.registerTool( "affine_apply_doc_updates", { title: "Apply Document Updates", description: "Apply CRDT updates to a doc (advanced).", inputSchema: { workspaceId: z.string().optional(), docId: z.string(), op: z.string(), updates: z.string() } }, applyDocUpdatesHandler as any );