reMarkable API and MCP server Let your AI agent keep your reMarkable in order.

Connect your reMarkable cloud files and document details to an agent or a script. Use MCP or REST to prepare a notebook index and folder reports.

  • Free 7-day trial, no card
  • Unofficial, not affiliated with reMarkable
reMarkable logo reMarkable Cloud Browser

9 tools Read and write

Import to cleanup

What can you automate in reMarkable? Use an AI agent, a workflow or a script.

  • Send PDFs and ebooks to the tablet

  • Sort new files into folders

  • Rename files to one pattern

  • Clear out finished files

  • Find a file by name or folder

  • Check Connect status and payments

No official API

Does reMarkable have an MCP server or an API? No, and no Zapier or n8n app.

reMarkable has no public API, no developer docs and no MCP server for its cloud (checked 25 Oct 2026). Cotlet runs 9 reMarkable tools hosted, over MCP for agents and REST for scripts.

  • Zapier and n8n have no reMarkable app or node. Files go in by hand: the apps, the web app, a USB cable, Read on reMarkable or the Google Drive, Dropbox and OneDrive links on the tablet.
  • Developer mode on the Paper Pro opens a root shell on the tablet itself, after a factory reset and outside the warranty. It does not reach the cloud.
  • Community tools on GitHub talk to the reMarkable cloud with a device token. Their cloud mode needs a Connect subscription, and their writes stopped working for a day on 17 Aug 2026 when reMarkable changed the sync format.
reMarkable by hand, a GitHub MCP server and Cotlet compared
What you need reMarkable appsGitHub MCP serverCotlet
Send a PDF or EPUB to the tablet By hand Yes Yes, from a link
List, rename, move and trash from an agent No Yes, on your computer Yes, hosted
Connect status and payment history By hand No Yes, read only
Read handwritten pages Convert on the tablet Some, with OCR No
Fixed for you when reMarkable changes Yes No Yes, tested every 12 h

Checked 25 Oct 2026. Sources: reMarkable Support: About my.remarkable.com · reMarkable Support: Using reMarkable without a subscription · reMarkable Support: Importing and exporting files · reMarkable Support: Developer mode · ddvk/rmapi: writes fail since 17 Aug 2026

Set up once

How does Cotlet connect to reMarkable? One account, two ways to connect.

  1. 1Sign in to reMarkable

    Use your own account in its Cotlet Cloud Browser.

  2. 2Choose MCP or REST

    Connect your agent or create a Cotlet API key.

  3. 3Run your workflow

    Ask your agent or send an HTTP request.

We never keep your reMarkable password, and nothing goes to the trash until you say so. Who can see your session

Any MCP client

Connect reMarkable to your agent or workflow

Use MCP with your AI agent, or HTTP requests in n8n, Make, Zapier and scripts. Follow the MCP setup below or jump to the REST guide.

  1. 1

    Sign in to my.remarkable.com. Create a Cotlet account, open reMarkable, sign in to your reMarkable account in its Cloud Browser and press Enable for agents.

  2. 2

    Give your agent the address. Add https://cotlet.dev/mcp/v1 to the MCP servers or connectors of your agent.

  3. 3

    Let it in. Chat apps open a Cotlet sign-in. Code editors, n8n and scripts take an API key from the console.

reMarkable shares https://cotlet.dev/mcp/v1 with every other app you enable. Turned reMarkable on after you connected? Refresh the connector to load its tools.

Claude
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect

Claude Code:
claude mcp add --transport http cotlet-remarkable \
  https://cotlet.dev/mcp/v1 \
  --header "Authorization: Bearer $COTLET_API_KEY"
ChatGPT
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth
Cursor
// ~/.cursor/mcp.json
{
  "mcpServers": {
    "cotlet-remarkable": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
Codex
# ~/.codex/config.toml
[mcp_servers.cotlet-remarkable]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
n8n
MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: remarkable_read
Make, Zapier
Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: remarkable_write
Scripts and HTTP

How to use the reMarkable REST API

Create your Cotlet API key

Create a Cotlet API key with access to reMarkable and its read operations. Store it as COTLET_API_KEY in your environment or automation platform's credential store.

Sign in to reMarkable in its Cotlet Cloud Browser and enable the app for agents. Use the my.remarkable.com account paired with your tablet.

Make your first reMarkable API request

cURL

curl "https://cotlet.dev/api/v1/remarkable/files?folder=Reading" \
  -H "Authorization: Bearer $COTLET_API_KEY"

Read one folder and follow child folders

A successful REST call puts the tool output in result. This illustrative response excerpt omits call IDs, messages and credit details.

Illustrative response excerpt

{
  "status": "success",
  "app": "remarkable",
  "tool": "list_files",
  "result": {
    "folder": "Reading",
    "items": [
      {
        "id": "f_8a1c20",
        "name": "Attention is all you need",
        "kind": "file",
        "file_type": "pdf",
        "size_mb": 2.1
      }
    ]
  }
}

Replace Reading with an existing folder name or ID, or omit folder to list the root. Read result.items for files and child folders.

File listing reads one folder level without a cursor, page or offset. Follow returned folder IDs to build a deeper inventory.

get_file returns metadata rather than notebook pages or handwriting. Payment history defaults to the most recent ten records and exposes no cursor.

reMarkable workflows for agents and automations

reMarkable workflows you configure
ToolConnect throughExample workflow
n8nHTTP RequestRead folder contents and file metadata into a recursive document index without interpreting handwriting.
MakeHTTP > Make a requestCombine subscription details and payment records into a private account-cost report.
Python or Node.jsREST APIRead account details and folder contents to verify the paired account and prepare a private library inventory.

Send Authorization: Bearer <your Cotlet API key> in request headers. You configure the schedule, destination and record comparisons.

Cotlet reads reMarkable; your workflow steps write to your chosen destination. These HTTP workflows do not require a native Cotlet connector or a prebuilt template.

Python and Node.js can use the same HTTP requests without an AI agent. Keep access keys in credentials, outside shared workflow exports.

The API and MCP reference lists operations and inputs. The REST API guide explains authentication, errors and approvals.

5 read, 4 write

reMarkable API endpoints and MCP tools

My files: import, folders and trash6

Names, folders and file types as My files shows them, one folder level per call. Imports take PDF, EPUB, JPG and PNG up to 100 MB. No tool opens pages or reads handwriting.

  • list_files List the files and folders in My files, at the top level or inside one folder. read

    Returns what the My files list shows for each entry: id, name, whether it is a file or a folder, its folder, file type and size. Entries come in the order My files shows them. It lists one folder level per call; call it again with a folder to go deeper. Any account can call it.

    MCP callremarkable_read → list_files

    REST endpointGET https://cotlet.dev/api/v1/remarkable/files

    Parameters

    Parameters: list_files
    NameTypeDescription
    folder string string Folder id or name. Leave out for the top level of My files.
    type enum enum all, files or folders. Default: all.

    Example response

    {
      "folder": "Reading",
      "items": [
        {
          "id": "f_8a1c20",
          "name": "Attention is all you need",
          "kind": "file",
          "file_type": "pdf",
          "size_mb": 2.1
        },
        {
          "id": "f_8a1c31",
          "name": "Deep Work",
          "kind": "file",
          "file_type": "epub",
          "size_mb": 1.4
        },
        {
          "id": "d_4b7e02",
          "name": "Archive",
          "kind": "folder"
        }
      ]
    }
  • get_file Read one file or folder from My files by id. read

    Returns the entry as My files shows it: name, kind, file type, size and the folder it sits in. It does not return the pages or handwriting. Use it before a rename or a move to check you have the right file.

    MCP callremarkable_read → get_file

    REST endpointGET https://cotlet.dev/api/v1/remarkable/files/{file_id}

    Parameters

    Parameters: get_file
    NameTypeDescription
    file_id string required string Id from list_files.

    Example input

    {
      "file_id": "file_8c41d2"
    }

    Example response

    {
      "id": "f_8a1c20",
      "name": "Attention is all you need",
      "kind": "file",
      "file_type": "pdf",
      "size_mb": 2.1,
      "folder": "Reading"
    }
  • import_file Import a PDF, EPUB, JPG or PNG into My files, so it syncs to your tablet. write

    Imports the file the way the Import button does. reMarkable accepts PDF, EPUB, JPG and PNG up to 100 MB per file, and turns JPG and PNG into PDF. The file appears in My files and on the tablet after it syncs. It reaches only your own library and is undone with trash_file, so it does not wait for your OK.

    MCP callremarkable_write → import_file

    REST endpointPOST https://cotlet.dev/api/v1/remarkable/files

    Parameters

    Parameters: import_file
    NameTypeDescription
    file string required string An https URL, or the id of a file sent with cotlet_upload_file.
    name string string Name to show in My files. Default: the file name.
    folder string string Folder id or name to move it into after the import. Default: top level.

    Example input

    {
      "file": "https://example.com/files/q4-board-deck.pdf",
      "name": "Q4 board deck",
      "folder": "Reading"
    }

    Example response

    {
      "id": "f_8a1c44",
      "name": "Q4 board deck",
      "kind": "file",
      "file_type": "pdf",
      "size_mb": 3.8,
      "folder": "Reading",
      "status": "imported"
    }
  • rename_file Rename a file or folder in My files. write

    Renames the entry the way Rename does in My files. Nothing else changes, and the old name comes back with one more call, so it does not wait for your OK.

    MCP callremarkable_write → rename_file

    REST endpointPATCH https://cotlet.dev/api/v1/remarkable/files/{file_id}

    Parameters

    Parameters: rename_file
    NameTypeDescription
    file_id string required string Id from list_files.
    name string required string The new name.

    Example input

    {
      "file_id": "file_8c41d2",
      "name": "Jane Doe"
    }

    Example response

    {
      "id": "f_8a1c44",
      "name": "2026-10-24 Board deck Q4",
      "previous_name": "Q4 board deck",
      "status": "renamed"
    }
  • move_file Move a file or folder to another folder in My files. write

    Moves the entry the way Move does in My files. The destination must exist; the call fails with the folder name you gave if it does not. The move reaches only your own library and goes back with one more call, so it does not wait for your OK.

    MCP callremarkable_write → move_file

    REST endpointPOST https://cotlet.dev/api/v1/remarkable/files/{file_id}/move

    Parameters

    Parameters: move_file
    NameTypeDescription
    file_id string required string Id from list_files.
    folder string required string Destination folder id or name.

    Example input

    {
      "file_id": "file_8c41d2",
      "folder": "folder"
    }

    Example response

    {
      "id": "f_8a1c44",
      "name": "2026-10-24 Board deck Q4",
      "folder": "Archive",
      "previous_folder": "Reading",
      "status": "moved"
    }
  • trash_file Move a file or folder to the trash, as Move to trash does in My files. writeasks first

    Moves the entry to the trash and returns its id and name. It does not empty the trash. The file disappears from your tablet after the next sync, so confirming matters most for folders. By default you confirm each call; you can switch that off for this tool.

    MCP callremarkable_write → trash_file

    REST endpointPOST https://cotlet.dev/api/v1/remarkable/files/{file_id}/trash

    Parameters

    Parameters: trash_file
    NameTypeDescription
    file_id string required string Id from list_files.

    Example input

    {
      "file_id": "file_8c41d2"
    }

    Example response

    {
      "id": "f_8a1c31",
      "name": "Deep Work",
      "status": "trashed"
    }

Account and Connect billing3

Read only. The card and the plan stay in your hands at my.remarkable.com.

  • get_account Read the name and email of the signed-in reMarkable account. read

    Returns the name and email that Account shows. It never returns the password or sign-in method. Use it to check which account your Cloud Browser is signed in to.

    MCP callremarkable_read → get_account

    REST endpointGET https://cotlet.dev/api/v1/remarkable/account

    Parameters

    No parameters.

    Example response

    {
      "name": "Maya Lopez",
      "email": "maya@example.com"
    }
  • get_subscription Read the Connect subscription status and billing interval. read

    Returns what Subscription shows: whether Connect or a free trial is active and the billing interval, monthly or annual. Card details stay in reMarkable. It changes nothing.

    MCP callremarkable_read → get_subscription

    REST endpointGET https://cotlet.dev/api/v1/remarkable/subscription

    Parameters

    No parameters.

    Example response

    {
      "plan": "Connect",
      "status": "active",
      "billing_interval": "annual"
    }
  • list_payments List your Connect payment history. read

    Returns the payment history that Account lets you view, newest first, with date and amount. It is read-only: it cannot change the plan or the card.

    MCP callremarkable_read → list_payments

    REST endpointGET https://cotlet.dev/api/v1/remarkable/payments

    Parameters

    Parameters: list_payments
    NameTypeDescription
    limit integer integer Most recent payments to return. Default: 10.

    Example response

    {
      "payments": [
        {
          "date": "2026-09-14",
          "amount": "39.90",
          "currency": "USD"
        },
        {
          "date": "2025-09-14",
          "amount": "39.90",
          "currency": "USD"
        }
      ]
    }
Encrypted, revocable

Who can see my reMarkable session, and how do I revoke it?

  • What we store

    Your signed-in my.remarkable.com profile, AES-256-GCM, in Finland. No password.

  • What your agent gets

    The 9 reMarkable tools. No cookie and no device token.

  • What the session sees

    Your file names and folders, account name and email, Connect payments.

  • What no tool touches

    Handwriting, the card, the plan, the password and paired tablets.

  • If reMarkable signs you out

    You get an email with a sign-in link. Google or Facebook sign-in stays yours to click.

  • How to cut access

    Disable for agents, reset the browser or change your reMarkable password.

cotlet.dev rates A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results). We have no SOC 2 report or third-party pentest yet.

Read the terms

Is it against reMarkable's terms? Account safety Their license covers the apps, not a browser.

"You as a user shall not and shall not allow any third party to: ... copy, decompile, disassemble, reverse engineer ... interfere with or disrupt the integrity of the Software or data included therein; attempt to gain unauthorized access."
reMarkable End User License Agreement, section 2.3, effective 5 Nov 2025

The EULA covers the tablet software and the mobile and desktop apps. Accounts and Connect sit under separate terms, and the Connect terms of 24 Sep 2026 say nothing about bots or outside clients. Cotlet does not touch the tablet software: it uses the web account in a browser, as you do. We found no public case of a reMarkable account closed for automation or for rmapi (checked 25 Oct 2026).

How we keep your account looking like you

  • Your own reMarkable account, signed in by you
  • One Cloud Browser with its own IP and cookies
  • No device token and no developer mode
  • Moves to the trash wait for your OK
  • If reMarkable objects, we pause the reMarkable tools for everyone within 24 h

Without Connect, the cloud keeps only files used and synced in the last 50 days. Import in batches you will read, not your whole archive at once.

Tested every 12 h

What happens when reMarkable changes? We fix the tool; your prompts stay the same.

between tests of the reMarkable reads and imports
12 h
for a call to a reMarkable tool paused for a fix
$0

reMarkable changes its cloud without notice: on 17 Aug 2026 it began to reject the way community tools wrote their file index, and every write from them failed until a fix landed the next day. A fix to our tools is ours to make. status.cotlet.dev checks the site, console and API every 3 minutes.

1 tool asks first

Approvals, undo and mistakes Only the trash asks first.

  1. 01 Finds the folder Lists My files so the import lands in the right place.
  2. 02 Imports from your link PDF or EPUB up to 100 MB, named as you asked.
  3. 03 Files the rest Moves and renames reach only your library.
  4. 04 Asks before the trash Each trash call waits in your Cotlet console.
Which reMarkable actions can be undone
ActionUndo
Import a fileYes, move it to the trash
Rename a file or folderYes, rename it back
Move a file or folderYes, move it back
Move to the trashRestore it on the tablet until the trash is emptied

1 of 9 tools asks first: trash_file, because a trashed folder leaves your tablet at the next sync. Imports, renames and moves touch only your own library and go back with one more call, so they run at once. Switch the wait off for trash_file if a weekly cleanup should run alone.

No tool empties the trash or deletes a file for good.

MCP call
{
  "name": "import_file",
  "arguments": {
    "file": "https://example.com/files/q4-board-deck.pdf",
    "name": "Q4 board deck",
    "folder": "Reading"
  }
}
REST
curl -X POST https://cotlet.dev/api/v1/remarkable/files \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"file":"https://example.com/files/q4-board-deck.pdf","name":"Q4 board deck","folder":"Reading"}'
Tool output
{
  "id": "f_8a1c44",
  "name": "Q4 board deck",
  "kind": "file",
  "file_type": "pdf",
  "size_mb": 3.8,
  "folder": "Reading",
  "status": "imported"
}

A script can call the same tools at /api/v1/remarkable with the same key and price, for example to send each new paper from a feed to Reading. A file over 100 MB or of another type fails, and a failed call is free. The tools table lists the REST path of each tool.

Pay per call

How much does the reMarkable MCP server cost?

About $14 a monthfor a reader importing 20 documents a month, 2,430 credits. Connect, if you have it, stays $3.99 a month at reMarkable.

A month of reMarkable jobs for one reader, in credits
JobCallsCredits
Import a PDF or EPUB into a folder2 × 20400
Sort new top-level files, weekly6 × 4240
Trash finished files, weekly4 × 4160
Rename a folder's files to one pattern11 × 1110
Connect status and last payments2 × 120
Cloud Browser, 30 days1,500
Total2,430
  • Free 7-day trial, no card
  • 10 credits per successful call, MCP or REST
  • 50 credits a day for the Cloud Browser, the larger part here
  • One-time packs, valid 12 months, no subscription

20 imports a month is our assumption: no public figure for a reMarkable library exists, and Send to Remarkable sells tiers of 10 and 25 documents a month. Dollars at the $29 pack rate.

Cotlet credit packs: price, credits and calls at 10 credits each
Credits Price, one time Calls at 10 credits Per 1,000 credits
5,000 $29 500 $5.80
15,000 $79 1,500 $5.27
32,000 $149 3,200 $4.66
60,000 $249 6,000 $4.15

Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.

Other options

reMarkable MCP server on GitHub or hosted: which to use GitHub has several; they read more, we file more.

Other reMarkable MCP servers and tools, checked 25 Oct 2026
OptionWhat it doesWhere it stops
SamMorrowDrums/remarkable-mcp252 stars, MIT, Python. Reads and searches documents, renders pages with OCR, uploads and manages folders over USB, SSH or the cloud.Runs on your computer. Cloud mode needs Connect and a device token in ~/.rmapi. Last commit 2 Oct 2026.
wavyrai/rm-mcp21 stars, MIT. Reads pages as images with OCR through your client; renames, moves, makes folders.Needs Connect and a token from its setup. Last commit 24 Aug 2026.
ddvk/rmapi341 stars, AGPL-3.0. Command line for the cloud: ls, put, get, mkdir, mv, rm.Not MCP. Writes failed on 17 Aug 2026 until the next day's fix.
remarkdownHosted MCP: pushes Markdown as an editable notebook, reads typed and handwritten pages back from one folder.$9 a month or $81 a year after the first push. One connected folder.
Send to RemarkableEmail a file to your own address and it lands on the tablet.Sends only. Free for 10 documents a month, 3 MB each; $9 or $25 a year for more.

Want your agent to read handwriting? Use a GitHub server or remarkdown; Cotlet does not open pages. Want imports, folders and cleanup to run from a hosted agent with no token on your laptop? That is what Cotlet does.

EU company, since 2019

Who runs Cotlet A company you can look up.

Behind Cotlet is Take Group sp. z o.o., a software company in Poland, EU (VAT PL6342984273), in business since 2019. Its founders are Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Questions about the reMarkable tools go to contact@cotlet.dev.

reMarkable API and MCP: questions

Can I use the reMarkable API without an AI agent?

Yes. Call Cotlet's REST API from a script or an HTTP step in n8n, Make or Zapier with your Cotlet key. MCP is the alternative for AI agents; you do not need to connect an agent to use REST.

How do I get access?

Sign up free at https://cotlet.dev, open reMarkable under Integrations in the console and sign in to my.remarkable.com in its Cloud Browser. The trial begins with your first app and asks for no card.

Do I need a Connect subscription?

Not for the account itself. reMarkable lists Google Drive, Dropbox and OneDrive integrations, handwriting conversion and Read on reMarkable among the features of the tablet without a subscription, with limited cloud sync (files used and synced in the last 50 days). Cotlet works in the my.remarkable.com account you already have; how much reaches your tablet depends on your plan.

Can my agent read my handwritten notes?

No. These tools work on My files as the website shows it: names, folders, imports and the trash. They do not open pages or convert handwriting to text, which the tablet does itself. Reading note content is not built.

What file types and sizes can it import?

PDF, EPUB, JPG and PNG, up to 100 MB per file. reMarkable converts JPG and PNG to PDF on import. Word and PowerPoint files go through the Office add-ins or must be saved as PDF first.

Does reMarkable have webhooks?

No. reMarkable sends no events out, so nothing tells an agent that a file arrived or changed. Run the agent on a schedule instead, for example a weekly list_files pass over your top level.

Do I need developer mode or a device token?

No. Developer mode is a Paper Pro setting that wipes the tablet, and device tokens are what the GitHub tools register. Cotlet uses your web sign-in, so your list of paired devices stays as it is.

Is the MCP server different from the REST API?

Only in how you call it. MCP and REST share the 9 tools, their inputs and answers, one API key and one price. Agents take MCP; scripts and HTTP steps take REST.

Is Cotlet affiliated with reMarkable?

No. Cotlet is independent and not affiliated with reMarkable AS.

Give your agent access to reMarkable.

Free 7-day trial with 2,000 credits, no card needed.