Agents and MCP
Folio is an MCP server as well as an HTTP API. Point an agent at it and it gets
one tool, convert_document, that turns a file into Markdown.
The endpoint is https://quirelabs.com/api/folio/mcp. It speaks stateless HTTP, so
there is no session to keep alive, nothing to install, and nothing to run
locally.
Connect it
Pick your client. The key is the one from your dashboard, and it bills against the same allowance as the HTTP API.
Run this anywhere. Drop --scope user to add it for one project only.
claude mcp add --transport http folio \ https://quirelabs.com/api/folio/mcp \ --header "Authorization: Bearer $FOLIO_KEY" \ --scope user
Config keys drift between releases, so if a client rejects the block above, its own MCP documentation is the authority. What it needs never changes: streamable HTTP, that URL, and that header.
ChatGPT connectors do not work yet
Everything above authenticates with a bearer token. ChatGPT's custom connectors are the one client that will not accept one: they require OAuth 2.1 with dynamic client registration, and Folio does not implement it.
This is worth waiting out rather than working around. The current MCP specification deprecates dynamic client registration in favour of pre-registered clients, so building against it now would mean building the mechanism the protocol is moving away from. The OpenAI Agents SDK and the Responses API both work today, and both are the surfaces you would use to build something rather than to chat with it.
Why an agent should use it
An agent handed a .docx has two bad options without this.
It can read the file as text. An office document is a zip of XML and a PDF is a binary container, so this produces either markup or nothing usable, and burns context doing it.
Or it can be handed the pages as images. That works, and a page costs substantially more as an image than the same page costs as Markdown.
convert_document is the third option. Pages that carry their own text are
extracted locally and cost nothing at all; only scanned pages go to an OCR model,
and only those are billed. A mostly-typed document is close to free.
The tool
convert_document takes two arguments, both required.
| Argument | Meaning |
| --- | --- |
| filename | The name with its extension. Used to identify the format when the content carries no signature, which is only CSV. |
| content_base64 | The document itself, base64 encoded. |
It returns the Markdown as text content. Errors come back as JSON-RPC errors
rather than HTTP statuses, which is what the protocol expects: a missing key is a
200 carrying an error object, not a 401.
What it costs
The same as everything else. Documents count against your monthly allowance, scanned pages count against your OCR pages, and text-layer pages count against nothing. See what gets billed.