John's Essentials
REMOTE · API.JOHNSESSENTIALS.COM · SCANNED SEP 20
144 deterministic file tools: PDF, image, media, convert, analyze. Connect in one click (OAuth).
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security97
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- The endpoint enforces authorisation, advertised via RFC 9728 protected-resource metadata. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability79
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 26447 tokens (~175/item across 151 items; 148 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management46
- Stability check failed: schema churn in the 14 days we've observed: 0 tool removals, 1 breaking changes, 0 auth/transport breaks, 4 additions. See how to fix → Fail
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 150 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the John's Essentials MCP server?
John's Essentials is a hosted endpoint at https://api.johnsessentials.com/mcp/messages, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · api.johnsessentials.com
claude mcp add --transport http com-johnsessentials-johns-essentials 'https://api.johnsessentials.com/mcp/messages'
{
"mcpServers": {
"com-johnsessentials-johns-essentials": {
"url": "https://api.johnsessentials.com/mcp/messages"
}
}
} {
"servers": {
"com-johnsessentials-johns-essentials": {
"type": "http",
"url": "https://api.johnsessentials.com/mcp/messages"
}
}
} [mcp_servers.com-johnsessentials-johns-essentials] url = "https://api.johnsessentials.com/mcp/messages"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-johnsessentials-johns-essentials": {
"type": "remote",
"url": "https://api.johnsessentials.com/mcp/messages",
"enabled": true
}
}
} openclaw mcp add com-johnsessentials-johns-essentials --url 'https://api.johnsessentials.com/mcp/messages' --transport streamable-http
mcp_servers:
com-johnsessentials-johns-essentials:
url: "https://api.johnsessentials.com/mcp/messages" {
"McpServers": {
"com-johnsessentials-johns-essentials": {
"Transport": "http",
"Url": "https://api.johnsessentials.com/mcp/messages"
}
}
} assistant mcp add com-johnsessentials-johns-essentials -t streamable-http -u 'https://api.johnsessentials.com/mcp/messages'
{
"mcpServers": {
"com-johnsessentials-johns-essentials": {
"type": "http",
"url": "https://api.johnsessentials.com/mcp/messages"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 18 Sept 26 +1
- Tool “email_file” rewrote its description, which is the text the model reads security
- 17 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- New tool “drive_upload” functional
- 16 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 30 to 33.
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 26.
- 12 Sept 26 0
We did not load change detail this far back for this component, so this day may have recorded more than is shown.
- Stability: 0.17 → fail ▼ security
- A breaking change shipped without a version bump: still 1.2.0 ▼ security
- Tool “pdf_extract_pages” rewrote its description, which is the text the model reads security
- “convert_geo” changed the type of “strict”: string → boolean ▼ functional
- “pdf_excel_to_pdf_batch” added an optional parameter “watermarkColor” cosmetic
- “photo_watermark” added an optional parameter “stroke_width” cosmetic
- “pdf_images_to_pdf” added an optional parameter “autoOrient” cosmetic
- “pdf_excel_to_pdf” added an optional parameter “watermarkScale” cosmetic
- “pdf_reverse” added an optional parameter “outputName” cosmetic
- “photo_to_text” added an optional parameter “binarize_threshold” cosmetic
- “pdf_excel_to_pdf” added an optional parameter “watermarkRotation” cosmetic
- “pdf_grayscale” added an optional parameter “pages” cosmetic
- “pdf_excel_to_pdf_batch” added an optional parameter “watermarkFont” cosmetic
- “pdf_excel_to_pdf_batch” added an optional parameter “watermarkOpacity” cosmetic
- “pdf_excel_to_pdf_batch” added an optional parameter “watermarkRotation” cosmetic
- “convert_file” added an optional parameter “gif_width” cosmetic
- “generate_barcode” added an optional parameter “showText” cosmetic
- “photo_bg_remover” added an optional parameter “alpha_matting_erode_size” cosmetic
- “photo_bg_remover” added an optional parameter “alpha_matting” cosmetic
- “pdf_grayscale” added an optional parameter “outputName” cosmetic
- “pdf_grayscale” added an optional parameter “strict” cosmetic
- “pdf_reverse” added an optional parameter “reverseTarget” cosmetic
- “photo_bg_remover” added an optional parameter “alpha_matting_background_threshold” cosmetic
- “pdf_remove_watermark” added an optional parameter “passthrough” cosmetic
- “pdf_excel_to_pdf_batch” added an optional parameter “watermarkScale” cosmetic
- “pdf_excel_to_pdf” added an optional parameter “watermarkOpacity” cosmetic
- “convert_sqlite” added an optional parameter “strict” cosmetic
- “photo_watermark” added an optional parameter “color” cosmetic
- “photo_bg_remover” added an optional parameter “alpha_matting_foreground_threshold” cosmetic
- “pdf_excel_to_pdf_batch” added an optional parameter “watermarkPosition” cosmetic
- “generate_favicon” added an optional parameter “background” cosmetic
- “convert_video” added an optional parameter “crf” cosmetic
- “pdf_images_to_pdf” added an optional parameter “fitMode” cosmetic
- “convert_file” added an optional parameter “gif_fps” cosmetic
- “pdf_excel_to_pdf_batch” added an optional parameter “watermarkFontSize” cosmetic
- “photo_to_text” added an optional parameter “binarize” cosmetic
- “pdf_grayscale” added an optional parameter “mode” cosmetic
- “pdf_excel_to_pdf” added an optional parameter “watermarkPosition” cosmetic
- “pdf_crop” reworded the description of “bottom” cosmetic
- “pdf_protect” reworded the description of “encryption” cosmetic
- “pdf_flatten” reworded the description of “signatureMode” cosmetic
- “pdf_excel_to_pdf_batch” reworded the description of “scale” cosmetic
- “pdf_to_images” reworded the description of “backgroundColor” cosmetic
- “analyze_color_palette” reworded the description of “colors” cosmetic
- “pdf_excel_to_pdf” reworded the description of “gridlines” cosmetic
- “analyze_ssl” reworded the description of “hostname” cosmetic
- “pdf_to_excel_batch” reworded the description of “ocrLang” cosmetic
- “web_extract_table” reworded the description of “user_agent” cosmetic
- “analyze_hash” reworded the description of “file” cosmetic
- “pdf_to_images_batch” reworded the description of “watermarkPosition” cosmetic
- “web_extract_table” reworded the description of “acknowledge_robots” cosmetic
- “web_scrape_page” reworded the description of “selectors” cosmetic
- “pdf_merge” reworded the description of “pageRanges” cosmetic
- “convert_file” reworded the description of “from” cosmetic
- “generate_password” reworded the description of “uppercase” cosmetic
- “pdf_to_images” reworded the description of “jpegQuality” cosmetic
- “pdf_excel_to_pdf” reworded the description of “permPassword” cosmetic
- “generate_ascii_art” reworded the description of “text” cosmetic
- “photo_collage” reworded the description of “template” cosmetic
- “media_extract_frames” reworded the description of “max” cosmetic
- “pdf_header_footer” reworded the description of “headerAlign” cosmetic
- “photo_face_blur” reworded the description of “manual_faces” cosmetic
- “pdf_page_numbers” reworded the description of “format” cosmetic
- “pdf_watermark” reworded the description of “text” cosmetic
- “pdf_header_footer” reworded the description of “fontSize” cosmetic
- “web_extract_table” reworded the description of “timeout_ms” cosmetic
- “pdf_header_footer” reworded the description of “pageNumberPosition” cosmetic
- “photo_resize” reworded the description of “percentage” cosmetic
- “generate_ascii_art” reworded the description of “mode” cosmetic
- “pdf_excel_to_pdf_batch” reworded the description of “gridlines” cosmetic
- “pdf_header_footer” reworded the description of “margin” cosmetic
- “web_scrape_page” reworded the description of “mode” cosmetic
- “pdf_to_images_batch” reworded the description of “tiffCompression” cosmetic
- “generate_invoice” reworded the description of “discountPercent” cosmetic
- “pdf_to_images_batch” reworded the description of “webpQuality” cosmetic
- “pdf_to_images_batch” reworded the description of “watermarkScale” cosmetic
- “convert_video” reworded the description of “preset_name” cosmetic
- “web_extract_table” reworded the description of “table_index” cosmetic
- “pdf_to_images” reworded the description of “preset” cosmetic
- “pdf_to_images_batch” reworded the description of “sheetBackground” cosmetic
- “convert_parquet” reworded the description of “sheet” cosmetic
- “pdf_flatten_batch” reworded the description of “signatureMode” cosmetic
- “analyze_word_frequency” reworded the description of “topN” cosmetic
- “pdf_to_images” reworded the description of “avifQuality” cosmetic
- “photo_to_text” reworded the description of “languages” cosmetic
- “media_add_watermark” reworded the description of “opacity” cosmetic
- “pdf_excel_to_pdf_batch” reworded the description of “sheets” cosmetic
- “pdf_to_images_batch” reworded the description of “maxWidth” cosmetic
- “pdf_header_footer” reworded the description of “footerAlign” cosmetic
- “generate_password” reworded the description of “lowercase” cosmetic
- “convert_archive” reworded the description of “to” cosmetic
- “convert_video” reworded the description of “to” cosmetic
- “pdf_excel_to_pdf” reworded the description of “sheets” cosmetic
- “convert_unit_convert” reworded the description of “value” cosmetic
- “pdf_to_images_batch” reworded the description of “avifQuality” cosmetic
- “generate_ascii_art” reworded the description of “font” cosmetic
- “analyze_grammar_check” reworded the description of “include_llm” cosmetic
- “analyze_word_frequency” reworded the description of “exclude” cosmetic
- “pdf_excel_to_pdf_batch” reworded the description of “pdfa” cosmetic
- “generate_password” reworded the description of “length” cosmetic
- “convert_chain” reworded the description of “from” cosmetic
- “pdf_to_excel” reworded the description of “ocrLang” cosmetic
- “pdf_flatten” reworded the description of “watermarkPosition” cosmetic
- “convert_document” reworded the description of “from” cosmetic
- “convert_sqlite” reworded the description of “to” cosmetic
- “pdf_to_excel_inspect” reworded the description of “ocrLang” cosmetic
- “pdf_crop” reworded the description of “left” cosmetic
- “convert_text” reworded the description of “from” cosmetic
- “pdf_flatten_batch” reworded the description of “compressPreset” cosmetic
- “pdf_flatten_batch” reworded the description of “ocrLang” cosmetic
- “analyze_hash” reworded the description of “text” cosmetic
- “analyze_file_diff” reworded the description of “text_b” cosmetic
- “generate_ascii_art” reworded the description of “width” cosmetic
- “pdf_to_images” reworded the description of “watermarkScale” cosmetic
- “photo_face_blur” reworded the description of “block_size” cosmetic
- “pdf_to_images” reworded the description of “sheetColumns” cosmetic
- “octopus_list” reworded the description of “folder” cosmetic
- “data_to_file” reworded the description of “name” cosmetic
- “convert_data” reworded the description of “to” cosmetic
- “pdf_to_images” reworded the description of “maxWidth” cosmetic
- “pdf_to_images” reworded the description of “transparent” cosmetic
- “pdf_page_numbers” reworded the description of “position” cosmetic
- “pdf_excel_to_pdf” reworded the description of “showHeaders” cosmetic
- “analyze_word_count” reworded the description of “text” cosmetic
- “media_extract_audio” reworded the description of “format” cosmetic
- “analyze_link_extractor” reworded the description of “file” cosmetic
- “pdf_to_excel” reworded the description of “sheetMode” cosmetic
- “pdf_excel_to_pdf” reworded the description of “pdfa” cosmetic
- “pdf_to_images” reworded the description of “watermarkTile” cosmetic
- “pdf_excel_to_pdf” reworded the description of “quality” cosmetic
- “web_scrape_page” reworded the description of “user_agent” cosmetic
- “email_file” reworded the description of “subject” cosmetic
- “pdf_to_images” reworded the description of “tiffCompression” cosmetic
- “generate_barcode” reworded the description of “type” cosmetic
- “generate_qr_code” reworded the description of “size” cosmetic
- “photo_resize” reworded the description of “bg_color” cosmetic
- “web_fetch” reworded the description of “acknowledge_robots” cosmetic
- “pdf_to_images” reworded the description of “webpQuality” cosmetic
- “pdf_excel_to_pdf” reworded the description of “scale” cosmetic
- “pdf_to_excel_inspect” reworded the description of “ocrFirst” cosmetic
- “pdf_rotate” reworded the description of “rotation” cosmetic
- “pdf_flatten” reworded the description of “compressPreset” cosmetic
- “generate_barcode” reworded the description of “height” cosmetic
- “pdf_rotate” reworded the description of “pages” cosmetic
- “photo_collage” reworded the description of “output_width” cosmetic
- “analyze_readability” reworded the description of “text” cosmetic
- “pdf_ocr” reworded the description of “lang” cosmetic
- “pdf_to_images” reworded the description of “sheetBackground” cosmetic
- “data_to_file” reworded the description of “format” cosmetic
- “pdf_compress” reworded the description of “metadataOnly” cosmetic
- “describe_image” reworded the description of “question” cosmetic
- “pdf_compress” reworded the description of “targetSize” cosmetic
- “pdf_images_to_pdf” reworded the description of “files” cosmetic
- “pdf_crop” reworded the description of “top” cosmetic
- “pdf_flatten_batch” reworded the description of “exportData” cosmetic
- “pdf_split” reworded the description of “chunkSize” cosmetic
- “photo_collage_animated” reworded the description of “output_width” cosmetic
- “pdf_to_images_batch” reworded the description of “watermarkTile” cosmetic
- “chatwithyourpdf” reworded the description of “max_chars” cosmetic
- “photo_compress_to_size” reworded the description of “output_format” cosmetic
- “photo_resize” reworded the description of “width” cosmetic
- “pdf_watermark” reworded the description of “color” cosmetic
- “generate_password” reworded the description of “symbols” cosmetic
- “pdf_to_images” reworded the description of “sheetGap” cosmetic
- “convert_video” reworded the description of “resolution” cosmetic
- “pdf_to_images_batch” reworded the description of “sheetGap” cosmetic
- “convert_file” reworded the description of “to” cosmetic
- “pdf_page_numbers” reworded the description of “start” cosmetic
- “web_scrape_page” reworded the description of “timeout_ms” cosmetic
- “pdf_watermark” reworded the description of “fontSize” cosmetic
- “pdf_header_footer” reworded the description of “fontFamily” cosmetic
- “photo_face_blur” reworded the description of “selected_faces” cosmetic
- “convert_text” reworded the description of “to” cosmetic
- “web_scrape_page” reworded the description of “acknowledge_robots” cosmetic
- “web_fetch” reworded the description of “timeout_ms” cosmetic
- “convert_chain” reworded the description of “steps” cosmetic
- “pdf_protect” reworded the description of “password” cosmetic
- “generate_ascii_art” reworded the description of “file” cosmetic
- “convert_batch” reworded the description of “filenames” cosmetic
- “pdf_crop” reworded the description of “right” cosmetic
- “pdf_split” reworded the description of “pages” cosmetic
- “convert_geo” reworded the description of “strict” cosmetic
- “pdf_to_images_batch” reworded the description of “transparent” cosmetic
- “pdf_watermark” reworded the description of “fontFamily” cosmetic
- “pdf_to_images” reworded the description of “watermarkPosition” cosmetic
- “analyze_link_extractor” reworded the description of “text” cosmetic
- “analyze_file_diff” reworded the description of “text_a” cosmetic
- “generate_hash” reworded the description of “text” cosmetic
- “pdf_flatten_batch” dropped the optional parameter “watermarkTile” cosmetic
- “pdf_flatten” dropped the optional parameter “watermarkTile” cosmetic
- “analyze_link_extractor” made “file” optional cosmetic
- “generate_hash” made “text” optional cosmetic
- “analyze_hash” made “file” optional cosmetic
- “analyze_readability” made “text” optional cosmetic
- 11 Sept 26 +1
We did not load change detail this far back for this component, so this day may have recorded more than is shown.
- 9 Sept 26 +1
We did not load change detail this far back for this component, so this day may have recorded more than is shown.
- 7 Sept 26 +1
We did not load change detail this far back for this component, so this day may have recorded more than is shown.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Probed https://api.johnsessentials.com/mcp/messages
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=johnsessentials.com | CN=YE2,O=Let's Encrypt,C=US | 5 Aug 2026 | 3 Nov 2026 | ECDSA 256 | ECDSA-SHA384 | 515533c64147486b08640e2b39ce24251a1 |
| SANs: *.johnsessentials.com, johnsessentials.com | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of api.johnsessentials.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| johnsessentials.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On connection |
| HTTP status | 401 |
WWW-Authenticate challenge Bearer resource_metadata="https://api.johnsessentials.com/.well-known/oauth-protected-resource", scope="read write"
Bearer resource_metadata="https://api.johnsessentials.com/.well-known/oauth-protected-resource", scope="read write" | Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| www-authenticate | Bearer resource_metadata="https://api.johnsessentials.com/.well-known/oauth-protected-resource", scope="read write" |
Protected resource metadata
| Document | https://api.johnsessentials.com/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://api.johnsessentials.com/mcp/messages |
| Authorisation server | https://api.johnsessentials.com |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://api.johnsessentials.com/mcp/messages | Verified | 200 | |
| http (plaintext) | http://api.johnsessentials.com/mcp/messages | HTTPS enforced | 301 | https://api.johnsessentials.com/mcp/messages |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
pdf_reorder ~122
Reorder PDF Pages — Reorder the pages of a PDF by supplying the desired page sequence. [category: pdf]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input PDF (max 25MB) |
| order | string | yes | Complete new page order — EVERY page exactly once, comma-separated, e.g. '3,1,2' for a 3-page PDF. Partial orders, duplicates, or missing pages are rejected with a 400. |
| outputName | string | – | Optional custom output basename. |
| password | string | – | Optional password for encrypted PDFs. |
No output schema declared.
No examples provided.
pdf_repair ~40
Repair PDF — Attempt to repair a corrupted or malformed PDF using Ghostscript. [category: pdf]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input file (PDF) |
No output schema declared.
No examples provided.
pdf_reverse ~126
Reverse Page Order — Reverse the page order of a PDF (last page becomes first). [category: pdf]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input file (PDF) |
| outputName | string | – | Optional name for the file you get back. Leave blank and we name it for you. |
| ranges | string | – | Reverse only these pages, written as 1-3,7-10. Leave it blank to reverse the whole document. |
| reverseTarget | string | – | Which pages the reversal applies to when you have named a range above. Ignored when no range is given. |
No output schema declared.
No examples provided.
pdf_rotate ~109
Rotate PDF — Rotate pages of a PDF by 90, 180, or 270 degrees — all pages or specific page numbers. [category: pdf]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input PDF (max 25MB) |
| outputName | string | – | Optional custom output filename. |
| pages | string | – | Which pages to turn, e.g. '1-3,5'. Leave blank to turn every page. |
| rotation | integer | – | How far to turn each page, clockwise. |
No output schema declared.
No examples provided.
pdf_rtf_to_pdf ~44
RTF to PDF — Convert an RTF document to PDF using LibreOffice. [category: pdf]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input file (RTF) |
No output schema declared.
No examples provided.
pdf_set_metadata ~209
Set PDF Metadata — Write or update metadata fields (Title, Author, Subject, Keywords) in a PDF. Fields are soft-verified after writing (mismatches are logged, not failed). At least ONE of title/author/subject/keywords must be provided or the request is rejected. [category: pdf]
| Name | Type | Req | Description |
|---|---|---|---|
| author | string | – | Written verbatim to Author. Empty = left unchanged — this tool cannot blank a field (use pdf_remove_metadata to clear). |
| file | string | yes | The PDF to edit. Password-protected input is rejected 400 — run pdf_unlock first. |
| keywords | string | – | Free-text Keywords string written verbatim (commas are convention, not parsed). Empty = left unchanged, never cleared. |
| subject | string | – | Written verbatim to Subject. Empty = left unchanged — clearing a field is not possible here (use pdf_remove_metadata). |
| title | string | – | At least one of title/author/subject/keywords is required. |
No output schema declared.
No examples provided.
pdf_split ~163
Split PDF — Split a PDF by page range, into individual pages, by fixed chunk size, or into even/odd pages. [category: pdf]
| Name | Type | Req | Description |
|---|---|---|---|
| chunkSize | integer | – | How many pages go into each output file. |
| file | string | yes | Input PDF (max 25MB) |
| mode | string | – | Split mode. 'range' extracts the pages listed in 'pages'; 'all' splits every page into its own file; 'chunks' splits every chunkSize pages; 'even'/'odd' keep only even/odd pages. |
| outputName | string | – | Optional base name for the output file(s). |
| pages | string | – | Which pages to keep, e.g. '1-3,5,7-9'. |
No output schema declared.
No examples provided.
pdf_thumbnails ~98
PDF Thumbnails — Generate thumbnail preview images for each page of a PDF. [category: pdf]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | The PDF to preview. A 1-page input returns a bare JPEG instead of a ZIP — plan for both shapes. Password-protected = 400. |
| quality | string | – | Thumbnail size: small=72dpi, medium=150dpi, large=300dpi. There is no 'width' parameter. |
No output schema declared.
No examples provided.
pdf_to_excel ~267
PDF to Excel — Extract tables from PDFs into XLSX / CSV / TSV / JSON. Uses tabula-java (lattice + stream modes) with LibreOffice as fallback. Supports page ranges, table selection, sheet strategy (per-table/per-page/single), OCR for scanned PDFs (Starter+), JSON output (Starter+), and a non-destructive inspect endpoint that reports row/col counts plus ragged/sparse confidence flags. [category: pdf]
| Name | Type | Req | Description |
|---|---|---|---|
| engine | string | – | Table detection engine. auto = tabula lattice → stream → libreoffice fallback. |
| file | string | yes | Input PDF |
| format | string | – | xlsx/csv/tsv are file downloads; json returns structured data. |
| ocrFirst | boolean | – | Run ocrmypdf before extraction (beta — scanned PDFs). |
| ocrLang | string | – | The language of the writing in the scan. |
| pages | string | – | Optional page range e.g. '1-5,10'. Empty = all pages. |
| sheetMode | string | – | How the tables are laid out across the workbook's sheets. |
| tableIndexes | string | – | Comma-separated 0-based indexes to keep (e.g. '0,2,3'). Empty = all tables. |
No output schema declared.
No examples provided.
pdf_to_excel_batch ~216
PDF to Excel (Batch) — Apply the same PDF-to-Excel configuration to up to 20 PDFs. Returns a ZIP with per-file subfolders. [category: pdf]
| Name | Type | Req | Description |
|---|---|---|---|
| engine | string | – | Table detection engine. auto = tabula lattice → stream → libreoffice fallback. |
| files | array | yes | Up to 20 input PDFs |
| format | string | – | xlsx/csv/tsv are file downloads; json returns structured data. |
| ocrFirst | boolean | – | Run ocrmypdf before extraction (beta — scanned PDFs). |
| ocrLang | string | – | The language of the writing in the scan. |
| pages | string | – | Optional page range e.g. '1-5,10'. Empty = all pages. |
| sheetMode | string | – | How the tables are laid out across the workbook's sheets. |
| tableIndexes | string | – | Comma-separated 0-based indexes to keep (e.g. '0,2,3'). Empty = all tables. |
No output schema declared.
No examples provided.
pdf_to_excel_inspect ~191
PDF to Excel Inspector — Non-destructive scan of a PDF's tables before converting: per-table row/column counts, confidence flags, warnings. [category: pdf]
| Name | Type | Req | Description |
|---|---|---|---|
| engine | string | – | Table detection engine; invalid values fall back to auto. |
| file | string | yes | The PDF to scan (multipart field 'file', 25MB cap). Runs real extraction but returns JSON metadata only — nothing is converted. |
| ocrFirst | boolean | – | Accepted but ignored by the inspector — run pdf_ocr first, then inspect. |
| ocrLang | string | – | Accepted but ignored by the inspector - it never runs OCR. Run PDF OCR first, then inspect. |
| pages | string | – | Optional page range |
| tableIndexes | string | – | Accepted but ignored by the inspector - its whole job is to report every table so you can choose indexes on PDF to Excel afterwards. |
No output schema declared.
No examples provided.
pdf_to_images ~821
PDF to Images — Rasterize PDF pages to PNG / JPG / WEBP / TIFF (and AVIF, Starter+). Supports page ranges, quality/DPI controls, grayscale/mono color modes, transparent output, custom background color, max-dimension cap, area crop, text watermark, custom filename patterns, contact-sheet/filmstrip tile mode (Starter+), preset profiles (web/print/email/archive), and JSON / MinIO URL response modes. [category: pdf]
| Name | Type | Req | Description |
|---|---|---|---|
| avifQuality | integer | – | Higher keeps more detail and makes a bigger file. |
| backgroundColor | string | – | What fills the see-through parts of the page in a format that cannot keep them. |
| colorMode | string | – | mono+jpg has no 1-bit JPEG — it silently renders grayscale and sets X-Color-Mode-Adjusted. Unknown values fall back to rgb. |
| crop | string | – | Area crop in PDF points: 'x,y,w,h' |
| dpi | integer | – | Out-of-range values clamp silently to 30-600 — never an error. Non-numeric is ignored and stays 150. |
| file | string | yes | Input PDF |
| format | string | – | Aliases jpeg/tif accepted; unknown values silently stay png. avif is Starter+ — Free tier gets a 402. |
| jpegQuality | integer | – | Higher keeps more detail and makes a bigger file. 50 is the lowest this tool will go. |
| maxHeight | integer | – | Shrink-only height cap in pixels, aspect preserved. Omit for no cap — an explicit 0 clamps UP to 100 and shrinks every page. |
| maxWidth | integer | – | Shrink-only width cap in pixels, aspect preserved. Leave blank for no cap — an explicit 0 clamps UP to 100 and shrinks every page. |
| mode | string | – | sheet/filmstrip require Starter+ |
| namePattern | string | – | Filename template with {basename}/{page}/{page:03d}/{dpi}/{format}/{date} tokens |
| pages | string | – | Page range e.g. 1-3,5,7-9. Empty = all. |
| preset | string | – | A ready-made bundle of settings. Anything you set yourself wins over the preset. |
| response | string | – | urls mode requires Starter+ and authentication |
| sheetBackground | string | – | Colour of the canvas behind the tiles, as #rgb or #rrggbb. Anything we cannot read stays white. |
| sheetColumns | integer | – | How many pages sit side by side on the contact sheet. |
| sheetGap | integer | – | Spacing between the tiles, in pixels. |
| tiffCompression | string | – | How the TIFF is packed down. |
| transparent | boolean | – | Leave the paper see-through instead of white. |
| watermarkColor | string | – | Hex color, #rgb or #rrggbb. |
| watermarkFont | string | – | Outside the enum it silently becomes Helvetica. Does nothing unless watermarkText is set. |
| watermarkFontSize | integer | – | Points against the bitmap's 72dpi density — at dpi=300 text is ~4x smaller on the page than in a PDF. Needs watermarkText. |
| watermarkOpacity | number | – | 0 invisible to 1 solid; out-of-range clamps. NOT a percent — 50 renders fully opaque. Needs watermarkText. |
| watermarkPosition | string | – | Where the stamp sits on each image. |
| watermarkRotation | integer | – | Integer degrees only — a decimal like '45.5' silently resets to 45. Needs watermarkText. |
| watermarkScale | number | – | Not used by this tool — size the stamp with Watermark font size. |
| watermarkText | string | – | Optional text watermark stamped on each image |
| watermarkTile | boolean | – | Not used by this tool - a rasterised page is stamped once, where Watermark position says. |
| webpQuality | integer | – | Higher keeps more detail and makes a bigger file. |
No output schema declared.
No examples provided.
pdf_to_images_batch ~752
PDF to Images (Batch) — Apply the same rasterization configuration to up to 20 PDFs. Returns a ZIP with a subfolder per input file. [category: pdf]
| Name | Type | Req | Description |
|---|---|---|---|
| avifQuality | integer | – | Higher keeps more detail and makes a bigger file. |
| backgroundColor | string | – | What fills the see-through parts of the page in a format that cannot keep them. |
| colorMode | string | – | mono+jpg has no 1-bit JPEG — it silently renders grayscale and sets X-Color-Mode-Adjusted. Unknown values fall back to rgb. |
| crop | string | – | Area crop in PDF points: 'x,y,w,h' |
| dpi | integer | – | Out-of-range values clamp silently to 30-600 — never an error. Non-numeric is ignored and stays 150. |
| files | array | yes | Up to 20 input PDFs |
| format | string | – | Aliases jpeg/tif accepted; unknown values silently stay png. avif is Starter+ — Free tier gets a 402. |
| jpegQuality | integer | – | Higher keeps more detail and makes a bigger file. 50 is the lowest this tool will go. |
| maxHeight | integer | – | Shrink-only height cap in pixels, aspect preserved. Omit for no cap — an explicit 0 clamps UP to 100 and shrinks every page. |
| maxWidth | integer | – | Shrink-only width cap in pixels, aspect preserved. Leave blank for no cap — an explicit 0 clamps UP to 100 and shrinks every page. |
| mode | string | – | sheet/filmstrip require Starter+ |
| namePattern | string | – | Filename template with {basename}/{page}/{page:03d}/{dpi}/{format}/{date} tokens |
| pages | string | – | Page range e.g. 1-3,5,7-9. Empty = all. |
| preset | string | – | A ready-made bundle of settings. Anything you set yourself wins over the preset. |
| sheetBackground | string | – | Colour of the canvas behind the tiles, as #rgb or #rrggbb. Anything we cannot read stays white. |
| sheetColumns | integer | – | How many pages sit side by side on the contact sheet. |
| sheetGap | integer | – | Spacing between the tiles, in pixels. |
| tiffCompression | string | – | How the TIFF is packed down. |
| transparent | boolean | – | Leave the paper see-through instead of white. |
| watermarkColor | string | – | Hex color, #rgb or #rrggbb. |
| watermarkFont | string | – | Outside the enum it silently becomes Helvetica. Does nothing unless watermarkText is set. |
| watermarkFontSize | integer | – | Points against the bitmap's 72dpi density — at dpi=300 text is ~4x smaller on the page than in a PDF. Needs watermarkText. |
| watermarkOpacity | number | – | 0 invisible to 1 solid; out-of-range clamps. NOT a percent — 50 renders fully opaque. Needs watermarkText. |
| watermarkPosition | string | – | Where the stamp sits on each image. |
| watermarkRotation | integer | – | Integer degrees only — a decimal like '45.5' silently resets to 45. Needs watermarkText. |
| watermarkScale | number | – | Not used by this tool — size the stamp with Watermark font size. |
| watermarkText | string | – | Optional text watermark stamped on each image |
| watermarkTile | boolean | – | Not used by this tool - a rasterised page is stamped once, where Watermark position says. |
| webpQuality | integer | – | Higher keeps more detail and makes a bigger file. |
No output schema declared.
No examples provided.
pdf_to_pdfa ~116
PDF to PDF/A (Archival) — Convert a PDF to PDF/A-2b, the ISO archival profile required for long-term storage and by many legal, government and enterprise records systems. Embeds fonts and colour information so the document renders identically decades from now. Uses Ghostscript. If a PDF uses features that cannot be embedded (e.g. unlicensed fonts) the conversion fails honestly rather than returning a non-conformant file. [category: pdf]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input file (PDF) |
No output schema declared.
No examples provided.
pdf_to_text ~178
PDF to Text — COPY THE WORDS OUT of a PDF: get the wording, sentences and paragraphs as plain text you can paste into an email, a document or a spreadsheet. Extract the text that is already inside a PDF and return it as a plain .txt file. Reads the PDF's existing text layer using pdftotext with a Ghostscript txtwrite fallback — it does NOT run OCR. A scanned or photographed document has no text layer, so this tool refuses it with a 422 naming pdf_ocr rather than returning an empty file; run pdf_ocr first to add a searchable text layer, then extract. Mixed documents still succeed: pages that yielded no text are reported in the X-Conversion-Notes response header instead of being dropped silently. [category: pdf]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input file (PDF) |
No output schema declared.
No examples provided.
pdf_to_word ~45
PDF to Word — Convert a PDF to an editable Word document (.docx) using LibreOffice. [category: pdf]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input file (PDF) |
No output schema declared.
No examples provided.
pdf_txt_to_pdf ~41
TXT to PDF — Convert a plain text file to a formatted PDF document. [category: pdf]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input file (TXT) |
No output schema declared.
No examples provided.
pdf_unlock ~68
Unlock PDF — Remove password protection from a PDF (you must supply the current password). [category: pdf]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input PDF (max 25MB) |
| outputName | string | – | Optional custom output filename. |
| password | string | yes | The PDF's current password. |
No output schema declared.
No examples provided.
pdf_watermark ~420
Add PDF Watermark — STAMP or watermark a PDF: overlay text or an image across every page (or selected pages) — the tool for stamping DRAFT, CONFIDENTIAL, PAID, APPROVED, COPY or any wording onto a document, marking pages, branding them, or adding a logo overlay. Watermark type is chosen by the 'mode' field. [category: pdf]
| Name | Type | Req | Description |
|---|---|---|---|
| color | string | – | Colour of the lettering. Hex, #rgb or #rrggbb. |
| file | string | yes | Input PDF (filename must end in .pdf) |
| fontFamily | string | – | Lettering style. Latin alphabet only — for other scripts stamp an image instead. |
| fontSize | integer | – | Height of the lettering in points. |
| imageFile | string | – | Watermark image — PNG, JPG, or SVG. REQUIRED when mode=image; ignored otherwise. |
| mode | string | – | Watermark type. 'image' requires the imageFile field — presence of an image alone does NOT switch modes. |
| opacity | number | – | 0-1 float; non-numeric resets to 0.3, but out-of-range values reach the PDF engine and 500. NOT a percent. |
| outputFilename | string | – | Optional custom output filename. |
| pages | string | – | Comma-separated page numbers e.g. '1,3,5'. Empty = all pages. |
| position | string | – | Long names like 'bottom-right' are NOT recognized and silently fall back to c. ml/mr work (folded to engine anchors l/r). |
| rotation | integer | – | Whole degrees only — a decimal string like '45.5' silently resets to 45. |
| scale | number | – | Size multiplier. With tile=true only values in (0,1] count (fraction of page) — anything else silently tiles at 0.3. |
| text | string | – | The wording stamped across each page. |
| tile | boolean | – | Repeat the watermark in a tiled pattern. |
No output schema declared.
No examples provided.
photo_bg_remover ~292
Background Remover — Cut out the subject and remove the background from an existing photo, producing a transparent PNG (or a solid fill color). Edits a user-supplied image; does not generate new imagery. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| alpha_matting | boolean | – | Re-solves hair, fur and glass edges as a soft fade instead of a hard cut. Slower and uses more memory. |
| alpha_matting_background_threshold | integer | – | How certain a pixel must be to count as definitely background. Only used when edge softening is on. Values outside 0-255 are pulled back into range. |
| alpha_matting_erode_size | integer | – | Width of the band around the subject that gets re-solved. Only used when edge softening is on. Values outside 0-64 are pulled back into range. |
| alpha_matting_foreground_threshold | integer | – | How certain a pixel must be to count as definitely the subject. Only used when edge softening is on. Values outside 0-255 are pulled back into range. |
| bg_color | string | – | Optional solid background fill color. Default: transparent. |
| file | string | yes | JPG, PNG, WebP, BMP (max 20MB) |
| model | string | – | Segmentation model; u2net_human_seg is tuned for people. Invalid values fall back to u2net. |
No output schema declared.
No examples provided.
photo_collage ~340
Photo Collage — Arrange 2-16 images into a smart-cropped collage with aspect-ratio-aware layouts, named magazine templates, or legacy NxM grids. Output: JPG, PNG, WebP, AVIF. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| aspect_ratio | string | – | Output aspect ratio (smart mode). |
| bg_color | string | – | 'white', 'black', 'transparent', or hex (#abc/#aabbcc). Unknown values silently become white; jpg output flattens transparency to white. |
| files | array | yes | 2-16 images — JPG, PNG, WebP, HEIC. The multipart field name is 'files[]' (with brackets). |
| gap | integer | – | Gap between cells in px, 0-100. |
| layout | string | – | A plain grid, written as columns then rows. |
| layout_mode | string | – | Omit to auto-infer: 'template' present implies template mode, 'layout' implies grid_legacy, otherwise smart. |
| output_format | string | – | 'jpeg' is accepted as an alias for jpg. png ignores 'quality' (fixed compression). |
| output_long_edge | integer | – | Output long edge in px. |
| output_width | integer | – | Older name for the setting above. Set the longest side instead; this is only used if that one is left empty. |
| quality | integer | – | Output quality; 0 or omitted = engine default. |
| template | string | – | Named template (layout_mode=template), e.g. ig_post_2x2, ig_story_3_vertical, ig_post_5_magazine. |
No output schema declared.
No examples provided.
photo_collage_animated ~400
Animated Photo Collage — Animated/video collage (MP4/GIF/WebM) with Ken Burns motion. Business-only. [category: photo] [requires the business plan]
| Name | Type | Req | Description |
|---|---|---|---|
| aspect_ratio | string | – | Defaults to the template's own ratio in template mode, else 1:1. The long edge is height for portrait ratios. |
| bg_color | string | – | 'white', 'black', 'transparent', or hex. Unknown values become white; frames encode as jpg so transparency flattens to white. |
| duration_sec | integer | – | Video duration in seconds, 1-10. |
| files | array | yes | 2-16 images — JPG, PNG, WebP, HEIC. The multipart field name is 'files[]' (with brackets). |
| fps | integer | – | Frames per second, 15-30. |
| gap | integer | – | Gap between cells in px, 0-100. |
| layout | string | – | A plain grid, written as columns then rows: 2x2, 3x2, 1x4. Each number may be 1 to 8. |
| layout_mode | string | – | Omit to auto-infer: 'template' present implies template mode, 'layout' implies grid_legacy, otherwise smart. |
| motion | string | – | ken_burns = slow pan/zoom per cell. Invalid values silently become ken_burns, not an error. |
| output_long_edge | integer | – | Output long edge in px, 400-1920. |
| output_video_format | string | – | gif returns image/gif and balloons in size at high fps — prefer mp4/webm beyond a few seconds. |
| output_width | integer | – | Older name for the setting above. Set the longest side instead; this is only used if that one is left empty. |
| template | string | – | Named template (layout_mode=template). |
No output schema declared.
No examples provided.
photo_collage_mosaic ~235
Photo Mosaic — Render one hero photo as a mosaic of many small tile photos, color-matched per region. Business-only. Takes two separately-named uploads: 'target_image' (exactly 1) and 'tile_files[]' (20-1000). [category: photo] [requires the business plan]
| Name | Type | Req | Description |
|---|---|---|---|
| bg_color | string | – | white/black/transparent/none or #hex (3 or 6 digit); anything else silently = white. Visible only where a tile cell fails to render. |
| output_format | string | – | 'jpeg' is accepted as an alias for jpg. Any other unlisted value silently falls back to jpg — no error. |
| output_long_edge | integer | – | Output long edge in px, 1200-4000. |
| target_image | string | yes | The hero photo the mosaic recreates — exactly one file. |
| tile_files | array | yes | 20-1000 tile photos. The multipart field name is 'tile_files[]' (with brackets). |
| tile_size_px | integer | – | Tile size in px, 30-200. |
No output schema declared.
No examples provided.
photo_color_adjuster ~169
Color Adjuster — Adjust brightness, contrast, and saturation of an image. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| brightness | number | – | Percent -100..100; 0 = no change (unlike saturation where 100 = no change). -100 = solid black, +100 = solid white. |
| contrast | number | – | Percent -100..100; 0 = no change. Not clamped server-side — keep within range. |
| file | string | yes | JPG, PNG, WebP, GIF, BMP, HEIC, TIFF. Max 25 MB. Output keeps the input format. |
| saturation | number | – | 0-200 scale where 100 = unchanged, 0 = grayscale, 200 = double saturation. Do NOT send 0 for 'no change'. |
No output schema declared.
No examples provided.
photo_compress ~162
Compress Image — Reduce image file size using lossy or lossless compression. Supports JPEG quality setting and target-size mode. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | JPG, PNG, WebP, GIF, BMP, HEIC/HEIF. HEIC/HEIF input always comes back as JPG unless output_format overrides. |
| output_format | string | – | Optional output format; omit to keep the input format. HEIC input converts to JPG unless overridden. |
| quality | integer | – | 1-100 (400 outside). PNG→PNG maps it to lossless compression effort — pixels unchanged; other formats re-encode lossily. |
| strip_exif | boolean | – | Strip EXIF metadata from the output. Pass false to preserve it. |
No output schema declared.
No examples provided.
photo_compress_to_size ~173
Compress Image to Size — Compress an image to hit a target file size in KB. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | JPG, PNG, WebP, GIF, BMP, HEIC, HEIF |
| output_format | string | – | What to save it as. Leave blank to keep the format it came in as - except HEIC and HEIF pictures, which always come back as JPG. Squeezing to a size needs a format that compresses, which is why BMP a… |
| strip_exif | boolean | – | Strip EXIF metadata from the output. |
| target_size_kb | integer | yes | Target size in KB as a positive integer, e.g. 200. Field name is 'target_size_kb' — not 'target_size'. |
No output schema declared.
No examples provided.
photo_crop ~170
Crop Image — Crop an image to a specified region (x, y, width, height) in pixels. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | JPG, PNG, WebP, HEIC, TIFF, BMP, or GIF. Output keeps the input format. |
| height | integer | yes | Crop height px. A region overrunning the image edge is clipped, not an error. |
| width | integer | yes | Crop width px. Clipped at the image edge if the region overruns. |
| x | integer | – | Left offset px on the DISPLAYED (EXIF-upright) image — the handler auto-orients before cropping. |
| y | integer | – | Top offset px on the DISPLAYED (EXIF-upright) image — the handler auto-orients before cropping. |
No output schema declared.
No examples provided.
photo_editor ~77
Photo Editor — Apply a single named filter to an image: grayscale, sepia, blur, sharpen, negate, or vignette. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | JPG, PNG, WebP, GIF, BMP, HEIC, TIFF (max 25MB) |
| filter | string | – | Filter to apply. |
No output schema declared.
No examples provided.
photo_exif_viewer ~57
EXIF Viewer — Extract and display all EXIF metadata from a photo including camera, GPS, and settings. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input file (JPG, PNG, TIFF, HEIC) |
No output schema declared.
No examples provided.
photo_face_blur ~266
Face Blur — Automatically detect and blur faces in a photo for privacy protection. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| block_size | integer | – | Size of each mosaic square. 0 uses the amount chosen above; 1 is ignored, use 2 or more. |
| blur_mode | string | – | gaussian softens, pixelate mosaics, solid draws an opaque black box — solid is the only mode that survives deblurring attacks. |
| blur_radius | integer | – | Gaussian radius override. 0 = auto from blur_strength. |
| blur_strength | integer | – | Preset intensity 1-4. blur_radius/block_size overrides beat it when set; irrelevant for solid mode. |
| file | string | yes | JPG, PNG, WebP, BMP (max 25MB) |
| manual_faces | string | – | Advanced: extra rectangles to blur even if no face was found there, as [{"x":10,"y":20,"w":80,"h":80}] in pixels. |
| output_format | string | – | Optional output format; defaults to the input format. |
| selected_faces | string | – | Advanced: which detected faces to blur, as a list of numbers starting at 0, e.g. [0,2]. Leave empty to blur every face found. |
No output schema declared.
No examples provided.
photo_face_detect ~41
Face Detect — Detect faces in an image and return bounding boxes. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input file (JPG, PNG) |
No output schema declared.
No examples provided.
photo_flip_rotate ~113
Flip / Rotate Image — Flip an image horizontally or vertically, rotate it by 90/180/270, or rotate by a custom angle. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | Rotate values have NO hyphen: 'rotate90', not 'rotate-90'. 'custom' rotates by the 'degrees' field. |
| degrees | number | – | Rotation degrees, -360 to 360 — only used when action=custom. |
| file | string | yes | Input image (max 25MB) |
No output schema declared.
No examples provided.
photo_format_converter ~101
Image Format Converter — Convert an image between formats: JPG, PNG, WebP, TIFF, BMP, GIF, AVIF. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input format is unrestricted — anything ImageMagick reads, incl. HEIC. Max 25 MB. |
| format | string | – | 'jpeg' also accepted (saved as .jpg). EXIF rotation is baked into the pixels — most target formats can't carry the tag. |
No output schema declared.
No examples provided.
photo_image_diff ~184
Image Diff — Compare two images and highlight the differences visually. Takes two separately-named uploads: 'image1' and 'image2'. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| fuzz | integer | – | Per-pixel tolerance percent, 0-20. |
| highlight_color | string | – | Hex color for changed pixels. |
| image1 | string | yes | First image — JPG, PNG, WebP, BMP (max 25MB) |
| image2 | string | yes | Second image — JPG, PNG, WebP, BMP (max 25MB) |
| lowlight_color | string | – | Hex color for unchanged pixels. |
| normalize | boolean | – | Normalize sizes before comparing. |
| output_format | string | – | Format of the returned diff image. AE/SSIM/PSNR/RMSE scores ride X-JE-Metric-* response headers, not the body. |
No output schema declared.
No examples provided.
photo_image_overlay ~227
Image Overlay — Composite one image on top of another at a specified position. Takes two separately-named uploads: 'background' and 'overlay'. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| background | string | yes | Base image — JPG, PNG, WebP, BMP (max 30MB) |
| opacity | integer | – | Overlay opacity 0-100. |
| output_format | string | – | Optional output format; defaults to the background's format. |
| overlay | string | yes | Image composited on top — JPG, PNG, WebP, BMP (max 20MB) |
| position | string | – | Anchor cell the overlay snaps to; x_offset/y_offset shift from THIS anchor, not from the top-left corner. |
| scale | integer | – | Overlay width as a percent of background width, 1-200. |
| x_offset | integer | – | Px shift with gravity semantics: positive pushes inward from the anchored edge (leftward from right-side anchors). |
| y_offset | integer | – | Px shift with gravity semantics: positive pushes inward from the anchored edge (upward from bottom anchors). |
No output schema declared.
No examples provided.
photo_image_splitter ~155
Image Splitter — Split an image into a grid of equal tiles (e.g. 2x2, 3x3). [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| cols | integer | – | Columns, 1-8. The rightmost column absorbs remainder px, so tile widths can differ slightly. |
| file | string | yes | Image to split — JPG, PNG, WebP, or BMP (max 30 MB). Output is ALWAYS a ZIP of tiles, even for tiny grids. |
| output_format | string | – | Optional tile format; defaults to the input format. |
| rows | integer | – | Rows, 1-8. The bottom row absorbs remainder px. rows x cols tiles come back in one ZIP. |
No output schema declared.
No examples provided.
photo_meme_generator ~285
Meme Generator — Add bold top and bottom caption text to an image in Impact-style font. At least one of top_text/bottom_text is required. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| bottom_text | string | – | Bottom caption. |
| file | string | yes | Base image — JPG, PNG, WebP, BMP (max 25MB) |
| font | string | – | If Impact isn't installed the server substitutes DejaVu-Sans-Bold; X-JE-Font-* response headers report what actually rendered. |
| font_color | string | – | Caption fill — #rrggbb or #rrggbbaa hex only; invalid values silently revert to #ffffff. |
| font_size | string | – | Caption size in pixels, or the word auto to size it from the picture (a tenth of its height, kept between 20 and 150). A number outside 10 to 200 is treated as auto. |
| output_format | string | – | Defaults to the input image's format. |
| stroke_color | string | – | Caption outline hex; invalid values silently revert to #000000. Drawn at 2x stroke_width beneath the fill. |
| stroke_width | integer | – | Outline stroke width, 1-8. |
| top_text | string | – | Top caption. At least ONE of top_text/bottom_text must be non-empty or the request is rejected. |
No output schema declared.
No examples provided.
photo_noise_reducer ~133
Noise Reducer — Reduce image noise and grain using ImageMagick's denoising filters. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | JPG, PNG, WebP, BMP, TIFF (max 25MB) |
| mode | string | – | Denoise algorithm. |
| output_format | string | – | Optional output format; defaults to the input format. |
| sharpen | string | – | Optional post-denoise sharpening. |
| strength | string | – | STRING enum '1'-'4', not an int. Invalid values silently become '2'. Ignored when mode=smart — the analyzer overrides it. |
No output schema declared.
No examples provided.
photo_resize ~235
Resize Image — Resize an image by pixel dimensions, percentage, fit-within-max, or exact canvas. Supports maintaining aspect ratio. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| bg_color | string | – | Colour of the padding added around the picture when it does not fill the canvas. |
| file | string | yes | JPG, PNG, WebP, GIF, BMP |
| force_exact | boolean | – | Force exact dimensions, ignoring aspect ratio. |
| height | integer | – | Target height px. |
| maintain_ratio | boolean | – | Keep aspect ratio (dimensions mode). Field name is 'maintain_ratio' — not 'maintain_aspect'. |
| mode | string | – | 'max' fits within width×width and never upscales; 'canvas' resizes then pads to exact WxH with bg_color; 'percentage' scales by %. |
| percentage | integer | – | Scale to this percent of the original size. |
| strip_meta | boolean | – | Strip EXIF metadata from the output. |
| width | integer | – | Target width in pixels. In 'Fit inside a box' mode this is the longest side the picture may reach. |
No output schema declared.
No examples provided.
photo_shadow_adder ~200
Add Drop Shadow — Add a drop shadow effect to an image, producing a PNG with transparency. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| angle | number | – | Shadow direction in degrees. |
| blur | integer | – | Shadow edge softness in px. 0 = hard-edged rectangle of a shadow. |
| distance | integer | – | Shadow offset in px. |
| file | string | yes | Image to shadow — JPG, PNG, or WebP only (max 25 MB). BMP is NOT accepted here, unlike most photo tools. |
| opacity | integer | – | Shadow darkness 0-100. Affects the shadow layer only, never the image itself. |
| output_format | string | – | Leave blank to keep the format it came in as. Only PNG keeps the area around the shadow see-through; JPG and WebP are flattened onto white. |
| shadow_color | string | – | Hex shadow color. Field name is 'shadow_color' — not 'color'. |
No output schema declared.
No examples provided.
photo_svg_to_png ~176
SVG to PNG — Rasterize an SVG vector file to PNG (or JPG/WebP) at a chosen resolution, DPI, and background color. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| bg_color | string | – | 'transparent', 'white', or a hex color. |
| dpi | string | – | String, not a number — only '72', '96', '144', '300'; anything else silently becomes '96'. |
| file | string | yes | SVG file (max 25MB) |
| height | integer | – | Output height in px. 0 = intrinsic. |
| output_format | string | – | jpg cannot hold transparency: without an explicit bg_color the artwork is flattened onto white, never black. |
| width | integer | – | Output width in px. 0 (default) = render at the SVG's intrinsic size. |
No output schema declared.
No examples provided.
photo_to_text ~279
Photo to Text (OCR) — Extract text from an image via OCR. Language selection uses comma-separated ISO-639-1 codes (en, fr, de, ...) — not Tesseract codes. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| binarize | boolean | – | Force the picture to pure black and white before reading it. Off by default because it destroys text in uneven light; try it on faint or washed-out scans. |
| binarize_threshold | integer | – | The cut-off between black and white, as a percent. Lower keeps more of the picture black. Only used when black and white is forced on; anything outside 1-99 quietly reverts to 60. |
| file | string | yes | JPG, PNG, WebP, BMP, TIFF (max 15MB) |
| languages | string | – | Which language or languages the writing is in, as two-letter codes. One, or several separated by commas: en, or en,fr. Common ones are en, fr, de, es, pt, it, nl, ru, ar, zh, ja, ko. Field name is la… |
| output | string | – | json returns structured results; text returns plain text. |
| preprocess | boolean | – | Apply image preprocessing before OCR. |
No output schema declared.
No examples provided.
photo_upscaler ~225
Image Upscaler — Enlarge an existing image 2x or 4x with super-resolution detail recovery, with an optional face-enhancement pass. Sharpens and upsizes a user-supplied photo; does not generate new imagery. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| face_enhance | boolean | – | Run the additional face-enhancement pass. |
| file | string | yes | Hard 10 MB cap (400 above it). JPG/PNG/WebP/BMP only — no GIF/HEIC. Big images risk the 120s upscale timeout. |
| model | string | – | fast (default) — ~16s at any scale, softer on very fine texture. quality — best fine detail but 50s at 2x and 245s at 4x on CPU; expect a wait. |
| output_format | string | – | Optional output format; defaults to the input format. |
| scale | integer | – | Upscale factor; invalid values silently fall back to 2. With the default fast model 4x costs the same as 2x. |
No output schema declared.
No examples provided.
photo_watermark ~354
Add Image Watermark — Overlay a text watermark on a photo with configurable position (ImageMagick gravity names), opacity, and font size. [category: photo]
| Name | Type | Req | Description |
|---|---|---|---|
| color | string | – | A hex colour, or one of white, black, gray, red, orange, yellow, green, blue, cyan, magenta, purple, pink, brown. Anything else falls back to white. |
| file | string | yes | JPG, PNG, WebP, GIF, BMP, HEIC, TIFF. Max 25 MB. Output keeps the input format. |
| font_size | integer | – | Points. Out-of-range values (<6 or >500) silently reset to 36 — no error returned. |
| opacity | integer | – | INTEGER percent 0-100 — a fraction like 0.5 parses as 0 (invisible watermark). |
| position | string | – | Case-sensitive ImageMagick gravity name — 'center' (lowercase) or 'top-left' are NOT recognized and silently fall back to SouthEast. |
| stroke_color | string | – | The outline behind the text, which is what keeps a watermark readable over a white dress or a black suit. Leave it unset and it is picked for you - black behind a light colour, white behind a dark on… |
| stroke_width | string | – | How thick the outline behind the text is. Leave it on auto and it scales with the text size. 0 turns the outline off; otherwise a whole number up to 20 - anything larger is treated as 20. |
| text | string | – | Defaults to 'John's Essentials' when omitted — always pass your own. A leading '@' is stripped. |
No output schema declared.
No examples provided.
share_create ~122
Create Share Link — Create a public download link for a file that works for 24 hours — anyone with the link can download it, no sign-in needed. Use after a conversion to hand the result to a teammate without re-uploading. Business tier only. [category: convert] [requires the business plan]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Max 500 MB. The multipart part's Content-Type becomes the download's MIME — omit it and the file serves as octet-stream. |
| filename | string | – | Optional download name. Falls back to the multipart filename. |
No output schema declared.
No examples provided.
web_extract_table ~235
Extract Table — Extract an HTML table from a public web page at a user-provided http(s) URL, as JSON rows or CSV. [category: web]
| Name | Type | Req | Description |
|---|---|---|---|
| acknowledge_robots | boolean | – | Business plan: read the table even when the site's robots.txt asks bots to stay away. On any other plan this switch does nothing and the page is still refused. |
| output | string | – | How the table comes back: JSON gives rows you can feed to the next step, CSV gives one block of comma-separated text. Either way it is data, not a downloadable file. |
| table_index | integer | – | Which table on the page, counting from 0 for the first one. If the page has fewer tables than this, the error tells you how many it found. |
| timeout_ms | integer | – | How long to wait for the page before giving up, in milliseconds (30000 = 30 seconds). |
| url | string | yes | http(s) URL containing the table |
| user_agent | string | – | Advanced: how we introduce ourselves to the site. Left blank we identify as JohnsEssentialsBot. |
No output schema declared.
No examples provided.
web_fetch ~171
Fetch URL — Fetch the raw (decoded) HTML of a public web page at a user-provided http(s) URL. SSRF-guarded, http/https only, 10 MB body cap, robots-aware. [category: web]
| Name | Type | Req | Description |
|---|---|---|---|
| acknowledge_robots | boolean | – | Business plan only: fetch the page even when the site's rules file (robots.txt) asks crawlers to stay away. On other plans this switch has no effect. |
| timeout_ms | integer | – | How long to wait for the page before giving up, in milliseconds (30000 = 30 seconds). |
| url | string | yes | http(s) URL to fetch |
| user_agent | string | – | What to tell the site we are. Leave blank and we identify honestly as JohnsEssentialsBot/1.0. |
No output schema declared.
No examples provided.
web_scrape_page ~234
Scrape Page — Extract structured data from a public web page at a user-provided http(s) URL: CSS-selector mode returns text per selector; readability mode returns the main article as clean markdown. [category: web]
| Name | Type | Req | Description |
|---|---|---|---|
| acknowledge_robots | boolean | – | Business plan: scrape the page even when the site's robots.txt asks bots to stay away. On any other plan this switch does nothing and the page is still refused. |
| mode | string | – | Readability gives you the page's main article as clean text. Selectors gives you only the specific bits you name below. |
| selectors | object | – | One CSS selector per thing you want, named: {"headline": "h1", "price": ".price"}. Needed only when you pick Selectors above. |
| timeout_ms | integer | – | How long to wait for the page before giving up, in milliseconds (30000 = 30 seconds). |
| url | string | yes | http(s) URL to scrape |
| user_agent | string | – | Advanced: how we introduce ourselves to the site. Left blank we identify as JohnsEssentialsBot. |
No output schema declared.
No examples provided.
What is the John's Essentials MCP server?
John's Essentials is an MCP server listed in the public MCP registry as com.johnsessentials/johns-essentials. 144 deterministic file tools: PDF, image, media, convert, analyze. Connect in one click (OAuth). This page covers its hosted endpoint (https://api.johnsessentials.com/mcp/messages).
Is the John's Essentials MCP server safe to use?
John's Essentials scores 87 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the John's Essentials MCP server expose?
John's Essentials exposes 148 tools: pdf_compress, pdf_merge, pdf_split, pdf_rotate, pdf_protect, and 143 more. Their descriptions and schemas cost roughly 26,189 tokens of context every time the server is loaded.
Does the John's Essentials MCP server require authentication?
Yes. John's Essentials asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the John's Essentials MCP server still maintained?
John's Essentials is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.