# Uploading documents

Three tools take a file: `create_questionnaire`, `create_rfp` and
`create_source`. All three accept the file in one of two ways, and the choice
matters more than it looks.

## Use a URL, not the file itself

| Method | When it works |
|---|---|
| **`file_url`** | Anything real. ResponseHub fetches the file from an http(s) URL you give it. |
| **`content_base64`** | Tiny files only — a couple of kilobytes at most. |

Sending the file inline means the assistant has to reproduce the entire encoded
document character by character, and a single wrong character ruins it. An
18KB questionnaire is already around 24,000 characters encoded; an ordinary
policy PDF runs to hundreds of thousands. In practice, inline uploads work for
toy files and fail for real ones.

So: put the file somewhere ResponseHub can reach and give the assistant the URL.

**The URL must be publicly reachable:** ResponseHub fetches the file from its own servers, not from your machine. A
link on your local network, a `localhost` address, or a share that needs a login
will fail. A time-limited link from cloud storage is a good fit — it is reachable
while the upload happens and expires afterwards.

If a document only exists on your computer, upload it through the web UI or the
Chrome extension and let the assistant work with it from there.

## What each tool accepts

| Tool | Formats |
|---|---|
| `create_questionnaire` | XLSX, DOCX |
| `create_rfp` | XLSX, DOCX |
| `create_source` | PDF, DOCX, DOC, ODT, RTF, PPTX, PPT |

Files are capped at 50MB. Always send the `filename` with its extension — that
is what ResponseHub uses to work out the file type.

## Titles and descriptions

A title you supply is kept exactly as you wrote it. Leave it out and ResponseHub
generates one from the document's contents once it has read it — so a document
uploaded without a title may be listed under its filename at first and gain a
better one a minute later. The same goes for a description, and for an RFP's
background context.

If you care what something is called, say so when you upload it.

## Processing takes a moment

Nothing is ready the instant it uploads:

- A **questionnaire** or **RFP** has its questions extracted in the background.
- A **source** is read, and its content prepared for answering.

The create tool returns as soon as the upload lands, with the new record's id.
Progress is visible by fetching that record — `get_questionnaire`, `get_rfp` or
`get_source` — and a source only contributes to answers once it reaches
**Ready to use**. See [importing sources](/help/sources/importing-sources/) for
what the states mean.

Ask an assistant to "upload this and tell me when it's ready" and it will poll
for you.

## Next steps

- [Tool reference](/help/mcp/tools/)
- [Importing sources](/help/sources/importing-sources/)
- [Starting a new questionnaire](/help/questionnaires/start-a-new-questionnaire/)