DocPull agent plugin
September 5, 2026 · View on GitHub
DocPull agent plugin
Active plugin for developers using Codex or Claude Code. Pull static and server-rendered public web sources into an agent's local context with citations.
DocPull aligns core workflows across CLI, Python SDK, and MCP, with each surface optimized for its user. See the Surface Contract for the boundary between the plugin's MCP tools and the broader CLI/SDK.
Install
The plugin wraps the docpull CLI. Install the MCP extra first:
pipx install 'docpull[mcp]==6.5.5'
docpull --version # should print 6.5.5 or newer
docpull mcp --help
The plain pip install docpull does not include the MCP dependency. If the
executable is missing, the plugin exits with the exact pipx setup command.
In Claude Code:
/plugin marketplace add raintree-technology/docpull
/plugin install docpull@docpull
In Codex, install the plugin from the configured marketplace or a local plugin
source. The plugin starts the docpull mcp stdio server and exposes the
docpull-research skill.
Try one source
> /web-add fastapi
> How does FastAPI handle dependency injection scoping?
Expected result: the agent searches the cached source and answers with attribution to the local Markdown. The first crawl populates the cache; later reads stay local.
What you get
- MCP server (37 tools):
- Read:
fetch_url,list_sources,list_indexed,grep_docs,read_doc,pack_score,pack_diff,pack_citations,pack_entities,pack_search,pack_brief,graph_status,graph_query,graph_neighbors,validate_policy,explain_routes,serve_pack_status - Write:
render_url,ensure_docs,workflow_run,website_pack,brand_pack,product_pack,styleguide_pack,image_pack,screenshot_pack,policy_pack,relationship_pack,intelligence_bundle,refresh_pack,audit_pack,pack_prepare,graph_build,graph_refresh,export_pack,add_source,remove_source - All read tools advertise
readOnlyHintso hosts that auto-approve safe tools won't prompt for them.
- Read:
- Claude Code slash commands:
/web-add <alias-or-url>— fetch a web source into the local index./web-search <pattern> [source]— regex-search cached Markdown and pull surrounding context for the top hits./web-list— show what's cached, with last-fetched age./web-refresh <source>— bypass the 7-day cache and re-fetch./web-remove <source> [--keep-cache]— drop a user alias and its cached Markdown./docs-add,/docs-search,/docs-list,/docs-refresh, and/docs-removeremain compatibility aliases for existing users.
- Meta-skill (
docpull-research): teaches the agent when to reach for docpull — so you don't have to remember the tool exists every time you ask about a library, API, vendor, product page, or web source.
Built-in source aliases
These are fetchable by name without any URL setup: react, nextjs, tailwindcss, vite, hono, fastapi, express, anthropic, openai, langchain, supabase, drizzle, prisma.
For anything else, pass an HTTPS URL: /web-add https://www.python.org/blogs/.
Where fetched Markdown is cached
By default, fetched Markdown lives under $XDG_DATA_HOME/docpull-mcp/docs/ (or ~/.local/share/docpull-mcp/docs/ on macOS/Linux). Override with DOCPULL_DOCS_DIR if you want it somewhere else (e.g. one cache per project).
Limits and privacy
- 100% local. No telemetry. No remote services.
- The plugin only sends HTTP requests to the URLs you ask it to fetch.
- The User-Agent is
docpull/<version> (+https://github.com/raintree-technology/docpull)— public, identifiable, robots.txt-respecting. - JavaScript rendering is explicit rather than part of the default fetch path.
- The plugin supports research workflows; it does not certify that a source is complete, current, or correct.
Troubleshooting
| Symptom | Fix |
|---|---|
| MCP tools missing after install | Run docpull mcp --help. If it errors with "requires the 'mcp' package", reinstall with pip install 'docpull[mcp]'. |
/web-add fastapi says "unknown source" | Run mcp__docpull__list_sources() to see current aliases. Use a URL instead. |
| Slow first fetch | Normal — the first crawl populates the cache. Later runs use the local cache and conditional requests. |
| Want to refresh stale sources | mcp__docpull__ensure_docs(source="<alias>", force=true). |
Deeper documentation
License
MIT — same as docpull itself. Source: https://github.com/raintree-technology/docpull.