Skip to main content
Glama
rbonitz

reMarkable MCP Server

by rbonitz

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
REMARKABLE_TOKENNoreMarkable API token for cloud mode
REMARKABLE_CACHE_DIRNoDirectory for cached blobs~/.remarkable/cache/blobs
REMARKABLE_READ_ONLYNoSet to '1' to enable read-only mode0
REMARKABLE_ROOT_PATHNoRestrict server to a specific folder path
GOOGLE_VISION_API_KEYNoGoogle Vision API Key for handwriting OCR
REMARKABLE_OCR_BACKENDNoOCR backend: sampling, google, tesseract, autoauto
REMARKABLE_RETRY_DELAYNoBase delay in seconds for exponential backoff2.0
REMARKABLE_SKIP_CONFIRMNoSet to '1' to skip delete confirmation
REMARKABLE_SYNC_WORKERSNoParallel workers for cloud fetches16
REMARKABLE_DISABLE_CACHENoSet to '1' to disable on-disk blob cache
REMARKABLE_CACHE_MAX_BLOBNoMax blob size in bytes to cache4194304
REMARKABLE_RETRY_ATTEMPTSNoMaximum number of retry attempts for cloud API3
REMARKABLE_BACKGROUND_COLORNoDefault background color for image rendering#FBFBFB
REMARKABLE_DISABLE_CLOUD_FALLBACKNoSet to '1' to disable automatic cloud fallback

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
completions
{}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
remarkable_readA

Read and extract text content from a reMarkable document. Extracts content from a document with pagination to preserve context window.

Content types:

  • "text" (default): Full extracted text (PDF/EPUB content + annotations)

  • "raw": Original PDF/EPUB text only (no annotations). Works in every transport, as long as the source file is present (very large PDFs/EPUBs may not be synced to the cloud).

  • "annotations": Only annotations, highlights, and handwritten notes

Use pagination to read large documents without overwhelming context:

  • Start with page=1 (default)

  • Check "more" field - if true, there's more content

  • Use "next_page" value to get the next page

Use grep to search for specific content on the current page.

When REMARKABLE_OCR_BACKEND=sampling is set and the client supports sampling, OCR will use the client's LLM for handwriting recognition (no API keys needed).

  • document: Document name or path (use remarkable_browse to find documents)

  • content_type: "text" (full), "raw" (PDF/EPUB only), "annotations" (notes only)

  • page: Page number (default: 1). For notebooks, this is the notebook page.

  • grep: Optional regex pattern to filter content (searches current page)

  • include_ocr: Enable handwriting OCR for annotations (default: False)

remarkable_browseA

Browse your reMarkable library or search for documents. Three modes:

  1. Browse mode (default): List contents of a folder

    • Use path="/" for root folder

    • Use path="/FolderName" to navigate into folders

  2. Search mode: Find documents by name

    • Set query="search term" to search across all documents

  3. Filter by tags: Find documents with specific tags

    • Set tags=["tag1", "tag2"] to filter by tags

    • Works in both browse and search modes

Results include document names, types, modification dates, and tags.

Note: If REMARKABLE_ROOT_PATH is configured, only documents within that folder are accessible. Paths are relative to the root path.

  • path: Folder path to browse (default: "/" for root)

  • query: Search term to find documents by name (optional, triggers search mode)

  • tags: List of tags to filter documents (optional, case-insensitive)

remarkable_recentA

Get your most recently modified documents. Returns documents sorted by modification date (newest first). Optionally includes a text preview of each document's content.

Use this to quickly find what you were working on recently.

Note: If REMARKABLE_ROOT_PATH is configured, only documents within that folder are included.

  • limit: Maximum documents to return (default: 10, max: 50 without preview, 10 with preview)

  • include_preview: Include first ~200 chars of text content (default: False)

remarkable_searchA

Search across multiple documents and return matching content. Searches document names for the query, then optionally searches content with grep. Can filter by tags to narrow results. Returns summaries from multiple documents in a single call.

This is efficient for finding information across your library without making many individual tool calls.

Limits:

  • Max 5 documents per search (to keep response size manageable)

  • Returns first page (~8000 chars) of each matching document

  • Use grep to filter to relevant sections

remarkable_statusA

Check connection status, active transport, and write capabilities. Returns authentication status, the active transport (cloud, ssh, or usb-web), the document count, and a capability matrix describing what each transport can do. Use this to verify your connection, choose a transport, or troubleshoot.

Capability notes:

  • Cloud (default): full read/render/upload/mkdir/move/rename/delete — no device needed, works from anywhere your token is valid.

  • SSH: full capabilities over a local/USB connection to the tablet.

  • USB web: read, render, and upload (to root) only — the tablet's USB web interface firmware exposes no folder/move/rename/delete endpoints. For full write parity over a USB cable, use SSH mode pointed at the USB IP. Write tools (upload/mkdir/move/rename/delete) are enabled by default; run with --read-only (or REMARKABLE_READ_ONLY=1) to expose a read-only server.

remarkable_imageA

Get an image of a specific page from a reMarkable document. Renders a notebook or document page as an image (PNG or SVG). This is useful for:

  • Viewing hand-drawn diagrams, sketches, or UI mockups

  • Getting visual context that text extraction might miss

  • Implementing designs based on hand-drawn wireframes

  • SVG format for scalable vector graphics that can be edited

Merged PDF + Annotation Rendering

Set render_merged=True to composite the PDF page with the annotation layer into a single image. This is ideal for annotated PDFs where the annotation-only render is hard to interpret without the printed page context. Only works with PNG format and documents that have a PDF underlay.

Response Formats

By default, images are returned as embedded resources (EmbeddedResource) which include the full image data inline:

  • PNG: Returned as BlobResourceContents with base64-encoded data

  • SVG: Returned as TextResourceContents with SVG markup

If your client doesn't support embedded resources in tool responses, set compatibility=True to receive a JSON response with just the resource URI. The client can then fetch the resource separately.

Optionally, enable include_ocr=True to extract text from the image using OCR. When REMARKABLE_OCR_BACKEND=sampling is set and the client supports sampling, the client's own LLM will be used for OCR (no API keys needed).

Note: This works best with notebooks and handwritten content. For PDFs/EPUBs, the annotations layer is rendered (not the underlying PDF content) unless render_merged=True is set.

  • document: Document name or path (use remarkable_browse to find documents)

  • page: Page number (default: 1, 1-indexed)

  • background: Background color as hex code. Supports RGB (#RRGGBB) or RGBA (#RRGGBBAA). Default is "#FBFBFB" (reMarkable paper color), or set REMARKABLE_BACKGROUND_COLOR env var to override. Use "#00000000" for transparent.

  • output_format: Output format - "png" (default) or "svg" for vector graphics

  • compatibility: If True, return resource URI in JSON instead of embedded resource. Use this if your client doesn't support embedded resources in tool responses.

  • include_ocr: Enable OCR text extraction from the image (default: False). When REMARKABLE_OCR_BACKEND=sampling, uses the client's LLM via MCP sampling.

  • render_merged: Composite PDF page + annotation layer into one image (default: False). Only works with PNG format and documents that have a PDF underlay.

remarkable_uploadA

Upload a PDF or EPUB file to the reMarkable tablet. Uploads a local file to the tablet. Only PDF and EPUB formats are supported. Works in all three transports:

  • Cloud: uploaded via the sync protocol; supports parent_folder + document_name

  • SSH: transferred over SSH, metadata created; supports parent_folder + document_name

  • USB web: uploaded via POST /upload; lands at the root (the firmware's upload endpoint has no folder or rename field)

Requires write mode (the default; disabled with --read-only).

  • file_path: Absolute path to the local PDF or EPUB file

  • parent_folder: Destination folder path on tablet (default: root "/"). Honored in cloud and SSH modes; ignored by the USB web interface.

  • document_name: Display name on tablet (default: filename without extension). Honored in cloud and SSH modes; ignored by the USB web interface.

remarkable_mkdirA

Create a new folder on the reMarkable tablet. Creates a folder in the tablet's document hierarchy. In SSH mode the folder appears after xochitl restarts; in cloud mode it syncs to all your devices.

Works in cloud and SSH modes (default; --read-only disables). Not available over the USB web interface (the firmware exposes no folder-create endpoint).

  • folder_name: Name of the new folder

  • parent: Parent folder path (default: root "/")

remarkable_moveA

Move a document or folder to a different location. Moves a document or folder by updating its parent reference in the metadata. Find the document name with remarkable_browse() first.

Works in cloud and SSH modes (default; --read-only disables). Not available over the USB web interface.

  • document: Name or path of the document/folder to move

  • dest_folder: Destination folder path (use "/" for root)

remarkable_renameA

Rename a document or folder on the reMarkable tablet. Changes the display name of a document or folder by updating its metadata. Find the document name with remarkable_browse() first.

Works in cloud and SSH modes (default; --read-only disables). Not available over the USB web interface.

  • document: Current name or path of the document/folder

  • new_name: New display name

remarkable_deleteA

Delete a document or folder on the reMarkable tablet. DESTRUCTIVE operation. In cloud mode the item is moved to the trash (recoverable from the device's Trash). In SSH mode it is marked deleted in its metadata and disappears from the tablet UI after restart.

Works in cloud and SSH modes (default; --read-only disables). Not available over the USB web interface.

If the client supports elicitation, this tool asks the user to confirm before deleting. If the client cannot show a confirmation prompt, the delete is refused unless REMARKABLE_SKIP_CONFIRM=1 is set (for headless automation).

  • document: Name or path of the document/folder to delete

remarkable_canvasA

Open a reMarkable page in an interactive canvas viewer. Renders a notebook or document page and, in clients that support MCP Apps interactive UI, opens a canvas viewer that lets the user page through the document. This is the entry point for the interactive viewer.

The canvas is currently a read-only viewer (render + page navigation). For plain image extraction without the interactive surface, use remarkable_image instead.

Clients that do not support MCP Apps still get the rendered page back as an embedded PNG image, so this tool is useful everywhere; it just won't open the interactive panel.

  • document: Document name or path (use remarkable_browse to find documents)

  • page: Page number to open (default: 1, 1-indexed)

Prompts

Interactive templates invoked by user choice

NameDescription
summarize_recentGet an AI summary of your recent reMarkable notes
find_notesSearch your reMarkable tablet for notes on a specific topic
daily_reviewReview what you worked on today in your reMarkable tablet
export_documentExtract and format content from a specific document
organize_libraryGet suggestions for organizing your reMarkable library
meeting_notesFind and extract meeting notes from your reMarkable

Resources

Contextual data attached and managed by the client

NameDescription
remarkable_canvas_uiHTML for the reMarkable interactive canvas app (MCP Apps surface).

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rbonitz/remarkable-mcp-http-'

If you have feedback or need assistance with the MCP directory API, please join our Discord server