docent
On this page

Overview

Docent is a grad-school AI assistant with three main tools: a Reading Queue that syncs your Mendeley library, a Studio research engine for AI-powered literature reviews, paper analysis, and notebook building, and an Ecosystem page that connects all the external tools Docent integrates with.

Every feature is callable three ways: from the terminal (docent …), from Claude via MCP (docent serve), or from this web UI (docent ui).

How it fits together

Mendeley  →  "Docent-Queue"  →  docent reading sync-from-mendeley
                                     ↓
                             Reading queue (local)
                                     ↓
                         docent serve  →  Claude MCP  →  Studio actions
                                     ↓
                          docent ui  →  this UI

Quick-start

pip install docent-cli
Install Docent.
docent doctor
Check your environment — shows which integrations are working.
docent ui
Start the web UI at localhost:7432.
docent serve
Start the MCP server for Claude integration.
docent reading sync-from-mendeley
Pull your Mendeley reading list into Docent.
docent studio deep-research --topic "…"
Run a deep research action from the terminal.

Studio

The Studio is Docent's research engine. Choose an action, fill in a topic or artifact, select a backend, and run. Results stream live — you can see each phase as it progresses. Use the UI at localhost:7432 or call commands directly from the terminal.

Research actions

docent studio deep-research --topic "…"
Multi-source synthesis: search → fetch → write → verify → review. Best for broad topic briefs.
docent studio lit --topic "…"
Literature review: search academic databases and compile a structured review.
docent studio review --artifact <arXiv/PDF/URL>
Peer-review critique of a single paper.
docent studio compare --artifact-a <A> --artifact-b <B>
Side-by-side analysis of two papers — shared findings, divergent claims, contradictions.
docent studio draft --topic "…"
Draft a section or writeup from gathered sources.
docent studio replicate --artifact <arXiv/PDF>
Replication protocol: what experiments, what data, what tools.
docent studio audit --artifact <arXiv/PDF>
Methods and evidence audit: data availability, statistical validity, reproducibility.

Utility actions

docent studio search-papers --query "…"
Search arXiv for papers matching a query.
docent studio scholarly-search --query "…"
Search Semantic Scholar.
docent studio get-paper --arxiv-id 2401.12345
Fetch full metadata and abstract for an arXiv paper.
docent studio to-notebook
Push research output and sources into a NotebookLM notebook.

Backends

--backend free
Default. Tavily web search + Semantic Scholar academic search. No AI synthesis, no API key required.
--backend feynman
Autonomous deep-research via Feynman CLI agent. Requires feynman installed and an LLM API key.
--backend docent
Native 6-stage pipeline (planner → search → fetch → write → verify → review). Requires OpenCode server.
--backend groq / gemini / openrouter / …
LLM-powered synthesis using your configured API key for that provider.

Output destinations

--output local
Default. Save to ~/.docent/research/ (or configured output_dir). You can send the result to NotebookLM afterwards from the Studio result panel.
--output notebook
Upload output and sources directly to your configured NotebookLM notebook after the run.

Guide files

Attach PDFs or text files to steer the research. Pass one or more with --guide-files path/to/file.pdf. In the Studio UI, use the Browse button to pick files from your machine, or drag and drop onto the form.

Config keys

docent studio config-set --key output_dir --value "~/research"
Set the directory where research output files are saved.
docent studio config-set --key tavily_api_key --value tvly-…
Set Tavily API key for web search.
docent studio config-set --key groq_api_key --value gsk_…
Set Groq API key for fast AI synthesis.
docent studio config-show
Show all current studio config values (API keys masked).

Ecosystem

The Ecosystem page (accessible from the sidebar) lists every external tool Docent integrates with — search engines, AI backends, reference managers, and notebook services. Each card shows what the tool does, when to use it, and how to install it.

Tool categories

Feynman
Autonomous deep-research agent. Powers the Feynman backend in Studio. Install: pip install feynman-cli
Tavily
Web search API used by the Free backend. Get a free key at app.tavily.com.
Semantic Scholar
Academic paper search. Used by scholarly-search and lit review actions. Free with optional API key for higher rate limits.
alphaXiv
Academic paper search and AI overviews. Used by search-papers action. Free key at alphaxiv.org.
Mendeley
Reference manager. Docent syncs your reading queue from a named Mendeley collection.
NotebookLM
Google's AI research notebook. Docent pushes sources and research output into your notebooks via the to-notebook action.
OpenCode
Local AI coding agent. Powers the Docent research backend (6-stage pipeline). Run: opencode serve --port 4096

Checking your ecosystem

Run docent doctor to see the status of every installed integration. The Settings page also runs this automatically and shows a health dashboard.

Plugin Guide

Docent is built on a plugin architecture. Every tool you see — Reading Queue, Studio — is a plugin registered at startup. You can write your own plugins to add new actions callable from the CLI, Claude via MCP, and this UI.

Plugin structure

# my_plugin/__init__.py
from docent.core.tool import Tool, action, ProgressEvent
from pydantic import BaseModel

class MyPlugin(Tool):
    name = "my_plugin"
    description = "My custom tool"

    class ConfigModel(BaseModel):
        some_setting: str = "default"

    @action(description="Do something useful")
    def my_action(self, ctx, topic: str):
        yield ProgressEvent(phase="start", message=f"Processing {topic}")
        # ... your logic here
        yield ProgressEvent(phase="done", message="Finished")

Registering a plugin

Add your plugin to pyproject.toml under [project.entry-points."docent.plugins"]:

[project.entry-points."docent.plugins"]
my_plugin = "my_plugin:MyPlugin"

After installing your package, run docent list to confirm the plugin appears. All actions are automatically exposed as MCP tools following the toolname__actionname convention.

ProgressEvent fields

phase
Short slug identifying the current stage (e.g. "search", "write"). Shown in the UI phase strip.
message
Human-readable description of what's happening. Streamed live in the Studio activity log.
level
One of: info (default), warn, error. Controls visual styling in the log.

Config keys

Each plugin declares its config schema via a ConfigModel. Users set values with docent <toolname> config-set --key <k> --value <v>. Config is stored in ~/.docent/config.toml under a [toolname] section.

Reading Queue

Manage your reading list. Each entry is a document from Mendeley — a paper, book, or book chapter. All state lives in ~/.docent/data/reading/queue.json. Metadata is always authoritative from Mendeley — Docent caches it locally for fast reads.

Adding & syncing documents

docent reading sync-from-mendeley
Pull documents from your configured Mendeley collection into the queue. Adds new entries, removes deleted ones.
docent reading sync-from-mendeley --dry-run
Preview what would be added or removed without making changes.
docent reading add
Shows guidance on how to add documents (via Mendeley — Docent does not accept direct adds).

Moving through the queue

docent reading next
Show the next entry to read (lowest order, status = queued).
docent reading next --category <name>
Filter next entry by category prefix.
docent reading start <id>
Mark an entry as currently reading. Stamps started_at timestamp.
docent reading done <id>
Mark an entry as done. Stamps finished_at timestamp.
docent reading show <id>
Show full details for an entry.

Editing & organising

docent reading edit <id> --notes "…"
Update notes for an entry.
docent reading edit --id <id> --category "CVEN 601"
Override the category path for an entry.
docent reading edit <id> --type book_chapter
Set type: paper, book, or book_chapter.
docent reading set-deadline --id <id> --deadline 2026-06-01
Set a reading deadline. Docent warns at startup when a deadline is approaching.
docent reading set-deadline --id <id> --deadline ""
Clear a deadline.
docent reading move-up <id>
Move an entry one position up in the queue.
docent reading move-down <id>
Move an entry one position down.
docent reading move-to <id> --position <n>
Move an entry to an absolute queue position.

Search & stats

docent reading search <query>
Full-text search across titles, authors, notes, categories, IDs, and tags.
docent reading stats
Show queue size, status breakdown, category breakdown, and upcoming deadlines.

Export & maintenance

docent reading export
Export the full queue to a styled HTML document with a print dialog for PDF output.
docent reading remove <id>
Remove an entry from the local queue (does not delete from Mendeley).
docent reading queue-clear --yes
Wipe the entire local queue. Irreversible without a re-sync.
docent reading sync-status
Check queue size vs PDF count in your database directory.

CLI Reference

All commands follow the pattern docent <tool> <action> [options].

Top-level commands

docent --version
Print the installed Docent version.
docent list
List all registered tools and their available actions.
docent info <tool>
Show detailed info and action list for a tool.
docent ui
Start the web UI at localhost:7432 (default). Use --port to change.
docent serve
Start the MCP stdio server. Wire this into Claude's .mcp.json.
docent doctor
Run environment checks for all Docent dependencies.
docent update
Upgrade Docent to the latest version on PyPI. Reminds you to restart Claude if using MCP.

Config commands (per-tool)

docent reading config-show
Display all reading config values (database_dir, queue_collection, etc.).
docent reading config-set --key <k> --value <v>
Set a single config value.

Config keys — Reading tool

database_dir
Absolute path to the folder where your PDFs are stored.
queue_collection
Name of the Mendeley collection to sync from. Default: Docent-Queue.

MCP Setup

Docent exposes all registered tool actions as MCP tools, so you can call them directly from Claude (or any MCP-compatible client) without leaving your conversation.

1. Start the server

Run docent serve. It starts a stdio MCP server — keep it running while you use Claude, or wire it into your MCP config so Claude starts it automatically.

2. Configure Claude

Add a .mcp.json at your project root (or in ~/.claude/ for global access):

{
  "mcpServers": {
    "docent": {
      "command": "docent",
      "args": ["serve"]
    }
  }
}

Claude will then have access to all Docent tools. Action names follow the pattern reading__next, reading__done, etc. (tool name + double underscore + action name).

Tool naming convention

reading__add
reading__next
reading__start
reading__done
reading__show
reading__search
reading__stats
reading__edit
reading__set_deadline
reading__move_up
reading__move_down
reading__move_to
reading__export
reading__remove
reading__queue_clear
reading__sync_from_mendeley
reading__sync_status
reading__config_show
reading__config_set

Settings

All settings are stored in ~/.docent/config.toml. You can edit this file directly or use docent reading config-set from the terminal, or the Settings page in this UI.

Config file location

~/.docent/config.toml

Example config

[reading]
database_dir = "/Users/you/Documents/Papers"
queue_collection = "Docent-Queue"

Environment variable overrides

All config values can be overridden with environment variables prefixed DOCENT_. See .env.example in the repo for the full list.