bots.st/milanote-by-cotlet
Milanote by Cotlet
Add boards content and automate browsing
191 ms
answered our call
- State
- Answered
- Protocol
- MCP 2025-06-18
- Tools listed
- 60
- Answered
- 4 of the last 4 calls
How to reach it
- MCP, HTTP
https://cotlet.dev/mcp/v1/milanote/connect - MCP, HTTP
https://cotlet.dev/mcp/v1/milanoteNeeds header Authorization - PyPI
uvx milanote-api-mcpReleased 5 Nov 2026, version 1.0.5
What it can do
| Tool | What it says it does |
|---|---|
add_column | Empty column on a board, to group cards in a stack. Adds a titled column on top of the board's Unsorted panel and returns its column_id; move_card with to_column_id puts cards into it. Editors of the board see it, nobody is notified. |
add_comment | Comment card on a board, or a reply in a comment thread, posted under your name. Without reply_to_id it adds a new comment card on top of the board's Unsorted panel; with it the comment joins that thread. Everyone who can open the board sees it under your name, and Milanote notifies people already… |
add_label | Put a label on a card, creating the label when the name is new. Matches the name against your labels (list_labels) without regard to case; created is true when it made a new one. The card keeps its other labels. Editors of the board see the label on the card. |
add_link | Link card for a web address, with the page's title and preview, added to Unsorted. Adds one link card on top of the board's Unsorted panel. Milanote fetches the page itself and fills in the title, description and preview image, as when you paste a link; the answer returns what it found (title is… |
add_note | Note card with plain text, added to a board's Unsorted panel. Adds one note card on top of the board's Unsorted panel and returns its card_id. The text is plain: line breaks become paragraphs, Markdown is not converted. On the free plan a note counts toward the 100 cards limit. Editors of the… |
add_notes | Up to 15 note cards in one call, into Unsorted or a column, in the order given. Creates one note card per text, in the order given, on top of the board's Unsorted panel or of a column, and returns each card_id. The text is plain: line breaks become paragraphs, Markdown is not converted, any script… |
add_task | Add tasks to the end of an existing to-do list, each with an optional due date and time. Appends the tasks, unchecked, after the last task of the list and returns the whole list with the new task_ids. The tasks already there stay as they were. A due date without a time is due at 5 PM; Milanote… |
add_todo_list | To-do list card with tasks, each with an optional due date and time, added to Unsorted. Creates one to-do list on top of the board's Unsorted panel with all its tasks, unchecked, and returns each task_id. A due date without a time is due at 5 PM; Milanote reminds you at 9 AM the day it's due, by… |
cotlet_app_guide | How to work in an app by clicking in the user's Cloud Browser with Cotlet's browser tools: which browser to use for this workspace and the sign-in link, the method step by step, the app's screens, menus and actions, notes, and the app's dedicated tools when Cotlet has them. Call it before the… |
cotlet_apps | The apps of the user's workspace and whether each works now: access granted or requested, the app account in the user's Cloud Browser (connected, signed out, signed in but not connected), and the one step the user has to take, with the console link. Free. Needs the user's Cotlet API key or… |
cotlet_browser_click | Clicks element `element`, or point `x`, `y` of the screenshot; `double` double-clicks, `button: right` right-clicks. Answers the page after it: the elements and text in view, with the same numbers. Says when nothing changed. A link that would open a new tab opens in this one. Buttons that pay or… |
cotlet_browser_close | Ends the browser session when the task is done: the browser keeps its cookies and sleeps, and the per-minute charge stops. Answers the session's minutes and credits. |
cotlet_browser_download | Gets the file that clicking `element` (a download link or button) or opening `url` starts: answers its name, type, size and a link valid 15 minutes; CSV, JSON and other text files also as text. |
cotlet_browser_drag | Drags from one element or point to another: a card between columns, a piece on a board, a slider's handle. Answers the page after it: the elements and text in view, with the same numbers. |
cotlet_browser_evaluate | Runs a JavaScript function body on the page and answers what it returns, as JSON. Use it to extract data the page holds (a table, a list, attributes); act with the other tools. It cannot send requests, click, submit, or read cookies or storage; a filled field's value reads [hidden by Cotlet]… |
cotlet_browser_fill_form | Fills several fields in one step: text fields take text, drop-downs an option's label, checkboxes, radios and switches true or false. Stops at the first field that fails and names those filled. Does not send the form: click its button after. Answers the page after it: the elements and text in… |
cotlet_browser_find | Finds `text` on the whole current page, frames included: the elements whose label holds it, with their numbers, and each line of text that holds it. Use it instead of reading or scrolling a long page for one thing. |
cotlet_browser_hover | Rests the pointer on an element or a point, to open a hover menu, a tooltip or a preview. Answers the page after it: the elements and text in view, with the same numbers. |
cotlet_browser_navigate | Opens `url` in the current tab, or goes `history` back or forward. Answers the page after it: the elements and text in view, with the same numbers. |
cotlet_browser_open | Starts the user's Milanote Cloud Browser (a real Chrome on Cotlet, signed in to Milanote as the user; use it for what the Milanote tools do not cover) and opens `url`. Call it first. Only Milanote pages open. Answers the page after it: the elements and text in view, with the same numbers. |
cotlet_browser_press | Presses a key on the focused element: Enter to send, Tab to the next field, Escape to close a pop-up, arrows in a list or slider, or one character (a site's shortcut). Answers the page after it: the elements and text in view, with the same numbers. |
cotlet_browser_read | The whole current page: its text (up to 20,000 characters) and a numbered list of its links, buttons, fields and other controls, open dialogs first. Use it on a new page or when a step's answer is not enough; `element` reads only inside one element (a dialog, a form, a list). Never returns field… |
cotlet_browser_screenshot | A JPEG of the visible part of the page. Use it for boards, canvases, maps, charts and layout that the text does not show, then click or drag by `x`, `y` of the image. |
cotlet_browser_scroll | Scrolls with the mouse wheel: `down` or `up` by `screens`, to `top` or `bottom`, until `element` is in view, or inside a panel or list (`inside`). Content that loads on scroll appears. Answers the page after it: the elements and text in view, with the same numbers. |
cotlet_browser_select | Chooses `option` (its label as listed, or its value) in drop-down `element`. For a home-made drop-down, click it, then click the option. Answers the page after it: the elements and text in view, with the same numbers. |
cotlet_browser_type | Types `text` into field `element`, replacing what it held; `submit` presses Enter after it. For several fields use fill_form. Answers the page after it: the elements and text in view, with the same numbers. Password, card and one-time code fields are refused: the user types them. |
cotlet_browser_upload | Puts files into file field or upload button `element`: each file is {"url": "https://..."} or {"file_id": "..."} of a file uploaded to Cotlet; up to 10 files, 20 MB each. Answers the page after it: the elements and text in view, with the same numbers. |
cotlet_browser_wait | Waits until `text` shows on the page (at most `seconds`, default 5, up to 20), or just `seconds`: for results that load slowly. Says whether the text appeared. Answers the page after it: the elements and text in view, with the same numbers. |
cotlet_get_call | Status of an earlier Cotlet call, by its call_id: pending (waits for the owner's approval in the Cotlet console), approved, running, success, rejected, expired, blocked or failed. For a call that answered with status pending or running. |
cotlet_report_issue | Sends a report to the Cotlet team: a tool that failed or returned wrong data, an error you could not get past, or a step the browser could not do, with the page, the step and what you saw. A missing dedicated tool is not a problem to report: do the task in the browser. A feature the user asks for… |
cotlet_request_apps | Requests access to apps for the user's workspace, as Request access in the console: every app is granted at once. Not needed to work in an app: the user's AI works in any web app in their Web browser with cotlet_app_guide. An app with dedicated tools gets them after the user signs in to it in… |
cotlet_upload_file | Returns a one-time upload_url and a file_id for a local file (an image for a post, an attachment). The file is sent to upload_url with an HTTP PUT; an argument that takes a file accepts {"file_id": "..."}. Up to 25 MB, the URL works once. Free. Needs the user's Cotlet API key or sign-in. |
cotlet_whoami | The Cotlet account this connection acts as: email, workspace, access status, the API key or OAuth client in use with its scope, the apps the workspace may call and its credit balance. Free. Needs the user's Cotlet API key or sign-in. |
create_board | New board on your Home or nested inside another board. Creates an empty board and returns its board_id for the tools that add cards. It appears in the Unsorted panel of the parent board (your Home by default), where you can drag it onto the canvas. It is private unless the parent board is shared… |
delete_comment | Delete a comment you wrote, for everyone. Removes your own comment from its thread; the thread and other people's comments stay. There is no trash for comments, so it cannot be brought back. By default you confirm each call; you can switch that off for this tool. Waits for the owner's approval. |
duplicate_board | Copy a board with everything on it, sub-boards included, as a template. Does what Duplicate in a board's menu does: Milanote copies every card, column, comment and sub-board into a new board and returns its board_id. The copy lands in the parent board's Unsorted panel, private to you unless that… |
edit_comment | Replace the text of a comment you wrote. Overwrites your own comment with plain text, as Edit then Save does in the thread. Others' comments cannot be changed. People who already read it get no new notification. |
edit_note | Replace the text of a note card. Overwrites the whole note with plain text: line breaks become paragraphs, and bold, links or lists the note had are lost. Only note cards; to-do lists change with set_task_done. Editors of the board see the change at once; Milanote's undo in the app does not reach… |
export_board | Export a board as Markdown, plain text, Word, PDF or PNG, as the Export menu does. Runs Milanote's own export of one board. markdown and plain_text return the text in content; word, pdf and png return only file_url. Text formats follow the board's reading order and leave out comments and sub-board… |
get_board | Every card on a board: notes, links, images, files, to-do lists, columns and sub-boards. Returns one entry per card with its type, ID and content, so other tools can point at it. Order is the board's: the canvas top to bottom, then the Unsorted panel (section says which). Notes come back as plain… |
get_sharing | Who can open a board: owner, editors and the read-only link with its settings. Lists the board's owner and the editors invited to it; status is invited for someone who has not made a Milanote account yet. Editors of a parent board can open it too and are not listed here. read_only_link is null… |
get_usage | How many cards your account uses against the free plan's limit, by card type. used is what Milanote counts toward the free plan's limit (100 cards, more with referral bonuses); once exceeded is true Milanote refuses new cards until you delete some or upgrade. On a paid plan unlimited is true and… |
invite_editor | Invite someone by email to edit a board and the boards inside it. Adds the address as an editor, as Share, Invite editors via email does, and Milanote emails them a link. status is invited when they have no Milanote account yet (a free one is enough to edit), active when they do. Milanote allows… |
list_boards | Boards inside one board, by default the boards on your Home, with title, ID and link. Lists the boards one level down: on your Home, or inside parent_board_id. Boards nest like folders, so pass a board's id as parent_board_id to walk down. Order is the board's own: the canvas top to bottom, then… |
list_labels | The labels you can put on cards, with name and colour. Labels are yours, not a board's: the same label can sit on cards across all your boards. add_label puts one on a card by name and creates it when it is new. |
list_recent_boards | Boards you opened lately, newest first, wherever they sit in your board tree. The list behind Milanote's search box before you type: every board you viewed, shared ones too, with when you last opened it and how many times. Home and Quick notes appear like any other board. Boards you have not… |
list_tasks | Every task in the to-do lists of your boards and the boards inside them, with due dates. Walks down from Home, or from board_ids, through every board inside, and returns each task with its board, to-do list, text, done state and due date (due_time only when one was set). Reads up to 100 boards… |
list_trash | Cards and boards you moved to the trash, with the board each one came from. Lists your own trash, newest first: one entry per trashed card or board with its ID, content and board_id of the board it was on. restore_card puts one back where it was. Milanote keeps trashed items until you empty the… |
move_card | Move a card or a sub-board to another board, or into or out of a column. Moves it the way drag and drop does, keeping its ID, comments and content. With to_column_id it goes to the top of that column; without it, to the top of the target board's Unsorted panel. Moving a board moves everything… |
publish_board | Turn on a board's read-only link, which anyone can open without signing up. Does what Share, Enable read-only link does and returns the link. Anyone who has it sees the board and the boards inside it, without a Milanote account. A board keeps one link: publishing again, even after unpublish_board… |
remove_editor | Take away someone's access to a board, or cancel an invite they have not accepted. Removes one editor, by user_id or email, as the Share dialog's Remove does. They lose the board and the boards inside it unless a parent board is shared with them too; Milanote does not tell them. The owner cannot… |
rename_board | Change a board's title. Renames the board everywhere it shows: its card on the parent board, the breadcrumb and search. The board_id and the links to it stay the same. Your Home cannot be renamed. |
restore_card | Take a card or board out of the trash and put it back where it was. Puts it back on the board, and in the column, it was trashed from, at its old place; a restored board comes back with its contents. column_id is set when it went back into a column. Only items in your own trash, as list_trash… |
search_boards | Find boards and cards by text across your boards, like the Search icon in Milanote. Runs Milanote's own search over every board you can open. Each result is a board, with the cards on it that matched (matches) and the boards above it (path). A board whose title matched has no matches. Sorted by… |
set_card_color | Colour the bar on top of a note, to-do list, link, file or column, or clear it. Sets one of Milanote's eleven card colours, as the Color tool does; none removes it. Boards and images take no colour here. Editors of the board see the change at once. |
set_due_date | Set, change or remove the due date of one task in a to-do list. Finds the task by task_id or by its exact text and sets its due date, or removes it when due_date is null. A date without a time is due at 5 PM; Milanote reminds you at 9 AM the day it's due. Times are in the Cloud Browser's time… |
set_task_done | Tick or untick one task in a to-do list. Finds the task by task_id or by its exact text and sets it done or not done, as clicking its checkbox does; the rest of the list stays as it was. Returns the whole list after the change. When two tasks share the text, pass the task_id instead. |
trash_cards | Move cards or sub-boards to the trash, as the Delete key does. The cards leave the board for everyone who can see it, and a trashed sub-board takes its contents with it. Nothing is gone for good: list_trash shows them and restore_card puts one back where it was, until the trash is emptied in… |
unpublish_board | Turn off a board's read-only link; people who had it can no longer open the board. Does what switching off Share, Enable read-only link does. Editors keep their access. publish_board turns the same link back on, so anyone who kept it can open the board again. was_published is false when the board… |
upload_image | Image card from a PNG, JPEG, GIF or WebP file, added to a board's Unsorted panel. Uploads one image per call, as Upload in Milanote does, and returns its card_id and size. The file goes in as a file argument (a link, an upload or base64), up to 10 MB; the extension of the name follows the real… |
In its maker's words
Boards, notes and links in your Milanote workspace.
- Website
- cotlet.dev/integrations/milanote-api-mcp-server
- Source
- github.com/cotletdev/milanote-api-mcp-server
- Publisher
- cotlet.dev (12 listings in the registry)
- Listed from
- the official MCP Registry as
dev.cotlet/milanote - Version
- 1.0.2, updated 24 Oct 2026
- Kinds of work
- Documents and files, Browser and automation, Images, video and audio
The domain it lives on
- cotlet.dev
- registered 12 Oct 2026 (1 month ago), at Key-Systems GmbH, its home page is a working site
From our own crawl of domain names: registry records and the home page as our crawler last saw it.
Every call we made
| When | What happened | Time |
|---|---|---|
| Answered | 191 ms | |
| Answered | 234 ms | |
| Answered | 205 ms | |
| Answered | 205 ms |
Next door
Is this your bot? Claim its address to add a verified badge and keep the listing current.