name: raindrop description: "Store and retrieve bookmarks in Raindrop.io using the Raindrop MCP server. Use when saving research sources, PDFs, articles, or any URL encountered during work. Also use when searching or browsing existing bookmarks by tag, text, or collection."
Raindrop Bookmarking Skill
Overview
Use the raindrop/* MCP tools to save, tag, and retrieve bookmarks in the user's Raindrop.io account. Every useful URL discovered during research, every PDF downloaded, and every tool or documentation page referenced should be bookmarked with structured metadata.
MCP Setup
The Raindrop MCP is an official hosted HTTP server provided by Raindrop.io. It requires a Raindrop Pro account.
Endpoint: https://api.raindrop.io/rest/v2/ai/mcp
Transport: Streamable HTTP
Docs: https://developer.raindrop.io/mcp/mcp
Client setup guide (Claude, VS Code, Cursor, ChatGPT): https://help.raindrop.io/mcp
Configuring in VS Code (mcp.json)
{
"servers": {
"raindrop": {
"type": "http",
"url": "https://api.raindrop.io/rest/v2/ai/mcp"
}
}
}
Authentication is handled via OAuth 2.1 (browser prompt on first use) or a Bearer token from the Raindrop.io REST API.
If the
mcp_raindrop_*tools are not available, direct the user to the setup guide at https://help.raindrop.io/mcp.
MCP Tools Available
| Tool | Purpose |
|---|---|
mcp_raindrop_create_bookmark |
Save a single URL with title, excerpt, tags, collection |
mcp_raindrop_update_bookmark |
Update excerpt/tags on an existing bookmark (e.g. after processing) |
mcp_raindrop_list_bookmarks |
List recent bookmarks, optionally by collection |
mcp_raindrop_search_bookmarks |
Search by text query, tags, and/or collection |
mcp_raindrop_search_bookmarks_by_text |
Quick full-text search |
mcp_raindrop_search_bookmarks_by_tags |
Filter by tag(s) |
mcp_raindrop_bulk_create_bookmarks |
Save a list of raw URLs in one call |
mcp_raindrop_scan_and_add_links |
Scan markdown files/dirs for URLs and bookmark them |
mcp_raindrop_analyze_research_links |
Analyze files for link patterns — use before bulk-saving |
mcp_raindrop_delete_bookmark |
Remove a bookmark by ID |
Collections Configuration
Collection IDs are personal and differ per account. This skill uses a local config file so the collections reference is not hardcoded here.
Config file location
~/.config/raindrop-skill/collections.json
First use — create the config
On first use (or when collection_id is needed), check whether the config exists:
ls ~/.config/raindrop-skill/collections.json
If missing, create it by:
Fetching the user's collections via
mcp_raindrop_list_bookmarksor by calling the Raindrop REST API:GET https://api.raindrop.io/rest/v1/collections Authorization: Bearer <token>Writing the result to
~/.config/raindrop-skill/collections.jsonin this format:
{
"_schema": "raindrop-skill-collections-v1",
"_instructions": "Map human-readable names to Raindrop collection IDs. Add 'description' to help the agent pick the right collection.",
"collections": [
{
"id": 0,
"name": "Unsorted",
"description": "Default inbox — use when no better collection fits"
}
]
}
- Ask the user to review and enrich the file with
descriptionfields so the agent can pick the right collection automatically.
Using the config
When a collection_id is needed:
- Read
~/.config/raindrop-skill/collections.json. - Match the content domain/topic to the best collection by
description. - Fall back to the
Unsortedcollection (id0or omitcollection_id) if no match is found.
For research sessions: prefer the most specific collection. Omitting
collection_idlands the bookmark in "All Bookmarks".
Standard Excerpt Format
Always write excerpts in this structured format so they are searchable and self-documenting:
[CATEGORY] YYYY-MM-DD | <one-line purpose>. <key claim or finding>. ZK: [[note-id]]. Session: <path-or-topic>.
Examples:
[research][methodology] 2026-02-28 | Pacheco-Vega AIC reading method. Core digestion protocol for literature-reviewer agent. ZK: [[20260228T...md]]. Session: .github/agents/literature-reviewer.agent.md
[tools][mcp] 2026-02-28 | FastMCP v3 stdio transport for VS Code. run_stdio_async() pattern. Session: code/src/raindrop/mcp_server/
[tango][community] 2026-02-15 | Study on milonga attendance decline in European cities. Key: COVID accelerated pre-existing trends. ZK: [[20260215T...md]]. Session: content/blog/01/
Standard Tag Taxonomy
Apply tags from multiple levels — always at least one from each applicable level:
Level 1 — Domain (pick one)
research · tools · tango · writing · tech · home · health · work · personal
Level 2 — Content Type
methodology · tutorial · reference · paper · pdf · video · thread · tool · api · mcp · book
Level 3 — Processing State
inbox — not yet read
lit-review — being processed via AIC
aic-processed — AIC note created, ZK link in excerpt
tier-1 through tier-4 — deep-research tier classification
Level 4 — Topic Tags
Free-form, specific: pacheco-vega · fastmcp · zettelkasten · clean-architecture · raindrop · limesurvey · etc.
Workflows
Save a source during research
1. Read ~/.config/raindrop-skill/collections.json → pick best collection_id
2. mcp_raindrop_create_bookmark(
url=<url>,
title=<title>,
excerpt="[domain][type] YYYY-MM-DD | <summary>. Session: <path>",
tags=["research", "inbox", "<topic>"],
collection_id=<id from config>
)
3. After AIC note created → mcp_raindrop_update_bookmark(
bookmark_id=<id>,
excerpt="... ZK: [[note-id]]. AIC: complete.",
tags=[..., "aic-processed"] # replace "inbox" with "aic-processed"
)
Save a downloaded PDF
1. Read ~/.config/raindrop-skill/collections.json → pick best collection_id
2. mcp_raindrop_create_bookmark(
url=<original-pdf-url>,
title=<paper-title>,
excerpt="[research][pdf] YYYY-MM-DD | <abstract-summary>. PDF: notes/papers/YYYY-Author-keyword.pdf. Session: <path>",
tags=["research", "pdf", "lit-review", "<topic>"],
collection_id=<id from config>
)
Bulk-save URLs from markdown files
1. mcp_raindrop_analyze_research_links(
file_paths=["/path/to/notes"],
file_patterns=["*.md"]
)
# Review output — check which URLs are new/relevant
2. mcp_raindrop_bulk_create_bookmarks(
urls=["https://...", "https://..."],
default_tags=["research", "inbox"],
)
Retrieve bookmarks by topic
# By tag
mcp_raindrop_search_bookmarks_by_tags(tags=["aic-processed"])
# By text
mcp_raindrop_search_bookmarks_by_text(text_query="<keyword>")
# By collection (read id from config)
mcp_raindrop_list_bookmarks(collection_id=<id from config>)
# Combined
mcp_raindrop_search_bookmarks(query="<topic>", tags=["research"], collection_id=<id from config>)
Rules
- Bookmark on first encounter — don't wait until the end of a session.
- Always include an excerpt — a URL without context is useless later.
- Use
inboxtag on first save; replace withaic-processedafter digestion. - Pick a collection — avoid leaving everything in "All Bookmarks".
- Update after AIC — add ZK note ID to excerpt when a Zettelkasten note is created.
- Deduplicate first — run
search_bookmarks_by_textbefore creating to avoid duplicates.