Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

John's Essentials

REMOTE · API.JOHNSESSENTIALS.COM · SCANNED SEP 20

144 deterministic file tools: PDF, image, media, convert, analyze. Connect in one click (OAuth).

+3 this week 87 Trust /100
Trust breakdown (7 categories)

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
Transport & Reachability100
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
Install

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

# add to Claude Code
claude mcp add --transport http com-johnsessentials-johns-essentials 'https://api.johnsessentials.com/mcp/messages'
// .cursor/mcp.json
{
  "mcpServers": {
    "com-johnsessentials-johns-essentials": {
      "url": "https://api.johnsessentials.com/mcp/messages"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "com-johnsessentials-johns-essentials": {
      "type": "http",
      "url": "https://api.johnsessentials.com/mcp/messages"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.com-johnsessentials-johns-essentials]
url = "https://api.johnsessentials.com/mcp/messages"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-johnsessentials-johns-essentials": {
      "type": "remote",
      "url": "https://api.johnsessentials.com/mcp/messages",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-johnsessentials-johns-essentials --url 'https://api.johnsessentials.com/mcp/messages' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  com-johnsessentials-johns-essentials:
    url: "https://api.johnsessentials.com/mcp/messages"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "com-johnsessentials-johns-essentials": {
      "Transport": "http",
      "Url": "https://api.johnsessentials.com/mcp/messages"
    }
  }
}
# add to Vellum
assistant mcp add com-johnsessentials-johns-essentials -t streamable-http -u 'https://api.johnsessentials.com/mcp/messages'
// mcp.json
{
  "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.

Changelog

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.

Diagnostics

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
MCP tools · 148 exposed · ~26,189 tokens

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 →

Tool Tokens
pdf_reorder ~122

Reorder PDF Pages — Reorder the pages of a PDF by supplying the desired page sequence. [category: pdf]

NameTypeReqDescription
filestringyesInput PDF (max 25MB)
orderstringyesComplete 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.
outputNamestringOptional custom output basename.
passwordstringOptional 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]

NameTypeReqDescription
filestringyesInput 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]

NameTypeReqDescription
filestringyesInput file (PDF)
outputNamestringOptional name for the file you get back. Leave blank and we name it for you.
rangesstringReverse only these pages, written as 1-3,7-10. Leave it blank to reverse the whole document.
reverseTargetstringWhich 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]

NameTypeReqDescription
filestringyesInput PDF (max 25MB)
outputNamestringOptional custom output filename.
pagesstringWhich pages to turn, e.g. '1-3,5'. Leave blank to turn every page.
rotationintegerHow 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]

NameTypeReqDescription
filestringyesInput 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]

NameTypeReqDescription
authorstringWritten verbatim to Author. Empty = left unchanged — this tool cannot blank a field (use pdf_remove_metadata to clear).
filestringyesThe PDF to edit. Password-protected input is rejected 400 — run pdf_unlock first.
keywordsstringFree-text Keywords string written verbatim (commas are convention, not parsed). Empty = left unchanged, never cleared.
subjectstringWritten verbatim to Subject. Empty = left unchanged — clearing a field is not possible here (use pdf_remove_metadata).
titlestringAt 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]

NameTypeReqDescription
chunkSizeintegerHow many pages go into each output file.
filestringyesInput PDF (max 25MB)
modestringSplit 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.
outputNamestringOptional base name for the output file(s).
pagesstringWhich 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]

NameTypeReqDescription
filestringyesThe PDF to preview. A 1-page input returns a bare JPEG instead of a ZIP — plan for both shapes. Password-protected = 400.
qualitystringThumbnail 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]

NameTypeReqDescription
enginestringTable detection engine. auto = tabula lattice → stream → libreoffice fallback.
filestringyesInput PDF
formatstringxlsx/csv/tsv are file downloads; json returns structured data.
ocrFirstbooleanRun ocrmypdf before extraction (beta — scanned PDFs).
ocrLangstringThe language of the writing in the scan.
pagesstringOptional page range e.g. '1-5,10'. Empty = all pages.
sheetModestringHow the tables are laid out across the workbook's sheets.
tableIndexesstringComma-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]

NameTypeReqDescription
enginestringTable detection engine. auto = tabula lattice → stream → libreoffice fallback.
filesarrayyesUp to 20 input PDFs
formatstringxlsx/csv/tsv are file downloads; json returns structured data.
ocrFirstbooleanRun ocrmypdf before extraction (beta — scanned PDFs).
ocrLangstringThe language of the writing in the scan.
pagesstringOptional page range e.g. '1-5,10'. Empty = all pages.
sheetModestringHow the tables are laid out across the workbook's sheets.
tableIndexesstringComma-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]

NameTypeReqDescription
enginestringTable detection engine; invalid values fall back to auto.
filestringyesThe PDF to scan (multipart field 'file', 25MB cap). Runs real extraction but returns JSON metadata only — nothing is converted.
ocrFirstbooleanAccepted but ignored by the inspector — run pdf_ocr first, then inspect.
ocrLangstringAccepted but ignored by the inspector - it never runs OCR. Run PDF OCR first, then inspect.
pagesstringOptional page range
tableIndexesstringAccepted 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]

NameTypeReqDescription
avifQualityintegerHigher keeps more detail and makes a bigger file.
backgroundColorstringWhat fills the see-through parts of the page in a format that cannot keep them.
colorModestringmono+jpg has no 1-bit JPEG — it silently renders grayscale and sets X-Color-Mode-Adjusted. Unknown values fall back to rgb.
cropstringArea crop in PDF points: 'x,y,w,h'
dpiintegerOut-of-range values clamp silently to 30-600 — never an error. Non-numeric is ignored and stays 150.
filestringyesInput PDF
formatstringAliases jpeg/tif accepted; unknown values silently stay png. avif is Starter+ — Free tier gets a 402.
jpegQualityintegerHigher keeps more detail and makes a bigger file. 50 is the lowest this tool will go.
maxHeightintegerShrink-only height cap in pixels, aspect preserved. Omit for no cap — an explicit 0 clamps UP to 100 and shrinks every page.
maxWidthintegerShrink-only width cap in pixels, aspect preserved. Leave blank for no cap — an explicit 0 clamps UP to 100 and shrinks every page.
modestringsheet/filmstrip require Starter+
namePatternstringFilename template with {basename}/{page}/{page:03d}/{dpi}/{format}/{date} tokens
pagesstringPage range e.g. 1-3,5,7-9. Empty = all.
presetstringA ready-made bundle of settings. Anything you set yourself wins over the preset.
responsestringurls mode requires Starter+ and authentication
sheetBackgroundstringColour of the canvas behind the tiles, as #rgb or #rrggbb. Anything we cannot read stays white.
sheetColumnsintegerHow many pages sit side by side on the contact sheet.
sheetGapintegerSpacing between the tiles, in pixels.
tiffCompressionstringHow the TIFF is packed down.
transparentbooleanLeave the paper see-through instead of white.
watermarkColorstringHex color, #rgb or #rrggbb.
watermarkFontstringOutside the enum it silently becomes Helvetica. Does nothing unless watermarkText is set.
watermarkFontSizeintegerPoints against the bitmap's 72dpi density — at dpi=300 text is ~4x smaller on the page than in a PDF. Needs watermarkText.
watermarkOpacitynumber0 invisible to 1 solid; out-of-range clamps. NOT a percent — 50 renders fully opaque. Needs watermarkText.
watermarkPositionstringWhere the stamp sits on each image.
watermarkRotationintegerInteger degrees only — a decimal like '45.5' silently resets to 45. Needs watermarkText.
watermarkScalenumberNot used by this tool — size the stamp with Watermark font size.
watermarkTextstringOptional text watermark stamped on each image
watermarkTilebooleanNot used by this tool - a rasterised page is stamped once, where Watermark position says.
webpQualityintegerHigher 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]

NameTypeReqDescription
avifQualityintegerHigher keeps more detail and makes a bigger file.
backgroundColorstringWhat fills the see-through parts of the page in a format that cannot keep them.
colorModestringmono+jpg has no 1-bit JPEG — it silently renders grayscale and sets X-Color-Mode-Adjusted. Unknown values fall back to rgb.
cropstringArea crop in PDF points: 'x,y,w,h'
dpiintegerOut-of-range values clamp silently to 30-600 — never an error. Non-numeric is ignored and stays 150.
filesarrayyesUp to 20 input PDFs
formatstringAliases jpeg/tif accepted; unknown values silently stay png. avif is Starter+ — Free tier gets a 402.
jpegQualityintegerHigher keeps more detail and makes a bigger file. 50 is the lowest this tool will go.
maxHeightintegerShrink-only height cap in pixels, aspect preserved. Omit for no cap — an explicit 0 clamps UP to 100 and shrinks every page.
maxWidthintegerShrink-only width cap in pixels, aspect preserved. Leave blank for no cap — an explicit 0 clamps UP to 100 and shrinks every page.
modestringsheet/filmstrip require Starter+
namePatternstringFilename template with {basename}/{page}/{page:03d}/{dpi}/{format}/{date} tokens
pagesstringPage range e.g. 1-3,5,7-9. Empty = all.
presetstringA ready-made bundle of settings. Anything you set yourself wins over the preset.
sheetBackgroundstringColour of the canvas behind the tiles, as #rgb or #rrggbb. Anything we cannot read stays white.
sheetColumnsintegerHow many pages sit side by side on the contact sheet.
sheetGapintegerSpacing between the tiles, in pixels.
tiffCompressionstringHow the TIFF is packed down.
transparentbooleanLeave the paper see-through instead of white.
watermarkColorstringHex color, #rgb or #rrggbb.
watermarkFontstringOutside the enum it silently becomes Helvetica. Does nothing unless watermarkText is set.
watermarkFontSizeintegerPoints against the bitmap's 72dpi density — at dpi=300 text is ~4x smaller on the page than in a PDF. Needs watermarkText.
watermarkOpacitynumber0 invisible to 1 solid; out-of-range clamps. NOT a percent — 50 renders fully opaque. Needs watermarkText.
watermarkPositionstringWhere the stamp sits on each image.
watermarkRotationintegerInteger degrees only — a decimal like '45.5' silently resets to 45. Needs watermarkText.
watermarkScalenumberNot used by this tool — size the stamp with Watermark font size.
watermarkTextstringOptional text watermark stamped on each image
watermarkTilebooleanNot used by this tool - a rasterised page is stamped once, where Watermark position says.
webpQualityintegerHigher 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]

NameTypeReqDescription
filestringyesInput 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]

NameTypeReqDescription
filestringyesInput 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]

NameTypeReqDescription
filestringyesInput 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]

NameTypeReqDescription
filestringyesInput 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]

NameTypeReqDescription
filestringyesInput PDF (max 25MB)
outputNamestringOptional custom output filename.
passwordstringyesThe 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]

NameTypeReqDescription
colorstringColour of the lettering. Hex, #rgb or #rrggbb.
filestringyesInput PDF (filename must end in .pdf)
fontFamilystringLettering style. Latin alphabet only — for other scripts stamp an image instead.
fontSizeintegerHeight of the lettering in points.
imageFilestringWatermark image — PNG, JPG, or SVG. REQUIRED when mode=image; ignored otherwise.
modestringWatermark type. 'image' requires the imageFile field — presence of an image alone does NOT switch modes.
opacitynumber0-1 float; non-numeric resets to 0.3, but out-of-range values reach the PDF engine and 500. NOT a percent.
outputFilenamestringOptional custom output filename.
pagesstringComma-separated page numbers e.g. '1,3,5'. Empty = all pages.
positionstringLong names like 'bottom-right' are NOT recognized and silently fall back to c. ml/mr work (folded to engine anchors l/r).
rotationintegerWhole degrees only — a decimal string like '45.5' silently resets to 45.
scalenumberSize multiplier. With tile=true only values in (0,1] count (fraction of page) — anything else silently tiles at 0.3.
textstringThe wording stamped across each page.
tilebooleanRepeat 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]

NameTypeReqDescription
alpha_mattingbooleanRe-solves hair, fur and glass edges as a soft fade instead of a hard cut. Slower and uses more memory.
alpha_matting_background_thresholdintegerHow 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_sizeintegerWidth 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_thresholdintegerHow 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_colorstringOptional solid background fill color. Default: transparent.
filestringyesJPG, PNG, WebP, BMP (max 20MB)
modelstringSegmentation 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]

NameTypeReqDescription
aspect_ratiostringOutput aspect ratio (smart mode).
bg_colorstring'white', 'black', 'transparent', or hex (#abc/#aabbcc). Unknown values silently become white; jpg output flattens transparency to white.
filesarrayyes2-16 images — JPG, PNG, WebP, HEIC. The multipart field name is 'files[]' (with brackets).
gapintegerGap between cells in px, 0-100.
layoutstringA plain grid, written as columns then rows.
layout_modestringOmit to auto-infer: 'template' present implies template mode, 'layout' implies grid_legacy, otherwise smart.
output_formatstring'jpeg' is accepted as an alias for jpg. png ignores 'quality' (fixed compression).
output_long_edgeintegerOutput long edge in px.
output_widthintegerOlder name for the setting above. Set the longest side instead; this is only used if that one is left empty.
qualityintegerOutput quality; 0 or omitted = engine default.
templatestringNamed 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]

NameTypeReqDescription
aspect_ratiostringDefaults to the template's own ratio in template mode, else 1:1. The long edge is height for portrait ratios.
bg_colorstring'white', 'black', 'transparent', or hex. Unknown values become white; frames encode as jpg so transparency flattens to white.
duration_secintegerVideo duration in seconds, 1-10.
filesarrayyes2-16 images — JPG, PNG, WebP, HEIC. The multipart field name is 'files[]' (with brackets).
fpsintegerFrames per second, 15-30.
gapintegerGap between cells in px, 0-100.
layoutstringA plain grid, written as columns then rows: 2x2, 3x2, 1x4. Each number may be 1 to 8.
layout_modestringOmit to auto-infer: 'template' present implies template mode, 'layout' implies grid_legacy, otherwise smart.
motionstringken_burns = slow pan/zoom per cell. Invalid values silently become ken_burns, not an error.
output_long_edgeintegerOutput long edge in px, 400-1920.
output_video_formatstringgif returns image/gif and balloons in size at high fps — prefer mp4/webm beyond a few seconds.
output_widthintegerOlder name for the setting above. Set the longest side instead; this is only used if that one is left empty.
templatestringNamed 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]

NameTypeReqDescription
bg_colorstringwhite/black/transparent/none or #hex (3 or 6 digit); anything else silently = white. Visible only where a tile cell fails to render.
output_formatstring'jpeg' is accepted as an alias for jpg. Any other unlisted value silently falls back to jpg — no error.
output_long_edgeintegerOutput long edge in px, 1200-4000.
target_imagestringyesThe hero photo the mosaic recreates — exactly one file.
tile_filesarrayyes20-1000 tile photos. The multipart field name is 'tile_files[]' (with brackets).
tile_size_pxintegerTile 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]

NameTypeReqDescription
brightnessnumberPercent -100..100; 0 = no change (unlike saturation where 100 = no change). -100 = solid black, +100 = solid white.
contrastnumberPercent -100..100; 0 = no change. Not clamped server-side — keep within range.
filestringyesJPG, PNG, WebP, GIF, BMP, HEIC, TIFF. Max 25 MB. Output keeps the input format.
saturationnumber0-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]

NameTypeReqDescription
filestringyesJPG, PNG, WebP, GIF, BMP, HEIC/HEIF. HEIC/HEIF input always comes back as JPG unless output_format overrides.
output_formatstringOptional output format; omit to keep the input format. HEIC input converts to JPG unless overridden.
qualityinteger1-100 (400 outside). PNG→PNG maps it to lossless compression effort — pixels unchanged; other formats re-encode lossily.
strip_exifbooleanStrip 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]

NameTypeReqDescription
filestringyesJPG, PNG, WebP, GIF, BMP, HEIC, HEIF
output_formatstringWhat 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_exifbooleanStrip EXIF metadata from the output.
target_size_kbintegeryesTarget 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]

NameTypeReqDescription
filestringyesJPG, PNG, WebP, HEIC, TIFF, BMP, or GIF. Output keeps the input format.
heightintegeryesCrop height px. A region overrunning the image edge is clipped, not an error.
widthintegeryesCrop width px. Clipped at the image edge if the region overruns.
xintegerLeft offset px on the DISPLAYED (EXIF-upright) image — the handler auto-orients before cropping.
yintegerTop 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]

NameTypeReqDescription
filestringyesJPG, PNG, WebP, GIF, BMP, HEIC, TIFF (max 25MB)
filterstringFilter 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]

NameTypeReqDescription
filestringyesInput 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]

NameTypeReqDescription
block_sizeintegerSize of each mosaic square. 0 uses the amount chosen above; 1 is ignored, use 2 or more.
blur_modestringgaussian softens, pixelate mosaics, solid draws an opaque black box — solid is the only mode that survives deblurring attacks.
blur_radiusintegerGaussian radius override. 0 = auto from blur_strength.
blur_strengthintegerPreset intensity 1-4. blur_radius/block_size overrides beat it when set; irrelevant for solid mode.
filestringyesJPG, PNG, WebP, BMP (max 25MB)
manual_facesstringAdvanced: extra rectangles to blur even if no face was found there, as [{"x":10,"y":20,"w":80,"h":80}] in pixels.
output_formatstringOptional output format; defaults to the input format.
selected_facesstringAdvanced: 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]

NameTypeReqDescription
filestringyesInput 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]

NameTypeReqDescription
actionstringRotate values have NO hyphen: 'rotate90', not 'rotate-90'. 'custom' rotates by the 'degrees' field.
degreesnumberRotation degrees, -360 to 360 — only used when action=custom.
filestringyesInput 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]

NameTypeReqDescription
filestringyesInput format is unrestricted — anything ImageMagick reads, incl. HEIC. Max 25 MB.
formatstring'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]

NameTypeReqDescription
fuzzintegerPer-pixel tolerance percent, 0-20.
highlight_colorstringHex color for changed pixels.
image1stringyesFirst image — JPG, PNG, WebP, BMP (max 25MB)
image2stringyesSecond image — JPG, PNG, WebP, BMP (max 25MB)
lowlight_colorstringHex color for unchanged pixels.
normalizebooleanNormalize sizes before comparing.
output_formatstringFormat 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]

NameTypeReqDescription
backgroundstringyesBase image — JPG, PNG, WebP, BMP (max 30MB)
opacityintegerOverlay opacity 0-100.
output_formatstringOptional output format; defaults to the background's format.
overlaystringyesImage composited on top — JPG, PNG, WebP, BMP (max 20MB)
positionstringAnchor cell the overlay snaps to; x_offset/y_offset shift from THIS anchor, not from the top-left corner.
scaleintegerOverlay width as a percent of background width, 1-200.
x_offsetintegerPx shift with gravity semantics: positive pushes inward from the anchored edge (leftward from right-side anchors).
y_offsetintegerPx 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]

NameTypeReqDescription
colsintegerColumns, 1-8. The rightmost column absorbs remainder px, so tile widths can differ slightly.
filestringyesImage to split — JPG, PNG, WebP, or BMP (max 30 MB). Output is ALWAYS a ZIP of tiles, even for tiny grids.
output_formatstringOptional tile format; defaults to the input format.
rowsintegerRows, 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]

NameTypeReqDescription
bottom_textstringBottom caption.
filestringyesBase image — JPG, PNG, WebP, BMP (max 25MB)
fontstringIf Impact isn't installed the server substitutes DejaVu-Sans-Bold; X-JE-Font-* response headers report what actually rendered.
font_colorstringCaption fill — #rrggbb or #rrggbbaa hex only; invalid values silently revert to #ffffff.
font_sizestringCaption 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_formatstringDefaults to the input image's format.
stroke_colorstringCaption outline hex; invalid values silently revert to #000000. Drawn at 2x stroke_width beneath the fill.
stroke_widthintegerOutline stroke width, 1-8.
top_textstringTop 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]

NameTypeReqDescription
filestringyesJPG, PNG, WebP, BMP, TIFF (max 25MB)
modestringDenoise algorithm.
output_formatstringOptional output format; defaults to the input format.
sharpenstringOptional post-denoise sharpening.
strengthstringSTRING 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]

NameTypeReqDescription
bg_colorstringColour of the padding added around the picture when it does not fill the canvas.
filestringyesJPG, PNG, WebP, GIF, BMP
force_exactbooleanForce exact dimensions, ignoring aspect ratio.
heightintegerTarget height px.
maintain_ratiobooleanKeep aspect ratio (dimensions mode). Field name is 'maintain_ratio' — not 'maintain_aspect'.
modestring'max' fits within width×width and never upscales; 'canvas' resizes then pads to exact WxH with bg_color; 'percentage' scales by %.
percentageintegerScale to this percent of the original size.
strip_metabooleanStrip EXIF metadata from the output.
widthintegerTarget 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]

NameTypeReqDescription
anglenumberShadow direction in degrees.
blurintegerShadow edge softness in px. 0 = hard-edged rectangle of a shadow.
distanceintegerShadow offset in px.
filestringyesImage to shadow — JPG, PNG, or WebP only (max 25 MB). BMP is NOT accepted here, unlike most photo tools.
opacityintegerShadow darkness 0-100. Affects the shadow layer only, never the image itself.
output_formatstringLeave 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_colorstringHex 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]

NameTypeReqDescription
bg_colorstring'transparent', 'white', or a hex color.
dpistringString, not a number — only '72', '96', '144', '300'; anything else silently becomes '96'.
filestringyesSVG file (max 25MB)
heightintegerOutput height in px. 0 = intrinsic.
output_formatstringjpg cannot hold transparency: without an explicit bg_color the artwork is flattened onto white, never black.
widthintegerOutput 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]

NameTypeReqDescription
binarizebooleanForce 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_thresholdintegerThe 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.
filestringyesJPG, PNG, WebP, BMP, TIFF (max 15MB)
languagesstringWhich 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…
outputstringjson returns structured results; text returns plain text.
preprocessbooleanApply 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]

NameTypeReqDescription
face_enhancebooleanRun the additional face-enhancement pass.
filestringyesHard 10 MB cap (400 above it). JPG/PNG/WebP/BMP only — no GIF/HEIC. Big images risk the 120s upscale timeout.
modelstringfast (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_formatstringOptional output format; defaults to the input format.
scaleintegerUpscale 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]

NameTypeReqDescription
colorstringA hex colour, or one of white, black, gray, red, orange, yellow, green, blue, cyan, magenta, purple, pink, brown. Anything else falls back to white.
filestringyesJPG, PNG, WebP, GIF, BMP, HEIC, TIFF. Max 25 MB. Output keeps the input format.
font_sizeintegerPoints. Out-of-range values (<6 or >500) silently reset to 36 — no error returned.
opacityintegerINTEGER percent 0-100 — a fraction like 0.5 parses as 0 (invisible watermark).
positionstringCase-sensitive ImageMagick gravity name — 'center' (lowercase) or 'top-left' are NOT recognized and silently fall back to SouthEast.
stroke_colorstringThe 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_widthstringHow 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.
textstringDefaults 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]

NameTypeReqDescription
filestringyesMax 500 MB. The multipart part's Content-Type becomes the download's MIME — omit it and the file serves as octet-stream.
filenamestringOptional 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]

NameTypeReqDescription
acknowledge_robotsbooleanBusiness 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.
outputstringHow 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_indexintegerWhich 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_msintegerHow long to wait for the page before giving up, in milliseconds (30000 = 30 seconds).
urlstringyeshttp(s) URL containing the table
user_agentstringAdvanced: 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]

NameTypeReqDescription
acknowledge_robotsbooleanBusiness 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_msintegerHow long to wait for the page before giving up, in milliseconds (30000 = 30 seconds).
urlstringyeshttp(s) URL to fetch
user_agentstringWhat 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]

NameTypeReqDescription
acknowledge_robotsbooleanBusiness 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.
modestringReadability gives you the page's main article as clean text. Selectors gives you only the specific bits you name below.
selectorsobjectOne CSS selector per thing you want, named: {"headline": "h1", "price": ".price"}. Needed only when you pick Selectors above.
timeout_msintegerHow long to wait for the page before giving up, in milliseconds (30000 = 30 seconds).
urlstringyeshttp(s) URL to scrape
user_agentstringAdvanced: how we introduce ourselves to the site. Left blank we identify as JohnsEssentialsBot.

No output schema declared.

No examples provided.

Common questions

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.