MCP server intelligence profile

Karakeep MCP server

Search and add bookmarks

Local Onlykarakeep-app
Awaiting current scanNpm · 0.33.1

The selected current version does not yet have completed public verification. Unknown does not mean clean or vulnerable.

1Distribution channel
29Independently observed tools
0Linked remote endpoints
AvailableVersion intelligence

Detailed security scan evidence is not public for this MCP yet. Public identity, registry metadata, and independently observed protocol inventory remain available.

Install and connect

Installation and connection instructions are shown only when supported by retained package, repository, or endpoint evidence.

Install @karakeep/mcp from npm

Install exact version 0.33.1. No verified executable entrypoint is available, so use the package documentation to launch it.

npm install --save-exact @karakeep/mcp@0.33.1

Identity

Canonical slugkarakeep-mcp-server-2b67cd17DeploymentLocal Only
Canonical packagenpm:@karakeep/mcpRepositorykarakeep-app/karakeep
First publishedLatest release
Last security verificationClassification confidence90%
PublicationDraftOfficial distributionNot verified

Distributions

ChannelIdentifierCurrent versionVersionsSource
npm@karakeep/mcp0.33.116Repository

Current release

PackageVersionPublished / observedInventorySecurity scan
npm@karakeep/mcp0.33.1CurrentSep 5, 202629 toolsSucceeded · 0 resources · 0 promptsEvidence restricted
Enterprise protection

Continuously monitor this MCP for security risk

Independently scan the exact version your agents use, receive alerts when its risk changes, and investigate every finding with retained version evidence.

  • Independent exact-version security scans
  • Continuous release and vulnerability monitoring
  • Risk-change alerts with capability context
  • Historical evidence and API exports
Custom pricingContact salesTailored to your organization, integrations, data needs, and support requirements.

Current version evidence

No public current-version evidence is available yet.

Current protocol inventory

2025-06-18Negotiated protocol
KarakeepServer-reported name
1Capability groups
Aug 30, 2026Observed

Tools 29

ToolCategoryAnnotationsRisk
add-bookmark-to-listAdd a bookmark to a list.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "listId": {
      "type": "string",
      "description": "The listId to add the bookmark to."
    },
    "bookmarkId": {
      "type": "string",
      "description": "The bookmarkId to add."
    }
  },
  "required": [
    "listId",
    "bookmarkId"
  ]
}
attach-tag-to-bookmarkAttach a tag to a bookmark.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "bookmarkId": {
      "type": "string",
      "description": "The bookmarkId to attach the tag to."
    },
    "tagsToAttach": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The tag names to attach."
    }
  },
  "required": [
    "bookmarkId",
    "tagsToAttach"
  ]
}
create-bookmarkCreate a link bookmark or a text bookmark
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "type": {
      "type": "string",
      "enum": [
        "link",
        "text"
      ],
      "description": "The type of bookmark to create."
    },
    "title": {
      "description": "The title of the bookmark",
      "type": "string"
    },
    "content": {
      "type": "string",
      "description": "If type is text, the text to be bookmarked. If the type is link, then it's the URL to be bookmarked."
    }
  },
  "required": [
    "type",
    "content"
  ]
}
create-highlightCreate a text highlight on a bookmark using character offsets from the bookmark's readable content.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "bookmarkId": {
      "type": "string",
      "minLength": 1,
      "description": "The id of the bookmark to highlight."
    },
    "startOffset": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Zero-based inclusive character offset."
    },
    "endOffset": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Zero-based exclusive character offset."
    },
    "color": {
      "description": "Highlight color. Defaults to yellow.",
      "type": "string",
      "enum": [
        "yellow",
        "red",
        "green",
        "blue"
      ]
    },
    "text": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "The highlighted text, or null if unavailable."
    },
    "note": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "An optional note attached to the highlight."
    }
  },
  "required": [
    "bookmarkId",
    "startOffset",
    "endOffset",
    "text",
    "note"
  ]
}
Annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
WritesNon-destructive
create-listCreate a list.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "name": {
      "type": "string",
      "description": "The name of the list."
    },
    "icon": {
      "type": "string",
      "description": "The emoji icon of the list."
    },
    "parentId": {
      "description": "The parent list id of this list.",
      "type": "string"
    }
  },
  "required": [
    "name",
    "icon"
  ]
}
delete-bookmarkDelete a bookmark by id. This is destructive — the bookmark, its highlights, and its assets are removed.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "bookmarkId": {
      "type": "string",
      "minLength": 1,
      "description": "The id of the bookmark to delete."
    }
  },
  "required": [
    "bookmarkId"
  ]
}
delete-highlightDelete a highlight by id.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "highlightId": {
      "type": "string",
      "minLength": 1,
      "description": "The id of the highlight to delete."
    }
  },
  "required": [
    "highlightId"
  ]
}
Annotations
{
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": false
}
WritesDestructiveNon-idempotent
delete-listDelete a list by id. Bookmarks inside the list are not deleted. Child lists are also not deleted. Any child lists become root-level lists (their parentId is set to null). If that isn't the tree change you want, move or re-parent the children before calling this.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "listId": {
      "type": "string",
      "minLength": 1,
      "description": "The id of the list to delete."
    }
  },
  "required": [
    "listId"
  ]
}
delete-tagDelete a tag by id. Bookmarks that had this tag are not deleted; the tag is just removed from them.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "tagId": {
      "type": "string",
      "minLength": 1,
      "description": "The id of the tag to delete."
    }
  },
  "required": [
    "tagId"
  ]
}
detach-tag-from-bookmarkDetach a tag from a bookmark.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "bookmarkId": {
      "type": "string",
      "description": "The bookmarkId to detach the tag from."
    },
    "tagsToDetach": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The tag names to detach."
    }
  },
  "required": [
    "bookmarkId",
    "tagsToDetach"
  ]
}
get-assetGet a temporary signed URL for downloading an asset by its asset ID.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "assetId": {
      "type": "string",
      "minLength": 1,
      "description": "The ID of the asset to retrieve."
    }
  },
  "required": [
    "assetId"
  ]
}
get-bookmarkGet a bookmark by id.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "bookmarkId": {
      "type": "string",
      "description": "The bookmarkId to get."
    }
  },
  "required": [
    "bookmarkId"
  ]
}
get-bookmark-contentGet the content of the bookmark in markdown
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "bookmarkId": {
      "type": "string",
      "description": "The bookmarkId to get content for."
    }
  },
  "required": [
    "bookmarkId"
  ]
}
get-bookmark-highlightsList every highlight on a bookmark.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "bookmarkId": {
      "type": "string",
      "minLength": 1,
      "description": "The id of the bookmark whose highlights to retrieve."
    }
  },
  "required": [
    "bookmarkId"
  ]
}
Annotations
{
  "readOnlyHint": true
}
Read only
get-bookmark-listsList every list that contains a bookmark.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "bookmarkId": {
      "type": "string",
      "minLength": 1,
      "description": "The id of the bookmark whose lists to retrieve."
    }
  },
  "required": [
    "bookmarkId"
  ]
}
Annotations
{
  "readOnlyHint": true
}
Read only
get-highlightRetrieve a single highlight by id.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "highlightId": {
      "type": "string",
      "minLength": 1,
      "description": "The id of the highlight to retrieve."
    }
  },
  "required": [
    "highlightId"
  ]
}
Annotations
{
  "readOnlyHint": true
}
Read only
get-listRetrieve a single list by its id.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "listId": {
      "type": "string",
      "minLength": 1,
      "description": "The id of the list to retrieve."
    }
  },
  "required": [
    "listId"
  ]
}
get-list-bookmarksList bookmarks in a list by its stable id. Smart lists are evaluated using their saved query.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "listId": {
      "type": "string",
      "minLength": 1,
      "description": "The id of the list whose bookmarks to retrieve."
    },
    "sortOrder": {
      "description": "Sort by creation date. Defaults to newest first.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "limit": {
      "description": "Maximum number of bookmarks to return per page.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "cursor": {
      "description": "Cursor from a previous response to fetch the next page.",
      "type": "string",
      "minLength": 1
    },
    "includeContent": {
      "description": "Whether to include each bookmark's full content.",
      "type": "boolean"
    }
  },
  "required": [
    "listId"
  ]
}
Annotations
{
  "readOnlyHint": true
}
Read only
get-listsRetrieves a list of lists.
Input schema
{
  "type": "object",
  "properties": {}
}
get-tagRetrieve a single tag by id, including its bookmark counts.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "tagId": {
      "type": "string",
      "minLength": 1,
      "description": "The id of the tag to retrieve."
    }
  },
  "required": [
    "tagId"
  ]
}
get-tag-bookmarksList bookmarks that have a given tag, with pagination.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "tagId": {
      "type": "string",
      "minLength": 1,
      "description": "The id of the tag whose bookmarks to fetch."
    },
    "sortOrder": {
      "description": "Sort order by creation date. Defaults to 'desc'.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "limit": {
      "description": "Maximum number of bookmarks to return per page.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "cursor": {
      "description": "Cursor from a previous response to fetch the next page.",
      "type": "string",
      "minLength": 1
    },
    "includeContent": {
      "description": "If true, include each bookmark's full content. Defaults to false.",
      "type": "boolean"
    }
  },
  "required": [
    "tagId"
  ]
}
get-tagsList tags with their bookmark counts. Supports filtering and pagination.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "nameContains": {
      "description": "Filter tags whose name contains this substring.",
      "type": "string",
      "minLength": 1
    },
    "sort": {
      "description": "Sort order. 'relevance' requires nameContains. Defaults to 'usage'.",
      "type": "string",
      "enum": [
        "name",
        "usage",
        "relevance"
      ]
    },
    "attachedBy": {
      "description": "Filter by how the tag was attached.",
      "type": "string",
      "enum": [
        "ai",
        "human",
        "none"
      ]
    },
    "cursor": {
      "description": "Cursor from a previous response to fetch the next page.",
      "type": "string",
      "minLength": 1
    },
    "limit": {
      "description": "Maximum number of items to return per page.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    }
  }
}
list-highlightsList highlights across all bookmarks, newest first.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "limit": {
      "description": "Maximum number of highlights to return per page.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "cursor": {
      "description": "Cursor from a previous response to fetch the next page.",
      "type": "string",
      "minLength": 1
    }
  }
}
Annotations
{
  "readOnlyHint": true
}
Read only
remove-bookmark-from-listRemove a bookmark from a list.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "listId": {
      "type": "string",
      "description": "The listId to remove the bookmark from."
    },
    "bookmarkId": {
      "type": "string",
      "description": "The bookmarkId to remove."
    }
  },
  "required": [
    "listId",
    "bookmarkId"
  ]
}
search-bookmarksSearch for bookmarks matching a specific query using full-text, semantic, or hybrid search.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "query": {
      "type": "string",
      "description": "\n    By default, this will do a full-text search, but you can also use qualifiers to filter the results.\nYou can search bookmarks using specific qualifiers. is:fav finds favorited bookmarks,\nis:archived searches archived bookmarks, is:tagged finds those with tags,\nis:inlist finds those in lists, and is:link, is:text, and is:media filter by bookmark type.\nurl:<value> searches for URL substrings, #<tag> searches for bookmarks with a specific tag,\nlist:<name> searches for bookmarks in a specific list given its name (without the icon),\nafter:<date> finds bookmarks created on or after a date (YYYY-MM-DD), and before:<date> finds bookmarks created on or before a date (YYYY-MM-DD).\nIf you need to pass names with spaces, you can quote them with double quotes. If you want to negate a qualifier, prefix it with a minus sign.\n## Examples:\n\n### Find favorited bookmarks from 2023 that are tagged \"important\"\nis:fav after:2023-01-01 before:2023-12-31 #important\n\n### Find archived bookmarks that are either in \"reading\" list or tagged \"work\"\nis:archived and (list:reading or #work)\n\n### Combine text search with qualifiers\nmachine learning is:fav"
    },
    "limit": {
      "default": 10,
      "description": "The number of results to return in a single query.",
      "type": "number"
    },
    "nextCursor": {
      "description": "The next cursor to use for pagination. The value for this is returned from a previous call to this tool.",
      "type": "string"
    },
    "sortOrder": {
      "description": "Sort by relevance or creation date. Defaults to relevance.",
      "type": "string",
      "enum": [
        "asc",
        "desc",
        "relevance"
      ]
    },
    "searchMode": {
      "default": "fts",
      "description": "Search strategy. 'fts' uses full-text search, 'semantic' uses embeddings, and 'hybrid' combines both. Semantic and hybrid modes only support relevance sorting. Defaults to 'fts'.",
      "type": "string",
      "enum": [
        "fts",
        "semantic",
        "hybrid"
      ]
    }
  },
  "required": [
    "query"
  ]
}
update-bookmarkUpdate fields on an existing bookmark. Only the fields you pass are modified; omitted fields stay unchanged. Returns the updated bookmark.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "bookmarkId": {
      "type": "string",
      "description": "The bookmarkId to update."
    },
    "title": {
      "description": "The bookmark's user-set title. Pass null to clear it.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "note": {
      "description": "A free-form note on the bookmark.",
      "type": "string"
    },
    "summary": {
      "description": "The bookmark's summary. Pass null to clear it.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "archived": {
      "description": "Whether the bookmark is archived.",
      "type": "boolean"
    },
    "favourited": {
      "description": "Whether the bookmark is favourited.",
      "type": "boolean"
    },
    "url": {
      "description": "New URL for a link bookmark.",
      "type": "string",
      "format": "uri"
    },
    "description": {
      "description": "Link description. Pass null to clear it.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "author": {
      "description": "Link author. Pass null to clear it.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "publisher": {
      "description": "Link publisher. Pass null to clear it.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "createdAt": {
      "description": "Override the bookmark's createdAt timestamp (ISO 8601).",
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
    }
  },
  "required": [
    "bookmarkId"
  ]
}
update-highlightUpdate a highlight's color or note.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "highlightId": {
      "type": "string",
      "minLength": 1,
      "description": "The id of the highlight to update."
    },
    "color": {
      "description": "New highlight color.",
      "type": "string",
      "enum": [
        "yellow",
        "red",
        "green",
        "blue"
      ]
    },
    "note": {
      "description": "New note. Pass null to clear it.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "highlightId"
  ]
}
Annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
WritesNon-destructive
update-listUpdate a list. Only the fields you pass are changed. Length caps and smart-list query rules come from the shared list schema.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "listId": {
      "type": "string",
      "minLength": 1,
      "description": "The id of the list to update."
    },
    "name": {
      "description": "New name for the list.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "icon": {
      "description": "New emoji icon for the list.",
      "type": "string"
    },
    "description": {
      "description": "New description for the list. Pass null to clear.",
      "anyOf": [
        {
          "type": "string",
          "minLength": 0,
          "maxLength": 500
        },
        {
          "type": "null"
        }
      ]
    },
    "parentId": {
      "description": "New parent list id. Pass null to move to the root.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "query": {
      "description": "New smart-list query. Only meaningful for smart lists.",
      "type": "string",
      "minLength": 1
    },
    "public": {
      "description": "Whether the list is publicly accessible.",
      "type": "boolean"
    }
  },
  "required": [
    "listId"
  ]
}
update-tagRename a tag. The new name is normalized by the server.
Input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "tagId": {
      "type": "string",
      "minLength": 1,
      "description": "The id of the tag to update."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "New name for the tag. Will be normalized by the server."
    }
  },
  "required": [
    "tagId",
    "name"
  ]
}

Resources 0

  • None observed.

Resource templates 0

  • None observed.

Prompts 0

  • None observed.

Remote endpoints

EndpointTransportAuthenticationHealthObserved
No verified remote endpoint is linked.

Karakeep MCP server questions

How do I install Karakeep MCP server?

Install the selected package version with: npm install --save-exact @karakeep/mcp@0.33.1

What tools does Karakeep MCP server provide?

Karakeep MCP server exposed 29 tools during independent protocol observation, including add-bookmark-to-list, attach-tag-to-bookmark, create-bookmark, create-highlight, create-list, delete-bookmark, delete-highlight, delete-list, and others.

Is Karakeep MCP server secure?

The selected current version does not yet have completed public verification. Unknown does not mean clean or vulnerable.

Explore related MCP server guides

Curated product and capability guides containing this catalog record.

Official vs Community MCP Servers

Let’s talk about MCP security.

Share your details and our security team will contact you.