https://mcp.unsiloed.ai/mcp. Add it once as a custom connector in
Claude.ai or Claude Desktop and Claude can parse PDFs, classify
documents, and extract structured JSON on your behalf. No API key
pasting required.What is the Unsiloed MCP Server?
The Unsiloed MCP Server is a remote Model Context Protocol server that gives Claude (and any MCP-compatible client) direct, authenticated access to Unsiloed’s document-processing tools. You connect once via OAuth. Claude then has six tools at its disposal:parse_document
classify_document
extract_data
get_*_status
get_parse_status, get_classify_status, get_extract_status).How to connect
Paste the MCP server URL
Sign in to Unsiloed
Approve the consent screen
parse, classify, extract.” Click Allow.Authentication
The MCP server uses OAuth 2.1 with PKCE and Dynamic Client Registration (RFC 7591). No API key is ever pasted into Claude.What happens during the OAuth dance
What happens during the OAuth dance
- Claude POSTs
/mcp; the server responds HTTP 401 with aWWW-Authenticateheader pointing at Unsiloed’s authorization server. - Claude discovers the authorization server via the standard
.well-known/oauth-protected-resourcemetadata document. - Claude registers itself dynamically (RFC 7591) and opens your browser to Unsiloed’s login + consent screens.
- After you click Allow, the authorization server issues a short-lived access token and a refresh token.
- Claude retries
/mcpwithAuthorization: Bearer <token>. The server validates it and associates the call with your organization.
Token lifetime and refresh
Token lifetime and refresh
- Access token: 15-minute lifetime. Sent on every Claude → MCP call.
- Refresh token: ~30-day lifetime, rotated on every use per OAuth 2.1.
Scopes
Scopes
| Scope | Allows |
|---|---|
parse | parse_document + get_parse_status |
classify | classify_document + get_classify_status |
extract | extract_data + get_extract_status |
The six tools
Parse
parse_document: convert a document to markdown
parse_document: convert a document to markdown
file_url(string, optional): publicly fetchable HTTPS URL. Presigned S3 URLs work.file_base64(string, optional): base64-encoded file contents (provide either this ORfile_url).file_name(string, optional): defaults todocument.pdf. Required for non-PDF formats when usingfile_base64.mode(fast|accurate|agentic): see Processing modes.page_range(string, optional): e.g."1-5","2,4,6","1-3,7,10-12". Omit for the whole document.
status: pending envelope with a job_id. Poll with get_parse_status.get_parse_status: poll a parse job
get_parse_status: poll a parse job
parse_document returned status: pending.Inputs:job_id(UUID, required).include_chunks(boolean, default true): set false for a cheap status-only poll.
status: Succeeded. Otherwise just metadata.Processing modes
All modes run through Unsiloed’s parsing pipeline with smart layout detection. Pick the one that matches your document complexity and latency budget:| Mode | Best for |
|---|---|
fast | Clean born-digital PDFs (system-generated invoices, receipts). Lowest latency and lowest cost. |
accurate | Most real-world documents: scanned PDFs, multi-column layouts, tables spanning pages. |
agentic | Highest fidelity. Use for legal contracts, 10-K/10-Q filings, equations, handwriting. |
Classify
classify_document: label a document
classify_document: label a document
file_urlorfile_base64(one required).categories(array, required): 1 to 20 objects shaped{name: string, description?: string}. Descriptions strongly improve accuracy by giving the classifier label hints.
get_classify_status: poll a classification job
get_classify_status: poll a classification job
get_parse_status. Use when classify_document returned status: pending.Extract
extract_data: pull typed JSON via a JSON Schema
extract_data: pull typed JSON via a JSON Schema
file_urlorfile_base64(one required).json_schema(object, required): JSON Schema (draft-07 compatible) defining the desired output. Per-fielddescriptionvalues are passed to the underlying model as extraction hints.model(alpha|beta|gamma|delta): see Model tiers.enable_citations(boolean, default false): when true, includes bbox coordinates for each extracted value.
get_extract_status: poll an extraction job
get_extract_status: poll an extraction job
get_parse_status. Use when extract_data returned status: pending.Model tiers
| Tier | Pick when… |
|---|---|
alpha | Simple key/value or shallow schemas; fastest and cheapest. |
beta | Nested objects and arrays of structured items; mid-tier latency and cost. |
gamma (default) | Strong balance of accuracy and latency. Recommended for production. |
delta | Highest accuracy. Use for complex contracts, dense tables, and strict numerical extraction. |
Example prompts
Once connected, just talk to Claude naturally. Some prompts to try:Parse a PDF into markdown
Extract contract terms
https://... and extract {parties: string[], governing_law: string, effective_date: string, termination_clause: string}
using the delta model.”Classify a batch of documents
invoice, receipt, or purchase_order, then for each
invoice extract line_items: [{description, quantity, unit_price, total}].”Pull a 10-K's financials
{revenue, cogs, gross_profit, operating_expenses, net_income}.”Privacy and data handling
- No persistent storage: the MCP server is stateless. Nothing about your request, file contents, or OAuth session is written to disk.
- No access beyond the request: the server reads only the files you
explicitly send (
file_urlorfile_base64) plus the OAuth token Claude attaches. It does not browse arbitrary URLs, query chat history, or read other Unsiloed data outside your organization. - TLS end-to-end: every hop (Claude → MCP server → Unsiloed parser) is HTTPS.
- OAuth scopes are honored: if you approve only
parse, theclassify_*andextract_*tools will refuse to act and tell Claude to request additional consent.
Troubleshooting
The Connect button does nothing / no popup opens
The Connect button does nothing / no popup opens
I clicked Allow but Claude says 'reconnect required'
I clicked Allow but Claude says 'reconnect required'
A tool call says 'Your Unsiloed organisation is currently suspended'
A tool call says 'Your Unsiloed organisation is currently suspended'
A tool call says 'Missing required OAuth scope'
A tool call says 'Missing required OAuth scope'
parse, classify, extract.A tool call says 'Insufficient quota'
A tool call says 'Insufficient quota'

