raindrop-mcp-server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@raindrop-mcp-serversave https://example.com to my 'Dev' collection with tags react, tutorial"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Raindrop.io MCP Server
A Model Context Protocol (MCP) server for interacting with the Raindrop.io API. This server enables Claude Code and other MCP clients to manage bookmarks, collections, and tags in your Raindrop.io account.
Features
Raindrop (Bookmark) Management
Get single or multiple bookmarks
Search bookmarks across collections
Create new bookmarks with metadata
Update existing bookmarks
Delete bookmarks
Collection Management
List all collections (root and nested)
Get specific collection details
Create new collections
Update collection properties
Delete collections
Tag Management
Get all tags (optionally filtered by collection)
Rename tags
Merge multiple tags into one
Delete tags
User Information
Get current user profile and settings
Related MCP server: Raindrop.io MCP Server
Installation
Option 1: Easy Install with MCPB (Recommended)
The easiest way to install this MCP server is using the MCP Bundle (MCPB) file with Claude Desktop:
Download the
raindrop-mcp-server.mcpbfile from this repositoryDouble-click the file (or drag it into Claude Desktop)
Enter your API token when prompted - get it from https://app.raindrop.io/settings/integrations
That's it! The bundle contains everything needed and will automatically configure itself in Claude Desktop.
Option 2: Manual Installation
If you prefer manual installation or are using a different MCP client:
cd raindrop-mcp-server
npm installThen proceed with the manual configuration below.
Configuration
Manual Configuration (Skip if using MCPB)
1. Get Your Raindrop.io API Token
Create a new app or open an existing one
Copy the Test token from your app settings
2. Configure MCP Settings
Add the server to your Claude Code MCP settings file (~/.config/claude-code/mcp.json or equivalent):
{
"mcpServers": {
"raindrop": {
"command": "node",
"args": ["/home/user/raindrop-mcp-server/src/index.js"],
"env": {
"RAINDROP_TOKEN": "your-token-here"
}
}
}
}Replace your-token-here with your actual Raindrop.io test token.
Alternative: You can also set the token as an environment variable:
export RAINDROP_TOKEN="your-token-here"Available Tools
Bookmark Tools
get_raindrop
Get a single bookmark by ID.
Parameters:
id(string, required): The raindrop ID
get_raindrops
Get bookmarks from a collection with filtering and pagination.
Parameters:
collectionId(number, optional): Collection ID (0=all, -1=unsorted, -99=trash, default: 0)search(string, optional): Search querypage(number, optional): Page number (0-indexed, default: 0)perpage(number, optional): Results per page (max 50, default: 25)sort(string, optional): Sort order (-created, created, score, title, etc.)nested(boolean, optional): Include bookmarks from nested collections
search_raindrops
Search for bookmarks across all collections.
Parameters:
query(string, required): Search query textpage(number, optional): Page numberperpage(number, optional): Results per page
create_raindrop
Create a new bookmark.
Parameters:
link(string, required): URL to bookmarktitle(string, optional): Bookmark titleexcerpt(string, optional): Descriptionnote(string, optional): Personal notescollection(number, optional): Collection ID (-1 for Unsorted)tags(array, optional): Array of tag stringsimportant(boolean, optional): Mark as favoritepleaseParse(object, optional): Auto-parse metadata from URL
update_raindrop
Update an existing bookmark.
Parameters:
id(string, required): The raindrop ID to updatelink,title,excerpt,note,collection,tags,important(optional): Fields to update
delete_raindrop
Delete a bookmark (moves to trash, or permanently deletes if already in trash).
Parameters:
id(string, required): The raindrop ID to delete
Collection Tools
get_collections
Get all root-level collections.
get_child_collections
Get all nested (child) collections.
get_collection
Get a specific collection by ID.
Parameters:
id(string, required): The collection ID
create_collection
Create a new collection.
Parameters:
title(string, required): Collection nameview(string, optional): Display view (list, grid, masonry)sort(number, optional): Sort orderpublic(boolean, optional): Public accessibilityparentId(number, optional): Parent collection ID for nesting
update_collection
Update an existing collection.
Parameters:
id(string, required): The collection IDtitle,view,sort,public,parentId,expanded(optional): Fields to update
delete_collection
Delete a collection by ID.
Parameters:
id(string, required): The collection ID
Tag Tools
get_tags
Get all tags, optionally filtered by collection.
Parameters:
collectionId(number, optional): Filter tags by collection
rename_tag
Rename a tag across all or specific collection.
Parameters:
oldTag(string, required): Current tag namenewTag(string, required): New tag namecollectionId(number, optional): Limit scope to collection
merge_tags
Merge multiple tags into one.
Parameters:
oldTags(array, required): Array of tag names to mergenewTag(string, required): Target tag namecollectionId(number, optional): Limit scope to collection
delete_tags
Delete one or more tags.
Parameters:
tags(array, required): Array of tag names to deletecollectionId(number, optional): Limit scope to collection
User Tools
get_user
Get current user information and profile.
Usage Examples
Once configured in Claude Code, you can interact with your Raindrop.io bookmarks naturally:
"Show me my recent bookmarks"
"Create a bookmark for https://example.com with tags 'programming' and 'tutorial'"
"Search for bookmarks about 'machine learning'"
"Create a new collection called 'Research Papers'"
"Move bookmark ID 12345 to collection ID 67890"
"Get all my tags"
"Rename tag 'js' to 'javascript'"API Rate Limits
The Raindrop.io API allows up to 120 requests per minute per authenticated user. The rate limit headers will be included in responses:
X-RateLimit-LimitRateLimit-RemainingX-RateLimit-Reset
About MCP Bundles (MCPB)
This project includes an MCP Bundle (.mcpb file) for simplified installation. MCPB is a standardized format for packaging MCP servers with all their dependencies and configuration metadata.
Benefits of using MCPB:
One-click installation in Claude Desktop
No manual configuration of paths or dependencies
Self-contained - includes all node_modules and code
Automatic updates - easier to distribute new versions
User-friendly - prompts for required configuration (like API tokens)
The .mcpb file is essentially a zip archive containing:
Server source code
All npm dependencies
A
manifest.jsonwith metadata and configuration schemaLicense and documentation
Learn more about MCP Bundles: https://github.com/anthropics/mcpb
Documentation
License
MIT
Available Tools
15 toolscreate_collectionC
Create a new collection.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order number | |
| view | No | Display view: list, grid, or masonry | list |
| title | Yes | Collection name | |
| public | No | Make collection publicly accessible | |
| parentId | No | Parent collection ID for nesting |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavior. It merely says 'Create a new collection' without stating whether creation is idempotent, whether duplicate titles are allowed, what defaults apply beyond the schema's view=list and public=false, or what side effects occur. For a write operation, this is a significant disclosure gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single four-word sentence with zero waste and the core purpose front-loaded. It is efficient, though its brevity borders on under-specification — it earns its place but could have used the available space to add value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description must carry more weight. It never explains what a collection is in this system, whether the response returns the new collection or its ID (critical for later nesting via parentId or attaching raindrops), or how parentId nesting behaves. For a tool with 5 semantically rich parameters, this is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (sort, view, title, public, parentId) already carries a description in the schema. The description adds no parameter-level meaning, so the baseline 3 applies: the schema does the heavy lifting and the description neither helps nor hurts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Create') and resource ('a new collection'), which clearly identifies the operation and inherently distinguishes it from read, update, and delete siblings as well as from create_raindrop. However, it adds nothing beyond what the tool name already conveys — no scope, constraints, or behavior — so it stops short of the 5 bar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus update_collection (modifying an existing collection), create_raindrop (creating a child raindrop), or get_collections (reading existing ones). There is no mention of prerequisites, ordering (e.g., needing parentId to pre-exist), or context that would help an agent select this tool appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_raindropC
Create a new bookmark.
| Name | Required | Description | Default |
|---|---|---|---|
| link | Yes | URL to bookmark (required) | |
| note | No | Personal notes (max 10000 chars) | |
| tags | No | Array of tags | |
| title | No | Bookmark title (max 1000 chars) | |
| excerpt | No | Description or excerpt (max 10000 chars) | |
| important | No | Mark as favorite | |
| collection | No | Collection ID (default: -1 for Unsorted) | |
| pleaseParse | No | If true, Raindrop auto-fetches the page title and excerpt from the URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'Create a new bookmark' and discloses no side effects, authentication requirements, rate limits, or behavior such as metadata fetching via pleaseParse. For a mutation tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with immediate front-loading of the core action. The word 'new' is mildly redundant, but overall it is appropriately terse and free of fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is an 8-parameter mutation tool with no annotations and no output schema. A one-line description is insufficient for an agent to understand return values, automatic parsing behavior, or usage context. The rich schema covers parameters, but the broader context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter is already documented in the input schema. The description adds no parameter-specific meaning, so the baseline of 3 is appropriate given the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: 'Create a new bookmark.' The verb 'create' and resource 'bookmark' (a synonym for raindrop) make the action unambiguous. It implicitly differentiates from create_collection by naming a different resource type, but it does not explicitly reference sibling tools or Raindrop-specific context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as update_raindrop or create_collection. The description is purely a statement of the operation with no mention of prerequisites, typical use cases, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_collectionB
Delete a collection by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Collection ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the behavioral disclosure burden. It states that the operation is a deletion, but does not reveal side effects, irreversibility, permissions, or what happens to associated raindrops. This is a significant gap for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It communicates the core action and target resource immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description is too thin. It omits important context such as cascading deletions, idempotency, and what response or errors to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the only parameter, id. The description's 'by ID' adds no real semantic value beyond the schema, but the schema is already complete, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Delete'), a specific resource ('collection'), and the selection method ('by ID'). This clearly distinguishes it from siblings like get_collection, update_collection, and delete_raindop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives, nor are there exclusions or prerequisites. The intended use is only implied by the tool name and short description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_raindropA
Delete a bookmark by ID. Moves to trash, or permanently deletes if already in trash.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Bookmark ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the key side effect: deletion moves the bookmark to trash, and a bookmark already in trash is permanently deleted. This is important non-obvious behavior that an agent needs to know before invoking a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one efficient sentence with no filler. It front-loads the primary action, then adds the critical trash/permanent-delete nuance. Every word contributes to safe and correct invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete tool with no output schema, the description covers the essential behavior and the important edge case. It does not mention error responses or what happens if the ID does not exist, but that is a minor gap for such a simple operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the 'id' parameter as 'Bookmark ID to delete.' The description adds no additional format, source, or validation details beyond 'by ID,' which is acceptable given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb and resource: 'Delete a bookmark by ID.' It immediately distinguishes itself from sibling tools like get_raindrop, update_raindrop, and delete_collection by naming both the action and the target entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is clear: delete a bookmark by its ID. It does not explicitly mention alternatives or exclusion criteria, but the operation is simple enough that 'Delete a bookmark by ID' provides unambiguous usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_tagsB
Delete one or more tags.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | Yes | Tag names to delete | |
| collectionId | No | Optional collection ID to limit scope |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral disclosure burden. It only indicates a destructive mutation without explaining consequences such as whether tags are removed from all associated raindrops, whether deletion is reversible, or whether collectionId changes the scope of deletion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no filler. It is immediately understandable and front-loaded with the action and target.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with complete schema coverage, the description provides a minimal viable baseline. However, it lacks behavioral context such as effects on associated raindrops, authorization needs, or what happens when collectionId is omitted, which would help an agent use it more confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters well. The description adds little beyond restating that multiple tags can be deleted, which the array type already implies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — 'Delete one or more tags' — which is clear and distinguishes it from tag-related siblings like get_tags, rename_tag, and merge_tags. It could be slightly more explicit about whether this deletes tag definitions globally or removes tags from raindrops, but the name and schema mostly resolve that.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as delete_raindrop, rename_tag, or merge_tags. The description neither states typical use cases nor warns against using it when a different operation is intended.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_collectionA
Get a specific collection by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Collection ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Get' clearly implies a read-only, non-destructive operation, but nothing else is disclosed—no error behavior, auth requirements, or response details. This is adequate for a simple getter but adds no depth beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short, front-loaded sentence with no wasted words. It states the action and scope efficiently without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema or annotations, the description is minimally viable: the agent knows what to call and how to identify the collection. But it omits any mention of when to prefer this over get_collections, what the response looks like, or failure behavior, so meaningful gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the 'id' parameter is already described as 'Collection ID'). The description adds no extra meaning or constraints beyond what the schema provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'collection', with 'specific' and 'by ID' distinguishing it from the sibling get_collections (plural listing). It is direct and leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the wording 'specific ... by ID': an agent can infer this is for fetching exactly one collection when an ID is known. However, it does not explicitly contrast with get_collections or state when not to use this tool, so the guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_collectionsA
Get root-level collections. Set include_children=true to also return nested collections.
| Name | Required | Description | Default |
|---|---|---|---|
| include_children | No | Also return nested/child collections |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It discloses the key behavior (root-level only by default, nested collections when include_children is true). However, it doesn't clarify whether nested collections are returned recursively or only immediate children, nor does it mention pagination, response format, or any other side effects. Core behavior is covered, but depth is limited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with two clear parts: the primary purpose and the optional parameter behavior. Every word earns its place, and the primary action is front-loaded. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only one optional parameter and no output schema, the description is mostly complete. It tells the agent how to get root-level collections and optionally include nested ones. The main omission is the absence of any description of the response structure or whether nested collections are one-level or recursive, but the tool name and simplicity make these less critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description slightly reinforces the parameter's meaning ('returns nested collections') but adds little beyond what the schema already states. It does not add syntax, format, or edge-case information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource, 'Get root-level collections', with a clear scope qualifier ('root-level') that distinguishes it from the sibling tool get_collection, which presumably fetches a single collection. The optional include_children behavior further clarifies the exact capability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on parameter usage ('Set include_children=true to also return nested collections') but does not explicitly compare against alternative tools such as get_collection or mention when not to use this tool. The 'root-level' wording implies a listing use case, but no explicit exclusions or alternatives are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_raindropA
Get a single bookmark by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Bookmark ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It only says 'Get a single bookmark by ID,' which implies a read operation, but it does not disclose what happens for missing IDs, what the response contains, or whether any side effects occur. The verb 'Get' suggests safety, but it is not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short, front-loaded sentence that states the action and the key selector with no filler or redundant phrasing. Every word contributes to understanding the tool's core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter lookup, this is minimally sufficient: the agent knows the action, the resource, and the identifier to supply. However, with no output schema and no annotations, the description does not cover expected return behavior, failure handling, or how this tool relates to the sibling get_raindrops, so fuller context would improve usability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single parameter as 'Bookmark ID' with 100% coverage. The description's 'by ID' simply restates the parameter's meaning and adds no additional format, validation, or usage nuance, so it does not exceed the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Get a single bookmark by ID.' The word 'single' and the ID selector clearly distinguish this from get_raindrops and other collection-level tools, so an agent can identify the tool without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: fetch exactly one bookmark by its identifier. However, it does not explicitly state when to choose this over get_raindrops, nor does it mention any exclusions or alternative routing. The guidance is present only by implication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_raindropsA
Get bookmarks from a collection with optional search and filtering. collectionId: 0=all, -1=unsorted, -99=trash.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (0-indexed) | |
| sort | No | Sort: -created (default), created, score, -sort, title, -title, domain, -domain | -created |
| nested | No | Include bookmarks from nested collections | |
| search | No | Search query | |
| perpage | No | Results per page (max 50) | |
| collectionId | No | Collection ID (0=all, -1=unsorted, -99=trash) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It makes the read-only retrieval intent clear through 'Get' and adds useful collectionId semantics (0=all, -1=unsorted, -99=trash). It does not mention pagination behavior, response shape, or authentication expectations, which keeps this at a minimally viable level.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The first sentence immediately conveys purpose, and the second highlights the most important scoping values for collectionId. It is well structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema fully documents invocation details, and the description supplies purpose and collection scope. The lack of an output schema and explicit sibling alternatives means the agent must infer response shape and tool-selection boundaries, but this is still complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all six parameters with defaults, constraints, and descriptions, so the baseline is 3. The description repeats the collectionId sentinel values but does not add meaning beyond what the input schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Get bookmarks from a collection' with 'optional search and filtering.' The plural 'bookmarks' combined with collection scope distinguishes it clearly from get_raindrop (single bookmark) and get_collection (collection metadata).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving bookmarks from a specific or special collection, optionally filtered by search. However, it never explicitly states when to prefer this over get_raindrop or other sibling tools, so the routing guidance is inferred rather than declared.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tagsA
Get all tags, optionally filtered by collection.
| Name | Required | Description | Default |
|---|---|---|---|
| collectionId | No | Optional collection ID to filter tags |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral transparency burden. It correctly signals a read-only operation and exposes the optional filter behavior, but it does not mention response shape, pagination, sorting, or any authentication requirements. For a simple read tool this is adequate but has clear gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word adds utility, and the optional filter is stated concisely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter optional-filter list tool with no output schema, the description is largely sufficient: an agent can confidently invoke it to fetch all tags or filter by collection. The only material omission is a description of the returned tag objects, but the phrase 'get all tags' provides enough grounding for a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the only parameter, collectionId, is already described as an optional filter. The description's 'optionally filtered by collection' adds only marginal context beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('all tags') and adds the optional collection filter, making the tool's function immediately identifiable. It clearly distinguishes get_tags from siblings like get_collections or get_raindrops, which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: call this tool to retrieve all tags, optionally narrowed to a specific collection via collectionId. It does not explicitly state when not to use it or name alternatives, but the context is sufficiently clear given the sibling operations are mostly mutations or target other resources.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_userA
Get current user information.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. The word 'Get' makes the read-only nature clear, and 'current user' scopes the operation. However, it does not describe response structure, whether authentication is required, or error behavior, leaving modest gaps for a zero-parameter read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, direct sentence with no filler. The verb and resource are front-loaded, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description is sufficient for an agent to invoke it correctly. The only mino gaps are what 'user information' includes and whether 'current' refers to the authenticated user, but these are minor for such a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and schema description coverage is 100%, so the schema fully covers the input. Per the baseline rule for zero-parameter tools, the description does not need to add parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'Get' and a specific resource, 'current user information,' which clearly distinguishes it from sibling tools operating on collections, raindrops, and tags. An agent can tell exactly what this tool does without opening external documentation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when/when-not language, but 'current user' clearly implies the authenticated user context, and no sibling tool overlaps with this purpose. This provides clear usage context without exclusions, though not an explicit alternative routing statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_tagsC
Merge multiple tags into one.
| Name | Required | Description | Default |
|---|---|---|---|
| newTag | Yes | Target tag name | |
| oldTags | Yes | Tags to merge | |
| collectionId | No | Optional collection ID to limit scope |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure, but it only says 'merge multiple tags into one.' It does not state whether oldTags are deleted, whether existing raindrops are rewritten, whether the operation is destructive, or how collectionId scopes the merge.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundancy and the core action is front-loaded. However, it may be slightly too terse given the lack of annotations and the need for side-effect disclosure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, this description is incomplete. It does not explain the fate of oldTags, the impact on raindrops, or the meaning of the optional collectionId beyond 'limit scope,' leaving an agent uncertain about important call-time behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter already has a description. The tool description adds only a general sense that oldTags are the multiple inputs and newTag is the single output, which is marginal beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('merge') and resource ('tags'), and the phrase 'multiple tags into one' conveys the core transformation. It is distinguishable from sibling tools like rename_tag and delete_tags, though it does not explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as rename_tag or delete_tags. The description does not mention a use case, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_tagB
Rename a tag across all or a specific collection.
| Name | Required | Description | Default |
|---|---|---|---|
| newTag | Yes | New tag name | |
| oldTag | Yes | Current tag name | |
| collectionId | No | Optional collection ID to limit scope |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals that the operation can affect all collections by default, but it does not state whether the rename is destructive, reversible, or what happens if newTag already exists. This is a significant transparency gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler or redundancy. The key verb and scope appear immediately, making it easy to parse and remember.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that can rename tags globally, the absence of annotations and output schema makes the description incomplete. It omits important operational context such as default scope behavior, potential overwriting or merging semantics, and return value expectations. An agent would need additional documentation to use it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all parameters are clearly documented in the schema. The description adds slight context by clarifying the 'all or specific collection' behavior, but it does not provide meaningful new semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Rename a tag') and clearly defines the operational scope ('across all or a specific collection'). It does not explicitly contrast with sibling tools like merge_tags, but the scope detail helps differentiate the action from other tag operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the primary use case: renaming a tag globally or within one collection. However, it gives no guidance on when not to use this tool or how it relates to merge_tags and delete_tags, leaving alternatives unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_collectionC
Update an existing collection.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Collection ID to update | |
| sort | No | Sort order number | |
| view | No | Display view: list, grid, or masonry | |
| title | No | Updated collection name | |
| public | No | Public accessibility | |
| expanded | No | Expand/collapse state | |
| parentId | No | Parent collection ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral disclosure burden. It only states that the operation updates an existing collection, implying mutation but not disclosing side effects, permission requirements, idempotency, or what happens to unspecified fields. The word 'existing' adds a small precondition, but little else.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler words and front-loads the primary action and object. It is appropriately concise, though it borders on being too sparse, carrying little information beyond what the tool name already implies.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating tool with 7 parameters, no annotations, and no output schema, the description is incomplete. It does not clarify whether the update is partial, how the 'id' parameter is used beyond identification, or what a successful response looks like. The schema covers parameter existence, but not the operational semantics an agent needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description itself adds no parameter-level meaning, but every parameter is already documented in the schema with its own description. No additional semantic explanation is required from the free-text description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Update an existing collection.' It clearly distinguishes this tool from siblings like create_collection, delete_collection, and get_collection by indicating modification of an already-existing resource. It does not, however, enumerate what fields can be updated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not explain when to use this tool instead of create_collection or delete_collection, nor does it mention any prerequisites, typical calling context, or whether the update is partial or full replacement. An agent must infer usage from the tool name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_raindropB
Update an existing bookmark by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Bookmark ID to update | |
| link | No | Updated URL | |
| note | No | Updated notes | |
| tags | No | Updated tags array | |
| title | No | Updated title | |
| excerpt | No | Updated description | |
| important | No | Favorite status | |
| collection | No | Move to collection ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It only conveys that the tool mutates an existing bookmark but does not disclose whether updates are partial or full replacement, what happens to unspecified fields, what response is returned, or any permission requirements. This is a significant gap for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear, front-loaded sentence with no filler. It efficiently conveys the core action and object, though it sacrifices behavioral detail for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, no output schema, and no annotations, a one-line description is insufficient. An agent cannot determine partial-update semantics, how required vs optional fields interact, or what the API returns. The description should include at least basic context on update behavior and response format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 8 parameters are documented in the input schema with descriptive text (e.g., 'Favorite status', 'Updated tags array'), so the schema already provides solid parameter semantics. The tool description adds no parameter-specific meaning, which matches the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Update') and resource ('existing bookmark') and notes the operation is by ID. This distinguishes it from create/delete siblings at a high level, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'existing' implies this tool modifies already-created bookmarks rather than creating or deleting them, so usage is somewhat evident. However, the description gives no explicit guidance about when to use this tool versus siblings, no prerequisites, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
15 tool updates
v1.0.0- First observed
create_collection - First observed
create_raindrop - First observed
delete_collection - First observed
delete_raindrop - First observed
delete_tags - First observed
get_collection - First observed
get_collections - First observed
get_raindrop - First observed
get_raindrops - First observed
get_tags - First observed
get_user - First observed
merge_tags - First observed
rename_tag - First observed
update_collection - First observed
update_raindrop
TDQS
Scored across 15 tools
Each tool targets a distinct resource (collection, raindrop, tag, user) and action (get, create, update, delete, merge, rename). Singular/plural forms differentiate single vs. batch operations clearly, so there is no ambiguity between tools.
All tools follow a consistent verb_noun pattern (e.g., get_collection, create_raindrop, delete_tags). The only minor deviation is plural vs. singular nouns (get_collection vs. get_collections), but this is a natural and predictable distinction for batch vs. single operations.
With 15 tools, the server is well-scoped for a bookmark manager: full CRUD for collections and raindrops, tag management, and user info. Each tool has a clear purpose, and the count is neither sparse nor overwhelming.
The tool surface covers the full lifecycle for collections, raindrops, and tags (create, read, update, delete, merge, rename). Search/filtering is integrated into get_raindrops, and user info is provided. There are no obvious missing operations for the domain.
Maintenance
Related MCP Connectors
Search, organize, and chat with your saved Reddit posts from Claude, Cursor, and any MCP client.
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
Connect AI to your flomo notes. Search, create, edit notes and manage tags via MCP.
- TaprootOAuthcom.taproothq
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that allows Claude Desktop to access and manage Raindrop.io bookmarks through natural language commands, supporting operations for collections, raindrops, and tags.127MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to access and manage Raindrop.io bookmarks, collections, tags, and highlights through the Model Context Protocol. Supports CRUD operations, advanced search, file uploads, and bulk editing of bookmarks.44 npmMIT
- FlicenseAqualityDmaintenanceEnables to manage Raindrop.io bookmarks programmatically—add, search, and organize bookmarks from LLM apps.413-
- AlicenseBqualityAmaintenanceExposes the Raindrop.io API as Claude tools for managing bookmarks, collections, tags, and bulk operations, with proper collection move support.191MIT