Thirteen tools, defined once.
The MCP tools an AI coding assistant calls to learn a library by name, harvest and search its documentation, and check a project's dependencies. Every tool is defined exactly once and served identically over MCP. Results handed to a model are capped at 60k characters with an explicit truncation marker.
Learn
Learns a library from its name alone — no URL. Resolves, verifies, harvests, stores.
Learns a whole technology from one starting URL. Unlimited by default.
How a harvest is getting on — phase, pages of how many, elapsed — and how it ended. Says whose store the pages land in, so the model leaves it to finish.
Where a name resolves to, with the evidence. Harvests nothing.
Reads a project's dependency manifests: libraries, versions, and which are already documented.
Extract
Extracts any documentation URL to clean Markdown. Auto-detects llms.txt, OpenAPI, sitemap, GitHub, raw text or HTML.
Same extraction, written to files on disk.
Which strategy a URL would use — a cheap probe, no extraction.
Read back
Ranked search across every stored page at once.
Reads stored docs back; with section, only the matching pages, ranked.
What has been harvested, which versions, and any harvest still running.
Forgets where a name resolved to. Deletes no documentation.
Forgets which corpora were chosen, so it asks again. Deletes no documentation.
forget_documentation also exists, behind DOCSFORGE_ALLOW_DELETE=1. Deleting a harvest is the one irreversible thing here, and a model that has just mis-resolved a name is not the caller you want holding that lever.
A long harvest does not block
A call returns whatever is ready by a deadline — 25 seconds by default. A harvest that finishes inside it returns exactly what it always did. One that does not keeps running in the background, and the result says so — harvest_status reports on it from then on, and reminds the model that the pages are landing in DocsForge's store, not its own:
> Currently harvesting 36/813 pages, 25s elapsed. This returned before the harvest finished so your client would not time out; it continues in the background while this server runs.