citetrail
Enables AI agents to search and recall locally captured browser pages with full source provenance (URL, title, timestamp) over MCP.
README
Citetrail
Local, provenance-backed memory of what your browser saw — every recall carries the URL, title, and timestamp it came from.
Citetrail captures the pages you actually read, keeps them on your machine, and makes them searchable — by you, and by your AI agents over MCP. When an agent uses something it found there, it can cite exactly where it came from.
- Status: pre-release. See Project status before installing.
- License: Apache-2.0
- Local by default. No account, no server, no upload. Blocked pages fail closed.
The problem Citetrail solves
You read six tabs, closed them, and now your coding agent needs the thing in tab four. Your options today are: paste it again, let the agent re-search the open web and hope it lands on the same page, or accept an answer with no source.
Browser history knows you visited a URL. It does not know what the page said, and it cannot tell your agent. Citetrail closes that gap:
| Browser history | Citetrail |
|---|---|
| A list of URLs | The content you actually read, captured |
| Search by title, roughly | Search by what the page said |
| Invisible to your tools | Queryable by agents over MCP |
| No notion of "why is this here" | Every entry carries its provenance |
| Everything, indiscriminately | Only allowed pages; blocklist fails closed |
What "provenance-backed" means here
Every stored fragment keeps a bounded reference: source URL, page title, capture timestamp, and the position within the page. Recall returns the fragment and that reference together — they cannot be separated. An agent that answers from Citetrail can always say where it got it, and you can always open the original.
If the source is gone, Citetrail says the source is gone. It does not quietly serve a fragment as if it were still live.
Quickstart
git clone https://github.com/anonb3ll/citetrail
cd citetrail
python3 -m venv .venv
.venv/bin/pip install -e .
.venv/bin/citetrail init
# 2. Search the local store
.venv/bin/citetrail search "retry backoff"
# Optional: block a sensitive hostname before it can be stored
.venv/bin/citetrail block bank.example.test
# 3. Point an agent at the same local store over MCP
.venv/bin/citetrail mcp --stdio
The default store is ~/.local/share/citetrail. Set CITETRAIL_STORE or pass
--store PATH to use a different local directory. See
docs/extension.md to load the unpacked Chromium adapter.
Documentation
| Guide | Description |
|---|---|
| docs/README.md | Documentation index |
| docs/cli-reference.md | CLI commands and store layout |
| docs/mcp.md | MCP tool schema and registration |
| docs/extension.md | Chromium extension setup |
| docs/privacy.md | Blocklist and fail-closed behavior |
| docs/integration-contract.md | Optional Runroom integration |
Frequently asked questions
How do I let my AI agent search my browsing history?
Run the local MCP server and register it with your agent. The agent queries Citetrail like any other MCP tool and receives fragments with their sources attached. It never gets raw access to your browser or your profile.
Where is my data stored, and does anything get uploaded?
On your machine, in a local database you can delete at any time. Citetrail has no server and performs no uploads. See docs/privacy.md.
How do I stop it capturing my bank, my email, or my work intranet?
The blocklist. It is checked before capture, and it fails closed — if the
rules cannot be evaluated for a page, that page is not captured. Add a host
with citetrail block bank.example.test. Allowlist-only capture is deferred.
Can an agent cite a source it did not actually read?
Not from Citetrail. The reference travels with the fragment; there is no API that returns text without its provenance.
What happens when I am offline, or a page is gone?
Recall works offline against what you already captured. If the original URL is unreachable, results are marked as such rather than silently presented as current. Unavailable and privacy-blocked states are reported honestly, not hidden.
Is this a note-taking app or a second brain?
No. Citetrail captures and recalls; it does not organize your thinking, build a knowledge graph, or ask you to maintain anything. It is plumbing for tools that need to know what you read.
Does it work in any browser?
The extension targets Chromium-based browsers first. The native bridge between the extension and the local service has real limits — see docs/limitations.md.
What Citetrail is not
- Not a hosted service and not a sync service. One machine, one store.
- Not a PKM or note system.
- Not a clinical, wellbeing, or attention-tracking tool. It makes no claim about your cognition.
- Not a scraper. It captures pages you visited yourself, under your rules.
- Not a mobile app.
See docs/limitations.md and docs/private-exclusions.md.
Related project
Runroom coordinates handoffs between AI agents and humans with review gates and an audit trail. The two projects are independent and neither requires the other; an optional integration shows a Citetrail reference feeding a governed Runroom task.
Contributing
Read CONTRIBUTING.md and CODE_OF_CONDUCT.md. Report vulnerabilities privately — see SECURITY.md.
Project status
Pre-release, pre-1.0. Interfaces will change. Citetrail is published to find out whether other people need this — if you try it, tell us what you were trying to recall and whether you got it.
License
Apache License 2.0. Copyright 2026 The Citetrail Contributors.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.