0.33.1npm · @karakeep/mcp · current release
Observed 2026-08-30T19:06:11.805Z using mcpSecurity-inventory. Status: succeeded. Negotiated protocol: 2025-06-18.
{
"tools": {
"listChanged": true
}
}| 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
} | — | Writes · Non-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
} | — | Writes · Destructive | — |
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
} | — | Writes · Non-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"
]
} | — | — · — | — |