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

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

0 this week 95 Trust /100

Last scanned (8 hours ago)

Scores higher than 99% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Documents and Files

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 28822 tokens (~184/item across 156 items; 153 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 Management100
  • No destabilizing schema changes in the last 30 days.Pass
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 155 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
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.

  • 30 Oct 26 0
    • Stability: fail → pass ▲ security
  • 7 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 97.

  • 4 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90.

  • 30 Sept 26 0
    • A breaking change shipped without a version bump: still 1.2.0 ▼ security
    • “email_file” changed the type of “file”: string → array ▼ functional
    • “email_file” reworded the description of “file” cosmetic
    • “photo_face_blur” reworded the description of “manual_faces” cosmetic
    • “photo_face_blur” reworded the description of “selected_faces” cosmetic
    • “photo_meme_generator” reworded the description of “font” cosmetic
    • “photo_shadow_adder” reworded the description of “angle” cosmetic
  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 27 Sept 26 0
    • “pdf_delete_pages” reworded the description of “pages” cosmetic
    • “pdf_watermark” reworded the description of “pages” cosmetic

    2 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.

  • 26 Sept 26 0
    • “analyze_audio” reworded the description of “file” cosmetic
    • “analyze_video” reworded the description of “file” cosmetic
    • “media_extract_audio” reworded the description of “file” cosmetic
    • “media_merge_audio” reworded the description of “files” cosmetic
    • “media_mute_video” reworded the description of “file” cosmetic
    • “media_trim_audio” reworded the description of “file” cosmetic

    6 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.

  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
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 5 Nov 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=YE1,O=Let's Encrypt,C=US 3 Oct 2026 1 Jan 2027 ECDSA 256 ECDSA-SHA384 59d02ba272d0b298667b8b921613b1168e7
SANs: *.johnsessentials.com, johnsessentials.com
CN=YE1,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 5ddd70dd31f801c85c186a7a04b80afe
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 · 153 exposed · ~28,494 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_protect ~219

Password-Protect PDF — Add a password to a PDF to prevent unauthorised opening or printing. [category: pdf]

NameTypeReqDescription
encryptionstring–How strongly the file is locked.
filestringyesInput PDF (max 25MB)
outputNamestring–Optional custom output filename.
ownerPasswordstring–Optional separate permissions (owner) password.
passwordstring–One password used for both opening the file and unlocking its permissions. Leave it blank only if you set an open password or a permissions password below instead - one of the three is needed.
permissionsstring–What a reader is still allowed to do after they enter the password. Use any of print, copy, edit, annotate, separated by commas - or the single word all. A word we do not recognise is ignored, and if…
userPasswordstring–Optional separate open (user) password.

No output schema declared.

No examples provided.

pdf_remove_metadata ~47

Remove PDF Metadata — Strip all metadata (author, title, keywords, etc.) from a PDF for privacy. [category: pdf]

NameTypeReqDescription
filestringyesInput file (PDF)

No output schema declared.

No examples provided.

pdf_remove_watermark ~96

Remove PDF Watermark — Attempt to remove an existing watermark layer from a PDF. [category: pdf]

NameTypeReqDescription
filestringyesInput file (PDF)
passthroughboolean–Some watermarks are painted into the page and cannot be lifted out. Left off, the step stops with an error when that happens. Switch it on and the file is passed through untouched so the rest of the…

No output schema declared.

No examples provided.

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.
outputNamestring–Optional custom output basename.
passwordstring–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]

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)
outputNamestring–Optional name for the file you get back. Leave blank and we name it for you.
rangesstring–Reverse only these pages, written as 1-3,7-10. Leave it blank to reverse the whole document.
reverseTargetstring–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]

NameTypeReqDescription
filestringyesInput PDF (max 25MB)
outputNamestring–Optional custom output filename.
pagesstring–Which pages to turn, e.g. '1-3,5'. Leave blank to turn every page.
rotationinteger–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]

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
authorstring–Written 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.
keywordsstring–Free-text Keywords string written verbatim (commas are convention, not parsed). Empty = left unchanged, never cleared.
subjectstring–Written verbatim to Subject. Empty = left unchanged — clearing a field is not possible here (use pdf_remove_metadata).
titlestring–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]

NameTypeReqDescription
chunkSizeinteger–How many pages go into each output file.
filestringyesInput PDF (max 25MB)
modestring–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.
outputNamestring–Optional base name for the output file(s).
pagesstring–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]

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

NameTypeReqDescription
enginestring–Table detection engine. auto = tabula lattice → stream → libreoffice fallback.
filestringyesInput PDF
formatstring–xlsx/csv/tsv are file downloads; json returns structured data.
ocrFirstboolean–Run ocrmypdf before extraction (beta — scanned PDFs).
ocrLangstring–The language of the writing in the scan.
pagesstring–Optional page range e.g. '1-5,10'. Empty = all pages.
sheetModestring–How the tables are laid out across the workbook's sheets.
tableIndexesstring–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]

NameTypeReqDescription
enginestring–Table detection engine. auto = tabula lattice → stream → libreoffice fallback.
filesarrayyesUp to 20 input PDFs
formatstring–xlsx/csv/tsv are file downloads; json returns structured data.
ocrFirstboolean–Run ocrmypdf before extraction (beta — scanned PDFs).
ocrLangstring–The language of the writing in the scan.
pagesstring–Optional page range e.g. '1-5,10'. Empty = all pages.
sheetModestring–How the tables are laid out across the workbook's sheets.
tableIndexesstring–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]

NameTypeReqDescription
enginestring–Table 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.
ocrFirstboolean–Accepted but ignored by the inspector — run pdf_ocr first, then inspect.
ocrLangstring–Accepted but ignored by the inspector - it never runs OCR. Run PDF OCR first, then inspect.
pagesstring–Optional page range
tableIndexesstring–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 ~846

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
avifQualityinteger–Higher keeps more detail and makes a bigger file.
backgroundColorstring–What fills the see-through parts of the page in a format that cannot keep them.
colorModestring–mono+jpg has no 1-bit JPEG — it silently renders grayscale and sets X-Color-Mode-Adjusted. Unknown values fall back to rgb.
cropstring–Area crop in PDF points: 'x,y,w,h'
dpiinteger–Out-of-range values clamp silently to 30-600 — never an error. Non-numeric is ignored and stays 150.
filestringyesInput PDF
formatstring–Aliases jpeg/tif accepted; unknown values silently stay png. avif is Starter+ — Free tier gets a 402.
jpegQualityinteger–Higher keeps more detail and makes a bigger file. 50 is the lowest this tool will go.
maxHeightinteger–Shrink-only height cap in pixels, aspect preserved. Omit for no cap — an explicit 0 clamps UP to 100 and shrinks every page.
maxWidthinteger–Shrink-only width cap in pixels, aspect preserved. Leave blank for no cap — an explicit 0 clamps UP to 100 and shrinks every page.
modestring–sheet/filmstrip require Starter+
namePatternstring–Filename template with {basename}/{page}/{page:03d}/{dpi}/{format}/{date} tokens
pagesstring–Page range e.g. 1-3,5,7-9. Empty = all.
presetstring–A ready-made bundle of settings. Anything you set yourself wins over the preset.
responsestring–urls mode requires Starter+ and authentication
sheetBackgroundstring–Colour of the canvas behind the tiles, as #rgb or #rrggbb. Anything we cannot read stays white.
sheetColumnsinteger–How many pages sit side by side on the contact sheet.
sheetGapinteger–Spacing between the tiles, in pixels.
tiffCompressionstring–How the TIFF is packed down.
transparentboolean–Leave the paper see-through instead of white.
watermarkColorstring–Hex color, #rgb or #rrggbb.
watermarkFontstring–Outside the enum it silently becomes Helvetica. Does nothing unless watermarkText is set.
watermarkFontSizeinteger–Size of the stamped text in PIXELS of the rasterised page: it is annotated onto the bitmap at ImageMagick's 72 dpi default, so at dpi=300 the same number covers ~4x less of the page than it would ins…
watermarkOpacitynumber–0 invisible to 1 solid; out-of-range clamps. NOT a percent — 50 renders fully opaque. Needs watermarkText.
watermarkPositionstring–Where the stamp sits on each image.
watermarkRotationinteger–Integer degrees only — a decimal like '45.5' silently resets to 45. Needs watermarkText.
watermarkScalenumber–Not used by this tool — size the stamp with Watermark font size.
watermarkTextstring–Optional text watermark stamped on each image
watermarkTileboolean–Not used by this tool - a rasterised page is stamped once, where Watermark position says.
webpQualityinteger–Higher keeps more detail and makes a bigger file.

No output schema declared.

No examples provided.

pdf_to_images_batch ~777

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
avifQualityinteger–Higher keeps more detail and makes a bigger file.
backgroundColorstring–What fills the see-through parts of the page in a format that cannot keep them.
colorModestring–mono+jpg has no 1-bit JPEG — it silently renders grayscale and sets X-Color-Mode-Adjusted. Unknown values fall back to rgb.
cropstring–Area crop in PDF points: 'x,y,w,h'
dpiinteger–Out-of-range values clamp silently to 30-600 — never an error. Non-numeric is ignored and stays 150.
filesarrayyesUp to 20 input PDFs
formatstring–Aliases jpeg/tif accepted; unknown values silently stay png. avif is Starter+ — Free tier gets a 402.
jpegQualityinteger–Higher keeps more detail and makes a bigger file. 50 is the lowest this tool will go.
maxHeightinteger–Shrink-only height cap in pixels, aspect preserved. Omit for no cap — an explicit 0 clamps UP to 100 and shrinks every page.
maxWidthinteger–Shrink-only width cap in pixels, aspect preserved. Leave blank for no cap — an explicit 0 clamps UP to 100 and shrinks every page.
modestring–sheet/filmstrip require Starter+
namePatternstring–Filename template with {basename}/{page}/{page:03d}/{dpi}/{format}/{date} tokens
pagesstring–Page range e.g. 1-3,5,7-9. Empty = all.
presetstring–A ready-made bundle of settings. Anything you set yourself wins over the preset.
sheetBackgroundstring–Colour of the canvas behind the tiles, as #rgb or #rrggbb. Anything we cannot read stays white.
sheetColumnsinteger–How many pages sit side by side on the contact sheet.
sheetGapinteger–Spacing between the tiles, in pixels.
tiffCompressionstring–How the TIFF is packed down.
transparentboolean–Leave the paper see-through instead of white.
watermarkColorstring–Hex color, #rgb or #rrggbb.
watermarkFontstring–Outside the enum it silently becomes Helvetica. Does nothing unless watermarkText is set.
watermarkFontSizeinteger–Size of the stamped text in PIXELS of the rasterised page: it is annotated onto the bitmap at ImageMagick's 72 dpi default, so at dpi=300 the same number covers ~4x less of the page than it would ins…
watermarkOpacitynumber–0 invisible to 1 solid; out-of-range clamps. NOT a percent — 50 renders fully opaque. Needs watermarkText.
watermarkPositionstring–Where the stamp sits on each image.
watermarkRotationinteger–Integer degrees only — a decimal like '45.5' silently resets to 45. Needs watermarkText.
watermarkScalenumber–Not used by this tool — size the stamp with Watermark font size.
watermarkTextstring–Optional text watermark stamped on each image
watermarkTileboolean–Not used by this tool - a rasterised page is stamped once, where Watermark position says.
webpQualityinteger–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]

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)
outputNamestring–Optional 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
colorstring–Colour of the lettering. Hex, #rgb or #rrggbb.
filestringyesInput PDF (filename must end in .pdf)
fontFamilystring–Lettering style. Latin alphabet only — for other scripts stamp an image instead.
fontSizeinteger–Height of the lettering in points.
imageFilestring–Watermark image — PNG, JPG, or SVG. REQUIRED when mode=image; ignored otherwise.
modestring–Watermark type. 'image' requires the imageFile field — presence of an image alone does NOT switch modes.
opacitynumber–0-1 float; non-numeric resets to 0.3, but out-of-range values reach the PDF engine and 500. NOT a percent.
outputFilenamestring–Optional custom output filename.
pagesstring–Which pages to stamp, e.g. '1-3,5'. Empty = all pages.
positionstring–Long names like 'bottom-right' are NOT recognized and silently fall back to c. ml/mr work (folded to engine anchors l/r).
rotationinteger–Whole degrees only — a decimal string like '45.5' silently resets to 45.
scalenumber–Size multiplier. With tile=true only values in (0,1] count (fraction of page) — anything else silently tiles at 0.3.
textstring–The wording stamped across each page.
tileboolean–Repeat the watermark in a tiled pattern.

No output schema declared.

No examples provided.

photo_add_border ~363

Add Border — Add a solid-colour border around an image, keeping the format it arrived in. [category: photo]

NameTypeReqDescription
colorstring–A hex colour (#rgb, #rgba, #rrggbb or #rrggbbaa) or one of these 35 names — a hand-picked set, not the whole CSS list, so lightblue and darkgreen are refused: black, silver, gray, grey, white, maroon…
filestringyesJPG, PNG or WebP. Max 25 MB. The output keeps the input format. The type is read from the file's own bytes, not from its name.
sizeinteger–How thick the border is, in pixels, on all four sides. Out-of-range values are pulled back to the nearest allowed value rather than refused. 0 adds no border, but it is NOT a pass-through: the pictur…

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_mattingboolean–Re-solves hair, fur and glass edges as a soft fade instead of a hard cut. Slower and uses more memory.
alpha_matting_background_thresholdinteger–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_sizeinteger–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_thresholdinteger–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_colorstring–Optional solid background fill color. Default: transparent.
filestringyesJPG, PNG, WebP, BMP (max 20MB)
modelstring–Segmentation model; u2net_human_seg is tuned for people. Invalid values fall back to u2net.

No output schema declared.

No examples provided.

photo_collage ~378

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_ratiostring–Output 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).
gapinteger–Gap between cells in px, 0-100.
layoutstring–A plain grid, written as columns then rows.
layout_modestring–Omit 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_edgeinteger–Output long edge in px.
output_widthinteger–Older name for the setting above. Set the longest side instead; this is only used if that one is left empty.
qualityinteger–Output quality; 0 or omitted = engine default.
templatestring–Named template (layout_mode=template), e.g. ig_post_2x2, ig_story_3_vertical, ig_post_5_magazine. Needed when Layout mode is template: there is no default, and a template-mode run with none chosen, o…

No output schema declared.

No examples provided.

photo_collage_animated ~438

Animated Photo Collage — Animated/video collage (MP4/GIF/WebM) with Ken Burns motion. Business-only. [category: photo] [requires the business plan]

NameTypeReqDescription
aspect_ratiostring–Defaults 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_secinteger–Video duration in seconds, 1-10.
filesarrayyes2-16 images — JPG, PNG, WebP, HEIC. The multipart field name is 'files[]' (with brackets).
fpsinteger–Frames per second, 15-30.
gapinteger–Gap between cells in px, 0-100.
layoutstring–A plain grid, written as columns then rows: 2x2, 3x2, 1x4. Each number may be 1 to 8.
layout_modestring–Omit to auto-infer: 'template' present implies template mode, 'layout' implies grid_legacy, otherwise smart.
motionstring–ken_burns = slow pan/zoom per cell. Invalid values silently become ken_burns, not an error.
output_long_edgeinteger–Output long edge in px, 400-1920.
output_video_formatstring–gif returns image/gif and balloons in size at high fps — prefer mp4/webm beyond a few seconds.
output_widthinteger–Older name for the setting above. Set the longest side instead; this is only used if that one is left empty.
templatestring–Named template (layout_mode=template). Needed when Layout mode is template: there is no default, and a template-mode run with none chosen, or with fewer photos than the template has places for, is re…

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_colorstring–white/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_edgeinteger–Output 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_pxinteger–Tile size in px, 30-200.

No output schema declared.

No examples provided.

photo_color_adjuster ~184

Color Adjuster — Adjust brightness, contrast, and saturation of an image. [category: photo]

NameTypeReqDescription
brightnessnumber–Percent -100..100; 0 = no change (unlike saturation where 100 = no change). -100 = solid black, +100 = solid white.
contrastnumber–Percent -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, except that a HEIC or HEIF photo comes back as a JPG.
saturationnumber–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]

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

NameTypeReqDescription
filestringyesJPG, PNG, WebP, GIF, BMP, HEIC, HEIF
output_formatstring–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_exifboolean–Strip 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 ~185

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, except that a HEIC or HEIF photo comes back as a JPG.
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.
xinteger–Left offset px on the DISPLAYED (EXIF-upright) image — the handler auto-orients before cropping.
yinteger–Top offset px on the DISPLAYED (EXIF-upright) image — the handler auto-orients before cropping.

No output schema declared.

No examples provided.

photo_editor ~98

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). Output keeps the input format, except that a HEIC or HEIF photo comes back as a JPG.
filterstring–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]

NameTypeReqDescription
filestringyesInput file (JPG, PNG, TIFF, HEIC)

No output schema declared.

No examples provided.

photo_face_blur ~319

Face Blur — Automatically detect and blur faces in a photo for privacy protection. [category: photo]

NameTypeReqDescription
block_sizeinteger–Size of each mosaic square. 0 uses the amount chosen above; 1 is ignored, use 2 or more.
blur_modestring–gaussian softens, pixelate mosaics, solid draws an opaque black box — solid is the only mode that survives deblurring attacks.
blur_radiusinteger–Gaussian radius override. 0 = auto from blur_strength.
blur_strengthinteger–Preset intensity 1-4. blur_radius/block_size overrides beat it when set; irrelevant for solid mode.
filestringyesJPG, PNG, WebP, BMP (max 25MB)
manual_facesstring–Advanced: extra rectangles to blur even if no face was found there, as [{"x":10,"y":20,"w":80,"h":80}] in pixels of the picture as it is shown (turned upright by its EXIF tag). Decimals are rounded.
output_formatstring–Optional output format; defaults to the input format.
selected_facesstring–Advanced: which detected faces to blur, as a list of numbers starting at 0, e.g. [0,2]. Leave it blank to blur every face found; an empty list [] blurs none of them, only the areas in manual_faces. N…

No output schema declared.

No examples provided.

photo_face_detect ~46

Face Detect — Detect faces in an image and return bounding boxes. [category: photo]

NameTypeReqDescription
filestringyesInput file (JPG, PNG, WebP, BMP)

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
actionstring–Rotate values have NO hyphen: 'rotate90', not 'rotate-90'. 'custom' rotates by the 'degrees' field.
degreesnumber–Rotation 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
fuzzinteger–Per-pixel tolerance percent, 0-20.
highlight_colorstring–Hex color for changed pixels.
image1stringyesFirst image — JPG, PNG, WebP, BMP (max 25MB)
image2stringyesSecond image — JPG, PNG, WebP, BMP (max 25MB)
lowlight_colorstring–Hex color for unchanged pixels.
normalizeboolean–Normalize sizes before comparing.
output_formatstring–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 ~248

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)
opacityinteger–Overlay opacity 0-100.
output_formatstring–Optional output format; defaults to the background's format.
overlaystringyesImage composited on top — JPG, PNG, WebP, BMP (max 20MB)
positionstring–Anchor cell the overlay snaps to; x_offset/y_offset shift from THIS anchor, not from the top-left corner.
scaleinteger–Overlay size as a percent of the overlay's own size, not of the background: 100 keeps it as it is, 50 halves it, 200 doubles it.
x_offsetinteger–Px shift with gravity semantics: positive pushes inward from the anchored edge (leftward from right-side anchors).
y_offsetinteger–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]

NameTypeReqDescription
colsinteger–Columns, 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_formatstring–Optional tile format; defaults to the input format.
rowsinteger–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 ~316

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_textstring–Bottom caption.
filestringyesBase image — JPG, PNG, WebP, BMP (max 25MB)
fontstring–A font the server does not have is replaced: Impact by Anton (a free face in Impact's style, shipped with the server), Arial-Bold by Liberation-Sans-Bold (drawn to Arial Bold's exact widths). X-JE-Fo…
font_colorstring–Caption fill — #rrggbb or #rrggbbaa hex only; invalid values silently revert to #ffffff.
font_sizestring–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_formatstring–Defaults to the input image's format.
stroke_colorstring–Caption outline hex; invalid values silently revert to #000000. Drawn at 2x stroke_width beneath the fill.
stroke_widthinteger–Outline stroke width, 1-8.
top_textstring–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]

NameTypeReqDescription
filestringyesJPG, PNG, WebP, BMP, TIFF (max 25MB)
modestring–Denoise algorithm.
output_formatstring–Optional output format; defaults to the input format.
sharpenstring–Optional post-denoise sharpening.
strengthstring–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 ~267

Resize Image — Resize an image by pixel dimensions, percentage, fit-within-max, or exact canvas. Supports maintaining aspect ratio. [category: photo]

NameTypeReqDescription
bg_colorstring–Colour of the padding added around the picture when it does not fill the canvas.
filestringyesJPG, PNG, WebP, GIF, BMP, TIFF, AVIF, HEIC or HEIF. Output keeps the input format, except that a HEIC or HEIF photo comes back as a JPG.
force_exactboolean–Force exact dimensions, ignoring aspect ratio.
heightinteger–Target height px.
maintain_ratioboolean–Keep 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 %.
percentageinteger–Scale to this percent of the original size.
strip_metaboolean–Strip EXIF metadata from the output.
widthinteger–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_rounded_corners ~389

Rounded Corners — Round the corners of an image. The output is always a PNG, because the rounded-off corners are see-through and only PNG can hold that. [category: photo]

NameTypeReqDescription
backgroundstring–What fills the corners that were rounded off: 'transparent' (the default; 'none' means the same) leaves them see-through. Anything else fills them with a colour: a hex value (#rgb, #rgba, #rrggbb or…
cornersstring–'all', or a comma-separated list of tl, tr, br, bl (top-left, top-right, bottom-right, bottom-left). An edge word — top, bottom, left or right — selects that edge's two corners.
filestringyesJPG, PNG, WebP, GIF, BMP, TIFF or AVIF. Max 25 MB. HEIC is refused — run it through the Format Converter first. Whatever arrives, a PNG comes back.
radiusinteger–How far the curve reaches in from each corner. Measured in whichever unit the next setting says: PIXELS, up to 5000 — or PERCENT of the shorter side, where anything above 50 is treated as 50, because…
radius_unitstring–Whether the radius above is a number of pixels or a percentage of the picture's shorter side. Percent is the one to pick when the step runs on pictures of different sizes.

No output schema declared.

No examples provided.

photo_shadow_adder ~246

Add Drop Shadow — Add a drop shadow effect to an image, producing a PNG with transparency. [category: photo]

NameTypeReqDescription
anglenumber–Which way the shadow falls, in degrees clockwise from the right: 0 moves it right, 90 down, 180 left, 270 up. The default 45 puts it down and to the right, as if lit from the top left.
blurinteger–Shadow edge softness in px. 0 = hard-edged rectangle of a shadow.
distanceinteger–Shadow offset in px.
filestringyesImage to shadow — JPG, PNG, or WebP only (max 25 MB). BMP is NOT accepted here, unlike most photo tools.
opacityinteger–Shadow darkness 0-100. Affects the shadow layer only, never the image itself.
output_formatstring–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_colorstring–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]

NameTypeReqDescription
bg_colorstring–'transparent', 'white', or a hex color.
dpistring–String, not a number — only '72', '96', '144', '300'; anything else silently becomes '96'.
filestringyesSVG file (max 25MB)
heightinteger–Output height in px. 0 = intrinsic.
output_formatstring–jpg cannot hold transparency: without an explicit bg_color the artwork is flattened onto white, never black.
widthinteger–Output width in px. 0 (default) = render at the SVG's intrinsic size.

No output schema declared.

No examples provided.

photo_to_text ~385

Photo to Text (OCR) — Extract text from an image via OCR. Language selection takes two-letter codes (en, fr, de, ...) separated by commas; Tesseract codes such as eng or chi_sim also work. [category: photo]

NameTypeReqDescription
binarizeboolean–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_thresholdinteger–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.
filestringyesJPG, PNG, WebP, BMP, TIFF (max 15MB)
languagesstring–Which language or languages the writing is in. One code, or several separated by commas (en,fr); a plus sign works too, as Tesseract writes it (eng+fra). Two-letter codes are the usual form: en, fr,…
outputstring–json returns structured results; text returns plain text.
preprocessboolean–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]

NameTypeReqDescription
face_enhanceboolean–Run 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.
modelstring–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_formatstring–Optional output format; defaults to the input format.
scaleinteger–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 ~417

Add Image Watermark — Overlay a text watermark on a photo with configurable position (ImageMagick gravity names), opacity, and font size. [category: photo]

NameTypeReqDescription
colorstring–A hex colour, or one of white, black, gray, grey, 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, except that a HEIC or HEIF photo comes back as a JPG.
font_sizeinteger–How big the lettering is, measured in PIXELS of the photo rather than points on a page: the words are drawn straight onto the bitmap, so the same number gives the same size here, on the Signature Gen…
opacityinteger–INTEGER percent 0-100 — a fraction like 0.5 parses as 0 (invisible watermark).
positionstring–Case-sensitive ImageMagick gravity name — 'center' (lowercase) or 'top-left' are NOT recognized and silently fall back to SouthEast.
stroke_colorstring–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_widthstring–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.
textstringyesThe words stamped onto the photo. Required; there is no default. A leading '@' is removed.

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.
filenamestring–Optional download name. Falls back to the multipart filename.

No output schema declared.

No examples provided.

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'
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 95 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 153 tools: pdf_compress, pdf_merge, pdf_split, pdf_rotate, pdf_protect, and 148 more. Their descriptions and schemas cost roughly 28,494 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 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.