Your library, inside your agents.
bookmark++ is a remote MCP server. Point any MCP client at one URL with your key and everything you saved — every video watched, every carousel read, every thread kept — becomes tools the agent can call. Nothing to install, nothing to clone, nothing running on your machine.
Set up in a minute
- Get a key. Open the app → Settings → MCP and copy the command for your app: your key is already inside. Free on every plan.
- Add the server with the command for your client below. Replace
bmk_YOUR_KEY. - Ask. “What was that video about running subagents?” The agent calls
ask_libraryand cites the exact save.
/mcp) so it loads the new tools: get_saves, save_id on ask_library, and the search filters.Claude Code
claude mcp add -s user --transport http bookmarkpp https://api.bookmarkpp.com/mcp \
--header "Authorization: Bearer bmk_YOUR_KEY"-s user makes it available in every project.
Cursor
Fastest: the app's Install in Cursor button fills in your key. By hand:
{
"mcpServers": {
"bookmarkpp": {
"url": "https://api.bookmarkpp.com/mcp",
"headers": { "Authorization": "Bearer bmk_YOUR_KEY" }
}
}
}Codex CLI
export BOOKMARKPP_KEY=bmk_YOUR_KEY
codex mcp add bookmarkpp --url https://api.bookmarkpp.com/mcp \
--bearer-token-env-var BOOKMARKPP_KEYGemini CLI
gemini mcp add --transport http bookmarkpp https://api.bookmarkpp.com/mcp --header "Authorization: Bearer bmk_YOUR_KEY"VS Code
code --add-mcp '{"name":"bookmarkpp","type":"http","url":"https://api.bookmarkpp.com/mcp","headers":{"Authorization":"Bearer bmk_YOUR_KEY"}}'Or use the one-click Install in VS Code button in the app, which fills in your key.
Windsurf
{
"mcpServers": {
"bookmarkpp": {
"serverUrl": "https://api.bookmarkpp.com/mcp",
"headers": { "Authorization": "Bearer bmk_YOUR_KEY" }
}
}
}Claude Desktop
{
"mcpServers": {
"bookmarkpp": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.bookmarkpp.com/mcp", "--header", "Authorization: Bearer bmk_YOUR_KEY"]
}
}
}The tools
Every save is already watched or read: the caption, the full transcript, every line of text shown on screen or on the slides, a summary, the key points, and the exact things it points to (a repo, a site, an app, an @handle, a promo code). The tools hand all of that to your agent.
ask_libraryA plain-language question, answered with the saves it came from. Pass save_id to ask about one save only: it is read in full, and if it doesn’t have the answer the rest of your library is searched and the reply says so.
search_savesKeyword search over titles, gists, refs, names, key points, captions, on-screen text and transcripts. Each row shows a match line (where the words were found) and what full text get_save can return. Filter by collection, platform, kind, form or the last N days; page with cursor. Omit the query to list your newest saves.
get_saveEverything stored about one save: the exact repos, links, sites, handles and codes it points to; gist, summary, your note, key points, names, specifics, quote, tags; the caption, the full transcript and every line of on-screen text; what couldn’t be read; whether the video itself was watched; whether the post is gone at the source.
The tool for exact names, links, repos, lists and steps.get_savesget_save for up to 10 saves in one call, in the order given.
save_linkAdd a public TikTok, Instagram, X, LinkedIn or web URL. It’s fetched, read and filed in the background and becomes askable within a minute or two.
Counts against your monthly saves.list_collectionsYour collections with a description and the number of saves in each.
The raw API
The same endpoint speaks plain JSON-RPC, so a Shortcut, a Raycast script or a cron job can use it without an MCP client.
curl -s https://api.bookmarkpp.com/mcp \
-H "Authorization: Bearer bmk_YOUR_KEY" -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"ask_library","arguments":{"question":"that dictation app for mac"}}}'curl -s https://api.bookmarkpp.com/mcp \
-H "Authorization: Bearer bmk_YOUR_KEY" -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
"params":{"name":"get_save","arguments":{"id":"SAVE_ID"}}}'curl -s https://api.bookmarkpp.com/api/save \
-H "Authorization: Bearer bmk_YOUR_KEY" -H "Content-Type: application/json" \
-d '{"url":"https://www.tiktok.com/@…/video/…"}'Transport: stateless Streamable HTTP. POST /mcp with a JSON-RPC request returns one JSON response; notifications return 202; no SSE stream, no session id. Protocol versions 2025-06-18 back to 2024-11-05.
Keys and safety
- A key is scoped to your library only. It can read your saves, ask questions and add links. It cannot delete anything, change collections or touch the account.
- Make one key per client and revoke any one of them in Settings without affecting the others. Revocation is immediate.
- Quotas are the account’s, shared between the app and every key: 100 saves and 100 questions in total on Free, 1,000 of each a month on Pro.
- Treat a key like a password. Don’t commit it; prefer
--bearer-token-env-varor your client’s secret store where offered.
