Markdown editor for writing, notes, editable diagrams, drawing and painting with your AI assistant.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Apply unique exact-text changes atomically as one undoable act (act is its id string), rename with filename, or set Note fields with note. At a moved numeric revision, literal edits apply if untouched since; whole-document replacement needs the current revision. A conflict returns current context; decide afresh. Drawings, painting, Water, comments and HTML objects use fenced text; painting needs an open editor and an operation_id.
From your latest read or open; a Note's is its sha256.
Your display name on acts; never grants authority.
Short description of this edit in history.
Note fields, with note and without changes.
Groups acts for undo {turn_id}.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Apply unique exact-text changes atomically as one undoable act (act is its id string), rename with filename, or set Note fields with note. At a moved numeric revision, literal edits apply if untouched since; whole-document replacement needs the current revision. A conflict returns current context; decide afresh. Drawings, painting, Water, comments and HTML objects use fenced text; painting needs an open editor and an operation_id.
| Argument | Type | Description |
|---|---|---|
| note | string | |
| agent | string | Your display name on acts; never grants authority. |
| label | string | Short description of this edit in history. |
| fields | object | Note fields, with note and without changes. |
| changes | array | |
| turn_id | string | Groups acts for undo {turn_id}. |
| document* | string | |
| filename | string | |
| revision* | integer | string | From your latest read or open; a Note's is its sha256. |
| operation_id | string |
{
"type": "object",
"required": [
"document",
"revision"
],
"properties": {
"note": {
"type": "string",
"maxLength": 160,
"minLength": 1
},
"agent": {
"type": "string",
"description": "Your display name on acts; never grants authority."
},
"label": {
"type": "string",
"description": "Short description of this edit in history."
},
"fields": {
"type": "object",
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 128
},
"maxItems": 64
},
"colour": {
"enum": [
"",
"red",
"orange",
"yellow",
"green",
"teal",
"blue",
"purple",
"pink",
"brown"
],
"type": "string"
},
"pinned": {
"type": "boolean"
},
"section": {
"type": "string",
"maxLength": 48
},
"trashed": {
"type": "boolean"
},
"archived": {
"type": "boolean"
},
"reminder": {
"type": [
"object",
"null"
],
"description": "App only; {at} in ms."
}
},
"description": "Note fields, with note and without changes.",
"additionalProperties": false
},
"changes": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"required": [
"old",
"new"
],
"properties": {
"new": {
"type": "string",
"maxLength": 67108864
},
"old": {
"type": "string",
"maxLength": 67108864
},
"block": {
"type": "string",
"maxLength": 128
},
"heading": {
"oneOf": [
{
"type": "string",
"maxLength": 1024
},
{
"type": "array",
"items": {
"type": "string",
"maxLength": 256
},
"maxItems": 32
}
]
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"after",
"insert"
],
"properties": {
"after": {
"type": "string",
"maxLength": 67108864
},
"block": {
"type": "string",
"maxLength": 128
},
"insert": {
"type": "string",
"maxLength": 67108864
},
"heading": {
"oneOf": [
{
"type": "string",
"maxLength": 1024
},
{
"type": "array",
"items": {
"type": "string",
"maxLength": 256
},
"maxItems": 32
}
]
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 67108864
}
},
"additionalProperties": false
}
]
},
"maxItems": 32,
"minItems": 1
},
"turn_id": {
"type": "string",
"maxLength": 160,
"description": "Groups acts for undo {turn_id}."
},
"document": {
"type": "string",
"maxLength": 256
},
"filename": {
"type": "string",
"maxLength": 256
},
"revision": {
"type": [
"integer",
"string"
],
"description": "From your latest read or open; a Note's is its sha256."
},
"operation_id": {
"type": "string",
"maxLength": 128,
"minLength": 1
}
},
"additionalProperties": false
}to:"file" (default) delivers markdown, html (the offline editor), page, txt, docx or pdf; to:"save" saves to the bound destination; to:"clipboard" copies a passage as plain, markdown, formatted or complete. to:"sync" alone syncs the Notes store and can replace files. On the hosted Door, page, docx and pdf need the person's paired, open editor; a self-hosted server can provide a renderer. Inspect delivery; export never publishes a website.
| Argument | Type | Description |
|---|---|---|
| to | string | |
| text | string | |
| agent | string | Your display name on acts; never grants authority. |
| block | string | |
| format | string | |
| heading | any | |
| document* | string | |
| revision | integer | string | |
| compare_id | string | |
| operation_id | string |
Create {text, filename}, resume {document}, open a Note {document, note}, create one {document, note:"new", text, title} (title only there), or import a host file {file}. Returns revision and whole text when it fits a page; otherwise a document map. A browser code goes to show {target:"pair", code}. Share editor_url when available; keep document private.
| Argument | Type | Description |
|---|---|---|
| url | string | This Door's editor_url, through its authorized connection. Use alone; other URLs are not fetched. |
| file | object | |
| note | string | |
| text | string | |
| agent | string | Your display name on acts; never grants authority. |
| title | string | |
| document | string | |
| filename | string | |
| createToken | string | |
| operation_id | string |
Read exact text, a heading/fence map (as:"outline") or a PNG (as:"image") of the page or of the named block, heading or lines. query finds lines here; search lists Notes. Continue next_cursor with cursor alone. Check human context and omissions before editing. state:true reports pending work and the person’s presence; after_revision with wait_ms waits for their next change. guide returns instructions; guide resource URIs are not document IDs.
| Argument | Type | Description |
|---|---|---|
| as | string | |
| note | string | |
| agent | string | Your display name on acts; never grants authority. |
| block | string | |
| guide | string | Instructions only; use no other read selectors and no document. |
| limit | integer | |
| lines | array | [first, last], 1-based, inclusive. |
| query | string | Literal text to find in this document. |
| since | string |
Present work or ask the person. An omitted target is inferred from its fields. A 4-letter browser code pairs that editor (target:"pair"); a connected workspace's owner first approves at owner_approval_url, then the person chooses ALLOW. pairing.status: none, code_shown, owner_approval_required, awaiting_allow or paired; only paired confirms pairing. Inspect actual presentation; a request is not proof the person saw it. A comparison leaves source unchanged. Later human navigation wins.
| Argument | Type | Description |
|---|---|---|
| act | string | |
| code | string | Browser pairing code (target:"pair"). |
| name | string | Comparison title or target:plugin name: math|mermaid|pdf|ocr|letters-field|letters-relief|letters-leaf|letters-arabesque|letters-silhouette|letters-gothic|letters-sugar|letters-illuminated-1490|letters-tuscan-1845|letters-renaissance-alphabet. |
| note | string | |
| text | string | Exact passage, or for comparison the whole alternative document. |
| view | string | |
| wait | string | ask: message (default) or selection. |
| agent | string | Your display name on acts; never grants authority. |
Undo one act or one turn (act or turn_id, not both), preserving later work.
| Argument | Type | Description |
|---|---|---|
| act | string | From edit; pass act or turn_id. |
| agent | string | Your display name on acts; never grants authority. |
| turn_id | string | Undo a whole turn; pass act or turn_id. |
| document* | string | |
| operation_id | string |
{
"type": "object",
"required": [
"document"
],
"properties": {
"act": {
"type": "string",
"maxLength": 256,
"description": "From edit; pass act or turn_id."
},
"agent": {
"type": "string",
"description": "Your display name on acts; never grants authority."
},
"turn_id": {
"type": "string",
"maxLength": 160,
"description": "Undo a whole turn; pass act or turn_id."
},
"document": {
"type": "string",
"maxLength": 256
},
"operation_id": {
"type": "string",
"maxLength": 128,
"minLength": 1
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"document"
],
"properties": {
"to": {
"enum": [
"file",
"save",
"clipboard",
"sync"
],
"type": "string",
"maxLength": 32
},
"text": {
"type": "string",
"maxLength": 67108864
},
"agent": {
"type": "string",
"description": "Your display name on acts; never grants authority."
},
"block": {
"type": "string",
"maxLength": 128
},
"format": {
"enum": [
"markdown",
"html",
"page",
"txt",
"docx",
"pdf",
"plain",
"formatted",
"complete"
],
"type": "string",
"maxLength": 32
},
"heading": {
"oneOf": [
{
"type": "string",
"maxLength": 1024
},
{
"type": "array",
"items": {
"type": "string",
"maxLength": 256
},
"maxItems": 32
}
]
},
"document": {
"type": "string",
"maxLength": 256
},
"revision": {
"type": [
"integer",
"string"
]
},
"compare_id": {
"type": "string",
"maxLength": 128
},
"operation_id": {
"type": "string",
"maxLength": 128,
"minLength": 1
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"description": "This Door's editor_url, through its authorized connection. Use alone; other URLs are not fetched."
},
"file": {
"type": "object",
"required": [
"name",
"resourceUri"
],
"properties": {
"name": {
"type": "string",
"maxLength": 256
},
"resourceUri": {
"type": "string",
"maxLength": 8192
}
},
"additionalProperties": false
},
"note": {
"type": "string",
"maxLength": 160,
"minLength": 1
},
"text": {
"type": "string",
"maxLength": 67108864
},
"agent": {
"type": "string",
"description": "Your display name on acts; never grants authority."
},
"title": {
"type": "string",
"maxLength": 256
},
"document": {
"type": "string",
"maxLength": 256
},
"filename": {
"type": "string",
"maxLength": 256
},
"createToken": {
"type": "string",
"maxLength": 128
},
"operation_id": {
"type": "string",
"maxLength": 128,
"minLength": 1
}
},
"additionalProperties": false
}| state | boolean |
| cursor | string |
| search | string | Search the Notes store; "" lists all. |
| heading | any |
| history | boolean |
| version | integer |
| wait_ms | integer | Bounded wait (ms) for the next human revision. |
| document | string | From open; not needed with guide. |
| versions | boolean |
| return_id | string |
| comparison | boolean |
| preferences | boolean | Include editor preferences in state; omitted by default. |
| operation_id | string |
| after_revision | integer | With wait_ms: return when the revision passes this. |
{
"type": "object",
"required": [],
"properties": {
"as": {
"enum": [
"text",
"image",
"outline"
],
"type": "string",
"maxLength": 32
},
"note": {
"type": "string",
"maxLength": 160,
"minLength": 1
},
"agent": {
"type": "string",
"description": "Your display name on acts; never grants authority."
},
"block": {
"type": "string",
"maxLength": 128
},
"guide": {
"enum": [
"overview",
"draw",
"water",
"blocks"
],
"type": "string",
"maxLength": 32,
"description": "Instructions only; use no other read selectors and no document."
},
"limit": {
"type": "integer",
"maximum": 32768,
"minimum": 1
},
"lines": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
},
"maxItems": 2,
"minItems": 2,
"description": "[first, last], 1-based, inclusive."
},
"query": {
"type": "string",
"maxLength": 2048,
"description": "Literal text to find in this document."
},
"since": {
"type": "string",
"maxLength": 256
},
"state": {
"type": "boolean"
},
"cursor": {
"type": "string",
"maxLength": 256
},
"search": {
"type": "string",
"maxLength": 2048,
"description": "Search the Notes store; \"\" lists all."
},
"heading": {
"oneOf": [
{
"type": "string",
"maxLength": 1024
},
{
"type": "array",
"items": {
"type": "string",
"maxLength": 256
},
"maxItems": 32
}
]
},
"history": {
"type": "boolean"
},
"version": {
"type": "integer",
"minimum": 1
},
"wait_ms": {
"type": "integer",
"maximum": 20000,
"minimum": 0,
"description": "Bounded wait (ms) for the next human revision."
},
"document": {
"type": "string",
"maxLength": 256,
"description": "From open; not needed with guide."
},
"versions": {
"type": "boolean"
},
"return_id": {
"type": "string",
"maxLength": 128
},
"comparison": {
"type": "boolean"
},
"preferences": {
"type": "boolean",
"description": "Include editor preferences in state; omitted by default."
},
"operation_id": {
"type": "string",
"maxLength": 128,
"minLength": 1
},
"after_revision": {
"type": "integer",
"minimum": 0,
"description": "With wait_ms: return when the revision passes this."
}
},
"additionalProperties": false
}| block |
| string |
| close | boolean |
| value | string | boolean | preferences: the setting; playback: false pauses, true plays. |
| words | string | Pointer label. |
| target | string |
| heading | any |
| turn_id | string |
| document* | string |
| lifetime | integer |
| question | string |
| revision | integer | string |
| compare_id | string |
| preference | string |
| timeout_ms | integer |
| operation_id | string |
| after_return_id | string |
{
"type": "object",
"required": [
"document"
],
"properties": {
"act": {
"type": "string",
"maxLength": 256
},
"code": {
"type": "string",
"maxLength": 4,
"description": "Browser pairing code (target:\"pair\")."
},
"name": {
"type": "string",
"maxLength": 256,
"description": "Comparison title or target:plugin name: math|mermaid|pdf|ocr|letters-field|letters-relief|letters-leaf|letters-arabesque|letters-silhouette|letters-gothic|letters-sugar|letters-illuminated-1490|letters-tuscan-1845|letters-renaissance-alphabet."
},
"note": {
"type": "string",
"maxLength": 160,
"minLength": 1
},
"text": {
"type": "string",
"maxLength": 67108864,
"description": "Exact passage, or for comparison the whole alternative document."
},
"view": {
"enum": [
"formatted",
"source",
"notes"
],
"type": "string",
"maxLength": 32
},
"wait": {
"enum": [
"selection",
"message"
],
"type": "string",
"maxLength": 32,
"description": "ask: message (default) or selection."
},
"agent": {
"type": "string",
"description": "Your display name on acts; never grants authority."
},
"block": {
"type": "string",
"maxLength": 128
},
"close": {
"type": "boolean"
},
"value": {
"type": [
"string",
"boolean"
],
"description": "preferences: the setting; playback: false pauses, true plays."
},
"words": {
"type": "string",
"maxLength": 160,
"description": "Pointer label."
},
"target": {
"enum": [
"passage",
"block",
"pointer",
"read_aloud",
"playback",
"comparison",
"view",
"preferences",
"plugin",
"file",
"return",
"note",
"ask",
"pair"
],
"type": "string",
"maxLength": 48
},
"heading": {
"oneOf": [
{
"type": "string",
"maxLength": 1024
},
{
"type": "array",
"items": {
"type": "string",
"maxLength": 256
},
"maxItems": 32
}
]
},
"turn_id": {
"type": "string",
"maxLength": 160
},
"document": {
"type": "string",
"maxLength": 256
},
"lifetime": {
"type": "integer",
"maximum": 30,
"minimum": 1
},
"question": {
"type": "string",
"maxLength": 4096
},
"revision": {
"type": [
"integer",
"string"
]
},
"compare_id": {
"type": "string",
"maxLength": 128
},
"preference": {
"enum": [
"accent",
"theme",
"fontSize",
"defaultDocumentFont",
"checker",
"lineNums",
"imageStorage",
"inkColour",
"inkWidth",
"inkStylus",
"wrap",
"dim",
"lineFit",
"showPlayButton",
"highlights",
"highlightColor",
"headings",
"invertImageAlpha",
"layout",
"startIn",
"notesSort",
"notesLayout",
"notesColour"
],
"type": "string"
},
"timeout_ms": {
"type": "integer",
"default": 20000,
"maximum": 120000,
"minimum": 1000
},
"operation_id": {
"type": "string",
"maxLength": 128,
"minLength": 1
},
"after_return_id": {
"type": "string",
"maxLength": 128
}
},
"additionalProperties": false
}