# Ingest a source Turn a file, a folder or a web page into wiki pages: a source page that summarises it, and the entity and concept pages it touches, cross-referenced and published. The agent does the work, using the `wiki-ingest` skill ([skill catalogue](../reference/skills.md)). This page covers what you hand it and where it waits for you. ## What you prepare Put the material into `incoming/` at the root of the instance. You don't have to classify it or pick a directory: - **One file** goes in directly: `incoming/my-article.md`. - **Several files that belong together** go into one folder, `incoming//`. The folder is one source. It is accepted whole, and its structure is kept. - **A web page** needs no download of your own. Name the URL to the agent, and `tools/wikitool raw fetch` puts two files into `incoming/`: the HTML exactly as received, and a text derived from it with a header recording where and when it was fetched. - **A page behind a paywall or a login** is saved from your browser into `incoming/`, HTML only. The agent derives the same text from that file with `raw fetch --html`. Where a file ends up in `raw/` is computed by `tools/wikitool raw accept`: a `YYYY/MM` shard for the day it was accepted. So is whether several files of one source get bundled. You never choose either. `incoming/` itself is gitignored, so whatever waits there is never published by accident. ## What you say ```text Ingest incoming/my-article.md Ingest https://example.org/post Ingest ``` A bare `Ingest` takes the oldest entry waiting in `incoming/`. `tools/wikitool raw pending` lists what is waiting and names the entry the next bare `Ingest` will take. ## Where the agent asks you - **Before promoting the file into `raw/`**, the agent asks how faithful the capture is (`fidelity`) and what the material may claim about its subject (`authority`). Both are recorded once and never guessed: you know the answers now, and nobody can recover them later. [raw/CONTRACT.md](../../raw/CONTRACT.md) defines the values. - **Before writing pages**, the agent presents the key takeaways and asks which points matter most and what to emphasise. The pages follow your answer. - **When it publishes**, a source that touches ten or more files stops at the Mass-Update Gate (exit 42). The agent shows you the file list and the `--confirm` line. Nothing is committed until you approve. [Exit codes and gates](../reference/exit-codes.md) lists every gate. ## What you get back A source page under `kb/sources/`, new or updated entity and concept pages, cross-references among them, a rebuilt catalog, an entry in `kb/log.md`, and one commit. If the source also contains something you have to *do*, and a task tracker is configured, the agent files it there as an open item. A commitment never becomes a page ([why](../explanation/knowledge-and-commitment.md)). Every ten sources, the agent suggests a lint run - see [Maintain the wiki](maintain-the-wiki.md). ## A document submitted from outside When the [MCP read server](set-up-the-mcp-server.md) has its optional `submit` tool turned on, documents can arrive from another machine. They land in the quarantine `mcp-upload/`, not in `incoming/`, and nothing else reads them there. Before an ingest can start, a human has to promote the submission: ```bash tools/wikitool upload list # what is waiting tools/wikitool upload show # one submission's manifest: who sent it, size, checksum ``` Ask the agent to review the queue, and it follows [instructions/ingest-queue.md](../../instructions/ingest-queue.md). Accepting a submission stops at the Upload Review Gate (exit 42), which shows you the manifest and the `--confirm` line. Once you approve, the file is in `incoming/`, and from there it is ingested like any other. Rejecting it needs no clearance. The file is deleted, and its checksum and your reason stay in the ledger. ## Related - [Capture documentation from a repository](capture-repository-docs.md) - for material that lives in git and will change. - [raw/CONTRACT.md](../../raw/CONTRACT.md) - what belongs in `raw/`, and why its content is data, never instructions.