Context Drop.
AI assistants are only as useful as the information they get. Context Drop picks the few notes that matter for a request, keeps restricted material out, and shows what context was actually passed to the model.
HOW A REQUEST FLOWS
01 · THE PROBLEM
Most AI tools fail for a boring reason. They get too much context, the wrong context, or information they were never meant to see. Pasting the same notes into every tool by hand got old fast, and dumping a whole vault into a prompt is slow, expensive, and unsafe. I wanted one broker any AI tool could ask for the right few pages, on a budget, with the private ones held back by default.
02 · HOW IT WORKS
It speaks MCP, the protocol AI tools use to reach outside data, and sits in front of a private wiki of tagged Markdown pages. The wiki already declares the rules: named packs that say, per task, which pages to load in what order and which private pages that task is allowed to touch. Context Drop is the broker that honors that contract on a token budget, then hands back the pages plus a manifest of everything it held back so the tool can ask for more. It is plain Python with no third-party dependencies, small enough to read end to end and audit.
03 · ENGINEERING DECISIONS
When a task maps to a named pack, the broker loads that curated order and does not guess. When a paraphrased question matches no pack, a hybrid ranker takes over: dense embeddings for meaning, BM25 for exact words, fused with reciprocal rank fusion over the same curated prior. If the embedder is offline it drops to keyword ranking and still answers.
A gold set of nineteen queries, drawn from the vault's own pack definitions, scores the ranker on precision and recall. Moving from dense-only to the hybrid ranker took precision-at-5 from 0.24 to 0.85 and recall-at-10 to 0.89, clearing the bar I set of 0.80 and 0.85. On a curated vault this small that is a tuning result, not a benchmark, and the eval says so plainly.
Private pages are held back by default and return only when the task explicitly grants them. A withheld page still appears in the manifest, so the tool knows it exists but never sees the content. Because those pages must never leave the machine, every embedding is computed locally. The security rule chose the design, not the other way around.
The HTTP transport refuses to start in any publicly reachable setup without auth, checks every request's Host and Origin against an allowlist to block DNS rebinding, compares tokens in constant time, and never leaks a stack trace or the vault's path. The claude.ai connector runs full OAuth 2.1 with PKCE behind a password-gated consent screen, tested end to end from discovery through token exchange.
04 · WHERE IT STANDS
The server is built and tested, standard library only, with the claude.ai connector verified end to end. It runs privately for me, as infrastructure for my own tools rather than a product with users, small and auditable on purpose. The result I care about is the retrieval jump, and the fact that a private page has to be asked for by name before it will ever surface. Next up is proving the same OAuth flow against ChatGPT's connectors and adding Gmail, Calendar, and Drive behind the same budget and privacy rules.
05 · STACK
TRY IT — WHAT GETS HANDED TO THE MODEL
A tiny stand-in vault: six notes, one of them marked restricted. Ask a question below and see exactly which notes Context Drop would hand to the assistant, and which one it holds back on purpose.
Sample question: "What are the current compensation bands?"
Context package (sent to the assistant): no other vault page discusses compensation, so the package returned would be empty for this request.
Manifest (held back): "Compensation Bands (Q3)" — marked restricted. It matched the request, so it exists in the manifest, but its content was never sent.
Turn on JavaScript to ask your own question and see the live context package and manifest.