DocsForge v1.1.0

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

learn_technology
nameversionecosystemmax_pagesjsintentcorporastrict

Learns a library from its name alone — no URL. Resolves, verifies, harvests, stores.

Returns: Page count, characters, strategy, and a completeness verdict.
harvest_docs
urlnamemax_pagesjsscopeversion

Learns a whole technology from one starting URL. Unlimited by default.

Returns: A summary; read the content back with read_knowledge_base.
harvest_status
harvestwait

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.

Returns: The status of one harvest, or every harvest in flight and recently ended.
find_docs
nameecosystem

Where a name resolves to, with the evidence. Harvests nothing.

Returns: Candidates and how often each page names the package.
scan_project
pathunknown_only

Reads a project's dependency manifests: libraries, versions, and which are already documented.

Returns: A dependency table with documented / undocumented status.

Extract

fetch_docs
urlcrawlmax_pagesjsforce

Extracts any documentation URL to clean Markdown. Auto-detects llms.txt, OpenAPI, sitemap, GitHub, raw text or HTML.

Returns: The Markdown.
save_docs
urlout_dircrawlmax_pagesjsforcesingle_file

Same extraction, written to files on disk.

Returns: The paths written.
detect_source_type
url

Which strategy a URL would use — a cheap probe, no extraction.

Returns: llms_txt, openapi, sitemap, github, raw_text or html.

Read back

search_knowledge_base
querytechnologyversionlimitkind

Ranked search across every stored page at once.

Returns: Matches with a snippet showing why each page matched.
read_knowledge_base
namesectionversion

Reads stored docs back; with section, only the matching pages, ranked.

Returns: The pages, newest version unless one is named.
list_knowledge_base
—

What has been harvested, which versions, and any harvest still running.

Returns: The inventory, with completeness per version.
forget_resolution
name

Forgets where a name resolved to. Deletes no documentation.

Returns: Confirmation.
forget_selection
name

Forgets which corpora were chosen, so it asks again. Deletes no documentation.

Returns: Confirmation.

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:

harvest_response
> 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.