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.1Search and add bookmarks
Detailed security scan evidence is not public for this MCP yet. Public identity, registry metadata, and independently observed protocol inventory remain available.
Installation and connection instructions are shown only when supported by retained package, repository, or endpoint evidence.
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| Canonical slug | karakeep-mcp-server-2b67cd17 | Deployment | Local Only |
|---|---|---|---|
| Canonical package | npm:@karakeep/mcp | Repository | karakeep-app/karakeep |
| First published | — | Latest release | — |
| Last security verification | — | Classification confidence | 90% |
| Publication | Draft | Official distribution | Not verified |
| Channel | Identifier | Current version | Versions | Source |
|---|---|---|---|---|
| npm | @karakeep/mcp | 0.33.1 | 16 | Repository |
| Package | Version | Published / observed | Inventory | Security scan |
|---|---|---|---|---|
| npm@karakeep/mcp | 0.33.1Current | Sep 5, 2026 | 29 toolsSucceeded · 0 resources · 0 prompts | Evidence restricted |
Independently scan the exact version your agents use, receive alerts when its risk changes, and investigate every finding with retained version evidence.
No public current-version evidence is available yet.
| Tool | Category | Annotations | Risk |
|---|---|---|---|
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 bookmarkInput 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 markdownInput 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"
]
} | — | — |
| Endpoint | Transport | Authentication | Health | Observed |
|---|---|---|---|---|
| No verified remote endpoint is linked. | ||||
Install the selected package version with: npm install --save-exact @karakeep/mcp@0.33.1
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.
The selected current version does not yet have completed public verification. Unknown does not mean clean or vulnerable.
Curated product and capability guides containing this catalog record.