[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Turn Zotero PDF highlights into a literature note

> Read the highlights and comments you made in Zotero PDFs and have your agent write them into a literature note on the item, grouped by color.

Source: https://cotlet.dev/integrations/zotero-api-mcp-server/pdf-annotations-to-note

You highlighted a paper in the Zotero reader a month ago, and the highlights are still sitting in the PDF instead of in the note you need for your review.

Cotlet does it in your own Zotero account with search\_items, get\_annotations and create\_note, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=zotero) [All Zotero tools](https://cotlet.dev/integrations/zotero-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can Zotero do this on its own?

Zotero does this in the desktop reader (checked 16 Oct 2026). The Web API docs describe notes as child items with parentItem and full text of attachments, and they do not describe annotation items, so reading highlights from your own code is not documented. No official MCP server exists to ask for it.

## How you do it in Zotero today

1. Open the PDF in the Zotero reader; the Annotations tab in the left sidebar lists every highlight and underline.
2. Right-click the parent item in the items list and choose Add Note from Annotations to create a child note, or select several items and choose Create Note from Annotations for one standalone note.
3. Annotations can also be dragged into an open note one by one, or added with Add to Note from the right-click menu.
4. Each quote keeps a link back to its page in the PDF, and Show Annotation Colors in the note menu keeps the color of each highlight.
5. The note holds quotes only: the synthesis you wanted still has to be written by hand.

## How to turn Zotero PDF highlights into a literature note

Prompt

```
Find the Zotero item "Sparse attention for long documents", read its PDF annotations and write one literature note on it with the quotes grouped by color and the page of each.
```

1. 01  
### Find the right item  
search\_items looks the paper up by title. If more than one item matches, your agent asks you to pick, because a note on the wrong paper is hard to spot later.
2. 02  
### Read the annotations  
get\_annotations returns each highlight with its color, page and comment. The agent skips items with no PDF annotations and says so instead of writing an empty note.
3. 03  
### Group the quotes  
The agent groups quotes by color and keeps the page next to each one. You decide what each color means, for example yellow for claims and red for doubts, and put it in the prompt.
4. 04  
### Write the note  
create\_note adds a child note on the item. It does not touch the PDF or its highlights, and the note is a new item you can delete in Zotero with Move Item(s) to Trash….

### What you get back

Example data

```
Note added to "Sparse attention for long documents"
3 highlights read, 2 colors
Yellow (claims): 2 quotes, pages 4 and 9
Red (doubts): 1 quote, page 12
```

### Other ways to ask

- Do this for every item in the collection "Chapter 2" that has annotations and no note yet.
- Write the note as a standalone note instead, with a heading per paper.
- Only include highlights that have a comment, and put the comment under each quote.

## What Zotero allows, and what to know first

- Reader annotations are stored in the Zotero database; other PDF readers show them only after you export a PDF with embedded annotations.
- Child notes attach to one item; standalone notes belong to no item and appear next to other items in the library.
- Notes sync with item metadata and do not count against file storage, except for embedded images.
- The reader description covers highlights and underlines, so the note is built from those first.

create\_note changes only your own Zotero data and reach no one else, so it runs without asking first.

Sources: [Zotero: PDF reader](https://www.zotero.org/support/pdf%5Freader) · [Zotero: notes](https://www.zotero.org/support/notes) · [Zotero Web API v3: write requests](https://www.zotero.org/support/dev/web%5Fapi/v3/write%5Frequests)

## Call create\_note from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/zotero/notes \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"parent_item_key":"H6R2VB5D","note":"Yellow (claims): p. 4 \"Attention cost grows linearly with window size.\" p. 9 \"Recall holds up to 64k tokens.\" Red (doubts): p. 12 \"Evaluation uses one dataset.\""}'
```

Example response

```
{
"note_key": "T3P6YK8R",
"parent_item_key": "H6R2VB5D",
"created_at": "2026-10-16T09:00:00+02:00"
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is zotero\_write → create\_note. Example data.

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

## Zotero tools this automation uses

__Cotlet Zotero tools used to turn Zotero PDF highlights into a literature note__
| Tool | Parameters |
| ---------------- | -------------------------------------------------------------------------------------------------- |
| search\_items | library, query, full\_text, tag, item\_type, collection\_key, unfiled, added\_since, limit, cursor |
| get\_annotations | library, item\_key |
| create\_note | parent\_item\_key, note, collection\_key |

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

## Frequently asked questions

### Is it safe to connect Zotero to Cotlet?

Yes. You sign in to Zotero yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Zotero once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

## More Zotero automations

- [Add papers to Zotero by DOI](https://cotlet.dev/integrations/zotero-api-mcp-server/add-papers-by-doi.md)
- [Export a Zotero collection as BibTeX](https://cotlet.dev/integrations/zotero-api-mcp-server/export-collection-bibtex.md)
- [Zotero API and MCP server: every tool](https://cotlet.dev/integrations/zotero-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to Zotero.

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

[Sign up free](https://cotlet.dev/app/signup?app=zotero)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.

## For AI agents: sign your user up

Is your user asking you to sign them up for Cotlet? You can do it for them, no account or key needed.

1. Read the fields and their allowed values: GET https://cotlet.dev/api/v1/access-requests
2. Ask the user for each value: email, apps, what you will do with them. If they leave the password to you, generate a strong one and show it to them.
3. Show the user what you will send, then POST it as JSON to https://cotlet.dev/api/v1/access-requests.

One call creates the account and sends the access request; we email the user when access is granted.
