Goodnotes Web MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOODNOTES_MCP_HOME | No | Override the local data folder. By default it is %LOCALAPPDATA%/goodnotes-web-mcp on Windows and ~/.local/share/goodnotes-web-mcp on other platforms. It contains the browser profile, permissions, lock, receipts, PDF snapshots/text indices, OCR language models, object-edit evidence, image crop checkpoints and original PNG pixels, catalog, batch plans and generated learning materials. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| goodnotes_prepare_board_adoptionB | Prepare a verified native COPY of an older whiteboard, preserving all content. Bind a source PDF snapshot for citations. Then select and capture individual native text boxes/images at 100% zoom; this is not exhaustive board enumeration. |
| goodnotes_capture_board_adoptionB | Read and independently verify one selected native text box or image on the adoption COPY. Text needs exact expectedText; images retain exact source pixels and crop. No content is changed. Source page assignments are supplied by the caller. |
| goodnotes_finish_board_adoptionB | Freeze selected objects as a managed board after checking native content/style/images and proving the complete copied PDF is unchanged. Returns baseId for selective revisions. Other objects remain unmanaged. Preview shows selected objects only. |
| goodnotes_board_adoption_statusC | Read adoption copy, selected managed objects and progress without opening a browser. |
| goodnotes_prepare_study_collectionB | Copy a lecture and export a stable source snapshot for multiple automatically sized learning boards. Reuses the verified study preparation; a stable requestId prevents duplicate copies. |
| goodnotes_plan_study_collectionB | Plan up to 240 source-based cards and 120 original figures into bounded, linked boards. Measures real text/figure geometry, preserves figure-caption groups and source pages, produces previews before writing. The caller supplies explanations and exercises. |
| goodnotes_run_study_collectionC | Run one bounded creation or independently verified native block. Creates overview and previous/next native text links. Durable child plans and operation receipts prevent replay after crashes. Stops on uncertain writes. |
| goodnotes_study_collection_statusA | Read collection progress, source pages, previews, overview URL and child workflows. Completed child IDs support selective study revisions. |
| goodnotes_review_study_collectionB | Review one interrupted collection creation or child step using existing independent evidence. Never repeats uncertain mutations. Unproven creation needs individual inspection. |
| goodnotes_prepare_study_revisionA | Prepare a selective revision of a completed managed learning board or prior revision. Defaults to an independently verified native COPY including personal additions. copy=false keeps a verified native backup and targets the authorized original. A stable request ID prevents duplicate copies. Returns managed block IDs and current source references. |
| goodnotes_plan_study_revisionA | Plan selected card updates, bounded object moves and new sections below an existing managed board. Retains untouched objects, checks source pages and intermediate geometry, saves a preview and freezes the plan. Optional sourceExportId reports text/page changes but still needs diagram review. Preview excludes unmanaged personal notes. |
| goodnotes_run_study_revisionA | Run one saved revision step. Rechecks exact original content/style/appearance, rejects occupied visible destinations, verifies native persistence and unchanged visible surroundings. Never automatically repeats uncertain writes. Exports a final preview. |
| goodnotes_study_revision_statusA | Read saved revision progress, backup, selected changes, source impact, previews and stable managed block IDs. includeContent adds saved text for planning; saved content is not a fresh read of manual edits. |
| goodnotes_review_study_revisionC | Independently inspect an interrupted revision from complete matching evidence, including unchanged visible surroundings. Preserves uncertain receipts and never replays mutations. Missing checkpoints require individual inspection. |
| goodnotes_prepare_study_boardB | Begin a resumable lecture-to-board workflow: verify the chosen lecture title, duplicate it, export the copy and return source-page excerpts. Stable requestId prevents duplicate preparation. Originals remain unchanged. |
| goodnotes_plan_study_boardB | Plan a source-based native learning board locally before writing: summaries, original PDF figure crops, questions and answers. Measures text, wraps lines, rejects overflow/overlap and saves a preview plus an immutable execution plan. Semantic content is supplied by the caller. |
| goodnotes_run_study_boardA | Execute bounded steps of a prepared native learning board. Each block verifies text/style/layout/appearance after reload; verified receipts resume without duplicate writes. Uncertain writes stop for review. Returns progress and timings. |
| goodnotes_study_board_statusA | Read saved study progress, output board, final preview, per-stage timings and errors without opening a browser. Compact by default; includeEvidence returns full saved block receipts and source-export details. |
| goodnotes_review_study_boardB | Independently verify an interrupted study block from its saved native checkpoint. Only a proven matching result advances the workflow; original uncertain receipts stay unchanged and no mutation is replayed. Audit-only failures can be safely repeated. |
| goodnotes_image_crop_infoC | Read one selected image’s native rectangular crop and full source identity. Cancels the draft and returns a short-lived cropId. |
| goodnotes_shape_style_infoB | Read one guarded native shape fill opacity and stroke thickness. Excludes ink and groups; returns a short-lived styleId. |
| goodnotes_set_shape_styleA | Set a prepared native shape fill opacity (0 to 100 in steps of 10; 0 disables fill) and/or stroke thickness (0.10 to 2.00 mm). Preserves existing color, pattern and geometry; verifies values and appearance after reload. |
| goodnotes_text_box_style_infoA | Probe selected text-box styling. Returns supported:false without writing if the native whiteboard menu lacks it; otherwise returns settings and a short-lived guarded styleId. |
| goodnotes_set_text_box_styleA | Set prepared text-box background/border colors (hex or none), border/corner/padding points and shadow. Preserves exact text and character formatting; verifies native settings and appearance after reload. |
| goodnotes_crop_imageB | Apply a prepared rectangle in fractions of the current source preview. Goodnotes may replace the source with cropped pixels. Saves original pixels privately and verifies cropped pixels and appearance after reload. |
| goodnotes_set_document_favoriteB | Set one authorized notebook/board favorite flag. Requires its exact title and previous favorite flag from the library; checks identity and state after reload. |
| goodnotes_get_folder_styleB | Read folder color, icon and favorite state, optionally listing native color/icon choices. |
| goodnotes_set_folder_styleA | Change one authorized folder color, icon or favorite flag. Requires its current value and checks all three settings after reload. |
| goodnotes_manage_folderA | Rename or move one explicitly authorized folder. MCP-created folders are authorized automatically. Verifies folder identity, parent and direct children; refuses a move into itself. |
| goodnotes_prepare_unlockA | Select a locked sticky, text box, image or shape at a preview point (use the border for unfilled shapes). Verify its native unlock control and prepare a content/appearance guard. Does not unlock it. |
| goodnotes_unlock_objectC | Unlock a prepared native sticky, text box, image or shape position/size lock. Checks unchanged content/view, appearance and native unlocked state after reload. |
| goodnotes_unlock_stickyB | Unlock one previously prepared native sticky. Refuses changed content/view and verifies unlocked state and unchanged appearance after reload. |
| goodnotes_expand_stickyA | Expand a sticky collapsed by this server using its saved visual checkpoint. Requires the same page/zoom/viewport and unchanged collapsed region. |
| goodnotes_restore_documentB | Recover one document using its verified trash operation receipt. Checks original identity, folder and PDF content baseline. |
| goodnotes_verify_restored_documentA | Independently check whether a trashed document has returned with its original identity and content. Never sends Recover again or rewrites old receipts. |
| goodnotes_list_trashA | List a bounded part of the native Trash, including document and page IDs. Never empties Trash. |
| goodnotes_trash_documentA | Move one explicitly writable document to Trash after saving a PDF backup. Binds its current title and verifies its exact ID in Trash. |
| goodnotes_list_templatesC | Read native paper/cover templates for one page using the current size/color filter. Returns exact IDs and page-order guards. |
| goodnotes_set_templateB | Replace a page background or cover with a listed native template. Saves a PDF backup, verifies picker selection and page identities, and compares exported appearance/text across reload. |
| goodnotes_board_settingsB | Read the current whiteboard background pattern and color. |
| goodnotes_set_board_backgroundB | Change whiteboard pattern/color with current-state guards; verify saved native settings after reload. |
| goodnotes_statusB | Check the isolated Goodnotes login and list explicitly writable documents. |
| goodnotes_listC | List one library folder. Returns itemPath values for opening documents. |
| goodnotes_openA | Open an itemPath returned by goodnotes_list; return a compact view handle. |
| goodnotes_inspectB | Open an existing Goodnotes Web document URL and prepare a view. No screenshot by default. |
| goodnotes_previewB | Return one image of the current document viewport, only when visual positioning is needed. |
| goodnotes_read_textA | Read typed text at a point relative to the preview canvas. Set expectedKind to sticky or shape to enter its native text editor; an unfilled shape requires a point on its border. Returns a targetId for guarded replacement or rich-text edits. No handwriting OCR. |
| goodnotes_write_textA | Replace the text of a previously read target, only in a locally allowed document. An empty string clears only an explicitly read native shape label, keeping its shape. Verifies exact text and native kind after reload. Use a unique operationId; never retry an uncertain write with a new ID. |
| goodnotes_operation_statusA | Read a local operation receipt after a timeout or restart. Pending/uncertain means inspect the document; do not repeat a write with a new ID. |
| goodnotes_exportA | Export all pages to a private local PDF and index its text. Returns exportId and file path. Never changes the cloud document. |
| goodnotes_read_documentB | Read cached PDF pages, with bounded automatic local OCR for pages without text. Continue with nextPage/nextOffset; OCR/formulas need visual checking. Refresh explicitly for current content. |
| goodnotes_search_documentB | Search exported pages, using bounded local OCR where text is missing. Reports incomplete coverage and OCR provenance; absence is not proof about handwriting. |
| goodnotes_render_pageB | Render one exported PDF page for reading handwriting, scans, diagrams and layout. No desktop capture. |
| goodnotes_ocrA | Recognize 1–10 exported pages locally in English/German. Adds approximate OCR text to reads/searches; handwriting, formulas and tables require visual checking. |
| goodnotes_createB | Create a folder, notebook or whiteboard in a library folder. Newly created documents become writable; use a unique operationId. |
| goodnotes_manage_documentB | Duplicate a document, or rename/move a writable document. Duplicates become writable. Uses library itemPath values; no permanent deletion or sharing. |
| goodnotes_edit_textA | Edit text and apply body formatting plus up to 20 nonoverlapping formatRanges in one verified save. Extra ranges address the final text after replacement and override body formatting. List/highlight require the whole field. UTF-16 offsets; end exclusive. Reload verification remains mandatory. |
| goodnotes_select_objectB | Select one visible board object by point, or a group using a rectangular region. Returns a guarded selectionId; preview to check what was selected. |
| goodnotes_transform_objectA | Move, resize, duplicate or delete the guarded selection in a writable document. dx/dy are fractions of canvas size; scale factors are relative. Keeps local before/after evidence and checks after reload. |
| goodnotes_read_handwritingB | Read real ink strokes in a visible rectangular region using Goodnotes native conversion preview, then cancel. Does not replace the handwriting. Background images/PDF text are not native ink. |
| goodnotes_convert_handwritingB | Replace previously recognized handwriting with editable text in a writable document. Optionally correct recognition text first; verifies the resulting text after reload. |
| goodnotes_create_objectB | Create a sticky note, rectangle, ellipse, triangle, diamond, rounded rectangle or ink strokes in a writable document. Coordinates are relative to the current canvas. Uses current Goodnotes tool colors; verifies appearance after reload. |
| goodnotes_navigateA | Open a page, zoom in/out by steps, or pan the document by scroll pixels. Returns a fresh viewId; all previous targets expire. |
| goodnotes_sync_statusB | Report visible Web connectivity/sync messages. Cannot confirm delivery to another device or force iPad synchronization. |
| goodnotes_refresh_indexB | Build/resume a private recursive library index in bounded steps. Reuse jobId until complete. Refreshes snapshots using visible metadata hints and max age; force=true rereads all. Does not change cloud notes. |
| goodnotes_search_libraryB | Search persistent local document titles and indexed text across folders. Reports snapshot timestamps and gaps. Empty query lists known items. Does not open the browser. |
| goodnotes_plan_batchA | Save a concrete batch plan without changing Goodnotes. Use batch_help for the fields of up to three action types. Steps are flat objects with action plus its fields; all are strictly validated before saving. Typed references to verified earlier results are supported. Run separately; private inputs persist locally. |
| goodnotes_run_batchA | Execute/resume a saved batch in bounded steps, with PDF snapshots before destructive edits by default. Verified operations never repeat; ambiguous writes stop for review. |
| goodnotes_batch_statusA | Read batch progress, receipts, backup paths and errors after interruption. Inputs omitted by default. |
| goodnotes_skip_batch_stepB | Skip an unfinished step after inspecting its uncertain outcome. Does not undo it. Remaining work can then resume. |
| goodnotes_list_outlinesB | List native outline entries with stable entry/page identities and conflict hashes. Paginated; reports incomplete scans. Nested/imported outline structures are not supported for editing. |
| goodnotes_manage_outlineA | Rename or delete one flat native outline entry using its exact old title, outline hash and page-order hash. Rename requires title. Saves private metadata and verifies every exposed outline entry and page order after reload. Never deletes a page. |
| goodnotes_list_pagesC | Read native page identities, count and order fingerprint. Refuses incomplete/virtualized sidebars. Invalidates canvas handles. |
| goodnotes_manage_pagesB | Duplicate, add, reorder, rotate, outline or trash one page in an allowed document. Requires expected count; provide order hash to guard concurrent changes. Deletion first saves a PDF/order checkpoint for restore_page. Verifies native identities after reload. |
| goodnotes_import_pdfB | Import an explicitly supplied absolute local PDF path as a new notebook; verify title/page count and allow future edits. File content is uploaded to your Goodnotes account. |
| goodnotes_find_objectsB | Find visible text locations on a board using local OCR. Returns compact candidates with coordinates/confidence; no screenshot tokens. Off-screen objects require pan/zoom and another scan. |
| goodnotes_select_matchA | Select a previously found text object after checking its pixels and reading its actual editable text. Rejects non-editable PDF/handwriting matches; returns text and selection handles. |
| goodnotes_plan_layoutA | Plan a grid of existing text/sticky objects identified by unique text queries. Saves a batch; no movement until run_batch. Centers must fit in the current viewport. Does not resize objects or guarantee no overlap. |
| goodnotes_combine_pdfA | Combine or extract selected pages from existing local PDF exports into a new local PDF, preserving supplied order. Never modifies cloud originals. Import the resulting path explicitly if desired. |
| goodnotes_study_bundleB | Save source text, assistant-supplied summary/tasks and Anki-compatible TSV cards locally with source references. The assistant must supply the learning content. Does not call another AI or import into task/flashcard apps. |
| goodnotes_insert_imageB | Insert an explicitly supplied local PNG/JPEG into an allowed document and verify its appearance after reload. Uploads this image to Goodnotes. Returns a selection for moving/resizing. |
| goodnotes_create_textB | Create an editable text box at an empty canvas point. Refuses an existing non-empty text field; checks exact persistence after reload. |
| goodnotes_draw_connectorA | Draw a straight line or arrow as native ink strokes using the current pen style. Endpoints are canvas fractions. This is drawn ink, not a connector that follows moved objects. |
| goodnotes_object_colorsA | Read the native color palette for the current guarded selection. Colors depend on its type: text, sticky, ink or shape. No custom color/palette writes. |
| goodnotes_color_objectA | Apply one color returned by object_colors to an allowed selection. Checks native color and appearance after reload. May recolor a whole selected group. |
| goodnotes_scan_boardB | Scan a bounded grid of a whiteboard using measured native viewport coordinates and local OCR. Resumable by scanId; returns compact progress. Does not claim complete coverage of an infinite board. |
| goodnotes_search_board_scanB | Search saved text locations across scanned whiteboard viewports without opening the browser. |
| goodnotes_select_board_matchA | Return to a saved board location, verify its visible and editable text, and select it. Stops if the location or contents changed. |
| goodnotes_remember_objectA | Save a labeled visual bookmark for a guarded selected object, including shapes/images. Persists measured board or notebook-page coordinates and an appearance fingerprint; changes invalidate the bookmark. |
| goodnotes_recall_objectB | Return to a saved board or notebook-page object and reselect it only if its appearance still matches. Returns a new guarded selection handle. |
| goodnotes_create_snapshotA | Create a native Goodnotes duplicate as a recovery snapshot, verify page count and save its source mapping locally. Requires a concrete title; no original contents are changed. |
| goodnotes_restore_snapshotB | Restore a saved native snapshot into a NEW independently editable document. Keeps the original and snapshot intact. Checks snapshot title/page identities; does not overwrite originals. |
| goodnotes_compare_exportsA | Compare two PDF snapshots by page position, extracted text and optionally rendered appearance. Bounded page ranges; returns differences without modifying documents. |
| goodnotes_retry_rejected_stepA | Prepare a fresh attempt only when the old receipt proves NO mutation was sent. Preserves the old receipt and attempt history. Rejects uncertain, pending or missing receipts; run_batch executes the prepared retry. |
| goodnotes_copy_native_selectionB | Copy a guarded rectangular lasso selection to another allowed document with the native clipboard. Verifies source and saved visible appearance; does not certify exact text or hidden properties. Different backgrounds or overlaps can prevent verification. |
| goodnotes_copy_pageA | Copy one native page into another notebook using Goodnotes in-app clipboard. Preserves editable contents; verifies page identities, text and rendered appearance. Both page-order hashes are required. Does not remove the source page. |
| goodnotes_object_optionsB | Read supported front/back, lock, collapse and author-display commands for the exact current selection. |
| goodnotes_arrange_objectC | Apply a command returned by object_options to the guarded selection; verify its appearance and, for toggle states, its native inverse command after reload. |
| goodnotes_move_native_objectA | Move one text box/sticky or image from a whiteboard or notebook page to another allowed document. Saves a source PDF, verifies a native copy, reacquires the unchanged original before deleting it, and rechecks both ends. Separate operations, not atomic; failure can leave two copies. |
| goodnotes_verify_moved_objectA | Audit a saved native move after interruption: requires verified copy/deletion receipts, checks the deleted source region and native destination copy, and preserves old receipt status. Never repeats paste or delete. |
| goodnotes_restore_pageA | Restore one page deleted by this MCP using its saved pre-delete PDF checkpoint. Requires unchanged remaining pages and authorization, recovers the exact native page and verifies original order/content. Never restores arbitrary historical pages. |
| goodnotes_verify_restored_pageA | Independently verify a page restoration against its saved deletion checkpoint: exact native identities/order and full PDF content baseline. Does not repeat recovery or change the original receipt. |
| goodnotes_copy_image_objectB | Copy one native image into another document/page through Goodnotes Copy/Paste. Requires sourceSha256 and region from image_crop_info; checks original pixels/crop and saved appearance. Source stays intact. |
| goodnotes_copy_text_objectB | Copy one verified native text box or sticky into another document/page through Goodnotes Copy/Paste. Verifies editable text, formatting, kind and appearance after reload; leaves source intact. |
| goodnotes_verify_restoreB | After an interrupted restore, verify the already-created native copy against its saved snapshot baseline without repeating any write. Preserves the old uncertain receipt. |
| goodnotes_batch_helpB | Return detailed batch input schemas only for the requested action types, avoiding the cost of advertising every action schema on every tool-discovery call. |
| goodnotes_verify_copied_objectA | Verify an existing native text/sticky/image or lasso-selection paste from its saved local checkpoint. Reacquires its page across zoom changes, performs type-specific content checks or compares captured source appearance, and checks saved appearance; never pastes again or rewrites the old receipt. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 107 tools
The tool set is organized into several near-identical workflow families (prepare/plan/run/status/review for study_board, study_collection, study_revision, board_adoption, and batch) whose boundaries are hard to distinguish without deep reading. Many read/select/copy/restore tools also overlap (select_object vs select_match vs select_board_match; restore_page vs verify_restored_page; copy_page vs copy_text_object vs copy_native_selection), inviting misselection.
Almost all names use a snake_case goodnotes_ prefix with a verb_noun structure, and the workflow suffixes (prepare/plan/run/status/review) are applied consistently. Minor deviations like board_settings, operation_status, object_colors, image_crop_info and batch_help use noun phrases rather than verbs, but the overall convention is predictable.
107 tools is far beyond a reasonable agent-facing surface for a single server, even for a feature-rich app like Goodnotes. The workflow families multiply into dozens of near-duplicate entry points, and an agent must carry an enormous schema just to choose a tool.
Coverage is broad: library browsing, document/page management, templates, trash/restore, boards, text/object editing, OCR, handwriting, exports, snapshots, outlines, folders, and batch/study workflows. Gaps are minor — no sharing/collaboration, no permanent deletion, no custom palette writes, and nested outline editing is explicitly unsupported.