# Save links and images to a Milanote moodboard with AI

> Hand your agent a pile of reference links and screenshots; it files them on the right Milanote moodboard, skips duplicates, flags the free-plan cap.

Source: https://cotlet.dev/integrations/milanote-api-mcp-server/save-links-to-moodboard

References arrive all week from a Slack thread, a client email, a folder of screenshots and forty browser tabs. On Friday you open the Brand refresh moodboard in Milanote and paste them in one Link card at a time, and half of them never make it.

Cotlet does it in your own Milanote account with list\_boards, get\_board, add\_link and upload\_image, called by your AI agent, an n8n workflow or a script.

[Request access](https://cotlet.dev/app/signup?app=milanote) [All Milanote tools](https://cotlet.dev/integrations/milanote-api-mcp-server)

Hosted · nothing to install or maintain

Official options

## Can Milanote do this on its own?

Milanote has no API for adding links or images (checked 12 Oct 2026). Its own tools are the Link card, the Add Image button with multi-select, drag and drop, and the Web Clipper for Chrome, Safari and Firefox, all used by hand while the board is open. None of them takes a list of URLs from a chat or a document, and none checks the board for duplicates.

By hand

## How you do it in Milanote today

1. Open the board in Milanote, drag a Link card out of the left-hand toolbar, paste the URL and press Enter; Milanote then fetches a preview image and a description for that one card.
2. Repeat the Link card for every reference, because a Milanote Link card holds a single URL and the help center describes no way to paste a list of them at once.
3. For screenshots, click Add Image in the Milanote toolbar and select several files; they land in the board's Unsorted column, and you drag each one onto the canvas from there.
4. The Milanote Web Clipper saves an image through the Save button on that image, or highlighted text through Save to Milanote, and the arrow next to Save to Home only offers your ten most recently viewed boards.
5. Nothing in Milanote warns you that a link is already on the board, so repeated references pile up, and the leftovers in a chat thread are the ones that get lost.

With an agent

## How to save links and images to a Milanote moodboard with AI

Prompt

```
Here are the references from this week: 12 links from our Slack thread and the screenshots in ./refs. Put them on the Moodboard sub-board of Brand refresh, skip anything already there, and tell me what did not fit.
```

1. 01  
### Find the exact board, not just the name  
The agent walks list\_boards from the top level and passes parent\_board\_id to reach a sub-board such as Brand refresh > Moodboard. When two boards share a title, it shows both parents and asks which one you mean before adding anything.
2. 02  
### Read the board first  
get\_board lists the cards already on the moodboard. The agent compares URLs after dropping tracking parameters such as utm\_source, and skips any reference that is already there instead of adding a second copy.
3. 03  
### Link or picture  
Web pages, YouTube or Vimeo videos and Dribbble shots go in with add\_link, since Milanote builds a preview for them. Local screenshots go in with upload\_image, one card each, under their own file names so they stay recognizable.
4. 04  
### Check sizes before uploading  
Screenshots over 10 MB, the free-plan image limit, are listed before anything is sent, and the agent asks whether your account is on Pro, where the limit is 100 MB. File types Milanote does not accept as images are reported, not converted.
5. 05  
### Stop cleanly at the cap  
If Milanote stops accepting new cards, as it does on a free account at 100 cards, the agent stops at that card and returns the references that did not get in, so nothing is silently dropped.

### What you get back

Example data

```
Board: Brand refresh > Moodboard (b_7Kq2Lm).
Added 9 link cards, including the Pentagram case study and 2 Vimeo reels.
Uploaded 6 screenshots from ./refs as image cards.
Skipped 3 links already on the board (same URL without utm tags).
Held back hero-final.tif, 14 MB, over the 10 MB image limit of a free account.
```

### Other ways to ask

- Every Friday at 5 pm, take the links I starred in the #inspiration channel this week and add them to my Moodboard board.
- Make a new board called Packaging refs inside Client A and put these 20 product links and the images in ./packaging on it.
- Add only the Vimeo and YouTube links from this doc to the Motion references board, and leave the rest out.

Before you automate it

## What Milanote allows, and what to know first

- Milanote caps a free account at 100 cards and 10 file uploads in total, and notes and images count as cards.
- Milanote accepts images up to 10 MB each on the free plan and up to 100 MB each on Pro.
- Milanote builds rich previews for links from YouTube, Vimeo, TED, SoundCloud, Google Maps, Dribbble, Instagram, Airtable and a few other services named in its help center.

add\_link and upload\_image change only your own Milanote data and reach no one else, so they run without asking first.

Sources: [Milanote Help: Links](https://help.milanote.com/en/articles/1722065-links) · [Milanote Help: Images](https://help.milanote.com/en/articles/359381-images) · [Milanote Help: File upload limits on Free and Pro](https://help.milanote.com/en/articles/1722107-how-do-file-upload-limits-differ-between-free-and-pro-plans) · [Milanote Help: Web Clipper for Chrome](https://help.milanote.com/en/articles/1015930-milanote-web-clipper-for-chrome)

REST

## Call add\_link from a script

curl

```
curl https://cotlet.dev/api/v1/milanote/add_link \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"board_id":"b_7Kq2Lm","url":"https://example.com/type-specimen"}'
```

Example response

```
{
"card_id": "c_77sW",
"board_id": "b_7Kq2Lm",
"type": "link",
"title": "Type specimen",
"url": "https://example.com/type-specimen",
"board_url": "https://app.milanote.com/b_7Kq2Lm"
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the tool is milanote\_add\_link. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/milanote-api-mcp-server#automations)

Tools

## Milanote tools this automation uses

__Cotlet Milanote tools used to save links and images to a Milanote moodboard with AI__
| Tool | Parameters |
| ------------- | ----------------------------------- |
| list\_boards | parent\_board\_id, limit |
| get\_board | board\_id, include\_comments |
| add\_link | board\_id, url |
| upload\_image | board\_id, file\_base64, file\_name |

[All 11 Milanote tools with descriptions](https://cotlet.dev/integrations/milanote-api-mcp-server#tools)

## Frequently asked questions

### Can it save links to a board someone shared with me?

Yes, if your account can edit that board. Sharing a parent board in Milanote also shares its sub-boards, so a moodboard nested inside a shared project is reachable the same way.

## More Milanote automations

- [Export a Milanote board to Markdown with AI](https://cotlet.dev/integrations/milanote-api-mcp-server/export-board-to-markdown)
- [Turn call notes into a Milanote to-do list with due dates](https://cotlet.dev/integrations/milanote-api-mcp-server/add-todo-list-with-due-dates)
- [Milanote API and MCP server: every tool](https://cotlet.dev/integrations/milanote-api-mcp-server)
- [All use cases](https://cotlet.dev/use-cases)

## Give your agent access to Milanote.

Free 7-day trial with 5,000 credits, no card needed. Cotlet is independent and not affiliated with Milanote.

[Request access](https://cotlet.dev/app/signup?app=milanote)
