citetrail

citetrail

Enables AI agents to search and recall locally captured browser pages with full source provenance (URL, title, timestamp) over MCP.

Category
Visit Server

README

Citetrail

CI License

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

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured