Skip to main content
Glama
SamMorrowDrums

reMarkable MCP Server

remarkable_image

Read-onlyIdempotent

Render a reMarkable document page as a PNG or SVG image to view hand-drawn diagrams, sketches, or annotated PDFs. Supports compositing PDFs with annotations, background color, and optional OCR text extraction.

Instructions

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

PNG pages backed by an imported PDF automatically composite the PDF page with its reMarkable annotations. Set render_merged=False for an annotation-only render, or True to explicitly request compositing. SVG remains annotation-only.

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. Google Vision is used when configured; otherwise OCR runs locally with Tesseract.

Note: Native notebooks retain their existing stroke rendering behavior. If older USB firmware returns only a native PDF export, PNG remains available; SVG and explicit annotation-only rendering require an rmdoc archive and return a clear error when it is unavailable.

  • 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).

  • render_merged: PDF compositing mode for PNG: None (default) automatically merges PDF-backed pages, True explicitly requests merging, and False returns the annotation-only layer. SVG output remains annotation-only.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNo
documentYes
backgroundNo
include_ocrNo
compatibilityNo
output_formatNopng
render_mergedNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well-covered. The description adds substantial behavioral context beyond annotations: details about merged PDF+annotation rendering behavior, response format differences (PNG as Blob, SVG as Text), compatibility fallback mechanism, OCR behavior (Google Vision vs local Tesseract), and legacy firmware limitations. This is comprehensive behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (usecase, instructions, parameters, examples) and front-loaded purpose. However, it is somewhat verbose for an AI agent tool description—some details about OCR implementation (Google Vision vs Tesseract) and legacy firmware behavior could be in external docs or less critical for initial selection. Still, every section earns its place for a complex tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (7 parameters, 1 required, no output schema), the description is completely sufficient. It covers input semantics, behavioral details (merged rendering, response formats), error cases (legacy firmware), and provides examples for all key parameter configurations. The lack of output schema is compensated by clear explanations of what each format returns (BlobResourceContents, TextResourceContents, JSON with URI).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description fully carries the burden of explaining parameters. It does so excellently: each parameter is described with default values, format requirements (e.g., hex codes for background), behavioral implications (render_merged values), and edge cases (transparent background notation). The examples provide concrete usage patterns that clarify parameter combinations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get an image of a specific page from a reMarkable document.' It specifies the verb (Get), resource (image of a page), and scope (from a reMarkable document). The use cases and examples further differentiate it from siblings like remarkable_read (text extraction) and remarkable_canvas (canvas manipulation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool vs alternatives. The use cases section lists specific scenarios (viewing diagrams, getting visual context, etc.) and the examples cover common invocation patterns. The instructions explain when to use compatibility mode and include_ocr, and the parameters section clarifies when to use render_merged with different document types. Sibling tools like remarkable_export and remarkable_read are implicitly distinguished.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

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/SamMorrowDrums/remarkable-mcp'

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