John's Essentials
REMOTE · API.JOHNSESSENTIALS.COM · SCANNED SEP 20
144 deterministic file tools: PDF, image, media, convert, analyze. Connect in one click (OAuth).
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security97
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- The endpoint enforces authorisation, advertised via RFC 9728 protected-resource metadata. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability79
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 26447 tokens (~175/item across 151 items; 148 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management46
- Stability check failed: schema churn in the 14 days we've observed: 0 tool removals, 1 breaking changes, 0 auth/transport breaks, 4 additions. See how to fix → Fail
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 150 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the John's Essentials MCP server?
John's Essentials is a hosted endpoint at https://api.johnsessentials.com/mcp/messages, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · api.johnsessentials.com
claude mcp add --transport http com-johnsessentials-johns-essentials 'https://api.johnsessentials.com/mcp/messages'
{
"mcpServers": {
"com-johnsessentials-johns-essentials": {
"url": "https://api.johnsessentials.com/mcp/messages"
}
}
} {
"servers": {
"com-johnsessentials-johns-essentials": {
"type": "http",
"url": "https://api.johnsessentials.com/mcp/messages"
}
}
} [mcp_servers.com-johnsessentials-johns-essentials] url = "https://api.johnsessentials.com/mcp/messages"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-johnsessentials-johns-essentials": {
"type": "remote",
"url": "https://api.johnsessentials.com/mcp/messages",
"enabled": true
}
}
} openclaw mcp add com-johnsessentials-johns-essentials --url 'https://api.johnsessentials.com/mcp/messages' --transport streamable-http
mcp_servers:
com-johnsessentials-johns-essentials:
url: "https://api.johnsessentials.com/mcp/messages" {
"McpServers": {
"com-johnsessentials-johns-essentials": {
"Transport": "http",
"Url": "https://api.johnsessentials.com/mcp/messages"
}
}
} assistant mcp add com-johnsessentials-johns-essentials -t streamable-http -u 'https://api.johnsessentials.com/mcp/messages'
{
"mcpServers": {
"com-johnsessentials-johns-essentials": {
"type": "http",
"url": "https://api.johnsessentials.com/mcp/messages"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 18 Sept 26 +1
- Tool “email_file” rewrote its description, which is the text the model reads security
- 17 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- New tool “drive_upload” functional
- 16 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 30 to 33.
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 26.
- 12 Sept 26 0
We did not load change detail this far back for this component, so this day may have recorded more than is shown.
- Stability: 0.17 → fail ▼ security
- A breaking change shipped without a version bump: still 1.2.0 ▼ security
- Tool “pdf_extract_pages” rewrote its description, which is the text the model reads security
- “convert_geo” changed the type of “strict”: string → boolean ▼ functional
- “pdf_excel_to_pdf_batch” added an optional parameter “watermarkColor” cosmetic
- “photo_watermark” added an optional parameter “stroke_width” cosmetic
- “pdf_images_to_pdf” added an optional parameter “autoOrient” cosmetic
- “pdf_excel_to_pdf” added an optional parameter “watermarkScale” cosmetic
- “pdf_reverse” added an optional parameter “outputName” cosmetic
- “photo_to_text” added an optional parameter “binarize_threshold” cosmetic
- “pdf_excel_to_pdf” added an optional parameter “watermarkRotation” cosmetic
- “pdf_grayscale” added an optional parameter “pages” cosmetic
- “pdf_excel_to_pdf_batch” added an optional parameter “watermarkFont” cosmetic
- “pdf_excel_to_pdf_batch” added an optional parameter “watermarkOpacity” cosmetic
- “pdf_excel_to_pdf_batch” added an optional parameter “watermarkRotation” cosmetic
- “convert_file” added an optional parameter “gif_width” cosmetic
- “generate_barcode” added an optional parameter “showText” cosmetic
- “photo_bg_remover” added an optional parameter “alpha_matting_erode_size” cosmetic
- “photo_bg_remover” added an optional parameter “alpha_matting” cosmetic
- “pdf_grayscale” added an optional parameter “outputName” cosmetic
- “pdf_grayscale” added an optional parameter “strict” cosmetic
- “pdf_reverse” added an optional parameter “reverseTarget” cosmetic
- “photo_bg_remover” added an optional parameter “alpha_matting_background_threshold” cosmetic
- “pdf_remove_watermark” added an optional parameter “passthrough” cosmetic
- “pdf_excel_to_pdf_batch” added an optional parameter “watermarkScale” cosmetic
- “pdf_excel_to_pdf” added an optional parameter “watermarkOpacity” cosmetic
- “convert_sqlite” added an optional parameter “strict” cosmetic
- “photo_watermark” added an optional parameter “color” cosmetic
- “photo_bg_remover” added an optional parameter “alpha_matting_foreground_threshold” cosmetic
- “pdf_excel_to_pdf_batch” added an optional parameter “watermarkPosition” cosmetic
- “generate_favicon” added an optional parameter “background” cosmetic
- “convert_video” added an optional parameter “crf” cosmetic
- “pdf_images_to_pdf” added an optional parameter “fitMode” cosmetic
- “convert_file” added an optional parameter “gif_fps” cosmetic
- “pdf_excel_to_pdf_batch” added an optional parameter “watermarkFontSize” cosmetic
- “photo_to_text” added an optional parameter “binarize” cosmetic
- “pdf_grayscale” added an optional parameter “mode” cosmetic
- “pdf_excel_to_pdf” added an optional parameter “watermarkPosition” cosmetic
- “pdf_crop” reworded the description of “bottom” cosmetic
- “pdf_protect” reworded the description of “encryption” cosmetic
- “pdf_flatten” reworded the description of “signatureMode” cosmetic
- “pdf_excel_to_pdf_batch” reworded the description of “scale” cosmetic
- “pdf_to_images” reworded the description of “backgroundColor” cosmetic
- “analyze_color_palette” reworded the description of “colors” cosmetic
- “pdf_excel_to_pdf” reworded the description of “gridlines” cosmetic
- “analyze_ssl” reworded the description of “hostname” cosmetic
- “pdf_to_excel_batch” reworded the description of “ocrLang” cosmetic
- “web_extract_table” reworded the description of “user_agent” cosmetic
- “analyze_hash” reworded the description of “file” cosmetic
- “pdf_to_images_batch” reworded the description of “watermarkPosition” cosmetic
- “web_extract_table” reworded the description of “acknowledge_robots” cosmetic
- “web_scrape_page” reworded the description of “selectors” cosmetic
- “pdf_merge” reworded the description of “pageRanges” cosmetic
- “convert_file” reworded the description of “from” cosmetic
- “generate_password” reworded the description of “uppercase” cosmetic
- “pdf_to_images” reworded the description of “jpegQuality” cosmetic
- “pdf_excel_to_pdf” reworded the description of “permPassword” cosmetic
- “generate_ascii_art” reworded the description of “text” cosmetic
- “photo_collage” reworded the description of “template” cosmetic
- “media_extract_frames” reworded the description of “max” cosmetic
- “pdf_header_footer” reworded the description of “headerAlign” cosmetic
- “photo_face_blur” reworded the description of “manual_faces” cosmetic
- “pdf_page_numbers” reworded the description of “format” cosmetic
- “pdf_watermark” reworded the description of “text” cosmetic
- “pdf_header_footer” reworded the description of “fontSize” cosmetic
- “web_extract_table” reworded the description of “timeout_ms” cosmetic
- “pdf_header_footer” reworded the description of “pageNumberPosition” cosmetic
- “photo_resize” reworded the description of “percentage” cosmetic
- “generate_ascii_art” reworded the description of “mode” cosmetic
- “pdf_excel_to_pdf_batch” reworded the description of “gridlines” cosmetic
- “pdf_header_footer” reworded the description of “margin” cosmetic
- “web_scrape_page” reworded the description of “mode” cosmetic
- “pdf_to_images_batch” reworded the description of “tiffCompression” cosmetic
- “generate_invoice” reworded the description of “discountPercent” cosmetic
- “pdf_to_images_batch” reworded the description of “webpQuality” cosmetic
- “pdf_to_images_batch” reworded the description of “watermarkScale” cosmetic
- “convert_video” reworded the description of “preset_name” cosmetic
- “web_extract_table” reworded the description of “table_index” cosmetic
- “pdf_to_images” reworded the description of “preset” cosmetic
- “pdf_to_images_batch” reworded the description of “sheetBackground” cosmetic
- “convert_parquet” reworded the description of “sheet” cosmetic
- “pdf_flatten_batch” reworded the description of “signatureMode” cosmetic
- “analyze_word_frequency” reworded the description of “topN” cosmetic
- “pdf_to_images” reworded the description of “avifQuality” cosmetic
- “photo_to_text” reworded the description of “languages” cosmetic
- “media_add_watermark” reworded the description of “opacity” cosmetic
- “pdf_excel_to_pdf_batch” reworded the description of “sheets” cosmetic
- “pdf_to_images_batch” reworded the description of “maxWidth” cosmetic
- “pdf_header_footer” reworded the description of “footerAlign” cosmetic
- “generate_password” reworded the description of “lowercase” cosmetic
- “convert_archive” reworded the description of “to” cosmetic
- “convert_video” reworded the description of “to” cosmetic
- “pdf_excel_to_pdf” reworded the description of “sheets” cosmetic
- “convert_unit_convert” reworded the description of “value” cosmetic
- “pdf_to_images_batch” reworded the description of “avifQuality” cosmetic
- “generate_ascii_art” reworded the description of “font” cosmetic
- “analyze_grammar_check” reworded the description of “include_llm” cosmetic
- “analyze_word_frequency” reworded the description of “exclude” cosmetic
- “pdf_excel_to_pdf_batch” reworded the description of “pdfa” cosmetic
- “generate_password” reworded the description of “length” cosmetic
- “convert_chain” reworded the description of “from” cosmetic
- “pdf_to_excel” reworded the description of “ocrLang” cosmetic
- “pdf_flatten” reworded the description of “watermarkPosition” cosmetic
- “convert_document” reworded the description of “from” cosmetic
- “convert_sqlite” reworded the description of “to” cosmetic
- “pdf_to_excel_inspect” reworded the description of “ocrLang” cosmetic
- “pdf_crop” reworded the description of “left” cosmetic
- “convert_text” reworded the description of “from” cosmetic
- “pdf_flatten_batch” reworded the description of “compressPreset” cosmetic
- “pdf_flatten_batch” reworded the description of “ocrLang” cosmetic
- “analyze_hash” reworded the description of “text” cosmetic
- “analyze_file_diff” reworded the description of “text_b” cosmetic
- “generate_ascii_art” reworded the description of “width” cosmetic
- “pdf_to_images” reworded the description of “watermarkScale” cosmetic
- “photo_face_blur” reworded the description of “block_size” cosmetic
- “pdf_to_images” reworded the description of “sheetColumns” cosmetic
- “octopus_list” reworded the description of “folder” cosmetic
- “data_to_file” reworded the description of “name” cosmetic
- “convert_data” reworded the description of “to” cosmetic
- “pdf_to_images” reworded the description of “maxWidth” cosmetic
- “pdf_to_images” reworded the description of “transparent” cosmetic
- “pdf_page_numbers” reworded the description of “position” cosmetic
- “pdf_excel_to_pdf” reworded the description of “showHeaders” cosmetic
- “analyze_word_count” reworded the description of “text” cosmetic
- “media_extract_audio” reworded the description of “format” cosmetic
- “analyze_link_extractor” reworded the description of “file” cosmetic
- “pdf_to_excel” reworded the description of “sheetMode” cosmetic
- “pdf_excel_to_pdf” reworded the description of “pdfa” cosmetic
- “pdf_to_images” reworded the description of “watermarkTile” cosmetic
- “pdf_excel_to_pdf” reworded the description of “quality” cosmetic
- “web_scrape_page” reworded the description of “user_agent” cosmetic
- “email_file” reworded the description of “subject” cosmetic
- “pdf_to_images” reworded the description of “tiffCompression” cosmetic
- “generate_barcode” reworded the description of “type” cosmetic
- “generate_qr_code” reworded the description of “size” cosmetic
- “photo_resize” reworded the description of “bg_color” cosmetic
- “web_fetch” reworded the description of “acknowledge_robots” cosmetic
- “pdf_to_images” reworded the description of “webpQuality” cosmetic
- “pdf_excel_to_pdf” reworded the description of “scale” cosmetic
- “pdf_to_excel_inspect” reworded the description of “ocrFirst” cosmetic
- “pdf_rotate” reworded the description of “rotation” cosmetic
- “pdf_flatten” reworded the description of “compressPreset” cosmetic
- “generate_barcode” reworded the description of “height” cosmetic
- “pdf_rotate” reworded the description of “pages” cosmetic
- “photo_collage” reworded the description of “output_width” cosmetic
- “analyze_readability” reworded the description of “text” cosmetic
- “pdf_ocr” reworded the description of “lang” cosmetic
- “pdf_to_images” reworded the description of “sheetBackground” cosmetic
- “data_to_file” reworded the description of “format” cosmetic
- “pdf_compress” reworded the description of “metadataOnly” cosmetic
- “describe_image” reworded the description of “question” cosmetic
- “pdf_compress” reworded the description of “targetSize” cosmetic
- “pdf_images_to_pdf” reworded the description of “files” cosmetic
- “pdf_crop” reworded the description of “top” cosmetic
- “pdf_flatten_batch” reworded the description of “exportData” cosmetic
- “pdf_split” reworded the description of “chunkSize” cosmetic
- “photo_collage_animated” reworded the description of “output_width” cosmetic
- “pdf_to_images_batch” reworded the description of “watermarkTile” cosmetic
- “chatwithyourpdf” reworded the description of “max_chars” cosmetic
- “photo_compress_to_size” reworded the description of “output_format” cosmetic
- “photo_resize” reworded the description of “width” cosmetic
- “pdf_watermark” reworded the description of “color” cosmetic
- “generate_password” reworded the description of “symbols” cosmetic
- “pdf_to_images” reworded the description of “sheetGap” cosmetic
- “convert_video” reworded the description of “resolution” cosmetic
- “pdf_to_images_batch” reworded the description of “sheetGap” cosmetic
- “convert_file” reworded the description of “to” cosmetic
- “pdf_page_numbers” reworded the description of “start” cosmetic
- “web_scrape_page” reworded the description of “timeout_ms” cosmetic
- “pdf_watermark” reworded the description of “fontSize” cosmetic
- “pdf_header_footer” reworded the description of “fontFamily” cosmetic
- “photo_face_blur” reworded the description of “selected_faces” cosmetic
- “convert_text” reworded the description of “to” cosmetic
- “web_scrape_page” reworded the description of “acknowledge_robots” cosmetic
- “web_fetch” reworded the description of “timeout_ms” cosmetic
- “convert_chain” reworded the description of “steps” cosmetic
- “pdf_protect” reworded the description of “password” cosmetic
- “generate_ascii_art” reworded the description of “file” cosmetic
- “convert_batch” reworded the description of “filenames” cosmetic
- “pdf_crop” reworded the description of “right” cosmetic
- “pdf_split” reworded the description of “pages” cosmetic
- “convert_geo” reworded the description of “strict” cosmetic
- “pdf_to_images_batch” reworded the description of “transparent” cosmetic
- “pdf_watermark” reworded the description of “fontFamily” cosmetic
- “pdf_to_images” reworded the description of “watermarkPosition” cosmetic
- “analyze_link_extractor” reworded the description of “text” cosmetic
- “analyze_file_diff” reworded the description of “text_a” cosmetic
- “generate_hash” reworded the description of “text” cosmetic
- “pdf_flatten_batch” dropped the optional parameter “watermarkTile” cosmetic
- “pdf_flatten” dropped the optional parameter “watermarkTile” cosmetic
- “analyze_link_extractor” made “file” optional cosmetic
- “generate_hash” made “text” optional cosmetic
- “analyze_hash” made “file” optional cosmetic
- “analyze_readability” made “text” optional cosmetic
- 11 Sept 26 +1
We did not load change detail this far back for this component, so this day may have recorded more than is shown.
- 9 Sept 26 +1
We did not load change detail this far back for this component, so this day may have recorded more than is shown.
- 7 Sept 26 +1
We did not load change detail this far back for this component, so this day may have recorded more than is shown.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Probed https://api.johnsessentials.com/mcp/messages
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=johnsessentials.com | CN=YE2,O=Let's Encrypt,C=US | 5 Aug 2026 | 3 Nov 2026 | ECDSA 256 | ECDSA-SHA384 | 515533c64147486b08640e2b39ce24251a1 |
| SANs: *.johnsessentials.com, johnsessentials.com | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of api.johnsessentials.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| johnsessentials.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On connection |
| HTTP status | 401 |
WWW-Authenticate challenge Bearer resource_metadata="https://api.johnsessentials.com/.well-known/oauth-protected-resource", scope="read write"
Bearer resource_metadata="https://api.johnsessentials.com/.well-known/oauth-protected-resource", scope="read write" | Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| www-authenticate | Bearer resource_metadata="https://api.johnsessentials.com/.well-known/oauth-protected-resource", scope="read write" |
Protected resource metadata
| Document | https://api.johnsessentials.com/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://api.johnsessentials.com/mcp/messages |
| Authorisation server | https://api.johnsessentials.com |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://api.johnsessentials.com/mcp/messages | Verified | 200 | |
| http (plaintext) | http://api.johnsessentials.com/mcp/messages | HTTPS enforced | 301 | https://api.johnsessentials.com/mcp/messages |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
generate_certificate ~291
Certificate Generator — Generate a printable certificate of achievement or completion as PDF or PNG. [category: generate]
| Name | Type | Req | Description |
|---|---|---|---|
| borderStyle | string | – | Unknown values fall back to gold. This is the main visual lever — it colours border, corners, and title. |
| certTitle | string | – | Certificate heading. Field name is 'certTitle' — not 'title'. |
| date | string | – | Free text centred at the bottom, printed verbatim ('12 June 2026' works); empty = omitted. |
| description | string | – | Optional body text under the title. |
| format | string | – | 'pdf' (default) or 'png' (300 DPI Ghostscript raster). Any other value silently returns the PDF. |
| issuerName | string | – | Printed above the signature line. Empty hides the WHOLE issuer block, issuerTitle included. |
| issuerTitle | string | – | Italic line under the signature — rendered only when issuerName is also set. |
| orientation | string | – | 'landscape' (default) or 'portrait' (A4). Any value other than 'portrait' renders landscape. |
| recipientName | string | yes | Recipient's name (REQUIRED). Field name is 'recipientName' — not 'recipient'. |
| template | string | – | Kept 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]
| Name | Type | Req | Description |
|---|---|---|---|
| background | string | – | Fill 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… |
| borderRadius | integer | – | Rounded-corner radius as a percent (0-50). |
| file | string | yes | Source image (PNG, SVG, JPG — max 20MB) |
| includeIco | boolean | – | Also 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | – | A file to hash instead of typed text. If you attach one, the file wins. |
| text | string | – | The 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]
| Name | Type | Req | Description |
|---|---|---|---|
| clientAddress | string | – | One printed line under BILL TO — no wrapping, so keep it short; empty = line omitted. |
| clientEmail | string | – | Printed in BILL TO under the client name; empty = line omitted. Never validated. |
| clientName | string | yes | Client name (REQUIRED). Field name is 'clientName' — not 'client_name'. |
| companyAddress | string | – | One printed line in the issuer header — no wrapping; empty = line omitted. |
| companyEmail | string | – | Printed in the issuer header block; empty = line omitted. Never validated. |
| companyName | string | yes | Issuing company name (REQUIRED). |
| companyPhone | string | – | Printed in the issuer header block; empty = line omitted. |
| currency | string | – | Sets the printed symbol ONLY — no conversion. Unknown codes print '$'; INR prints 'Rs'. |
| discountPercent | number | – | Percent added to the subtotal. At 0 the tax line is left off the invoice. |
| dueDate | string | – | Free text printed as 'Due: <value>' — never parsed or validated; empty hides the line. |
| invoiceDate | string | – | Free text printed as 'Date: <value>' — never parsed; empty hides the line. |
| invoiceNumber | string | – | Auto-generated 'INV-<8hex>' when omitted. |
| items | array | yes | Line items. Keys MUST be description/quantity/unitPrice — other keys are silently ignored and amounts render as 0. |
| notes | string | – | Wrapped text under a 'Notes / Terms' heading at the bottom; empty hides the section. |
| taxPercent | number | – | Percent 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]
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | How many words/sentences/paragraphs to generate. |
| startLorem | boolean | – | Start with the classic 'Lorem ipsum dolor sit amet' opening. |
| type | string | – | Unit 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]
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Number of passwords to generate. |
| excludeSimilar | boolean | – | Exclude look-alike characters (iIlL1oO0). |
| length | integer | – | Characters per password. |
| lowercase | boolean | – | Include small letters a-z. Turning all four off is the same as leaving all four on. |
| numbers | boolean | – | Include digits 0-9. Turning all four off is the same as leaving all four on. |
| symbols | boolean | – | Include symbols from !@#$%^&*()-_=+[]{}|;:,.<>? - quotes, backslash, backtick, tilde and slash are never used. Turning all four off is the same as leaving all four on. |
| uppercase | boolean | – | Include 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]
| Name | Type | Req | Description |
|---|---|---|---|
| bgColor | string | – | Background hex color, with or without '#'. Field name is 'bgColor' — not 'bg_color'. |
| fgColor | string | – | Label text hex color. Field name is 'fgColor' — not 'text_color'. |
| format | string | – | Image file type to save as. |
| height | integer | – | Pixels tall. >4096 clamps to 4096; 0/omitted = 480. |
| text | string | – | Label text. Defaults to '<width> × <height>'. |
| width | integer | – | Pixels 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]
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | The URL, text, or vCard data to encode |
| level | string | – | Error-correction level |
| size | integer | – | Width 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Video to watermark. Forces a full H.264 re-encode into MP4 (audio copied) — among the platform's slowest ops on long videos. |
| fontsize | integer | – | Text 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. |
| opacity | number | – | How solid the watermark looks: 1 is fully solid, 0.3 is a faint ghost. |
| position | string | – | Which corner of the frame the watermark sits in. |
| text | string | – | Watermark 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Video in any FFmpeg-readable container; always comes back as H.264/AAC MP4 (yuv420p, faststart) whatever went in. |
| quality | string | – | Quality 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Video to pull the soundtrack from (any FFmpeg-readable container). Audio is always re-encoded to `format`, never stream-copied. |
| format | string | – | What 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Video to sample. Frames are always JPEGs (frame_0001.jpg…) in a ZIP — no PNG option despite the tool blurb. |
| fps | number | – | How many frames to take per second of video. 1 means one frame a second. |
| max | integer | – | Stop 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]
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | yes | Input 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input 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]
| Name | Type | Req | Description |
|---|---|---|---|
| end | string | – | End time e.g. '00:01:30'. Omit to trim to the end of the file; when set it must be after start. |
| file | string | yes | Audio to trim. Output keeps this file's container/codec (stream copy); a filename with no extension is treated as .mp3. |
| start | string | – | Start 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]
| Name | Type | Req | Description |
|---|---|---|---|
| end | string | – | End time. Omit to trim to the end of the file; when set it must be after start. |
| file | string | yes | Video to trim. Stream copy — output keeps this container/codec, and the cut starts at the keyframe at or before `start`. |
| start | string | – | Start 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file_id | string | yes | – |
| hard | boolean | – | Hard-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]
| Name | Type | Req | Description |
|---|---|---|---|
| folder | string | – | Folder to list, written exactly as it is stored, closing slash included: /Tax/2026/. Leave blank for every recent file. |
| limit | integer | – | 1-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]
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | Folder 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]
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | Folder 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file_id | string | yes | – |
| new_name | string | – | Optional new filename. |
| to_path | string | yes | Destination 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file_id | string | yes | The file to move: an uploaded file id or a previous step's {{step_N.file_id}}. |
| new_name | string | – | Optional new file name, with extension. |
| to_path | string | yes | Destination 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]
| Name | Type | Req | Description |
|---|---|---|---|
| as_text | boolean | – | If true and MIME is text-like, return content as UTF-8 string instead of base64. |
| file_id | string | yes | FileID (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]
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| query | string | yes | Free-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]
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Text 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]
| Name | Type | Req | Description |
|---|---|---|---|
| content_base64 | string | – | Base64 content (use for binary). Decoded size max 25 MiB. |
| content_text | string | – | UTF-8 content (use for text/markdown/json). Provide exactly ONE of content_text or content_base64. Max 25 MiB. |
| mime_type | string | – | Optional. Sniffed from extension if omitted. |
| name | string | yes | Filename including extension. |
| path | string | – | Folder to write into. Defaults to /agent/{session}/. |
| tags | array | – | Optional 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | PDF to compress |
| metadataOnly | boolean | – | Only strip the hidden details - author, title, producing software - and leave every page exactly as it is. |
| quality | string | – | How 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. |
| targetSize | integer | – | Squeeze 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]
| Name | Type | Req | Description |
|---|---|---|---|
| bottom | number | – | How 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. |
| file | string | yes | Input PDF (max 25MB) |
| left | number | – | How 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. |
| outputFilename | string | – | Optional custom output filename. |
| right | number | – | How 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. |
| top | number | – | How 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | The PDF to edit. Password-protected input is rejected 400 — run pdf_unlock first. |
| pages | string | yes | Pages 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]
| Name | Type | Req | Description |
|---|---|---|---|
| bookmarks | boolean | – | Add PDF bookmarks, one per sheet. |
| file | string | yes | Input spreadsheet (.xlsx, .xls, .csv, .ods) |
| fitToPage | string | – | Fit each sheet to a page. 'width' prevents column cutoff; 'one-page' squeezes each sheet onto a single page. |
| footer | string | – | Per-page footer template. Same tokens as header. |
| gridlines | string | – | Print the faint grid between cells. Leave blank to keep whatever the sheet already does. |
| header | string | – | Per-page header template. Tokens: {page}, {pages}, {sheet}, {date}, {filename}. |
| margins | string | – | default|narrow|normal|wide (Excel's inch presets); default keeps the sheet's own margins. Only applies to .xlsx input; unknown → default. |
| orientation | string | – | Page orientation. 'auto' picks landscape for sheets with ≥8 data columns. |
| paperSize | string | – | a4 (default) | letter | legal | tabloid | a3. Only applies to .xlsx input (excelize preprocess); unknown values silently become a4. |
| password | string | – | Open password for the output PDF (user password). |
| pdfa | string | – | Save 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. |
| permPassword | string | – | A second, different password that locks printing, copying and editing. Only takes effect if you also set an open password above. |
| quality | string | – | How sharp the pictures and charts stay in the PDF. Leave blank for the converter's own setting. |
| repeatRows | string | – | Print titles — rows that repeat on every page. e.g. '1' or '1-3'. |
| scale | integer | – | Print 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… |
| sheets | string | – | Which sheets to convert: all, or the names or positions you want — Sales,Ledger or 0,2. |
| showHeaders | string | – | Print the A B C column letters and 1 2 3 row numbers down the edges. Leave blank to keep the sheet's own setting. |
| splitMode | string | – | One PDF containing every sheet, or a ZIP holding one PDF per sheet. |
| watermarkColor | string | – | Colour of the watermark lettering, as #rgb or #rrggbb. Anything else becomes mid-grey. Only used when there is watermark text. |
| watermarkFont | string | – | Lettering style for the watermark. Latin alphabet only. Only used when there is watermark text. |
| watermarkFontSize | integer | – | Height of the watermark lettering in points. Only used when there is watermark text. |
| watermarkOpacity | number | – | How 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. |
| watermarkPosition | string | – | Where the watermark sits on the page. Only used when there is watermark text. |
| watermarkRotation | integer | – | Angle of the watermark in whole degrees; 45 is the classic diagonal. Only used when there is watermark text. |
| watermarkScale | number | – | Size multiplier applied on top of the lettering size. Only used when there is watermark text. |
| watermarkText | string | – | Optional 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]
| Name | Type | Req | Description |
|---|---|---|---|
| bookmarks | boolean | – | Add PDF bookmarks, one per sheet. |
| files | array | yes | Up to 20 input spreadsheets |
| fitToPage | string | – | Fit each sheet to a page. 'width' prevents column cutoff; 'one-page' squeezes each sheet onto a single page. |
| footer | string | – | Per-page footer template. Same tokens as header. |
| gridlines | string | – | Print the faint grid between cells. Leave blank to keep whatever the sheet already does. |
| header | string | – | Per-page header template. Tokens: {page}, {pages}, {sheet}, {date}, {filename}. |
| margins | string | – | default|narrow|normal|wide (Excel's inch presets); default keeps the sheet's own margins. Only applies to .xlsx input; unknown → default. |
| orientation | string | – | Page orientation. 'auto' picks landscape for sheets with ≥8 data columns. |
| paperSize | string | – | a4 (default) | letter | legal | tabloid | a3. Only applies to .xlsx input (excelize preprocess); unknown values silently become a4. |
| password | string | – | Open password for the output PDF (user password). |
| pdfa | string | – | Save 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. |
| permPassword | string | – | A second, different password that locks printing, copying and editing. Only takes effect if you also set an open password above. |
| quality | string | – | How sharp the pictures and charts stay in the PDF. Leave blank for the converter's own setting. |
| repeatRows | string | – | Print titles — rows that repeat on every page. e.g. '1' or '1-3'. |
| scale | integer | – | Print 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… |
| sheets | string | – | Which sheets to convert: all, or the names or positions you want — Sales,Ledger or 0,2. |
| showHeaders | string | – | Print the A B C column letters and 1 2 3 row numbers down the edges. Leave blank to keep the sheet's own setting. |
| splitMode | string | – | One PDF containing every sheet, or a ZIP holding one PDF per sheet. |
| watermarkColor | string | – | Colour of the watermark lettering, as #rgb or #rrggbb. Anything else becomes mid-grey. Only used when there is watermark text. |
| watermarkFont | string | – | Lettering style for the watermark. Latin alphabet only. Only used when there is watermark text. |
| watermarkFontSize | integer | – | Height of the watermark lettering in points. Only used when there is watermark text. |
| watermarkOpacity | number | – | How 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. |
| watermarkPosition | string | – | Where the watermark sits on the page. Only used when there is watermark text. |
| watermarkRotation | integer | – | Angle of the watermark in whole degrees; 45 is the classic diagonal. Only used when there is watermark text. |
| watermarkScale | number | – | Size multiplier applied on top of the lettering size. Only used when there is watermark text. |
| watermarkText | string | – | Optional 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input PDF (max 25MB). The uploaded filename must end in .pdf. |
| outputName | string | – | Optional custom output basename. |
| pages | string | yes | Page 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input 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]
| Name | Type | Req | Description |
|---|---|---|---|
| compressImages | boolean | – | Downsample images after flattening to shrink file size. |
| compressPreset | string | – | How hard to squeeze the pictures: screen 72 DPI, ebook 150 DPI, printer and prepress 300 DPI. |
| exportData | boolean | – | Also 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. |
| file | string | yes | Input PDF |
| mode | string | – | Which interactive elements to flatten. 'none' runs no flatten (useful for OCR/watermark/PDFA-only pipelines). |
| ocrFirst | boolean | – | Run ocrmypdf before flattening (for scanned PDFs). Requires Starter+ tier. |
| ocrLang | string | – | Which language the scanned text is in. |
| outputFilename | string | – | Optional custom filename for the flattened output (without path). |
| outputFormat | string | – | pdfa produces a PDF/A-2b archival output. Requires Starter+ tier. |
| pages | string | – | Optional page range (e.g. '1-3,5,7-9'). Only listed pages are flattened; others stay interactive. |
| preserveLinks | boolean | – | Keep clickable hyperlinks after flattening (uses qpdf --flatten-annotations=print). |
| signatureMode | string | – | What to do if the PDF has been digitally signed. Flattening destroys a signature, so by default we hand the original back untouched. |
| watermarkColor | string | – | Hex color, #rgb or #rrggbb. |
| watermarkFont | string | – | Exactly Helvetica, Times-Roman, or Courier (case-sensitive); anything else becomes Helvetica. Read only when watermarkText is set. |
| watermarkFontSize | integer | – | Point size, integer; non-integer input silently resets to 48. Read only when watermarkText is set. |
| watermarkOpacity | number | – | 0 = invisible, 1 = solid; default 0.3. Non-numeric resets to 0.3. Read only when watermarkText is set. |
| watermarkPosition | string | – | Where the watermark sits on the page. Only used when there is watermark text. |
| watermarkRotation | integer | – | Degrees, integer; default 45 = classic diagonal. Non-integer resets to 45. Read only when watermarkText is set. |
| watermarkScale | number | – | Absolute scale factor; default 1.0. Non-numeric resets to 1.0. |
| watermarkText | string | – | Text 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]
| Name | Type | Req | Description |
|---|---|---|---|
| compressImages | boolean | – | Downsample images after flattening to shrink file size. |
| compressPreset | string | – | How hard to squeeze the pictures: screen 72 DPI, ebook 150 DPI, printer and prepress 300 DPI. |
| exportData | boolean | – | Also 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. |
| files | array | yes | Up to 20 input PDFs |
| mode | string | – | Which interactive elements to flatten. 'none' runs no flatten (useful for OCR/watermark/PDFA-only pipelines). |
| ocrFirst | boolean | – | Run ocrmypdf before flattening (for scanned PDFs). Requires Starter+ tier. |
| ocrLang | string | – | Which language the scanned text is in. |
| outputFilename | string | – | Optional custom filename for the flattened output (without path). |
| outputFormat | string | – | pdfa produces a PDF/A-2b archival output. Requires Starter+ tier. |
| pages | string | – | Optional page range (e.g. '1-3,5,7-9'). Only listed pages are flattened; others stay interactive. |
| preserveLinks | boolean | – | Keep clickable hyperlinks after flattening (uses qpdf --flatten-annotations=print). |
| signatureMode | string | – | What to do if the PDF has been digitally signed. Flattening destroys a signature, so by default we hand the original back untouched. |
| watermarkColor | string | – | Hex color, #rgb or #rrggbb. |
| watermarkFont | string | – | Exactly Helvetica, Times-Roman, or Courier (case-sensitive); anything else becomes Helvetica. Read only when watermarkText is set. |
| watermarkFontSize | integer | – | Point size, integer; non-integer input silently resets to 48. Read only when watermarkText is set. |
| watermarkOpacity | number | – | 0 = invisible, 1 = solid; default 0.3. Non-numeric resets to 0.3. Read only when watermarkText is set. |
| watermarkPosition | string | – | Where the watermark sits on the page. Only used when there is watermark text. |
| watermarkRotation | integer | – | Degrees, integer; default 45 = classic diagonal. Non-integer resets to 45. Read only when watermarkText is set. |
| watermarkScale | number | – | Absolute scale factor; default 1.0. Non-numeric resets to 1.0. |
| watermarkText | string | – | Text 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input file (PDF) |
| mode | string | – | Grey 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. |
| outputName | string | – | Optional name for the file you get back. Leave blank and we name it for you. |
| pages | string | – | Which pages to convert, written as 3,7 or 1-5. Leave it blank to convert every page. |
| strict | boolean | – | Refuse 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]
| Name | Type | Req | Description |
|---|---|---|---|
| color | string | – | Hex color #rrggbb. |
| file | string | yes | Input PDF (max 50MB) |
| fontFamily | string | – | Typeface for the header and footer text. |
| fontSize | integer | – | Text size in points. |
| footer | string | – | Footer text. |
| footerAlign | string | – | Line the footer text up left, centred, or right. |
| header | string | – | Header text. At least one of header/footer/pageNumbers is required. |
| headerAlign | string | – | Line the header text up left, centred, or right. |
| margin | number | – | How far in from the edge of the page the text sits, in points (72 = 1 inch). |
| outputFilename | string | – | Optional custom output filename. |
| pageNumberPosition | string | – | Put the page number in the header or the footer. |
| pageNumbers | string | – | Page-number style. |
| pages | string | – | Optional 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | HTML 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]
| Name | Type | Req | Description |
|---|---|---|---|
| autoOrient | boolean | – | Turn 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. |
| files | array | yes | Input files (JPG, JPEG, PNG, WEBP) |
| fitMode | string | – | How each picture sits on the page. |
| margin | integer | – | White 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. |
| orientation | string | – | Leave blank to follow the page size you picked. |
| pageSize | string | – | Fit 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]
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | yes | Input 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]
| Name | Type | Req | Description |
|---|---|---|---|
| addBookmarks | boolean | – | Add a bookmark at each document boundary. |
| author | string | – | Optional output metadata Author. |
| files | array | yes | Input PDFs — at least 2 required. |
| insertBlanks | boolean | – | Insert a blank page between documents. |
| pageRanges | array | – | Leave 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. |
| subject | string | – | Optional output metadata Subject. |
| title | string | – | Optional 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Scanned PDF to make searchable. |
| lang | string | – | The 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input 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]
| Name | Type | Req | Description |
|---|---|---|---|
| color | string | – | Hex color #rrggbb. |
| file | string | yes | PDF up to 25MB. Password-protected input is rejected 400 — run pdf_unlock first. |
| fontFamily | string | – | Outside the enum it silently becomes Helvetica. Latin-1 fonts — a 'format' template with CJK/Cyrillic/emoji is refused 400. |
| fontSize | integer | – | Does NOT clamp — anything below 6 or above 72 silently RESETS to the default 10. |
| format | string | – | How each number is written on the page. |
| outputFilename | string | – | Optional custom output filename. |
| pageRange | string | – | Only number these pages, e.g. '2-5,8'. Empty = all pages. |
| position | string | – | Where the number sits on the page. |
| romanNumerals | boolean | – | Render numbers as roman numerals. |
| skipFirst | boolean | – | Skip numbering the first page. |
| skipLast | boolean | – | Skip numbering the last page. |
| start | integer | – | The 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input 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]
| Name | Type | Req | Description |
|---|---|---|---|
| encryption | string | – | How strongly the file is locked. |
| file | string | yes | Input PDF (max 25MB) |
| outputName | string | – | Optional custom output filename. |
| ownerPassword | string | – | Optional separate permissions (owner) password. |
| password | string | – | 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. |
| permissions | string | – | 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… |
| userPassword | string | – | 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input 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]
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Input file (PDF) |
| passthrough | boolean | – | 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.
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.