Skip to main content
The Knowledge node is in alpha and appears once the feature is switched on for your organization. Ask us to enable it.
Ask your filing cabinet shows the Knowledge node from the app and the REST API. This page is the same idea from an agent’s seat: every step is an MCP tool call, and every payload below comes from one live session, with identifiers shortened. An operations team keeps three kinds of document in one workflow: the service note for a piece of equipment, the invoices that come in for it, and the list of approved vendors. The agent builds the workflow, feeds it the files, and then works the corpus with five read tools.
The agent asks
It gets back
NodesToolsCredits
The session in order:
  1. create_workflow builds a parse → knowledge graph.
  2. stage_files and upload_documents put three local files into the workflow.
  3. run_document_packet and get_run parse them; the corpus indexes on its own right after.
  4. ask_knowledge answers questions with citations, and keeps a thread for follow-ups.
  5. list_knowledge, search_knowledge and read_knowledge work the corpus without a model.
  6. download_knowledge hands over the whole corpus as one archive.

1. Create the workflow

The Knowledge node has no options. Its presence opts the workflow into indexing: every completed run adds its parsed documents to the corpus. mode: "lite" on the parse is enough for text documents; use standard when the pages are scans.

2. Stage and upload the files

A tool call carries JSON, not bytes. stage_files returns one upload form per file plus a short object_id to refer to it by. Send the real byte length as declared_size.
The agent POSTs each file as multipart/form-data to its slot, every upload.fields entry first, then the file. All three answered 204.
upload_documents then registers the three as one document packet, atomically. A CSV or a spreadsheet goes in exactly like a PDF.

3. Run it, then let the index catch up

get_run with wait_seconds long-polls; three small text documents were processed in about three seconds. Indexing starts on its own when the run completes and takes a few more seconds. An ask_knowledge call in that window is refused with a retryable error, not a wrong answer:
Retry every few seconds while indexing is in progress. The first two asks of this session got that envelope; the third answered. New runs later re-index in the background while the existing corpus keeps serving, so this wait only happens the first time.

4. Ask, and keep the thread

A question that spans two documents, with a thread_id so the next question can build on it. Mint the id yourself with the prefix kb-.
Forty-seven seconds later:
Two things to read off that answer. The agent said what the corpus does not contain instead of guessing a vendor: an answer is served only when every quote it rests on was found in a document. And the citations differ by source: on the PDF each quote resolves to a page and a box in page-relative coordinates, ready to highlight; on the CSV there is no page to point at, so page and bbox are null and the block id locates the row inside the rendered table. The follow-up carries the same thread_id and no restated context:
Fourteen seconds: the thread remembered which vendor was in question and the agent only had to search for the terms. A question about the invoice, in a fresh thread, answers the issuer, number, total and date with one citation each, every one with a box on page 1:
Every ask_knowledge call is billed and runs an agent over the corpus, so it takes seconds to a couple of minutes. The three tools below cost nothing and answer in about a second; reach for them first when the agent already knows what it is looking for.

5. List, search and read, without a model

list_knowledge returns the corpus tree. Documents are filed by upload month unless a Classify node runs before Knowledge, in which case the category names the folder. The .kb/ pages are generated navigation (kind: "index"), never evidence.
Pages of up to 200 entries; pass next_cursor back as cursor to continue. search_knowledge ranks documents for a query with the same index the agent’s own search uses. The snippet marks the matched term:
read_knowledge returns one document as the corpus stores it: a frontmatter block, then the parsed markdown with an anchor before every block. Those anchors are the block_id values the citations use.
A document longer than 20,000 characters comes back cut there with truncated: true; download_knowledge below is the way to get the whole text. A path that is not in the corpus is a plain NOT_FOUND:

6. Download the corpus

download_knowledge takes only the workflow id and returns a presigned URL for the current corpus as one tar.gz, valid for 15 minutes. It is the way to hand the whole corpus to something outside anyformat: a local search index, a backup, another agent.
The archive holds the same tree list_knowledge shows, plus the structure the citations resolve against:
Possession of the URL is read permission for the corpus until it expires. It survives revoking the API key that requested it, and it can stop answering after a re-index or a deletion. Treat it like the bytes themselves.

When to use which tool

Every read tool answers KNOWLEDGE_NOT_ENABLED on a workflow without the node, KNOWLEDGE_NOT_READY while the first corpus is still building, and a flat 404 when the caller cannot see the workflow.