← Karakeep MCP server

Karakeep MCP server 0.33.1

npm · @karakeep/mcp · current release

29
Tools
0
Resources
0
Templates
0
Prompts

Observation

Observed 2026-08-30T19:06:11.805Z using mcpSecurity-inventory. Status: succeeded. Negotiated protocol: 2025-06-18.

Server capabilities
{
  "tools": {
    "listChanged": true
  }
}

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
}
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 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
}
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"
  ]
}
— · —

Resources 0

Resource templates 0

Prompts 0

Let’s talk about MCP security.

Share your details and our security team will contact you.