| v3.5.0 | ### Highlights - AFFiNE tables can now be created with cell content through `append_block` and edited one cell at a time through the new `update_table_cell` tool. - Direct rich-text cell updates preserve inline attributes, header bold formatting, literal pipes, and dotted code text without rebuilding the table through Markdown. - `read_doc` now exposes complete table text and delta matrices for lossless read-modify-write flows. ### What Changed - Declared `tableData` and `tableCellDeltas` on t | High | 8/31/2026 |
| v3.2.2 | ### Highlights - Tool discovery now works with clients that accept JSON Schema 2020-12 but reject schemas declaring the draft-07 dialect. - Container health checks now use IPv4 loopback, avoiding false unhealthy states when `localhost` resolves to IPv6. - Runtime, development, browser-test, and container-publish dependencies were refreshed. ### What Changed - MCP schema compatibility - Removes the SDK-injected draft-07 `$schema` marker from advertised input and output schemas. - Preserves | High | 8/18/2026 |
| v3.2.1 | ### Highlights - Scripted session-cookie login now reads secrets from stdin instead of exposing them in shell history or process listings. - Explicit workspace selections are verified against the authenticated account before the CLI saves them. - Ordinary workspace members can paginate documents even when AFFiNE denies access to the primary GraphQL document connection. ### Security Migration - `affine-mcp login --cookie <value>` is no longer accepted. Automation must pass the cookie through `- | High | 8/6/2026 |
| v3.1.0 | ### Highlights - Workspace discovery now returns best-effort profile names, avatar references, direct URLs, and explicit profile status without changing the existing top-level result shape. - Self-hosted email/password authentication is more reliable on AFFiNE 0.27.3 because environment credentials override stale saved authentication and every HTTP path sends the required client-version header. - Document deletion now recognizes AFFiNE 0.27.3 success acknowledgements and hides only confirmed de | High | 7/27/2026 |
| v3.0.0 | ## Version 3.0.0 (2026-07-20) ### Highlights - Updated the server for AFFiNE 0.27+ authentication and removed the obsolete personal-access-token tool family. - Raised the minimum runtime to Node.js 20 and expanded CI coverage across the supported runtime range. - Made tool failures, structured receipts, notification pagination, document moves, and destructive mutations fail closed with stable machine-readable contracts. - Hardened Markdown import/export, external URL handling, blob uploads, HTT | High | 7/20/2026 |
| v2.5.0 | ## Version 2.5.0 (2026-07-06) ### Highlights - Added Glama server metadata so MCP directories can discover the server with explicit maintainer metadata. - Added MCP tool behavior annotations for read-only, destructive, idempotent, and external-world behavior. - Improved tool descriptions and parameter schemas for safer client-side tool selection. - Included `SECURITY.md` and `glama.json` in the published npm package. - Refreshed runtime and development dependencies. ### What Changed - `glama.j | High | 7/6/2026 |
| v2.4.0 | ## Version 2.4.0 (2026-06-22) ### Highlights - Added `delete_tag` so MCP clients can remove a workspace tag and detach it from every tagged document in one operation. - Surfaced `inTrash` across document listing, search, tag listing, hierarchy, child, and orphan workflows. - Expanded the canonical public tool manifest to 95 tools. - Refreshed GitHub Actions checkout usage and Playwright lockfile entries. - Refreshed `undici` to clear the current high-severity audit finding while preserving Node | High | 6/22/2026 |
| v2.2.0 | ## Version 2.2.0 (2026-06-15) ### Highlights - Added document custom-property tools for workspace-wide property definitions and per-document values. - Added `linkedDocIds` to `read_doc` block rows so inline LinkedPage references remain visible to MCP consumers. - Fixed MCP table row and column ordering by using valid fractional-indexing keys. - Preserved fractional-index ordering when table data is extracted from AFFiNE docs. - Tightened date custom-property validation to reject invalid calenda | High | 6/15/2026 |
| v2.1.0 | ### Highlights - Added `find_doc_by_title` for fast exact-title lookup from AFFiNE workspace metadata, including duplicate-title results, timestamps, result limits, optional case-insensitive matching, and truncation reporting. - Added `folderId` support to `create_doc` so new documents can be placed directly inside AFFiNE organize folders. - Migrated npm publishing to GitHub Actions trusted publishing with OIDC on Node.js 24. - Cleared npm audit findings by refreshing locked transitive dependen | High | 5/21/2026 |
| v2.0.0 | ### Highlights - Added native edgeless canvas coverage for surface elements, edgeless blocks, frame ownership, connector auto-snap, and canvas inspection. - Added least-privilege tool profiles for `full`, `read_only`, `core`, and `authoring` deployments. - Reduced the public MCP surface to 84 canonical tools by removing redundant convenience tools that overlapped with canonical document, search, database, comment, and template flows. - Hardened tool-surface reporting so `tools/list`, `get_capab | High | 5/7/2026 |
| v1.13.0 | ### Highlights - Added high-level AFFiNE-native authoring workflows for semantic pages, native templates, fidelity analysis, and workspace blueprints. - Added structured mutation receipts so MCP clients can reliably consume IDs, warnings, and follow-up handles from write operations. - Expanded public docs into a productized landing page plus dedicated setup, deployment, workflow, and tool reference guides. - Refreshed CI and release dependencies across GitHub Actions, Docker publishing, and run | High | 4/10/2026 |
| v1.12.0 | ## Version 1.12.0 (2026-04-09) ### Highlights - Added linked-document support on database rows so a row can open an AFFiNE doc in center peek. - Restored MCP CRUD compatibility for database rows created directly in the AFFiNE UI. - Fixed self-hosted `affine:table` exports that store row, column, and cell data as flat dot-notation Y.js keys. - Added GHCR Docker publishing on release tags, guarded so image publication only proceeds when the tagged commit is reachable from `origin/main`. ### What | Medium | 4/9/2026 |
| v1.11.2 | ## Version 1.11.2 (2026-03-31) ### Highlights - Corrected stale `list_docs` edge results so deleted documents no longer linger after `delete_doc`. - Completed the delete/list_docs hardening started in `v1.11.1` by keeping the visible edge list aligned with workspace metadata. - Revalidated the delete/list workflow live against AFFiNE `0.26.4`. ### What Changed - `src/tools/docs.ts` - Filter out deleted documents that remain in GraphQL edges after the workspace snapshot has already dropped th | Medium | 3/31/2026 |
| v1.11.1 | ## Version 1.11.1 (2026-03-31) ### Highlights - Corrected stale `list_docs` metadata after `delete_doc` so callers no longer see a pre-delete `totalCount`. - Aligned `list_docs.pageInfo.endCursor` with the returned edge list after delete-driven metadata drift. - Added live regression coverage to keep the delete/list_docs workflow stable against AFFiNE `0.26.4`. ### What Changed - `src/tools/docs.ts` - Clamp `list_docs.totalCount` downward when the workspace snapshot shows fewer pages than Gr | Medium | 3/31/2026 |
| v1.11.0 | ### Highlights - Added full sidebar organize workflows for collections, folders, and links inside AFFiNE workspace trees. - Added configurable tool-surface filtering with `AFFINE_DISABLED_GROUPS` and `AFFINE_DISABLED_TOOLS`. - Added `delete_database_row` and fixed markdown import so list items and table cells keep inline rich-text marks in AFFiNE. ### What Changed - `src/tools/organize.ts`, `README.md`, `tests/test-organize-tools.mjs` - Added collection and folder management tools plus live | Medium | 3/27/2026 |
| v1.10.1 | ### Highlights - Refreshed the packaged README and release metadata so the published v1.10.x docs match the shipped toolset. - Tightened tag-based npm publication by requiring Docker-backed E2E validation before publish. - Kept the runtime/tool surface unchanged from `v1.10.0`; this is a documentation and release-process patch. ### What Changed - `README.md`, `CHANGELOG.md`, `RELEASE_NOTES.md`, `tool-manifest.json`, `package.json` - Bumped release metadata to `1.10.1`. - Brought the package | Low | 3/18/2026 |
| v1.10.0 | ### Highlights - Expanded document discovery and navigation with search, title lookup, backlinks, child/orphan traversal, and workspace tree tools. - Added template, batch, cleanup, and move workflows to cover higher-volume AFFiNE document operations. - Hardened remote HTTP deployments with optional OAuth mode, richer diagnostics, and a fix for repeated sessions using email/password authentication. ### What Changed - `src/tools/docs.ts` - Added `search_docs`, `get_doc_by_title`, `get_docs_by | Low | 3/18/2026 |
| v1.9.0 | ### Highlights - Added dedicated database schema discovery with `read_database_columns`, so empty AFFiNE databases are now self-describing. - Added preset-backed `data_view` creation with kanban-oriented verification and richer exposed view metadata. - Hardened test infrastructure with a self-bootstrapping comprehensive runner, focused supporting-tools coverage, markdown callout round-trips, and a more reliable end-to-end Docker pipeline. ### What Changed - `src/tools/docs.ts` - Added `read_d | Low | 3/10/2026 |
| v1.8.0 | ### Highlights - Added database cell read/write tools for AFFiNE databases, including Kanban stage sync workflows. - Fixed row title persistence so `add_database_row` now renders Kanban card headers correctly when `title` / `Title` is provided. - Added CLI version commands for direct and wrapped installs: `--version`, `-v`, and `version`. ### What Changed - `src/tools/docs.ts` - Added `read_database_cells` to read database rows with per-column values and optional row/column filters. - Added | Low | 3/10/2026 |
| v1.7.2 | ### Highlights - Fixed MCP tag persistence so tags are visible in AFFiNE Web/App UI. - Added end-to-end regression coverage for tag visibility (MCP setup + Playwright UI verification). - Hardened E2E startup reliability by enforcing auth-readiness checks before running pipeline tests. ### What Changed - `src/tools/docs.ts` - Aligned tag persistence with AFFiNE canonical tag option schema (`meta.properties.tags.options`) by storing option IDs. - Added backward-compatible normalization for le | Low | 3/4/2026 |
| v1.7.1 | ### Highlights - Fixed MCP-created document structure to match AFFiNE UI parent-link expectations. - Fixed callout text rendering so MCP-created callouts display content correctly in AFFiNE Web UI. - Added regression coverage for document-visibility-sensitive creation and append paths. ### What Changed - `src/tools/docs.ts` - Aligned MCP block parent linkage to UI parity by writing `sys:parent = null` where applicable. - Added placement fallback via `sys:children` traversal when parent refe | Low | 3/3/2026 |
| v1.7.0 | ### Highlights - Added remote-ready MCP HTTP hosting mode with Streamable HTTP protocol support on `/mcp`. - Kept compatibility paths for older clients through legacy SSE endpoints (`/sse`, `/messages`). - Hardened HTTP transport behavior for larger requests and broader Bearer token client compatibility. ### What Changed - `src/index.ts`, `src/sse.ts`, `package.json` - Added transport switching via `MCP_TRANSPORT` with modes: `stdio` (default), `http`/`streamable`, and `sse` (legacy alias). | Low | 2/27/2026 |
| v1.6.0 | ### Highlights - Expanded the MCP surface from 32 to 43 tools with tag workflows, markdown roundtrip workflows, and direct database row/column editing tools. - Added interactive CLI account setup and diagnostics commands (`login`, `status`, `logout`) with secure local config storage. - Added Docker-based E2E verification (email/password + bearer token auth modes) and Playwright UI checks in CI. ### What Changed - `src/tools/docs.ts` - Added tag operations: `list_tags`, `list_docs_by_tag`, `c | Low | 2/24/2026 |
| v1.5.0 | ## Summary This release completes the `append_block` Step1..Step4 expansion with stronger validation and AFFiNE-compatible block handling, especially for database and edgeless scenarios. ## Added - Added Step4 block types for `append_block`: `database`, `data_view`, `surface_ref`, `frame`, `edgeless_text`, `note`. - Added local integration coverage for all append profiles (`step1`..`step4`) in `scripts/test-append-block-expansion.mjs`. ## Changed - Expanded `append_block` canonical type covera | Low | 2/13/2026 |
| v1.4.0 | ## Summary This release adds document content reading support and improves integration guidance for MCP clients. ## Added - Added `read_doc` to read document block snapshots and plain text via WebSocket. ## Changed - Updated README with Cursor MCP setup examples and troubleshooting for JSON-RPC `Method not found` misuse. - Clarified that browser local-storage workspaces are not accessible through server APIs. ## Fixed - Updated runtime MCP server metadata version to `1.4.0`. ## Upgrade Notes | Low | 2/13/2026 |
| v1.3.0 | ## Summary This release improves open-source project readiness and introduces stronger release quality gates. ## Added - Added open-source community health files: `CODE_OF_CONDUCT.md`, `CONTRIBUTING.md`, `SECURITY.md`. - Added GitHub community templates for issues and pull requests. - Added CI workflow and Dependabot configuration. - Added `tool-manifest.json` and static verification script (`npm run test:tool-manifest`). ## Changed - Simplified the MCP tool surface to 31 canonical tools with | Low | 2/13/2026 |
| v1.2.2 | ## Summary This patch release improves CLI startup reliability by ensuring the binary always launches through Node. ## Changed - Updated CLI binary behavior so `bin/affine-mcp` consistently executes via Node, preventing shell misinterpretation of ESM JavaScript files. ## Fixed - Fixed false startup timeout/mis-execution scenarios in some environments caused by shell-level execution of ESM entrypoints. ## Documentation - Removed `.env`-based configuration guidance. - Standardized environment v | Low | 9/18/2025 |
| v1.2.1 | ## Summary This release changes startup authentication behavior to reduce MCP stdio handshake timeouts. ## Added - Added `AFFINE_LOGIN_AT_START` with modes `async` (default) and `sync`. ## Changed - Default email/password startup authentication is now asynchronous to avoid blocking MCP initialization. - Refreshed documentation for Codex CLI and Claude Desktop workflows (npm, npx, and local clone usage). ## Removed - Removed unnecessary repository artifacts (for example, `.env.example` and `.d | Low | 9/17/2025 |
| v1.2.0 | ## Summary This release introduces WebSocket-backed document mutation tools and npm-distributed CLI integration. ## Added - Added WebSocket-based document tools: `create_doc`, `append_paragraph`, `delete_doc`. - Added CLI binary `affine-mcp` for stdio MCP integration. - Added dual tool aliases (prefixed `affine_*` and non-prefixed names). - Published package on npm for one-line global install. ## Changed - Switched TypeScript ESM resolution to `NodeNext` for stable `.js` imports. - Updated doc | Low | 9/16/2025 |
| v1.1.0 | ## Summary This release significantly improves production readiness by fixing workspace creation and expanding core operational tooling. ## Added - Added workspace creation with initial document support. - Added blob storage management tools. - Added notification management tools. - Added user CRUD operations. - Added comprehensive test coverage. ## Changed - Simplified tool names by removing the `affine_` prefix from primary commands. - Consolidated workspace tooling into a single module. - I | Low | 8/12/2025 |
| v1.0.0 | ## Summary Initial stable public release of `affine-mcp-server`. ## Added - Added 21 core tools for AFFiNE workspace/document operations. - Added MCP SDK compatibility (`@modelcontextprotocol/sdk` 1.17.2 baseline). - Added complete authentication support (Token, Cookie, Email/Password). - Added GraphQL API integration. - Added project documentation for initial setup and usage. ## Features - Workspace management. - Document operations. - Comments and collaboration workflow. - Document history a | Low | 8/12/2025 |