Productivity & teams
Redmine
Issues, time entries and projects in your Redmine, from your agent.
12 endpoints
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.
9 tools Read and write
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.
| What you need | reMarkable apps | GitHub MCP server | Cotlet |
|---|---|---|---|
| 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
Use your own account in its Cotlet Cloud Browser.
Connect your agent or create a Cotlet API key.
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
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.
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.
Give your agent the address. Add https://cotlet.dev/mcp/v1 to the MCP servers or connectors of your agent.
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.
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" Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth // ~/.cursor/mcp.json
{
"mcpServers": {
"cotlet-remarkable": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet-remarkable]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY" MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: remarkable_read 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 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.
curl "https://cotlet.dev/api/v1/remarkable/files?folder=Reading" \
-H "Authorization: Bearer $COTLET_API_KEY" A successful REST call puts the tool output in result. This illustrative response excerpt omits call IDs, messages and credit details.
{
"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.
| Tool | Connect through | Example workflow |
|---|---|---|
| n8n | HTTP Request | Read folder contents and file metadata into a recursive document index without interpreting handwriting. |
| Make | HTTP > Make a request | Combine subscription details and payment records into a private account-cost report. |
| Python or Node.js | REST API | Read 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.
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.
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
| Name | Type | Description |
|---|---|---|
| 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. |
{
"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"
}
]
} 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}
| Name | Type | Description |
|---|---|---|
| file_id string required | string | Id from list_files. |
{
"file_id": "file_8c41d2"
} {
"id": "f_8a1c20",
"name": "Attention is all you need",
"kind": "file",
"file_type": "pdf",
"size_mb": 2.1,
"folder": "Reading"
} 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
| Name | Type | Description |
|---|---|---|
| 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. |
{
"file": "https://example.com/files/q4-board-deck.pdf",
"name": "Q4 board deck",
"folder": "Reading"
} {
"id": "f_8a1c44",
"name": "Q4 board deck",
"kind": "file",
"file_type": "pdf",
"size_mb": 3.8,
"folder": "Reading",
"status": "imported"
} 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}
| Name | Type | Description |
|---|---|---|
| file_id string required | string | Id from list_files. |
| name string required | string | The new name. |
{
"file_id": "file_8c41d2",
"name": "Jane Doe"
} {
"id": "f_8a1c44",
"name": "2026-10-24 Board deck Q4",
"previous_name": "Q4 board deck",
"status": "renamed"
} 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
| Name | Type | Description |
|---|---|---|
| file_id string required | string | Id from list_files. |
| folder string required | string | Destination folder id or name. |
{
"file_id": "file_8c41d2",
"folder": "folder"
} {
"id": "f_8a1c44",
"name": "2026-10-24 Board deck Q4",
"folder": "Archive",
"previous_folder": "Reading",
"status": "moved"
} 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
| Name | Type | Description |
|---|---|---|
| file_id string required | string | Id from list_files. |
{
"file_id": "file_8c41d2"
} {
"id": "f_8a1c31",
"name": "Deep Work",
"status": "trashed"
} Read only. The card and the plan stay in your hands at my.remarkable.com.
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
No parameters.
{
"name": "Maya Lopez",
"email": "maya@example.com"
} 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
No parameters.
{
"plan": "Connect",
"status": "active",
"billing_interval": "annual"
} 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
| Name | Type | Description |
|---|---|---|
| limit integer | integer | Most recent payments to return. Default: 10. |
{
"payments": [
{
"date": "2026-09-14",
"amount": "39.90",
"currency": "USD"
},
{
"date": "2025-09-14",
"amount": "39.90",
"currency": "USD"
}
]
} Your signed-in my.remarkable.com profile, AES-256-GCM, in Finland. No password.
The 9 reMarkable tools. No cookie and no device token.
Your file names and folders, account name and email, Connect payments.
Handwriting, the card, the plan, the password and paired tablets.
You get an email with a sign-in link. Google or Facebook sign-in stays yours to click.
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.
"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."
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).
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.
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.
| Action | Undo |
|---|---|
| Import a file | Yes, move it to the trash |
| Rename a file or folder | Yes, rename it back |
| Move a file or folder | Yes, move it back |
| Move to the trash | Restore 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.
{
"name": "import_file",
"arguments": {
"file": "https://example.com/files/q4-board-deck.pdf",
"name": "Q4 board deck",
"folder": "Reading"
}
} 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"}' {
"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.
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.
| Job | Calls | Credits |
|---|---|---|
| Import a PDF or EPUB into a folder | 2 × 20 | 400 |
| Sort new top-level files, weekly | 6 × 4 | 240 |
| Trash finished files, weekly | 4 × 4 | 160 |
| Rename a folder's files to one pattern | 11 × 1 | 110 |
| Connect status and last payments | 2 × 1 | 20 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 2,430 |
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.
| 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.
| Option | What it does | Where it stops |
|---|---|---|
| SamMorrowDrums/remarkable-mcp | 252 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-mcp | 21 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/rmapi | 341 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. |
| remarkdown | Hosted 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 Remarkable | Email 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
No. Cotlet is independent and not affiliated with reMarkable AS.
Free 7-day trial with 2,000 credits, no card needed.
May we use Google Analytics to see which pages help people? It sets cookies only if you accept. No ads, and we never sell data. Cookie policy