The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Sensefold listing page.
For agents · Docs · Tools reference · Permissions · Pricing
Sensefold is a personal context: the articles, threads, videos, PDFs, notes, and ChatGPT / Claude / Gemini / Grok conversations you collect, the notes you write on them, and one Markdown library that Claude, ChatGPT, Cursor, Claude Code, Codex, and any MCP client can search, read, and write back to. Your thinking carries across models and sessions instead of living inside one vendor's memory.
This repository is the public reference for the Sensefold MCP server. The server is hosted; there is nothing to run. What you find here:
server.json — the manifest published to the MCP registry as app.sensefold/sensefoldexamples/ — worked sessions showing how an agent should use itEndpoint (remote, Streamable HTTP):
Paste it into any client that supports remote MCP servers and authorize in
the browser. The server supports OAuth 2.1 with PKCE and dynamic client
registration, so there is no client ID or key to manage. During authorization
you pick a permission tier: read_only, edit, or full. Start with
read_only.
Each connection appears in Settings → For agents in the web app and can be revoked there at any time.
| Client | Setup | Guide |
|---|---|---|
| Claude (claude.ai, Desktop) | Customize → Connectors → Add custom connector → paste the endpoint | docs |
| Claude Code | claude mcp add --transport http sensefold https://api.sensefold.app/mcp, then /mcp → Authenticate | docs |
| ChatGPT | Settings → Developer mode → add connection with the endpoint; uses the search / fetch aliases | docs |
| Codex (app, CLI, IDE) | codex mcp add sensefold --url https://api.sensefold.app/mcp then codex mcp login sensefold | docs |
| Cursor | Customize → MCPs → New MCP server, JSON below | docs |
| VS Code | .vscode/mcp.json, JSON below with a top-level servers object | docs |
| OpenClaw | openclaw mcp add sensefold --url https://api.sensefold.app/mcp --transport streamable-http --auth oauth --no-probe | docs |
| Hermes Agent | hermes mcp add sensefold --url https://api.sensefold.app/mcp --auth oauth | docs |
| Any other MCP client | Remote Streamable HTTP; OAuth-capable clients discover the authorization server automatically | docs |
Cursor, Claude Code .mcp.json, and most JSON-configured clients:
VS Code uses servers instead of mcpServers and "type": "http".
For environments that cannot open a browser, create an Agent key in Settings → For agents, pick a tier, and send it as a bearer token. Keep it in an environment variable, never in a repository.
Inspect the tool list without a client:
Write tools appear only when the connection's tier allows them.
| Tool | What it does | Tier |
|---|---|---|
search_hub | Hybrid keyword + semantic search across the whole library. English, Chinese, or mixed queries; matching is cross-lingual. Filters: tags, provenance (authored / clipped / ai_summary / ocr / any), start + end date range, limit (default 5, max 50). | all |
list_items | Recent items, newest first. Filters: start + end (ISO, together), provenance, keyword (literal AND over full text, not semantic), limit (default 10, max 50). | all |
get_item | One item by UUID as Markdown text plus version. Windowed: default first 8,000 characters, then windowStart = previous nextStart (windowLength up to 20,000). Chunk mode: chunk (ordinal from chunkRef) with chunkRadius 0–3 neighbours (default 1). | all |
get_quota | The user's plan, remaining credits, and storage. | all |
save_link | Save an HTTP(S) URL (id UUID v4 you generate, url). Capture and enrichment run asynchronously and spend credits like a save from the app; the response reports status, replayed, and consentRequired / insufficientCredits when enrichment did not run. | edit+ |
save_note | Save a plain-text or Markdown note (id UUID v4, authoredContent, optional hubTitle). Stored verbatim, never AI-enriched, searchable shortly after. | edit+ |
update_note | Replace the user-authored text layer of any item (authoredContent, optional hubTitle to rename, expectedVersion). For notes that is the note; for clips and articles it overrides the extracted body while the original source stays archived. Revision-backed and undoable. | edit+ |
update_tags | Replace an item's full tag list (tags, up to 20, the complete list not a delta; expectedVersion). Revision-backed and undoable. | edit+ |
delete_item | Move an item to the recycle bin (expectedVersion). The user can restore it. Deleting an already-deleted item succeeds with alreadyDeleted: true, so retries are safe. | full |
search, fetch | Read-only aliases following the ChatGPT connector contract; map onto search_hub and get_item. fetch continues long documents via metadata.next_id. | all |
Every search result carries:
sensefoldUrl — the item's address in the user's library. This is the
link to cite.sourceUrl — where it was captured from, kept for attribution.chunkRef — when the match came from one section: its ordinal, heading
path, and PDF page numbers. Pass the ordinal as get_item's chunk.Full reference: sensefold.app/docs/mcp-tools
| Tier | Can | Tools visible |
|---|---|---|
read_only | Search, list, read items, read quota | 6 |
edit | Also save links and notes, replace a note's text, replace tags | 10 |
full | Also move items to the recycle bin | 11 |
API_KEY_TIER_DENIED (HTTP 403)
even if a client tries it directly.Details: permissions, revocation, and undo · privacy for connected AI
Rules an agent should follow. The server enforces the ones it can.
save_link and save_note, generate one UUID v4
before the first attempt and reuse it on every retry; a replay returns the
existing item. A new UUID creates a new item. Reusing an id with different
note content is rejected with ITEM_IDEMPOTENCY_MISMATCH; use
update_note to change an existing note.update_note, update_tags, and delete_item
require expectedVersion from a fresh get_item. On VERSION_CONFLICT,
re-read and retry once.save_link spends credits. Check get_quota before a
large batch of link saves.rerankApplied: false
or vectorSearchApplied: false on a search response means rephrasing helps
most.Error codes (401, API_KEY_TIER_DENIED, VERSION_CONFLICT,
ITEM_IDEMPOTENCY_MISMATCH) are explained in
troubleshooting.
sensefoldUrl links.read_only key.The MCP server is the read/write side. Capture happens through the apps:
Every item is normalized to Markdown, enriched with a summary, tags, and OCR on save, and exportable as a Markdown ZIP at any time.
Agent-readable setup guide: sensefold.app/for-agents/skill.md
Hosted server, public contract. Issues and discussions about the MCP interface are welcome here; product support lives at sensefold.app/docs. The contents of this repository are MIT licensed.