Synzo MCP Server
What is Synzo MCP?
The Synzo MCP server exposes document-intelligence tools to MCP-compatible clients (claude.ai, Claude Desktop). It runs at https://www.synzo.ai/mcp and authenticates callers via API key or OAuth (WorkOS).
What you can do with it
- upload_file — upload a file once and receive a short-lived URL the other tools can reference. Use this first when operating on a local file.
- summarize_document — extract a structured summary from a PDF, .docx, .pptx, or .xlsx file.
- translate_document — translate a .docx, .pptx, or .xlsx file into the target language (returns markdown).
- redact_pii — produce a redacted copy of a .docx or .pptx with PII removed in place. Returns a short-lived download URL.
- analyze_image — describe an image and extract dominant colors.
- detect_faces — detect faces in an image and return a blurred or redacted copy. Returns a short-lived download URL.
URL-first by design
The five content-processing tools accept a content_url argument — any HTTPS URL the server can reach. This is the design's core property: the chat-host LLM passes a short URL string in the tool call instead of generating a multi-megabyte base64 payload as model output tokens. For any file already at an HTTPS URL (your own site, a public GitHub raw URL, an image host, etc.) the cost is near-zero — the LLM emits a few dozen tokens and the server fetches the bytes in the background.
For local files with no URL, upload_file ingests one file once and returns a Synzo-hosted URL valid for 1 hour. Pass that URL to any of the other tools the same way.
The server fetches content_url through an SSRF-guarded fetcher: HTTPS only; public IPs only (loopback / private / link-local / cloud-metadata addresses are rejected); 10 MB max; 30 s timeout. We host a small library of sample files at /static/reviewer-samples/* so you can try the tools without staging a URL of your own.
Examples
// Pass a URL directly (fastest path)
analyze_image(
filename = "photo.jpg",
content_url = "https://www.synzo.ai/static/reviewer-samples/analyze-sample.jpg"
)
// Local file: upload first, then pass the returned URL
upload_file(filename = "memo.docx", content_base64 = "...")
-> { content_url: "https://www.synzo.ai/u/abc123", expires_at: "..." }
summarize_document(filename = "memo.docx", content_url = "https://www.synzo.ai/u/abc123")
Setup guides
Claude.ai (web)
- Open Settings → Connectors → Add custom connector.
- Paste
https://www.synzo.ai/mcpas the server URL. - Sign in via the WorkOS prompt. After sign-in, the six Synzo tools appear in
tools/list. - Try a prompt with one of the sample URLs: "Use Synzo to summarize the document at https://www.synzo.ai/static/reviewer-samples/summarize-sample.pdf".
Claude Desktop
- Settings → Connectors → Add connector → paste
https://www.synzo.ai/mcp. - If your organization has connectors disabled at the policy level, this flow is blocked — use claude.ai instead.
Available tools
The table below is generated from the live tool registry at https://www.synzo.ai/mcp.
| Tool | Description | Example prompt |
|---|---|---|
upload_fileUpload a file for use by other Synzo tools | Upload a file to Synzo and receive a short-lived HTTPS URL. Use this FIRST when you need to operate on a local file: call upload_file once with the file's base64 bytes, then pass the returned content_url to any of the other Synzo tools (summarize_document, translate_document, redact_pii, analyze_image, detect_faces). The URL expires in 1 hour. Decoded size must not exceed 10 MB. | “Upload this PDF so I can summarize it.” |
summarize_documentSummarize a document | Classify and summarize a PDF, DOCX, PPTX, or XLSX file. Returns the inferred document type and a structured Markdown summary. Pass `content_url` — an HTTPS URL the server will fetch from (max 10 MB). For local files, call upload_file first to get a URL. | “Summarize the attached quarterly report and pull out the three biggest risks.” |
translate_documentTranslate a document | Translate the text content of a DOCX, PPTX, or XLSX file into a target language. Returns the translated text as Markdown (no binary file round-trip). Pass `content_url` — an HTTPS URL the server will fetch from (max 10 MB). For local files, call upload_file first to get a URL. | “Translate the attached product brief into Spanish.” |
redact_piiRedact PII from a document | Detect and redact personally identifiable information (PII) in a DOCX or PPTX file using Microsoft Presidio. Returns a short-lived HTTPS URL (`result_url`) where the redacted document can be downloaded. PII characters are replaced with the block symbol in place so formatting is preserved. Pass `content_url` — an HTTPS URL the server will fetch from (max 10 MB). For local files, call upload_file first to get a URL. | “Redact all personal information from the attached HR letter and send me the cleaned version.” |
analyze_imageAnalyze an image | Use Gemini vision to analyze an image and return a structured description, extracted text, safety flags (people / PII / graphic content), a list of detected objects, and a palette of the dominant colors. Supports JPG, PNG, WEBP, HEIC, HEIF up to 10 MB. Pass `content_url` — an HTTPS URL the server will fetch from. For local files, call upload_file first to get a URL. | “Describe what's in the attached photo, list any visible text, and tell me the dominant colors.” |
detect_facesDetect and obscure faces in an image | Detect human faces in an image (MTCNN) and return a short-lived HTTPS URL (`result_url`) where the processed PNG can be downloaded — each face either blurred or covered with an opaque rectangle. Useful for anonymizing photos before sharing. Pass `content_url` — an HTTPS URL the server will fetch from (JPG/PNG/WEBP/HEIC/HEIF, max 10 MB). For local files, call upload_file first to get a URL. | “Blur every face in the attached photo before I share it.” |
Troubleshooting
Authentication fails or the token is rejected
Sign out and sign back in. If the issue persists, re-add the connector — claude.ai caches the WorkOS client registration and a fresh add re-runs DCR.
Invalid file type or bad argument
Each tool only accepts specific file types — see Available tools above for the supported types per tool. Argument failures (wrong extension, magic-bytes mismatch, bad base64) come back as isError: true in the tool result envelope so the model can recover, not as a JSON-RPC error code. Your quota is refunded automatically.
Quota exceeded (error -32002)
Check your usage at /dashboard/usage. Free tier allows 50 calls per month with 20 pages per call.
Rate limit exceeded (error -32003)
Wait a moment and retry, or upgrade your plan for a higher per-minute rate limit.
File too large for plan tier (error -32004)
The decoded file exceeds the per-call page cap for your plan. Free tier allows up to 20 pages per call; reduce the file size or upgrade your plan.
Tool timed out (error -32005)
Each tool call has a 60-second wall-clock limit. Your quota is refunded automatically when a timeout fires. Retry with a smaller file or split the work into multiple calls.
FAQ
Can multiple users connect to the same Synzo organization?
Yes — invite teammates from your /dashboard. The organization's quota is shared across all members.
What data does the server have access to?
Only the file you pass into a tool call. File bodies are processed in memory and not persisted. Metadata about the call (tool name, units, timestamp, status) is recorded for billing; document contents never are.
Does this support conversation history?
No. Each tool call is stateless — the server does not see prior Claude messages or other tool calls.