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
generate_certificate ~291

Certificate Generator — Generate a printable certificate of achievement or completion as PDF or PNG. [category: generate]

NameTypeReqDescription
borderStylestringUnknown values fall back to gold. This is the main visual lever — it colours border, corners, and title.
certTitlestringCertificate heading. Field name is 'certTitle' — not 'title'.
datestringFree text centred at the bottom, printed verbatim ('12 June 2026' works); empty = omitted.
descriptionstringOptional body text under the title.
formatstring'pdf' (default) or 'png' (300 DPI Ghostscript raster). Any other value silently returns the PDF.
issuerNamestringPrinted above the signature line. Empty hides the WHOLE issuer block, issuerTitle included.
issuerTitlestringItalic line under the signature — rendered only when issuerName is also set.
orientationstring'landscape' (default) or 'portrait' (A4). Any value other than 'portrait' renders landscape.
recipientNamestringyesRecipient's name (REQUIRED). Field name is 'recipientName' — not 'recipient'.
templatestringKept for older calls; it does not change the certificate. Set the heading with Cert title and the look with Border style.

No output schema declared.

No examples provided.

generate_favicon ~185

Favicon Generator — Generate a favicon set (ico + png sizes) from a source image, with optional rounded corners. This is the tiny icon a browser shows in the tab, beside a bookmark, and on a phone home screen — without one, visitors see a blank page symbol next to your site's name. [category: generate]

NameTypeReqDescription
backgroundstringFill behind a logo that is not square. None leaves it see-through, which suits both light and dark browser tabs. A hex colour such as #1a1a1a is also accepted; anything we do not recognise is treated…
borderRadiusintegerRounded-corner radius as a percent (0-50).
filestringyesSource image (PNG, SVG, JPG — max 20MB)
includeIcobooleanAlso generate favicon.ico.

No output schema declared.

No examples provided.

generate_hash ~103

Hash Generator — Compute MD5, SHA-1, SHA-256, and SHA-512 hashes of text (or an uploaded file). Always returns all four — there is no algorithm selection and bcrypt is not supported. [category: generate]

NameTypeReqDescription
filestringA file to hash instead of typed text. If you attach one, the file wins.
textstringThe text to hash. Leave it blank when you are hashing a file instead.

No output schema declared.

No examples provided.

generate_invoice ~404

Invoice Generator — Generate a professional PDF invoice from line items, client details, and company info. Takes a JSON body (camelCase fields), not form fields. [category: generate]

NameTypeReqDescription
clientAddressstringOne printed line under BILL TO — no wrapping, so keep it short; empty = line omitted.
clientEmailstringPrinted in BILL TO under the client name; empty = line omitted. Never validated.
clientNamestringyesClient name (REQUIRED). Field name is 'clientName' — not 'client_name'.
companyAddressstringOne printed line in the issuer header — no wrapping; empty = line omitted.
companyEmailstringPrinted in the issuer header block; empty = line omitted. Never validated.
companyNamestringyesIssuing company name (REQUIRED).
companyPhonestringPrinted in the issuer header block; empty = line omitted.
currencystringSets the printed symbol ONLY — no conversion. Unknown codes print '$'; INR prints 'Rs'.
discountPercentnumberPercent added to the subtotal. At 0 the tax line is left off the invoice.
dueDatestringFree text printed as 'Due: <value>' — never parsed or validated; empty hides the line.
invoiceDatestringFree text printed as 'Date: <value>' — never parsed; empty hides the line.
invoiceNumberstringAuto-generated 'INV-<8hex>' when omitted.
itemsarrayyesLine items. Keys MUST be description/quantity/unitPrice — other keys are silently ignored and amounts render as 0.
notesstringWrapped text under a 'Notes / Terms' heading at the bottom; empty hides the section.
taxPercentnumberPercent added to the subtotal. At 0 the tax line is left off the invoice.

No output schema declared.

No examples provided.

generate_lorem_ipsum ~105

Lorem Ipsum Generator — Generate lorem ipsum placeholder text by word count or paragraph count. [category: generate]

NameTypeReqDescription
countintegerHow many words/sentences/paragraphs to generate.
startLorembooleanStart with the classic 'Lorem ipsum dolor sit amet' opening.
typestringUnit to generate. Field names are 'type' + 'count' — 'paragraphs'/'words_per_paragraph' do not exist.

No output schema declared.

No examples provided.

generate_password ~206

Password Generator — Generate a cryptographically secure random password with configurable length and character sets. [category: generate]

NameTypeReqDescription
countintegerNumber of passwords to generate.
excludeSimilarbooleanExclude look-alike characters (iIlL1oO0).
lengthintegerCharacters per password.
lowercasebooleanInclude small letters a-z. Turning all four off is the same as leaving all four on.
numbersbooleanInclude digits 0-9. Turning all four off is the same as leaving all four on.
symbolsbooleanInclude symbols from !@#$%^&*()-_=+[]{}|;:,.<>? - quotes, backslash, backtick, tilde and slash are never used. Turning all four off is the same as leaving all four on.
uppercasebooleanInclude capital letters A-Z. Turning all four off is the same as leaving all four on.

No output schema declared.

No examples provided.

generate_placeholder_image ~182

Placeholder Image — Generate a placeholder image at any dimension with custom background colour and label text. [category: generate]

NameTypeReqDescription
bgColorstringBackground hex color, with or without '#'. Field name is 'bgColor' — not 'bg_color'.
fgColorstringLabel text hex color. Field name is 'fgColor' — not 'text_color'.
formatstringImage file type to save as.
heightintegerPixels tall. >4096 clamps to 4096; 0/omitted = 480.
textstringLabel text. Defaults to '<width> × <height>'.
widthintegerPixels wide. >4096 clamps to 4096; 0/omitted = 640. The default label text shows the FINAL clamped size.

No output schema declared.

No examples provided.

generate_qr_code ~84

QR Code Generator — Generate a QR code from a URL, text, or vCard data as a PNG image. [category: generate]

NameTypeReqDescription
contentstringyesThe URL, text, or vCard data to encode
levelstringError-correction level
sizeintegerWidth and height of the square image, in pixels.

No output schema declared.

No examples provided.

media_add_watermark ~178

Video Watermark — Overlay a text watermark onto a video using FFmpeg, with position and opacity control. [category: media]

NameTypeReqDescription
filestringyesVideo to watermark. Forces a full H.264 re-encode into MP4 (audio copied) — among the platform's slowest ops on long videos.
fontsizeintegerText size in pixels. Leave it at 0 and the size is worked out from the video's own height - about 36 on a 1080p video. Sizes below 6 are treated the same as 0.
opacitynumberHow solid the watermark looks: 1 is fully solid, 0.3 is a faint ghost.
positionstringWhich corner of the frame the watermark sits in.
textstringWatermark text.

No output schema declared.

No examples provided.

media_compress_video ~117

Compress Video — Reduce video file size using H.264 re-encoding with FFmpeg (quality presets high/medium/low). [category: media]

NameTypeReqDescription
filestringyesVideo in any FFmpeg-readable container; always comes back as H.264/AAC MP4 (yuv420p, faststart) whatever went in.
qualitystringQuality preset mapping to H.264 CRF 18/23/28. Field name is 'quality' — there is no 'crf' parameter.

No output schema declared.

No examples provided.

media_extract_audio ~113

Extract Audio — Extract the audio track from a video file as MP3, WAV, OGG, FLAC, or AAC. [category: media]

NameTypeReqDescription
filestringyesVideo to pull the soundtrack from (any FFmpeg-readable container). Audio is always re-encoded to `format`, never stream-copied.
formatstringWhat to save the soundtrack as. WAV and FLAC keep every bit of the original; MP3, OGG and AAC are smaller but re-compressed.

No output schema declared.

No examples provided.

media_extract_frames ~113

Extract Frames — Extract frames from a video at a specified frame rate as JPEG images (returned as a ZIP). [category: media]

NameTypeReqDescription
filestringyesVideo to sample. Frames are always JPEGs (frame_0001.jpg…) in a ZIP — no PNG option despite the tool blurb.
fpsnumberHow many frames to take per second of video. 1 means one frame a second.
maxintegerStop after this many frames, however long the video is.

No output schema declared.

No examples provided.

media_merge_audio ~63

Merge Audio — Concatenate multiple audio files (at least 2) into one MP3 using FFmpeg. [category: media]

NameTypeReqDescription
filesarrayyesInput audio files (MP3, WAV, AAC, OGG) — at least 2 required.

No output schema declared.

No examples provided.

media_mute_video ~47

Mute Video — Remove the audio track from a video file. [category: media]

NameTypeReqDescription
filestringyesInput file (MP4, MOV, AVI, MKV)

No output schema declared.

No examples provided.

media_trim_audio ~126

Trim Audio — Trim an audio file to a specified start and end time using FFmpeg. [category: media]

NameTypeReqDescription
endstringEnd time e.g. '00:01:30'. Omit to trim to the end of the file; when set it must be after start.
filestringyesAudio to trim. Output keeps this file's container/codec (stream copy); a filename with no extension is treated as .mp3.
startstringStart time e.g. '00:00:10'. Defaults to the beginning.

No output schema declared.

No examples provided.

media_trim_video ~118

Trim Video — Trim a video clip to a specified start and end time without re-encoding. [category: media]

NameTypeReqDescription
endstringEnd time. Omit to trim to the end of the file; when set it must be after start.
filestringyesVideo to trim. Stream copy — output keeps this container/codec, and the cut starts at the keyframe at or before `start`.
startstringStart time e.g. '00:00:10'. Defaults to the beginning.

No output schema declared.

No examples provided.

octopus_delete ~88

Delete a file. Default behaviour is a soft delete (the file goes to the trash and can be restored). Pass `hard: true` to permanently remove a file that's ALREADY in the trash — this also reclaims storage quota. [requires a signed-in account]

NameTypeReqDescription
file_idstringyes
hardbooleanHard-delete (only allowed on files already in trash).

No output schema declared.

No examples provided.

octopus_list ~126

List My Files — List the user's own saved files (their file storage), newest first, with an optional folder filter. Returns file names, types, folders, and IDs — never file contents. Use it to see what files the user has or to find which one they mean. [category: files]

NameTypeReqDescription
folderstringFolder to list, written exactly as it is stored, closing slash included: /Tax/2026/. Leave blank for every recent file.
limitinteger1-100; values outside this range silently fall back to 20.

No output schema declared.

No examples provided.

octopus_make_folder ~54

Create Folder — Create a folder (and any missing parent folders) in the user's file storage. [category: files]

NameTypeReqDescription
pathstringyesFolder path to create, e.g. /Clients/Acme.

No output schema declared.

No examples provided.

octopus_mkdir ~65

Create a folder. Any missing parent folders along the path are auto-created. Idempotent — creating an existing folder is a no-op. [requires a signed-in account]

NameTypeReqDescription
pathstringyesFolder path to create, e.g. /Tax/2026/.

No output schema declared.

No examples provided.

octopus_move ~88

Move a file to a different folder in Octopus, optionally renaming it at the same time. Folders are auto-created if they don't exist. This is a metadata-only change — no bytes are copied. [requires a signed-in account]

NameTypeReqDescription
file_idstringyes
new_namestringOptional new filename.
to_pathstringyesDestination folder path.

No output schema declared.

No examples provided.

octopus_move_file ~142

Move File to Folder — Move one of the user's files — an upload or a result from a previous step — into a folder of their file storage, optionally renaming it. Creates the folder if it doesn't exist. Use when the user says save / put / move / file this into a folder. [category: files]

NameTypeReqDescription
file_idstringyesThe file to move: an uploaded file id or a previous step's {{step_N.file_id}}.
new_namestringOptional new file name, with extension.
to_pathstringyesDestination folder path, e.g. /Tax/2026. Created if missing.

No output schema declared.

No examples provided.

octopus_read ~120

Read the contents of a file the user has stored in Octopus. Small files (<=2 MiB) come back inline as base64 (or UTF-8 text for text/* MIMEs). Larger files return a short-lived presigned download URL the agent can fetch. [requires a signed-in account]

NameTypeReqDescription
as_textbooleanIf true and MIME is text-like, return content as UTF-8 string instead of base64.
file_idstringyesFileID (UUID) from octopus.list / octopus.search.

No output schema declared.

No examples provided.

octopus_search ~104

Search the user's Octopus files by filename, tag, or folder. Pass `query` as a substring to match against names; combine with `tag:` or `in:/path/` filter syntax (e.g. `query: invoice tag:tax in:/Finance/`). Returns up to `limit` matching files. [requires a signed-in account]

NameTypeReqDescription
limitinteger
querystringyesFree-text + optional tag:/ in:/ qualifiers.

No output schema declared.

No examples provided.

octopus_search_meta ~92

Find My Files — Find the user's saved files by name, tag, or folder (metadata only — does NOT read file contents). Use it to resolve a reference like 'the invoice from this morning' or 'my Q1 report' to a real file. Returns matching names, types, folders, and IDs. [category: files]

NameTypeReqDescription
querystringyesText matched against file names and tags.

No output schema declared.

No examples provided.

octopus_write ~205

Save a new file the agent has produced (a report, a summary, generated code, etc.) into Octopus. If `path` is omitted the file lands in `/agent/{session}/` — the convention that keeps agent output separate from user uploads. Provide ONE of `content_text` (UTF-8) or `content_base64` (binary). [requires a signed-in account]

NameTypeReqDescription
content_base64stringBase64 content (use for binary). Decoded size max 25 MiB.
content_textstringUTF-8 content (use for text/markdown/json). Provide exactly ONE of content_text or content_base64. Max 25 MiB.
mime_typestringOptional. Sniffed from extension if omitted.
namestringyesFilename including extension.
pathstringFolder to write into. Defaults to /agent/{session}/.
tagsarrayOptional tags.

No output schema declared.

No examples provided.

pdf_compress ~166

Compress PDF — Reduce PDF file size while preserving readability. Quality presets: light (300 DPI), balanced (150 DPI, default), mobile (96 DPI), maximum (72 DPI). Also supports metadata-only stripping and a target-size mode. [category: pdf]

NameTypeReqDescription
filestringyesPDF to compress
metadataOnlybooleanOnly strip the hidden details - author, title, producing software - and leave every page exactly as it is.
qualitystringHow hard to squeeze. Light keeps print quality (300 DPI); balanced is the everyday choice (150 DPI); mobile (96 DPI) and maximum (72 DPI) trade sharpness for size.
targetSizeintegerSqueeze until the file fits this size. Overrides the preset above.

No output schema declared.

No examples provided.

pdf_crop ~292

Crop PDF — Crop the visible area of all pages in a PDF by setting new margins. Margins are in PostScript points; EVERY omitted edge defaults to 36pt — send 0 to leave an edge uncropped. [category: pdf]

NameTypeReqDescription
bottomnumberHow much to cut off the bottom edge, in points - 72 points is one inch. 0 leaves this edge alone. Cut away more than the page holds and you get a 1-point page rather than an error.
filestringyesInput PDF (max 25MB)
leftnumberHow much to cut off the left edge, in points - 72 points is one inch. 0 leaves this edge alone. Cut away more than the page holds and you get a 1-point page rather than an error.
outputFilenamestringOptional custom output filename.
rightnumberHow much to cut off the right edge, in points - 72 points is one inch. 0 leaves this edge alone. Cut away more than the page holds and you get a 1-point page rather than an error.
topnumberHow much to cut off the top edge, in points - 72 points is one inch. 0 leaves this edge alone. Cut away more than the page holds and you get a 1-point page rather than an error.

No output schema declared.

No examples provided.

pdf_delete_pages ~70

Delete Pages — Remove specific pages from a PDF. [category: pdf]

NameTypeReqDescription
filestringyesThe PDF to edit. Password-protected input is rejected 400 — run pdf_unlock first.
pagesstringyesPages to delete e.g. '1,3,5-7'

No output schema declared.

No examples provided.

pdf_excel_to_pdf ~850

Excel to PDF — Convert Excel spreadsheets (.xlsx / .xls / .csv / .ods) to PDF with fit-to-page, orientation control, paper size, sheet selection, repeat header rows, custom header/footer, PDF/A output, password protection, watermark, and per-sheet split mode. Hybrid pipeline: excelize preprocesses the xlsx (page layout, sheet visibility) then LibreOffice converts. [category: pdf]

NameTypeReqDescription
bookmarksbooleanAdd PDF bookmarks, one per sheet.
filestringyesInput spreadsheet (.xlsx, .xls, .csv, .ods)
fitToPagestringFit each sheet to a page. 'width' prevents column cutoff; 'one-page' squeezes each sheet onto a single page.
footerstringPer-page footer template. Same tokens as header.
gridlinesstringPrint the faint grid between cells. Leave blank to keep whatever the sheet already does.
headerstringPer-page header template. Tokens: {page}, {pages}, {sheet}, {date}, {filename}.
marginsstringdefault|narrow|normal|wide (Excel's inch presets); default keeps the sheet's own margins. Only applies to .xlsx input; unknown → default.
orientationstringPage orientation. 'auto' picks landscape for sheets with ≥8 data columns.
paperSizestringa4 (default) | letter | legal | tabloid | a3. Only applies to .xlsx input (excelize preprocess); unknown values silently become a4.
passwordstringOpen password for the output PDF (user password).
pdfastringSave in the PDF/A archive format, which embeds everything the file needs to open correctly in decades' time. Off unless you need it; 2b is the version most archives ask for.
permPasswordstringA second, different password that locks printing, copying and editing. Only takes effect if you also set an open password above.
qualitystringHow sharp the pictures and charts stay in the PDF. Leave blank for the converter's own setting.
repeatRowsstringPrint titles — rows that repeat on every page. e.g. '1' or '1-3'.
scaleintegerPrint size as a percentage, where 100 is life size and less shrinks the sheet to fit more on a page. Leave it blank unless you want a specific percentage - setting any value here turns Fit to page of…
sheetsstringWhich sheets to convert: all, or the names or positions you want — Sales,Ledger or 0,2.
showHeadersstringPrint the A B C column letters and 1 2 3 row numbers down the edges. Leave blank to keep the sheet's own setting.
splitModestringOne PDF containing every sheet, or a ZIP holding one PDF per sheet.
watermarkColorstringColour of the watermark lettering, as #rgb or #rrggbb. Anything else becomes mid-grey. Only used when there is watermark text.
watermarkFontstringLettering style for the watermark. Latin alphabet only. Only used when there is watermark text.
watermarkFontSizeintegerHeight of the watermark lettering in points. Only used when there is watermark text.
watermarkOpacitynumberHow solid the watermark looks: 1 is fully solid, 0.3 is a faint ghost. This is a fraction, not a percent. Only used when there is watermark text.
watermarkPositionstringWhere the watermark sits on the page. Only used when there is watermark text.
watermarkRotationintegerAngle of the watermark in whole degrees; 45 is the classic diagonal. Only used when there is watermark text.
watermarkScalenumberSize multiplier applied on top of the lettering size. Only used when there is watermark text.
watermarkTextstringOptional text watermark stamped on every page of the output.

No output schema declared.

No examples provided.

pdf_excel_to_pdf_batch ~795

Excel to PDF (Batch) — Apply the same Excel-to-PDF configuration to up to 20 spreadsheets. Returns a ZIP with per-file subfolders. [category: pdf]

NameTypeReqDescription
bookmarksbooleanAdd PDF bookmarks, one per sheet.
filesarrayyesUp to 20 input spreadsheets
fitToPagestringFit each sheet to a page. 'width' prevents column cutoff; 'one-page' squeezes each sheet onto a single page.
footerstringPer-page footer template. Same tokens as header.
gridlinesstringPrint the faint grid between cells. Leave blank to keep whatever the sheet already does.
headerstringPer-page header template. Tokens: {page}, {pages}, {sheet}, {date}, {filename}.
marginsstringdefault|narrow|normal|wide (Excel's inch presets); default keeps the sheet's own margins. Only applies to .xlsx input; unknown → default.
orientationstringPage orientation. 'auto' picks landscape for sheets with ≥8 data columns.
paperSizestringa4 (default) | letter | legal | tabloid | a3. Only applies to .xlsx input (excelize preprocess); unknown values silently become a4.
passwordstringOpen password for the output PDF (user password).
pdfastringSave in the PDF/A archive format, which embeds everything the file needs to open correctly in decades' time. Off unless you need it; 2b is the version most archives ask for.
permPasswordstringA second, different password that locks printing, copying and editing. Only takes effect if you also set an open password above.
qualitystringHow sharp the pictures and charts stay in the PDF. Leave blank for the converter's own setting.
repeatRowsstringPrint titles — rows that repeat on every page. e.g. '1' or '1-3'.
scaleintegerPrint size as a percentage, where 100 is life size and less shrinks the sheet to fit more on a page. Leave it blank unless you want a specific percentage - setting any value here turns Fit to page of…
sheetsstringWhich sheets to convert: all, or the names or positions you want — Sales,Ledger or 0,2.
showHeadersstringPrint the A B C column letters and 1 2 3 row numbers down the edges. Leave blank to keep the sheet's own setting.
splitModestringOne PDF containing every sheet, or a ZIP holding one PDF per sheet.
watermarkColorstringColour of the watermark lettering, as #rgb or #rrggbb. Anything else becomes mid-grey. Only used when there is watermark text.
watermarkFontstringLettering style for the watermark. Latin alphabet only. Only used when there is watermark text.
watermarkFontSizeintegerHeight of the watermark lettering in points. Only used when there is watermark text.
watermarkOpacitynumberHow solid the watermark looks: 1 is fully solid, 0.3 is a faint ghost. This is a fraction, not a percent. Only used when there is watermark text.
watermarkPositionstringWhere the watermark sits on the page. Only used when there is watermark text.
watermarkRotationintegerAngle of the watermark in whole degrees; 45 is the classic diagonal. Only used when there is watermark text.
watermarkScalenumberSize multiplier applied on top of the lettering size. Only used when there is watermark text.
watermarkTextstringOptional text watermark stamped on every page of the output.

No output schema declared.

No examples provided.

pdf_excel_to_pdf_inspect ~85

Excel to PDF (Inspect) — Non-destructive workbook scan: returns per-sheet row/column counts, merged cells, PrintArea presence, and the auto-orientation heuristic's decision per sheet. Used by the frontend to preview before converting. [category: pdf]

NameTypeReqDescription
filestringyesInput file (XLSX, XLS, CSV, ODS)

No output schema declared.

No examples provided.

pdf_extract_pages ~107

Extract Pages — Pull a chosen range of pages out of a PDF into a new PDF. To split a document into single pages, fixed chunks, or odd and even pages, use Split PDF instead. [category: pdf]

NameTypeReqDescription
filestringyesInput PDF (max 25MB). The uploaded filename must end in .pdf.
outputNamestringOptional custom output basename.
pagesstringyesPage range e.g. '2-5,8'

No output schema declared.

No examples provided.

pdf_file_info ~43

PDF File Info — Detailed info about a PDF: size, pages, version, encryption. [category: pdf]

NameTypeReqDescription
filestringyesInput file (PDF)

No output schema declared.

No examples provided.

pdf_flatten ~615

Flatten PDF — Flatten PDF forms and annotations into static page content. Supports granular modes (annotations-only, forms-only, all), page ranges, signature-aware handling, link preservation, watermark stamping, image compression, PDF/A archival output, OCR for scanned inputs, and a ZIP bundle that exports form values + annotation metadata alongside the flattened file. [category: pdf]

NameTypeReqDescription
compressImagesbooleanDownsample images after flattening to shrink file size.
compressPresetstringHow hard to squeeze the pictures: screen 72 DPI, ebook 150 DPI, printer and prepress 300 DPI.
exportDatabooleanAlso give me the form answers and note text as separate files. You get a ZIP containing the flattened PDF plus form_values.json and annotations.json - not a PDF.
filestringyesInput PDF
modestringWhich interactive elements to flatten. 'none' runs no flatten (useful for OCR/watermark/PDFA-only pipelines).
ocrFirstbooleanRun ocrmypdf before flattening (for scanned PDFs). Requires Starter+ tier.
ocrLangstringWhich language the scanned text is in.
outputFilenamestringOptional custom filename for the flattened output (without path).
outputFormatstringpdfa produces a PDF/A-2b archival output. Requires Starter+ tier.
pagesstringOptional page range (e.g. '1-3,5,7-9'). Only listed pages are flattened; others stay interactive.
preserveLinksbooleanKeep clickable hyperlinks after flattening (uses qpdf --flatten-annotations=print).
signatureModestringWhat to do if the PDF has been digitally signed. Flattening destroys a signature, so by default we hand the original back untouched.
watermarkColorstringHex color, #rgb or #rrggbb.
watermarkFontstringExactly Helvetica, Times-Roman, or Courier (case-sensitive); anything else becomes Helvetica. Read only when watermarkText is set.
watermarkFontSizeintegerPoint size, integer; non-integer input silently resets to 48. Read only when watermarkText is set.
watermarkOpacitynumber0 = invisible, 1 = solid; default 0.3. Non-numeric resets to 0.3. Read only when watermarkText is set.
watermarkPositionstringWhere the watermark sits on the page. Only used when there is watermark text.
watermarkRotationintegerDegrees, integer; default 45 = classic diagonal. Non-integer resets to 45. Read only when watermarkText is set.
watermarkScalenumberAbsolute scale factor; default 1.0. Non-numeric resets to 1.0.
watermarkTextstringText watermark to stamp before flattening. Leave empty to skip.

No output schema declared.

No examples provided.

pdf_flatten_batch ~590

Flatten PDFs (Batch) — Apply the same flatten configuration to up to 20 PDFs in one request. Returns a ZIP with each flattened file (and per-file error entries on failure). [category: pdf]

NameTypeReqDescription
compressImagesbooleanDownsample images after flattening to shrink file size.
compressPresetstringHow hard to squeeze the pictures: screen 72 DPI, ebook 150 DPI, printer and prepress 300 DPI.
exportDatabooleanAlso give me the form answers and note text as separate files. You get a ZIP containing the flattened PDF plus form_values.json and annotations.json - not a PDF.
filesarrayyesUp to 20 input PDFs
modestringWhich interactive elements to flatten. 'none' runs no flatten (useful for OCR/watermark/PDFA-only pipelines).
ocrFirstbooleanRun ocrmypdf before flattening (for scanned PDFs). Requires Starter+ tier.
ocrLangstringWhich language the scanned text is in.
outputFilenamestringOptional custom filename for the flattened output (without path).
outputFormatstringpdfa produces a PDF/A-2b archival output. Requires Starter+ tier.
pagesstringOptional page range (e.g. '1-3,5,7-9'). Only listed pages are flattened; others stay interactive.
preserveLinksbooleanKeep clickable hyperlinks after flattening (uses qpdf --flatten-annotations=print).
signatureModestringWhat to do if the PDF has been digitally signed. Flattening destroys a signature, so by default we hand the original back untouched.
watermarkColorstringHex color, #rgb or #rrggbb.
watermarkFontstringExactly Helvetica, Times-Roman, or Courier (case-sensitive); anything else becomes Helvetica. Read only when watermarkText is set.
watermarkFontSizeintegerPoint size, integer; non-integer input silently resets to 48. Read only when watermarkText is set.
watermarkOpacitynumber0 = invisible, 1 = solid; default 0.3. Non-numeric resets to 0.3. Read only when watermarkText is set.
watermarkPositionstringWhere the watermark sits on the page. Only used when there is watermark text.
watermarkRotationintegerDegrees, integer; default 45 = classic diagonal. Non-integer resets to 45. Read only when watermarkText is set.
watermarkScalenumberAbsolute scale factor; default 1.0. Non-numeric resets to 1.0.
watermarkTextstringText watermark to stamp before flattening. Leave empty to skip.

No output schema declared.

No examples provided.

pdf_get_metadata ~49

Get PDF Metadata — Read the metadata fields of a PDF: Title, Author, Subject, Keywords, Producer, Creator. [category: pdf]

NameTypeReqDescription
filestringyesInput file (PDF)

No output schema declared.

No examples provided.

pdf_grayscale ~165

Grayscale PDF — Convert a PDF to grayscale, removing all colour information. [category: pdf]

NameTypeReqDescription
filestringyesInput file (PDF)
modestringGrey keeps every shade of the original. Black and white forces each dot to pure black or pure white - smaller, and right for line art or a fax.
outputNamestringOptional name for the file you get back. Leave blank and we name it for you.
pagesstringWhich pages to convert, written as 3,7 or 1-5. Leave it blank to convert every page.
strictbooleanRefuse the job if any page could not be converted, rather than handing back a document with colour pages still in it.

No output schema declared.

No examples provided.

pdf_header_footer ~274

Add Header/Footer — Add custom text headers and/or footers to every page of a PDF, with optional page numbers. At least one of header, footer, or pageNumbers (other than 'none') is required. [category: pdf]

NameTypeReqDescription
colorstringHex color #rrggbb.
filestringyesInput PDF (max 50MB)
fontFamilystringTypeface for the header and footer text.
fontSizeintegerText size in points.
footerstringFooter text.
footerAlignstringLine the footer text up left, centred, or right.
headerstringHeader text. At least one of header/footer/pageNumbers is required.
headerAlignstringLine the header text up left, centred, or right.
marginnumberHow far in from the edge of the page the text sits, in points (72 = 1 inch).
outputFilenamestringOptional custom output filename.
pageNumberPositionstringPut the page number in the header or the footer.
pageNumbersstringPage-number style.
pagesstringOptional page range, e.g. '1-3,5'. Empty = all pages.

No output schema declared.

No examples provided.

pdf_html_to_pdf ~65

HTML to PDF — Convert an HTML file (.html or .htm) to PDF using LibreOffice. File upload only — URLs are not fetched. [category: pdf]

NameTypeReqDescription
filestringyesHTML file (.html or .htm, max 25MB)

No output schema declared.

No examples provided.

pdf_images_to_pdf ~203

Images to PDF — Combine multiple images (JPG, PNG, TIFF) into a single PDF document. [category: pdf]

NameTypeReqDescription
autoOrientbooleanTurn photos the right way up using the camera's own rotation tag. On by default — switch it off only if you want the raw pixels exactly as stored.
filesarrayyesInput files (JPG, JPEG, PNG, WEBP)
fitModestringHow each picture sits on the page.
marginintegerWhite border around each picture, in points - 72 points is one inch. A margin so large that nothing is left for the picture is ignored rather than refused.
orientationstringLeave blank to follow the page size you picked.
pageSizestringFit makes every page exactly the size of its own picture, so a phone photo becomes a page yards across. Any fixed size gives one uniform, printable document.

No output schema declared.

No examples provided.

pdf_interleave ~51

Interleave PDFs — Interleave pages from two PDFs alternately (useful for double-sided scans). [category: pdf]

NameTypeReqDescription
filesarrayyesInput files (PDF (exactly 2 files))

No output schema declared.

No examples provided.

pdf_merge ~179

Merge PDFs — Combine multiple PDF files (at least 2) into a single document in the order provided. Supports per-file page selection, blank separator pages, bookmarks, and output metadata. [category: pdf]

NameTypeReqDescription
addBookmarksbooleanAdd a bookmark at each document boundary.
authorstringOptional output metadata Author.
filesarrayyesInput PDFs — at least 2 required.
insertBlanksbooleanInsert a blank page between documents.
pageRangesarrayLeave blank to use every page. To take only part of a file, give its pages in the same order as the files themselves — 1-3 for the first, 2,5 for the second.
subjectstringOptional output metadata Subject.
titlestringOptional output metadata Title.

No output schema declared.

No examples provided.

pdf_ocr ~156

OCR PDF (Make Searchable) — Make a scanned PDF searchable and selectable by adding an invisible OCR text layer over the page images — the pages look identical, but the text becomes findable, copyable, and indexable. Uses ocrmypdf (Tesseract + Ghostscript); already-searchable pages are skipped, so it is safe to run on mixed documents. This CREATES a text layer — to EXTRACT text that already exists, use pdf_to_text instead. [category: pdf] [requires the starter plan]

NameTypeReqDescription
filestringyesScanned PDF to make searchable.
langstringThe language of the writing in the scan. The wrong language makes the searchable text gibberish.

No output schema declared.

No examples provided.

pdf_page_count ~39

PDF Page Count — Get the total number of pages in a PDF. [category: pdf]

NameTypeReqDescription
filestringyesInput file (PDF)

No output schema declared.

No examples provided.

pdf_page_numbers ~269

Add Page Numbers — Add page numbers to a PDF at a specified position (top/bottom, left/center/right). [category: pdf]

NameTypeReqDescription
colorstringHex color #rrggbb.
filestringyesPDF up to 25MB. Password-protected input is rejected 400 — run pdf_unlock first.
fontFamilystringOutside the enum it silently becomes Helvetica. Latin-1 fonts — a 'format' template with CJK/Cyrillic/emoji is refused 400.
fontSizeintegerDoes NOT clamp — anything below 6 or above 72 silently RESETS to the default 10.
formatstringHow each number is written on the page.
outputFilenamestringOptional custom output filename.
pageRangestringOnly number these pages, e.g. '2-5,8'. Empty = all pages.
positionstringWhere the number sits on the page.
romanNumeralsbooleanRender numbers as roman numerals.
skipFirstbooleanSkip numbering the first page.
skipLastbooleanSkip numbering the last page.
startintegerThe number printed on the first numbered page.

No output schema declared.

No examples provided.

pdf_pptx_to_pdf ~55

PowerPoint to PDF — Convert a PowerPoint presentation (.pptx, .ppt) to PDF using LibreOffice. [category: pdf]

NameTypeReqDescription
filestringyesInput file (PPTX, PPT)

No output schema declared.

No examples provided.

pdf_protect ~219

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

NameTypeReqDescription
encryptionstringHow strongly the file is locked.
filestringyesInput PDF (max 25MB)
outputNamestringOptional custom output filename.
ownerPasswordstringOptional separate permissions (owner) password.
passwordstringOne 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.
permissionsstringWhat 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…
userPasswordstringOptional 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)
passthroughbooleanSome 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.

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.