John's Essentials
Server Details
144 deterministic file tools: PDF, image, media, convert, analyze. Connect in one click (OAuth).
The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.
If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.
- Status
- Unhealthy
- Uptime
- 57.0% over 75 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP
- URL
TDQS
Scored across 147 tools
Several tools overlap or are near-duplicates, such as octopus_mkdir vs octopus_make_folder, octopus_move vs octopus_move_file, and octopus_list vs octopus_search_meta, making selection ambiguous. Hash generation appears in both analyze_hash and generate_hash, and PDF conversion is split across convert_document, convert_word_to_pdf, and convert_file, creating unclear boundaries.
Names consistently use snake_case with a category prefix (analyze_, convert_, pdf_, photo_, etc.), which is easy to follow. Minor deviations exist within categories, such as source_to_target patterns (pdf_excel_to_pdf) mixed with verb-noun forms (photo_resize), but the overall convention is stable.
147 tools is an extreme mismatch for any single server, far exceeding the typical 3-15 range and even the 25+ threshold for 'too many'. This volume suggests a kitchen-sink approach that likely overwhelms an agent's selection process.
The server covers an unusually broad domain (file analysis, conversion, PDF manipulation, image editing, generation, web scraping, storage) with very few obvious dead ends. Some gaps exist, such as writing image metadata or richer video editing, but core workflows are well-supported.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
- Changed
email_file4 fields changed- changed
Input schema / properties / file / descriptionPrevious value: -"The file to email — a file_id, typically the previous step's output."New value: +"The file or files to email, typically the previous step's output. Several files are zipped into one attachment, so it is always one email." - removed
Input schema / properties / file / formatRemoved value: -"binary" - added
Input schema / properties / file / itemsAdded value: +{ + "format": "binary", + "type": "string" +} - changed
Input schema / properties / file / typePrevious value: -"string"New value: +"array"
- Changed
photo_add_border3 fields changed- added
Input schema / properties / color / x-uiAdded value: +{ + "draw": { + "names": { + "aqua": [ + 0, + 255, + 255 + ], + "beige": [ + 245, + 245, + 220 + ], + "black": [ + 0, + 0, + 0 + ], + "blue": [ + 0, + 0, + 255 + ], + "brown": [ + 165, + 42, + 42 + ], + "crimson": [ + 220, + 20, + 60 + ], + "cyan": [ + 0, + 255, + 255 + ], + "fuchsia": [ + 255, + 0, + 255 + ], + "gold": [ + 255, + 215, + 0 + ], + "gray": [ + 128, + 128, + 128 + ], + "green": [ + 0, + 128, + 0 + ], + "grey": [ + 128, + 128, + 128 + ], + "indigo": [ + 75, + 0, + 130 + ], + "ivory": [ + 255, + 255, + 240 + ], + "khaki": [ + 240, + 230, + 140 + ], + "lavender": [ + 230, + 230, + 250 + ], + "lime": [ + 0, + 255, + 0 + ], + "magenta": [ + 255, + 0, + 255 + ], + "maroon": [ + 128, + 0, + 0 + ], + "navy": [ + 0, + 0, + 128 + ], + "olive": [ + 128, + 128, + 0 + ], + "orange": [ + 255, + 165, + 0 + ], + "pink": [ + 255, + 192, + 203 + ], + "purple": [ + 128, + 0, + 128 + ], + "red": [ + 255, + 0, + 0 + ], + "salmon": [ + 250, + 128, + 114 + ], + "silver": [ + 192, + 192, + 192 + ], + "tan": [ + 210, + 180, + 140 + ], + "teal": [ + 0, + 128, + 128 + ], + "turquoise": [ + 64, + 224, + 208 + ], + "violet": [ + 238, + 130, + 238 + ], + "white": [ + 255, + 255, + 255 + ], + "yellow": [ + 255, + 255, + 0 + ] + }, + "of": "border", + "role": "color" + } +} - added
Input schema / properties / size / x-ui / drawAdded value: +{ + "of": "border", + "role": "thickness" +} - added
Input schema / x-drawAdded value: +{ + "border": { + "noun": "border", + "shape": "border", + "title": "The border" + } +}
- Changed
photo_crop5 fields changed- added
Input schema / properties / height / x-ui / drawAdded value: +{ + "of": "crop", + "role": "height" +} - added
Input schema / properties / width / x-ui / drawAdded value: +{ + "of": "crop", + "role": "width" +} - added
Input schema / properties / x / x-ui / drawAdded value: +{ + "of": "crop", + "role": "left" +} - added
Input schema / properties / y / x-ui / drawAdded value: +{ + "of": "crop", + "role": "top" +} - added
Input schema / x-drawAdded value: +{ + "crop": { + "noun": "crop box", + "shape": "box", + "title": "Part to keep" + } +}
- Changed
photo_face_blur10 fields changed- added
Input schema / properties / block_size / x-ui / drawAdded value: +{ + "from": 2, + "of": "areas", + "role": "block_size" +} - added
Input schema / properties / blur_mode / x-uiAdded value: +{ + "draw": { + "fallback": "gaussian", + "looks": { + "gaussian": "blur", + "pixelate": "pixelate", + "solid": "fill" + }, + "of": "areas", + "role": "look" + } +} - added
Input schema / properties / blur_radius / x-ui / drawAdded value: +{ + "from": 1, + "of": "areas", + "role": "blur_radius" +} - added
Input schema / properties / blur_strength / x-uiAdded value: +{ + "draw": { + "block": [ + 4, + 6, + 10, + 15 + ], + "blur": [ + 8, + 16, + 28, + 42 + ], + "of": "areas", + "role": "strength" + } +} - changed
Input schema / properties / manual_faces / descriptionPrevious value: -"Advanced: extra rectangles to blur even if no face was found there, as [{\"x\":10,\"y\":20,\"w\":80,\"h\":80}] in pixels."New value: +"Advanced: extra rectangles to blur even if no face was found there, as [{\"x\":10,\"y\":20,\"w\":80,\"h\":80}] in pixels of the picture as it is shown (turned upright by its EXIF tag). Decimals are rounded." - added
Input schema / properties / manual_faces / x-ui / drawAdded value: +{ + "of": "areas", + "role": "list" +} - changed
Input schema / properties / selected_faces / descriptionPrevious value: -"Advanced: which detected faces to blur, as a list of numbers starting at 0, e.g. [0,2]. Leave empty to blur every face found."New value: +"Advanced: which detected faces to blur, as a list of numbers starting at 0, e.g. [0,2]. Leave it blank to blur every face found; an empty list [] blurs none of them, only the areas in manual_faces. Not offered in the workflow builder: each file there has its own faces." - added
Input schema / properties / selected_faces / x-show-whenAdded value: +{ + "blur_mode": [ + "__never" + ] +} - added
Input schema / properties / selected_faces / x-uiAdded value: +{ + "builder_omits": true +} - added
Input schema / x-drawAdded value: +{ + "areas": { + "note": "Every face it finds is hidden the same way. Mark anything else to hide, like a name badge or a license plate.", + "note_no_picture": "Every face it finds is hidden the same way. Other areas can be marked only when this step works on an attached picture.", + "noun": "area to hide", + "shape": "boxes", + "title": "Areas to hide" + } +}
- Changed
photo_image_overlay6 fields changed- added
Input schema / properties / opacity / x-ui / drawAdded value: +{ + "max": 100, + "of": "overlay", + "role": "opacity" +} - added
Input schema / properties / position / x-ui / drawAdded value: +{ + "cells": { + "bc": "bc", + "bl": "bl", + "br": "br", + "mc": "mc", + "ml": "ml", + "mr": "mr", + "tc": "tc", + "tl": "tl", + "tr": "tr" + }, + "of": "overlay", + "role": "anchor" +} - added
Input schema / properties / scale / x-ui / drawAdded value: +{ + "measure": "percent-own", + "of": "overlay", + "role": "size" +} - added
Input schema / properties / x_offset / x-ui / drawAdded value: +{ + "from": "inward", + "of": "overlay", + "role": "offset_x" +} - added
Input schema / properties / y_offset / x-ui / drawAdded value: +{ + "from": "inward", + "of": "overlay", + "role": "offset_y" +} - added
Input schema / x-drawAdded value: +{ + "overlay": { + "image": "overlay", + "noun": "overlay", + "on": "background", + "shape": "stamp", + "title": "Where the overlay goes" + } +}
- Changed
photo_image_splitter3 fields changed- added
Input schema / properties / cols / x-ui / drawAdded value: +{ + "of": "grid", + "role": "cols" +} - added
Input schema / properties / rows / x-uiAdded value: +{ + "draw": { + "of": "grid", + "role": "rows" + } +} - added
Input schema / x-drawAdded value: +{ + "grid": { + "noun": "grid", + "shape": "grid", + "title": "Where it is cut" + } +}
- Changed
photo_meme_generator9 fields changed- added
Input schema / properties / bottom_text / x-ui / drawAdded value: +{ + "of": "captions", + "role": "caption_bottom" +} - changed
Input schema / properties / font / descriptionPrevious value: -"If Impact isn't installed the server substitutes DejaVu-Sans-Bold; X-JE-Font-* response headers report what actually rendered."New value: +"A font the server does not have is replaced: Impact by Anton (a free face in Impact's style, shipped with the server), Arial-Bold by Liberation-Sans-Bold (drawn to Arial Bold's exact widths). X-JE-Font-* response headers report what actually rendered." - added
Input schema / properties / font / x-uiAdded value: +{ + "draw": { + "faces": { + "Arial-Bold": "liberation-sans-bold", + "DejaVu-Sans-Bold": "dejavu-sans-bold", + "Impact": "anton" + }, + "fallback": "Impact", + "of": "captions", + "role": "font" + } +} - added
Input schema / properties / font_color / x-uiAdded value: +{ + "draw": { + "of": "captions", + "role": "color" + } +} - added
Input schema / properties / font_size / x-uiAdded value: +{ + "draw": { + "accept": { + "max": 200, + "min": 10 + }, + "auto": { + "max": 150, + "min": 20, + "per": 10 + }, + "measure": "caption-px", + "of": "captions", + "role": "size" + } +} - added
Input schema / properties / stroke_color / x-uiAdded value: +{ + "draw": { + "of": "captions", + "role": "outline_color" + } +} - added
Input schema / properties / stroke_width / x-uiAdded value: +{ + "draw": { + "of": "captions", + "role": "outline_width" + } +} - added
Input schema / properties / top_text / x-ui / drawAdded value: +{ + "of": "captions", + "role": "caption_top" +} - added
Input schema / x-drawAdded value: +{ + "captions": { + "noun": "caption", + "shape": "captions", + "title": "Captions on the picture" + } +}
- Changed
photo_rounded_corners5 fields changed- added
Input schema / properties / background / x-uiAdded value: +{ + "draw": { + "names": { + "aqua": [ + 0, + 255, + 255 + ], + "beige": [ + 245, + 245, + 220 + ], + "black": [ + 0, + 0, + 0 + ], + "blue": [ + 0, + 0, + 255 + ], + "brown": [ + 165, + 42, + 42 + ], + "crimson": [ + 220, + 20, + 60 + ], + "cyan": [ + 0, + 255, + 255 + ], + "fuchsia": [ + 255, + 0, + 255 + ], + "gold": [ + 255, + 215, + 0 + ], + "gray": [ + 128, + 128, + 128 + ], + "green": [ + 0, + 128, + 0 + ], + "grey": [ + 128, + 128, + 128 + ], + "indigo": [ + 75, + 0, + 130 + ], + "ivory": [ + 255, + 255, + 240 + ], + "khaki": [ + 240, + 230, + 140 + ], + "lavender": [ + 230, + 230, + 250 + ], + "lime": [ + 0, + 255, + 0 + ], + "magenta": [ + 255, + 0, + 255 + ], + "maroon": [ + 128, + 0, + 0 + ], + "navy": [ + 0, + 0, + 128 + ], + "olive": [ + 128, + 128, + 0 + ], + "orange": [ + 255, + 165, + 0 + ], + "pink": [ + 255, + 192, + 203 + ], + "purple": [ + 128, + 0, + 128 + ], + "red": [ + 255, + 0, + 0 + ], + "salmon": [ + 250, + 128, + 114 + ], + "silver": [ + 192, + 192, + 192 + ], + "tan": [ + 210, + 180, + 140 + ], + "teal": [ + 0, + 128, + 128 + ], + "turquoise": [ + 64, + 224, + 208 + ], + "violet": [ + 238, + 130, + 238 + ], + "white": [ + 255, + 255, + 255 + ], + "yellow": [ + 255, + 255, + 0 + ] + }, + "of": "corners", + "role": "fill" + } +} - added
Input schema / properties / corners / x-uiAdded value: +{ + "draw": { + "of": "corners", + "role": "which" + } +} - added
Input schema / properties / radius / x-ui / drawAdded value: +{ + "of": "corners", + "role": "radius" +} - added
Input schema / properties / radius_unit / x-ui / drawAdded value: +{ + "of": "corners", + "role": "radius_unit" +} - added
Input schema / x-drawAdded value: +{ + "corners": { + "noun": "corners", + "shape": "corners", + "title": "The corners" + } +}
- Changed
photo_shadow_adder9 fields changed- changed
Input schema / properties / angle / defaultPrevious value: -315New value: +45 - changed
Input schema / properties / angle / descriptionPrevious value: -"Shadow direction in degrees."New value: +"Which way the shadow falls, in degrees clockwise from the right: 0 moves it right, 90 down, 180 left, 270 up. The default 45 puts it down and to the right, as if lit from the top left." - added
Input schema / properties / angle / x-ui / drawAdded value: +{ + "of": "shadow", + "role": "angle" +} - added
Input schema / properties / blur / x-ui / drawAdded value: +{ + "of": "shadow", + "role": "blur" +} - added
Input schema / properties / distance / x-ui / drawAdded value: +{ + "of": "shadow", + "role": "distance" +} - added
Input schema / properties / opacity / x-ui / drawAdded value: +{ + "max": 100, + "of": "shadow", + "role": "opacity" +} - added
Input schema / properties / output_format / x-ui / drawAdded value: +{ + "of": "shadow", + "role": "format", + "see_through": [ + "png" + ] +} - added
Input schema / properties / shadow_color / x-uiAdded value: +{ + "draw": { + "names": { + "aqua": [ + 0, + 255, + 255 + ], + "beige": [ + 245, + 245, + 220 + ], + "black": [ + 0, + 0, + 0 + ], + "blue": [ + 0, + 0, + 255 + ], + "brown": [ + 165, + 42, + 42 + ], + "crimson": [ + 220, + 20, + 60 + ], + "cyan": [ + 0, + 255, + 255 + ], + "fuchsia": [ + 255, + 0, + 255 + ], + "gold": [ + 255, + 215, + 0 + ], + "gray": [ + 128, + 128, + 128 + ], + "green": [ + 0, + 128, + 0 + ], + "grey": [ + 128, + 128, + 128 + ], + "indigo": [ + 75, + 0, + 130 + ], + "ivory": [ + 255, + 255, + 240 + ], + "khaki": [ + 240, + 230, + 140 + ], + "lavender": [ + 230, + 230, + 250 + ], + "lime": [ + 0, + 255, + 0 + ], + "magenta": [ + 255, + 0, + 255 + ], + "maroon": [ + 128, + 0, + 0 + ], + "navy": [ + 0, + 0, + 128 + ], + "olive": [ + 128, + 128, + 0 + ], + "orange": [ + 255, + 165, + 0 + ], + "pink": [ + 255, + 192, + 203 + ], + "purple": [ + 128, + 0, + 128 + ], + "red": [ + 255, + 0, + 0 + ], + "salmon": [ + 250, + 128, + 114 + ], + "silver": [ + 192, + 192, + 192 + ], + "tan": [ + 210, + 180, + 140 + ], + "teal": [ + 0, + 128, + 128 + ], + "turquoise": [ + 64, + 224, + 208 + ], + "violet": [ + 238, + 130, + 238 + ], + "white": [ + 255, + 255, + 255 + ], + "yellow": [ + 255, + 255, + 0 + ] + }, + "of": "shadow", + "role": "color" + } +} - added
Input schema / x-drawAdded value: +{ + "shadow": { + "noun": "shadow", + "shape": "shadow", + "title": "The shadow" + } +}
- Changed
photo_watermark8 fields changed- added
Input schema / properties / color / x-uiAdded value: +{ + "draw": { + "names": { + "black": [ + 0, + 0, + 0 + ], + "blue": [ + 37, + 99, + 235 + ], + "brown": [ + 120, + 63, + 4 + ], + "cyan": [ + 6, + 182, + 212 + ], + "gray": [ + 128, + 128, + 128 + ], + "green": [ + 22, + 163, + 74 + ], + "grey": [ + 128, + 128, + 128 + ], + "magenta": [ + 192, + 38, + 211 + ], + "orange": [ + 234, + 88, + 12 + ], + "pink": [ + 236, + 72, + 153 + ], + "purple": [ + 147, + 51, + 234 + ], + "red": [ + 220, + 38, + 38 + ], + "white": [ + 255, + 255, + 255 + ], + "yellow": [ + 250, + 204, + 21 + ] + }, + "of": "mark", + "role": "color" + } +} - added
Input schema / properties / font_size / x-ui / drawAdded value: +{ + "leading_number": true, + "measure": "font-px", + "of": "mark", + "out_of_range": "default", + "role": "size" +} - added
Input schema / properties / opacity / x-ui / drawAdded value: +{ + "leading_number": true, + "max": 100, + "of": "mark", + "role": "opacity" +} - added
Input schema / properties / position / x-ui / drawAdded value: +{ + "cells": { + "Center": "mc", + "East": "mr", + "North": "tc", + "NorthEast": "tr", + "NorthWest": "tl", + "South": "bc", + "SouthEast": "br", + "SouthWest": "bl", + "West": "ml" + }, + "of": "mark", + "role": "anchor" +} - added
Input schema / properties / stroke_color / x-ui / drawAdded value: +{ + "light_luma": 140, + "names": { + "black": [ + 0, + 0, + 0 + ], + "blue": [ + 37, + 99, + 235 + ], + "brown": [ + 120, + 63, + 4 + ], + "cyan": [ + 6, + 182, + 212 + ], + "gray": [ + 128, + 128, + 128 + ], + "green": [ + 22, + 163, + 74 + ], + "grey": [ + 128, + 128, + 128 + ], + "magenta": [ + 192, + 38, + 211 + ], + "orange": [ + 234, + 88, + 12 + ], + "pink": [ + 236, + 72, + 153 + ], + "purple": [ + 147, + 51, + 234 + ], + "red": [ + 220, + 38, + 38 + ], + "white": [ + 255, + 255, + 255 + ], + "yellow": [ + 250, + 204, + 21 + ] + }, + "of": "mark", + "role": "outline_color" +} - added
Input schema / properties / stroke_width / x-uiAdded value: +{ + "draw": { + "auto": { + "max": 8, + "min": 1, + "per": 18 + }, + "leading_number": true, + "max": 20, + "of": "mark", + "role": "outline_width" + } +} - added
Input schema / properties / text / x-uiAdded value: +{ + "draw": { + "face": "noto-sans-condensed", + "of": "mark", + "role": "text" + } +} - added
Input schema / x-drawAdded value: +{ + "mark": { + "noun": "watermark", + "shape": "stamp", + "title": "Watermark on the photo" + } +}
16 tool updates
- Changed
pdf_delete_pages3 fields changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Pages to delete e.g. '1,3,5-7'"New value: +"Pages to delete e.g. '1,3,5-7'. At least one page must be left." - added
Input schema / properties / pages / titleAdded value: +"Pages to delete" - added
Input schema / properties / pages / x-uiAdded value: +{ + "no_recall": true, + "page_select": { + "leave_one": true + } +}
- Changed
pdf_extract_pages2 fields changed- added
Input schema / properties / pages / titleAdded value: +"Pages to extract" - added
Input schema / properties / pages / x-uiAdded value: +{ + "no_recall": true, + "page_select": {} +}
- Changed
pdf_flatten3 fields changed- added
Input schema / properties / pages / titleAdded value: +"Pages to flatten" - added
Input schema / properties / pages / x-ui / no_recallAdded value: +true - added
Input schema / properties / pages / x-ui / page_selectAdded value: +{}
- Changed
pdf_flatten_batch3 fields changed- added
Input schema / properties / pages / titleAdded value: +"Pages to flatten" - added
Input schema / properties / pages / x-ui / no_recallAdded value: +true - added
Input schema / properties / pages / x-ui / page_selectAdded value: +{}
- Changed
pdf_grayscale2 fields changed- changed
Input schema / properties / pages / titlePrevious value: -"Only these pages"New value: +"Pages to convert" - added
Input schema / properties / pages / x-uiAdded value: +{ + "no_recall": true, + "page_select": {} +}
- Changed
pdf_header_footer2 fields changed- added
Input schema / properties / pages / titleAdded value: +"Pages to add the header and footer to" - added
Input schema / properties / pages / x-uiAdded value: +{ + "no_recall": true, + "page_select": {} +}
- Changed
pdf_merge1 field changed- added
Input schema / properties / pageRanges / x-uiAdded value: +{ + "no_recall": true, + "page_select": { + "per_file": true + } +}
- Changed
pdf_page_numbers2 fields changed- added
Input schema / properties / pageRange / titleAdded value: +"Pages to number" - added
Input schema / properties / pageRange / x-uiAdded value: +{ + "no_recall": true, + "page_select": {} +}
- Changed
pdf_rotate2 fields changed- added
Input schema / properties / pages / titleAdded value: +"Pages to rotate" - added
Input schema / properties / pages / x-uiAdded value: +{ + "no_recall": true, + "page_select": {} +}
- Changed
pdf_split2 fields changed- added
Input schema / properties / pages / titleAdded value: +"Pages to keep" - added
Input schema / properties / pages / x-uiAdded value: +{ + "no_recall": true, + "page_select": { + "no_all": true + } +}
- Changed
pdf_to_excel2 fields changed- added
Input schema / properties / pages / titleAdded value: +"Pages to read" - added
Input schema / properties / pages / x-uiAdded value: +{ + "no_recall": true, + "page_select": {} +}
- Changed
pdf_to_excel_batch2 fields changed- added
Input schema / properties / pages / titleAdded value: +"Pages to read" - added
Input schema / properties / pages / x-uiAdded value: +{ + "no_recall": true, + "page_select": {} +}
- Changed
pdf_to_excel_inspect3 fields changed- added
Input schema / properties / pages / titleAdded value: +"Pages to read" - added
Input schema / properties / pages / x-ui / no_recallAdded value: +true - added
Input schema / properties / pages / x-ui / page_selectAdded value: +{}
- Changed
pdf_to_images2 fields changed- added
Input schema / properties / pages / titleAdded value: +"Pages to convert" - added
Input schema / properties / pages / x-uiAdded value: +{ + "no_recall": true, + "page_select": {} +}
- Changed
pdf_to_images_batch2 fields changed- added
Input schema / properties / pages / titleAdded value: +"Pages to convert" - added
Input schema / properties / pages / x-uiAdded value: +{ + "no_recall": true, + "page_select": {} +}
- Changed
pdf_watermark3 fields changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Comma-separated page numbers e.g. '1,3,5'. Empty = all pages."New value: +"Which pages to stamp, e.g. '1-3,5'. Empty = all pages." - added
Input schema / properties / pages / titleAdded value: +"Pages to stamp" - added
Input schema / properties / pages / x-uiAdded value: +{ + "no_recall": true, + "page_select": {} +}
8 tool updates
- Changed
analyze_file_diff2 fields changed- changed
Input schema / properties / text_a / x-ui / unset_labelPrevious value: -"Uses the original file instead"New value: +"Leave both texts empty to compare two files" - changed
Input schema / properties / text_b / x-ui / unset_labelPrevious value: -"Uses the updated file instead"New value: +"Leave both texts empty to compare two files"
- Changed
pdf_excel_to_pdf3 fields changed- changed
Input schema / properties / footer / x-ui / unset_labelPrevious value: -"No footer"New value: +"Sheet's own footer" - changed
Input schema / properties / header / x-ui / unset_labelPrevious value: -"No header"New value: +"Sheet's own header" - changed
Input schema / properties / repeatRows / x-ui / unset_labelPrevious value: -"No rows repeated"New value: +"Sheet's own print titles"
- Changed
pdf_excel_to_pdf_batch3 fields changed- changed
Input schema / properties / footer / x-ui / unset_labelPrevious value: -"No footer"New value: +"Sheet's own footer" - changed
Input schema / properties / header / x-ui / unset_labelPrevious value: -"No header"New value: +"Sheet's own header" - changed
Input schema / properties / repeatRows / x-ui / unset_labelPrevious value: -"No rows repeated"New value: +"Sheet's own print titles"
- Changed
pdf_merge3 fields changed- changed
Input schema / properties / author / x-ui / unset_labelPrevious value: -"Left out"New value: +"Kept from the first file" - changed
Input schema / properties / subject / x-ui / unset_labelPrevious value: -"Left out"New value: +"Kept from the first file" - changed
Input schema / properties / title / x-ui / unset_labelPrevious value: -"Left out"New value: +"Kept from the first file"
- Changed
pdf_protect2 fields changed- changed
Input schema / properties / ownerPassword / x-ui / unset_labelPrevious value: -"Same as the open password"New value: +"Same as the open password (random if you limit permissions)" - changed
Input schema / properties / userPassword / x-ui / unset_labelPrevious value: -"No password to open it"New value: +"Same as Password above"
- Changed
pdf_to_images1 field changed- removed
Input schema / properties / namePattern / x-uiRemoved value: -{ - "unset_label": "page_0001, page_0002, …" -}
- Changed
pdf_to_images_batch1 field changed- removed
Input schema / properties / namePattern / x-uiRemoved value: -{ - "unset_label": "page_0001, page_0002, …" -}
- Changed
photo_meme_generator2 fields changed- changed
Input schema / properties / bottom_text / x-ui / unset_labelPrevious value: -"No caption at the bottom"New value: +"None, as long as the top caption is set" - changed
Input schema / properties / top_text / x-ui / unset_labelPrevious value: -"No caption at the top"New value: +"None, as long as the bottom caption is set"
5 tool updates
- Changed
media_trim_audio1 field changed- added
Input schema / properties / start / x-uiAdded value: +{ + "pair_joint": "to", + "pair_label": "Part to keep", + "pair_with": "end" +}
- Changed
media_trim_video1 field changed- added
Input schema / properties / start / x-uiAdded value: +{ + "pair_joint": "to", + "pair_label": "Part to keep", + "pair_with": "end" +}
- Changed
photo_crop1 field changed- added
Input schema / properties / x / x-ui / pair_jointAdded value: +","
- Changed
photo_image_overlay3 fields changed- added
Input schema / properties / x_offset / x-ui / pair_jointAdded value: +"," - added
Input schema / properties / x_offset / x-ui / pair_labelAdded value: +"Nudge from the anchor" - added
Input schema / properties / x_offset / x-ui / pair_withAdded value: +"y_offset"
- Changed
photo_image_splitter1 field changed- added
Input schema / properties / cols / x-uiAdded value: +{ + "pair_label": "Grid", + "pair_with": "rows" +}
6 tool updates
- Changed
generate_placeholder_image2 fields changed- added
Input schema / properties / width / x-ui / pair_labelAdded value: +"Size" - added
Input schema / properties / width / x-ui / pair_withAdded value: +"height"
- Changed
pdf_to_images2 fields changed- added
Input schema / properties / maxWidth / x-ui / pair_labelAdded value: +"Fit inside" - added
Input schema / properties / maxWidth / x-ui / pair_withAdded value: +"maxHeight"
- Changed
pdf_to_images_batch2 fields changed- added
Input schema / properties / maxWidth / x-ui / pair_labelAdded value: +"Fit inside" - added
Input schema / properties / maxWidth / x-ui / pair_withAdded value: +"maxHeight"
- Changed
photo_crop4 fields changed- added
Input schema / properties / width / x-ui / pair_labelAdded value: +"Size" - added
Input schema / properties / width / x-ui / pair_withAdded value: +"height" - added
Input schema / properties / x / x-ui / pair_labelAdded value: +"Top-left corner" - added
Input schema / properties / x / x-ui / pair_withAdded value: +"y"
- Changed
photo_resize2 fields changed- added
Input schema / properties / width / x-ui / pair_labelAdded value: +"Size" - added
Input schema / properties / width / x-ui / pair_withAdded value: +"height"
- Changed
photo_svg_to_png2 fields changed- added
Input schema / properties / width / x-ui / pair_labelAdded value: +"Size" - added
Input schema / properties / width / x-ui / pair_withAdded value: +"height"
11 tool updates
- Changed
analyze_file_diff2 fields changed- added
Input schema / properties / text_a / x-ui / multilineAdded value: +true - added
Input schema / properties / text_b / x-ui / multilineAdded value: +true
- Changed
analyze_grammar_check1 field changed- added
Input schema / properties / text / x-uiAdded value: +{ + "multiline": true +}
- Changed
analyze_hash1 field changed- added
Input schema / properties / text / x-ui / multilineAdded value: +true
- Changed
analyze_json_xml_validator1 field changed- added
Input schema / properties / text / x-ui / multilineAdded value: +true
- Changed
analyze_link_extractor1 field changed- added
Input schema / properties / text / x-ui / multilineAdded value: +true
- Changed
analyze_readability1 field changed- added
Input schema / properties / text / x-uiAdded value: +{ + "multiline": true +}
- Changed
analyze_word_count1 field changed- added
Input schema / properties / text / x-uiAdded value: +{ + "multiline": true +}
- Changed
analyze_word_frequency1 field changed- added
Input schema / properties / text / x-ui / multilineAdded value: +true
- Changed
convert_text1 field changed- added
Input schema / properties / text / x-uiAdded value: +{ + "multiline": true +}
- Changed
data_to_file1 field changed- added
Input schema / properties / text / x-uiAdded value: +{ + "multiline": true +}
- Changed
generate_hash1 field changed- added
Input schema / properties / text / x-uiAdded value: +{ + "multiline": true +}
33 tool updates
- Changed
analyze_file_diff2 fields changed- added
Input schema / properties / text_a / x-uiAdded value: +{ + "unset_label": "Uses the original file instead" +} - added
Input schema / properties / text_b / x-uiAdded value: +{ + "unset_label": "Uses the updated file instead" +}
- Changed
analyze_hash1 field changed- added
Input schema / properties / text / x-uiAdded value: +{ + "unset_label": "Uses the attached file instead" +}
- Changed
analyze_json_xml_validator1 field changed- added
Input schema / properties / text / x-uiAdded value: +{ + "unset_label": "Uses the attached file instead" +}
- Changed
analyze_link_extractor1 field changed- added
Input schema / properties / text / x-uiAdded value: +{ + "unset_label": "Uses the attached file instead" +}
- Changed
analyze_word_frequency2 fields changed- added
Input schema / properties / exclude / x-uiAdded value: +{ + "unset_label": "No extra words left out" +} - added
Input schema / properties / text / x-uiAdded value: +{ + "unset_label": "Uses the attached file instead" +}
- Changed
convert_sqlite1 field changed- added
Input schema / properties / table / x-uiAdded value: +{ + "unset_label": "All tables" +}
- Changed
convert_video1 field changed- added
Input schema / properties / bitrate_kbps / x-ui / unset_labelAdded value: +"Chosen automatically"
- Changed
email_file1 field changed- added
Input schema / properties / note / x-uiAdded value: +{ + "unset_label": "No note" +}
- Changed
generate_ascii_art1 field changed- added
Input schema / properties / text / x-uiAdded value: +{ + "unset_label": "The picture is converted instead" +}
- Changed
generate_business_card1 field changed- added
Input schema / properties / jobTitle / x-uiAdded value: +{ + "unset_label": "Left off the card" +}
- Changed
generate_certificate3 fields changed- added
Input schema / properties / description / x-uiAdded value: +{ + "unset_label": "Left off the certificate" +} - added
Input schema / properties / issuerName / x-uiAdded value: +{ + "unset_label": "Left off the certificate" +} - added
Input schema / properties / issuerTitle / x-uiAdded value: +{ + "unset_label": "Left off the certificate" +}
- Changed
generate_gradient1 field changed- added
Input schema / properties / positions / x-ui / unset_labelAdded value: +"Spaced evenly"
- Changed
octopus_move_file1 field changed- added
Input schema / properties / new_name / x-uiAdded value: +{ + "unset_label": "Keeps its name" +}
- Changed
pdf_compress1 field changed- added
Input schema / properties / targetSize / x-ui / unset_labelAdded value: +"No size target: Quality decides"
- Changed
pdf_crop1 field changed- added
Input schema / properties / outputFilename / x-uiAdded value: +{ + "unset_label": "Named after your file" +}
- Changed
pdf_excel_to_pdf6 fields changed- added
Input schema / properties / footer / x-uiAdded value: +{ + "unset_label": "No footer" +} - added
Input schema / properties / header / x-uiAdded value: +{ + "unset_label": "No header" +} - added
Input schema / properties / password / x-uiAdded value: +{ + "unset_label": "No password" +} - added
Input schema / properties / permPassword / x-uiAdded value: +{ + "unset_label": "Same as the open password" +} - added
Input schema / properties / repeatRows / x-uiAdded value: +{ + "unset_label": "No rows repeated" +} - added
Input schema / properties / watermarkText / x-uiAdded value: +{ + "unset_label": "No watermark" +}
- Changed
pdf_excel_to_pdf_batch6 fields changed- added
Input schema / properties / footer / x-uiAdded value: +{ + "unset_label": "No footer" +} - added
Input schema / properties / header / x-uiAdded value: +{ + "unset_label": "No header" +} - added
Input schema / properties / password / x-uiAdded value: +{ + "unset_label": "No password" +} - added
Input schema / properties / permPassword / x-uiAdded value: +{ + "unset_label": "Same as the open password" +} - added
Input schema / properties / repeatRows / x-uiAdded value: +{ + "unset_label": "No rows repeated" +} - added
Input schema / properties / watermarkText / x-uiAdded value: +{ + "unset_label": "No watermark" +}
- Changed
pdf_extract_pages1 field changed- added
Input schema / properties / outputName / x-uiAdded value: +{ + "unset_label": "Named after your file" +}
- Changed
pdf_flatten2 fields changed- added
Input schema / properties / outputFilename / x-uiAdded value: +{ + "unset_label": "Named after your file" +} - added
Input schema / properties / pages / x-uiAdded value: +{ + "unset_label": "All pages" +}
- Changed
pdf_flatten_batch2 fields changed- added
Input schema / properties / outputFilename / x-uiAdded value: +{ + "unset_label": "Named after your file" +} - added
Input schema / properties / pages / x-uiAdded value: +{ + "unset_label": "All pages" +}
- Changed
pdf_header_footer3 fields changed- added
Input schema / properties / footer / x-uiAdded value: +{ + "unset_label": "No footer text" +} - added
Input schema / properties / header / x-uiAdded value: +{ + "unset_label": "No header text" +} - added
Input schema / properties / outputFilename / x-uiAdded value: +{ + "unset_label": "Keeps your file's name" +}
- Changed
pdf_merge3 fields changed- added
Input schema / properties / author / x-uiAdded value: +{ + "unset_label": "Left out" +} - added
Input schema / properties / subject / x-uiAdded value: +{ + "unset_label": "Left out" +} - added
Input schema / properties / title / x-uiAdded value: +{ + "unset_label": "Left out" +}
- Changed
pdf_protect3 fields changed- added
Input schema / properties / outputName / x-uiAdded value: +{ + "unset_label": "Named after your file" +} - added
Input schema / properties / ownerPassword / x-uiAdded value: +{ + "unset_label": "Same as the open password" +} - added
Input schema / properties / userPassword / x-uiAdded value: +{ + "unset_label": "No password to open it" +}
- Changed
pdf_reorder2 fields changed- added
Input schema / properties / outputName / x-uiAdded value: +{ + "unset_label": "Named after your file" +} - added
Input schema / properties / password / x-uiAdded value: +{ + "unset_label": "Only needed for a locked PDF" +}
- Changed
pdf_set_metadata1 field changed- added
Input schema / properties / title / x-uiAdded value: +{ + "unset_label": "Keeps the current title" +}
- Changed
pdf_to_excel_inspect2 fields changed- added
Input schema / properties / pages / x-uiAdded value: +{ + "unset_label": "All pages" +} - added
Input schema / properties / tableIndexes / x-uiAdded value: +{ + "unset_label": "All tables" +}
- Changed
pdf_to_images3 fields changed- added
Input schema / properties / crop / x-uiAdded value: +{ + "unset_label": "No cropping" +} - added
Input schema / properties / namePattern / x-uiAdded value: +{ + "unset_label": "page_0001, page_0002, …" +} - added
Input schema / properties / watermarkText / x-uiAdded value: +{ + "unset_label": "No watermark" +}
- Changed
pdf_to_images_batch3 fields changed- added
Input schema / properties / crop / x-uiAdded value: +{ + "unset_label": "No cropping" +} - added
Input schema / properties / namePattern / x-uiAdded value: +{ + "unset_label": "page_0001, page_0002, …" +} - added
Input schema / properties / watermarkText / x-uiAdded value: +{ + "unset_label": "No watermark" +}
- Changed
pdf_unlock1 field changed- added
Input schema / properties / outputName / x-uiAdded value: +{ + "unset_label": "Named after your file" +}
- Changed
photo_bg_remover1 field changed- added
Input schema / properties / bg_color / x-uiAdded value: +{ + "unset_label": "Transparent" +}
- Changed
photo_face_blur1 field changed- added
Input schema / properties / manual_faces / x-uiAdded value: +{ + "unset_label": "Only the faces it finds" +}
- Changed
photo_meme_generator2 fields changed- added
Input schema / properties / bottom_text / x-uiAdded value: +{ + "unset_label": "No caption at the bottom" +} - added
Input schema / properties / top_text / x-uiAdded value: +{ + "unset_label": "No caption at the top" +}
- Changed
photo_watermark1 field changed- added
Input schema / properties / stroke_color / x-uiAdded value: +{ + "unset_label": "Picked to stand out from the text" +}
6 tool updates
- Changed
analyze_audio1 field changed- changed
Input schema / properties / file / descriptionPrevious value: -"Input file (MP3, WAV, AAC, FLAC, OGG)"New value: +"Input file (MP3, WAV, AAC, OGG, FLAC, M4A, WMA, OPUS or AIFF)"
- Changed
analyze_video1 field changed- changed
Input schema / properties / file / descriptionPrevious value: -"Input file (MP4, MOV, AVI, MKV, WebM)"New value: +"Input file (MP4, MOV, AVI, MKV, WebM, WMV, FLV, 3GP or MPG)"
- Changed
media_extract_audio1 field changed- changed
Input schema / properties / file / descriptionPrevious value: -"Video to pull the soundtrack from (any FFmpeg-readable container). Audio is always re-encoded to `format`, never stream-copied."New value: +"Video to pull the soundtrack from (any FFmpeg-readable container), or an M4A: an MP4 that carries only sound. Audio is always re-encoded to `format`, never stream-copied."
- Changed
media_merge_audio1 field changed- changed
Input schema / properties / files / descriptionPrevious value: -"Input audio files (MP3, WAV, AAC, OGG) — at least 2 required."New value: +"Input audio files (MP3, WAV, AAC, OGG, FLAC, M4A, WMA, OPUS or AIFF) — at least 2 required."
- Changed
media_mute_video1 field changed- changed
Input schema / properties / file / descriptionPrevious value: -"Input file (MP4, MOV, AVI, MKV)"New value: +"Input file (MP4, MOV, AVI, MKV, WebM or MPG)"
- Changed
media_trim_audio1 field changed- changed
Input schema / properties / file / descriptionPrevious value: -"Audio to trim. Output keeps this file's container/codec (stream copy); a filename with no extension is treated as .mp3."New value: +"Audio to trim. Output keeps this file's container/codec (stream copy); a file name with no extension is read by the file's type, and treated as .mp3 when the type names no sound format."
17 tool updates
- Changed
analyze_file_diff3 fields changed- added
Input schema / properties / file_a / titleAdded value: +"Original file" - added
Input schema / properties / file_b / titleAdded value: +"Updated file" - added
Input schema / x-require-one-ofAdded value: +[ + [ + "file_a", + "file_b" + ], + [ + "text_a", + "text_b" + ] +]
- Changed
analyze_hash1 field changed- added
Input schema / x-require-one-ofAdded value: +[ + [ + "file" + ], + [ + "text" + ] +]
- Changed
analyze_json_xml_validator2 fields changed- added
Input schema / x-passes-no-fileAdded value: +true - added
Input schema / x-require-one-ofAdded value: +[ + [ + "file" + ], + [ + "text" + ] +]
- Changed
analyze_link_extractor1 field changed- added
Input schema / x-require-one-ofAdded value: +[ + [ + "file" + ], + [ + "text" + ] +]
- Changed
analyze_readability1 field changed- added
Input schema / x-require-one-ofAdded value: +[ + [ + "file" + ], + [ + "text" + ] +]
- Changed
analyze_word_count1 field changed- added
Input schema / x-require-one-ofAdded value: +[ + [ + "file" + ], + [ + "text" + ] +]
- Changed
analyze_word_frequency1 field changed- added
Input schema / x-require-one-ofAdded value: +[ + [ + "file" + ], + [ + "text" + ] +]
- Changed
drive_upload1 field changed- added
Input schema / x-passes-no-fileAdded value: +true
- Changed
email_file1 field changed- added
Input schema / x-passes-no-fileAdded value: +true
- Changed
generate_hash1 field changed- added
Input schema / x-require-one-ofAdded value: +[ + [ + "file" + ], + [ + "text" + ] +]
- Changed
octopus_make_folder1 field changed- added
Input schema / x-passes-no-fileAdded value: +true
- Changed
photo_color_adjuster1 field changed- changed
Input schema / properties / file / descriptionPrevious value: -"JPG, PNG, WebP, GIF, BMP, HEIC, TIFF. Max 25 MB. Output keeps the input format."New value: +"JPG, PNG, WebP, GIF, BMP, HEIC, TIFF. Max 25 MB. Output keeps the input format, except that a HEIC or HEIF photo comes back as a JPG."
- Changed
photo_crop1 field changed- changed
Input schema / properties / file / descriptionPrevious value: -"JPG, PNG, WebP, HEIC, TIFF, BMP, or GIF. Output keeps the input format."New value: +"JPG, PNG, WebP, HEIC, TIFF, BMP, or GIF. Output keeps the input format, except that a HEIC or HEIF photo comes back as a JPG."
- Changed
photo_editor1 field changed- changed
Input schema / properties / file / descriptionPrevious value: -"JPG, PNG, WebP, GIF, BMP, HEIC, TIFF (max 25MB)"New value: +"JPG, PNG, WebP, GIF, BMP, HEIC, TIFF (max 25MB). Output keeps the input format, except that a HEIC or HEIF photo comes back as a JPG."
- Changed
photo_face_detect1 field changed- changed
Input schema / properties / file / descriptionPrevious value: -"Input file (JPG, PNG)"New value: +"Input file (JPG, PNG, WebP, BMP)"
- Changed
photo_resize1 field changed- changed
Input schema / properties / file / descriptionPrevious value: -"JPG, PNG, WebP, GIF, BMP"New value: +"JPG, PNG, WebP, GIF, BMP, TIFF, AVIF, HEIC or HEIF. Output keeps the input format, except that a HEIC or HEIF photo comes back as a JPG."
- Changed
photo_watermark1 field changed- changed
Input schema / properties / file / descriptionPrevious value: -"JPG, PNG, WebP, GIF, BMP, HEIC, TIFF. Max 25 MB. Output keeps the input format."New value: +"JPG, PNG, WebP, GIF, BMP, HEIC, TIFF. Max 25 MB. Output keeps the input format, except that a HEIC or HEIF photo comes back as a JPG."
13 tool updates
- Changed
generate_ascii_art2 fields changed- changed
Input schema / properties / file / descriptionPrevious value: -"The picture to convert (max 10 MB)."New value: +"The picture to convert, up to 10 MB. Used when Mode is Image, and also when Text is left empty; with words in Text and Mode on Text, the picture is ignored." - removed
Input schema / properties / file / x-show-whenRemoved value: -{ - "mode": [ - "image" - ] -}
- Changed
generate_gradient1 field changed- changed
Input schema / properties / positions / descriptionPrevious value: -"Optional, and API-only for now: the builder cannot draw it safely yet. Where each colour sits along the blend, as a percentage, one entry per colour. Leave it out and the colours are spaced evenly. The API accepts it normally; it is hidden in the builder because the control an array gets there is a chip list, and a chip list DISCARDS DUPLICATES — a hard-edged gradient needs two colours at the same stop (0,50,50,100) and the chips would silently collapse that to three stops and change the picture. Same defect class as pdf_merge.pageRanges. Show it once there is a control that keeps one entry per colour."New value: +"Where each colour sits along the blend, as a percentage from 0 to 100: one entry per colour, in the same order. Two colours at the same stop make a hard edge (0, 50, 50, 100). Leave it out and the colours are spaced evenly. A list without exactly one entry per colour is refused."
- Changed
generate_signature3 fields changed- changed
Input schema / properties / background / descriptionPrevious value: -"'transparent' is what makes the result stampable onto a PDF or a photo. Give a hex colour instead if you want it on a solid card."New value: +"'transparent' is what makes the result stampable onto a PDF or a photo. Give a colour instead, as hex or a name such as white, if you want it on a solid card. A colour we cannot read is refused rather than turned transparent." - changed
Input schema / properties / color / descriptionPrevious value: -"A hex colour, with or without the leading '#'. Anything we cannot read reverts to the default ink."New value: +"A hex colour (#1a1a2e or #fff, with or without the '#', optionally with an alpha pair) or a colour name such as black or navy. A colour we cannot read is refused, and so is ink that would not show, such as transparent." - changed
Input schema / properties / style / descriptionPrevious value: -"Which handwriting face to use. If the chosen face is not installed on the server the request fails and says so, rather than handing back a 'signature' in a plain block font."New value: +"Which handwriting face to use: Script is Dancing Script, Elegant is Great Vibes, Handwritten is Pacifico and Bold is Lobster, the faces the web page draws. When that face is not installed on our server, another handwriting face is drawn in its place, never a plain block font, and the X-JE-Font-Substituted response header says so. Only when no handwriting face is installed does the request fail."
- Changed
media_add_watermark1 field changed- changed
Input schema / properties / text / descriptionPrevious value: -"The words burned into every frame. Required, and there is no default: a step nobody opened used to burn our own company name into the customer's video."New value: +"The words burned into every frame, drawn exactly as typed (% signs and backslashes included) on one line of up to 200 characters. Required; there is no default."
- Changed
pdf_watermark1 field changed- added
Input schema / properties / imageFile / x-show-whenAdded value: +{ + "mode": [ + "image" + ] +}
- Changed
photo_collage2 fields changed- changed
Input schema / properties / template / descriptionPrevious value: -"Named template (layout_mode=template), e.g. ig_post_2x2, ig_story_3_vertical, ig_post_5_magazine."New value: +"Named template (layout_mode=template), e.g. ig_post_2x2, ig_story_3_vertical, ig_post_5_magazine. Needed when Layout mode is template: there is no default, and a template-mode run with none chosen, or with fewer photos than the template has places for, is refused with the reason." - changed
Input schema / properties / template / x-ui / unset_labelPrevious value: -"No template"New value: +"Choose a template"
- Changed
photo_compress1 field changed- changed
Input schema / properties / output_format / x-ui / unset_labelPrevious value: -"Keeps input format"New value: +"Keeps input format (HEIC becomes JPG)"
- Changed
photo_compress_to_size1 field changed- changed
Input schema / properties / output_format / x-ui / unset_labelPrevious value: -"Keeps input format"New value: +"Keeps input format (HEIC becomes JPG)"
- Changed
photo_image_overlay1 field changed- changed
Input schema / properties / scale / descriptionPrevious value: -"Overlay width as a percent of background width, 1-200."New value: +"Overlay size as a percent of the overlay's own size, not of the background: 100 keeps it as it is, 50 halves it, 200 doubles it."
- Changed
photo_image_splitter3 fields changed- added
Input schema / properties / cols / titleAdded value: +"Columns" - removed
Input schema / properties / cols / x-uiRemoved value: -{ - "unit": "columns" -} - removed
Input schema / properties / rows / x-uiRemoved value: -{ - "unit": "rows" -}
- Changed
photo_rounded_corners2 fields changed- changed
Input schema / properties / background / descriptionPrevious value: -"What fills the corners that were rounded off: 'transparent' (the default; 'none' is accepted as a synonym for it) leaves them see-through, or 'white', 'black', or a hex value such as #1a1a1a. That is the whole list — any other colour name, red or navy included, is refused with a 400, even though Add Border accepts them."New value: +"What fills the corners that were rounded off: 'transparent' (the default; 'none' means the same) leaves them see-through. Anything else fills them with a colour: a hex value (#rgb, #rgba, #rrggbb or #rrggbbaa, such as #1a1a1a) or any of the named colours Add Border accepts (red, navy, gold and others; not case-sensitive). Any other name is refused with a 400 that lists every accepted name." - added
Input schema / properties / radius / x-uiAdded value: +{ + "unit_from": { + "by_value": { + "percent": { + "maximum": 50, + "unit": "%" + }, + "px": { + "maximum": 5000, + "unit": "px" + } + }, + "param": "radius_unit" + } +}
- Changed
photo_to_text1 field changed- changed
Input schema / properties / languages / descriptionPrevious value: -"Which language or languages the writing is in, as two-letter codes. One, or several separated by commas: en, or en,fr. Common ones are en, fr, de, es, pt, it, nl, ru, ar, zh, ja, ko. Field name is languages, not language, and Tesseract-style codes like eng are not recognised."New value: +"Which language or languages the writing is in. One code, or several separated by commas (en,fr); a plus sign works too, as Tesseract writes it (eng+fra). Two-letter codes are the usual form: en, fr, de, es, pt, it, nl, ru, ar, zh, ja, ko. Tesseract's own codes (eng, fra, deu, chi_sim, chi_tra, ...) are also accepted; each of the two reading engines is handed its own spelling of the language. A language whose reading pack is not installed on our server is refused with a message that says so, rather than reported as an engine fault. Letters and underscores only, not case-sensitive; a value with no code in it, such as a lone comma, is refused with a 400. Field name is languages, not language."
- Changed
photo_watermark1 field changed- changed
Input schema / properties / text / descriptionPrevious value: -"The words stamped onto the photo. Required, and there is no default: a step nobody opened used to stamp our own company name onto the customer's picture. A leading '@' is stripped."New value: +"The words stamped onto the photo. Required; there is no default. A leading '@' is removed."
24 tool updates
- Changed
analyze_json_xml_validator2 fields changed- added
Input schema / properties / fileAdded value: +{ + "description": "A JSON or XML file to check — this is how a previous step hands its output over. Up to 1 MB. Send this or the text below; a file wins if both arrive.", + "format": "binary", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "text" -]New value: +[]
- Changed
convert_data1 field changed- added
Input schema / properties / from / x-uiAdded value: +{ + "unset_label": "Read from file" +}
- Changed
convert_file1 field changed- added
Input schema / properties / from / x-uiAdded value: +{ + "unset_label": "Read from file" +}
- Changed
convert_geo1 field changed- added
Input schema / properties / from / x-uiAdded value: +{ + "unset_label": "Read from file" +}
- Changed
convert_parquet1 field changed- added
Input schema / properties / from / x-uiAdded value: +{ + "unset_label": "Read from file" +}
- Changed
convert_video1 field changed- added
Input schema / properties / preset_name / x-ui / unset_labelAdded value: +"No preset"
- Changed
pdf_excel_to_pdf3 fields changed- added
Input schema / properties / gridlines / x-ui / unset_labelAdded value: +"Sheet's own setting" - added
Input schema / properties / quality / x-ui / unset_labelAdded value: +"Converter's setting" - added
Input schema / properties / showHeaders / x-ui / unset_labelAdded value: +"Sheet's own setting"
- Changed
pdf_excel_to_pdf_batch3 fields changed- added
Input schema / properties / gridlines / x-ui / unset_labelAdded value: +"Sheet's own setting" - added
Input schema / properties / quality / x-ui / unset_labelAdded value: +"Converter's setting" - added
Input schema / properties / showHeaders / x-ui / unset_labelAdded value: +"Sheet's own setting"
- Changed
pdf_images_to_pdf1 field changed- added
Input schema / properties / orientation / x-ui / unset_labelAdded value: +"Follows page size"
- Changed
pdf_to_images2 fields changed- added
Input schema / properties / preset / x-ui / unset_labelAdded value: +"No preset" - changed
Input schema / properties / watermarkFontSize / descriptionPrevious value: -"Points against the bitmap's 72dpi density — at dpi=300 text is ~4x smaller on the page than in a PDF. Needs watermarkText."New value: +"Size of the stamped text in PIXELS of the rasterised page: it is annotated onto the bitmap at ImageMagick's 72 dpi default, so at dpi=300 the same number covers ~4x less of the page than it would inside a PDF. Needs watermarkText."
- Changed
pdf_to_images_batch2 fields changed- added
Input schema / properties / preset / x-ui / unset_labelAdded value: +"No preset" - changed
Input schema / properties / watermarkFontSize / descriptionPrevious value: -"Points against the bitmap's 72dpi density — at dpi=300 text is ~4x smaller on the page than in a PDF. Needs watermarkText."New value: +"Size of the stamped text in PIXELS of the rasterised page: it is annotated onto the bitmap at ImageMagick's 72 dpi default, so at dpi=300 the same number covers ~4x less of the page than it would inside a PDF. Needs watermarkText."
- Changed
photo_add_border2 fields changed- changed
Input schema / properties / color / descriptionPrevious value: -"A hex colour (#rgb, #rgba, #rrggbb or #rrggbbaa) or one of the 35 standard CSS colour names. Anything else is refused rather than quietly falling back. A see-through colour needs a PNG or WebP input — on a JPEG it is refused, because JPEG cannot hold transparency and the border would come out black."New value: +"A hex colour (#rgb, #rgba, #rrggbb or #rrggbbaa) or one of these 35 names — a hand-picked set, not the whole CSS list, so lightblue and darkgreen are refused: black, silver, gray, grey, white, maroon, red, purple, fuchsia, green, lime, olive, yellow, navy, blue, teal, aqua, cyan, magenta, orange, pink, brown, beige, ivory, gold, tan, khaki, crimson, indigo, violet, salmon, turquoise, lavender, plus none and transparent, which still widen the picture by the border size on every side but fill those new pixels with see-through rather than a visible frame. Anything else is refused rather than quietly falling back. A see-through colour needs a PNG or WebP input — on a JPEG it is refused, because JPEG cannot hold transparency and the border would come out black." - changed
Input schema / properties / size / descriptionPrevious value: -"How thick the border is, in pixels, on all four sides. Out-of-range values are pulled back to the nearest allowed value rather than refused; 0 returns the picture untouched."New value: +"How thick the border is, in pixels, on all four sides. Out-of-range values are pulled back to the nearest allowed value rather than refused. 0 adds no border, but it is NOT a pass-through: the picture is still decoded and written out again (a JPEG is re-encoded at quality 92), and an EXIF-rotated phone photo comes back physically rotated with its orientation tag cleared."
- Changed
photo_collage1 field changed- added
Input schema / properties / template / x-ui / unset_labelAdded value: +"No template"
- Changed
photo_compress1 field changed- added
Input schema / properties / output_format / x-uiAdded value: +{ + "unset_label": "Keeps input format" +}
- Changed
photo_compress_to_size1 field changed- added
Input schema / properties / output_format / x-uiAdded value: +{ + "unset_label": "Keeps input format" +}
- Changed
photo_face_blur1 field changed- added
Input schema / properties / output_format / x-uiAdded value: +{ + "unset_label": "Keeps input format" +}
- Changed
photo_image_overlay1 field changed- added
Input schema / properties / output_format / x-uiAdded value: +{ + "unset_label": "Keeps background's format" +}
- Changed
photo_image_splitter1 field changed- added
Input schema / properties / output_format / x-uiAdded value: +{ + "unset_label": "Keeps input format" +}
- Changed
photo_meme_generator1 field changed- added
Input schema / properties / output_format / x-uiAdded value: +{ + "unset_label": "Keeps input format" +}
- Changed
photo_noise_reducer1 field changed- added
Input schema / properties / output_format / x-uiAdded value: +{ + "unset_label": "Keeps input format" +}
- Changed
photo_rounded_corners3 fields changed- changed
Input schema / properties / background / descriptionPrevious value: -"What fills the corners that were rounded off: 'transparent' (the default) leaves them see-through, or give a colour name or a hex value to fill them instead."New value: +"What fills the corners that were rounded off: 'transparent' (the default; 'none' is accepted as a synonym for it) leaves them see-through, or 'white', 'black', or a hex value such as #1a1a1a. That is the whole list — any other colour name, red or navy included, is refused with a 400, even though Add Border accepts them." - changed
Input schema / properties / radius / descriptionPrevious value: -"How far the curve reaches in from each corner. Out-of-range values are pulled back rather than refused, and the value is capped again per picture at half the shorter side, because a curve larger than that has no meaning. Fractions are rounded."New value: +"How far the curve reaches in from each corner. Measured in whichever unit the next setting says: PIXELS, up to 5000 — or PERCENT of the shorter side, where anything above 50 is treated as 50, because half the shorter side is a full semicircle and there is nothing beyond it. Out-of-range values are pulled back rather than refused. Fractions are rounded." - removed
Input schema / properties / radius / x-uiRemoved value: -{ - "unit": "px" -}
- Changed
photo_shadow_adder1 field changed- added
Input schema / properties / output_format / x-uiAdded value: +{ + "unset_label": "Keeps input format" +}
- Changed
photo_upscaler1 field changed- added
Input schema / properties / output_format / x-uiAdded value: +{ + "unset_label": "Keeps input format" +}
- Changed
photo_watermark3 fields changed- changed
Input schema / properties / color / descriptionPrevious value: -"A hex colour, or one of white, black, gray, red, orange, yellow, green, blue, cyan, magenta, purple, pink, brown. Anything else falls back to white."New value: +"A hex colour, or one of white, black, gray, grey, red, orange, yellow, green, blue, cyan, magenta, purple, pink, brown. Anything else falls back to white." - changed
Input schema / properties / font_size / descriptionPrevious value: -"Points. Out-of-range values (<6 or >500) silently reset to 36 — no error returned."New value: +"How big the lettering is, measured in PIXELS of the photo rather than points on a page: the words are drawn straight onto the bitmap, so the same number gives the same size here, on the Signature Generator and on PDF to Images. Out-of-range values (<6 or >500) silently reset to 36 — no error returned." - changed
Input schema / properties / font_size / x-ui / unitPrevious value: -"pt"New value: +"px"
48 tool updates
- Removed
analyze_grammar_check_batch - Added
analyze_json_xml_validator - Changed
convert_file2 fields changed- added
Input schema / properties / gif_fps / x-uiAdded value: +{ + "unit": "fps" +} - added
Input schema / properties / gif_width / x-uiAdded value: +{ + "unit": "px" +}
- Changed
convert_video1 field changed- added
Input schema / properties / bitrate_kbps / x-uiAdded value: +{ + "unit": "kbps" +}
- Changed
generate_ascii_art1 field changed- added
Input schema / properties / width / x-uiAdded value: +{ + "unit": "chars" +}
- Changed
generate_barcode1 field changed- added
Input schema / properties / height / x-uiAdded value: +{ + "unit": "px" +}
- Added
generate_color_palette - Changed
generate_favicon1 field changed- added
Input schema / properties / borderRadius / x-uiAdded value: +{ + "unit": "%" +}
- Added
generate_gradient - Removed
generate_invoice - Changed
generate_password1 field changed- added
Input schema / properties / length / x-uiAdded value: +{ + "unit": "chars" +}
- Changed
generate_placeholder_image2 fields changed- added
Input schema / properties / height / x-uiAdded value: +{ + "unit": "px" +} - added
Input schema / properties / width / x-uiAdded value: +{ + "unit": "px" +}
- Changed
generate_qr_code1 field changed- added
Input schema / properties / size / x-uiAdded value: +{ + "unit": "px" +}
- Added
generate_signature - Added
generate_uuid - Changed
media_add_watermark4 fields changed- added
Input schema / properties / fontsize / x-uiAdded value: +{ + "unit": "px" +} - removed
Input schema / properties / text / defaultRemoved value: -"John's Essentials" - changed
Input schema / properties / text / descriptionPrevious value: -"Watermark text."New value: +"The words burned into every frame. Required, and there is no default: a step nobody opened used to burn our own company name into the customer's video." - changed
Input schema / requiredPrevious value: -[ - "file" -]New value: +[ + "file", + "text" +]
- Changed
media_extract_frames1 field changed- added
Input schema / properties / fps / x-uiAdded value: +{ + "unit": "fps" +}
- Changed
pdf_crop4 fields changed- added
Input schema / properties / bottom / x-uiAdded value: +{ + "unit": "pt" +} - added
Input schema / properties / left / x-uiAdded value: +{ + "unit": "pt" +} - added
Input schema / properties / right / x-uiAdded value: +{ + "unit": "pt" +} - added
Input schema / properties / top / x-uiAdded value: +{ + "unit": "pt" +}
- Changed
pdf_excel_to_pdf4 fields changed- added
Input schema / properties / scale / x-uiAdded value: +{ + "unit": "%" +} - added
Input schema / properties / watermarkFontSize / x-uiAdded value: +{ + "unit": "pt" +} - added
Input schema / properties / watermarkRotation / x-uiAdded value: +{ + "unit": "deg" +} - added
Input schema / properties / watermarkScale / x-uiAdded value: +{ + "unit": "x" +}
- Changed
pdf_excel_to_pdf_batch4 fields changed- added
Input schema / properties / scale / x-uiAdded value: +{ + "unit": "%" +} - added
Input schema / properties / watermarkFontSize / x-uiAdded value: +{ + "unit": "pt" +} - added
Input schema / properties / watermarkRotation / x-uiAdded value: +{ + "unit": "deg" +} - added
Input schema / properties / watermarkScale / x-uiAdded value: +{ + "unit": "x" +}
- Changed
pdf_flatten3 fields changed- added
Input schema / properties / watermarkFontSize / x-uiAdded value: +{ + "unit": "pt" +} - added
Input schema / properties / watermarkRotation / x-uiAdded value: +{ + "unit": "deg" +} - added
Input schema / properties / watermarkScale / x-uiAdded value: +{ + "unit": "x" +}
- Changed
pdf_flatten_batch3 fields changed- added
Input schema / properties / watermarkFontSize / x-uiAdded value: +{ + "unit": "pt" +} - added
Input schema / properties / watermarkRotation / x-uiAdded value: +{ + "unit": "deg" +} - added
Input schema / properties / watermarkScale / x-uiAdded value: +{ + "unit": "x" +}
- Changed
pdf_header_footer2 fields changed- added
Input schema / properties / fontSize / x-uiAdded value: +{ + "unit": "pt" +} - added
Input schema / properties / margin / x-uiAdded value: +{ + "unit": "pt" +}
- Changed
pdf_images_to_pdf1 field changed- added
Input schema / properties / margin / x-uiAdded value: +{ + "unit": "pt" +}
- Changed
pdf_page_numbers1 field changed- added
Input schema / properties / fontSize / x-uiAdded value: +{ + "unit": "pt" +}
- Changed
pdf_split1 field changed- added
Input schema / properties / chunkSize / x-uiAdded value: +{ + "unit": "pages" +}
- Changed
pdf_to_images6 fields changed- added
Input schema / properties / dpi / x-uiAdded value: +{ + "unit": "dpi" +} - added
Input schema / properties / maxHeight / x-uiAdded value: +{ + "unit": "px" +} - added
Input schema / properties / maxWidth / x-uiAdded value: +{ + "unit": "px" +} - added
Input schema / properties / sheetGap / x-uiAdded value: +{ + "unit": "px" +} - added
Input schema / properties / watermarkFontSize / x-uiAdded value: +{ + "unit": "px" +} - added
Input schema / properties / watermarkRotation / x-uiAdded value: +{ + "unit": "deg" +}
- Changed
pdf_to_images_batch6 fields changed- added
Input schema / properties / dpi / x-uiAdded value: +{ + "unit": "dpi" +} - added
Input schema / properties / maxHeight / x-uiAdded value: +{ + "unit": "px" +} - added
Input schema / properties / maxWidth / x-uiAdded value: +{ + "unit": "px" +} - added
Input schema / properties / sheetGap / x-uiAdded value: +{ + "unit": "px" +} - added
Input schema / properties / watermarkFontSize / x-uiAdded value: +{ + "unit": "px" +} - added
Input schema / properties / watermarkRotation / x-uiAdded value: +{ + "unit": "deg" +}
- Changed
pdf_watermark2 fields changed- added
Input schema / properties / fontSize / x-uiAdded value: +{ + "unit": "pt" +} - added
Input schema / properties / rotation / x-uiAdded value: +{ + "unit": "deg" +}
- Added
photo_add_border - Changed
photo_collage3 fields changed- added
Input schema / properties / gap / x-uiAdded value: +{ + "unit": "px" +} - added
Input schema / properties / output_long_edge / x-uiAdded value: +{ + "unit": "px" +} - added
Input schema / properties / output_width / x-uiAdded value: +{ + "unit": "px" +}
- Changed
photo_color_adjuster3 fields changed- added
Input schema / properties / brightness / x-uiAdded value: +{ + "unit": "%" +} - added
Input schema / properties / contrast / x-uiAdded value: +{ + "unit": "%" +} - added
Input schema / properties / saturation / x-uiAdded value: +{ + "unit": "%" +}
- Changed
photo_compress_to_size1 field changed- added
Input schema / properties / target_size_kb / x-uiAdded value: +{ + "unit": "KB" +}
- Changed
photo_crop4 fields changed- added
Input schema / properties / height / x-uiAdded value: +{ + "unit": "px" +} - added
Input schema / properties / width / x-uiAdded value: +{ + "unit": "px" +} - added
Input schema / properties / x / x-uiAdded value: +{ + "unit": "px" +} - added
Input schema / properties / y / x-uiAdded value: +{ + "unit": "px" +}
- Changed
photo_face_blur2 fields changed- added
Input schema / properties / block_size / x-uiAdded value: +{ + "unit": "px" +} - added
Input schema / properties / blur_radius / x-uiAdded value: +{ + "unit": "px" +}
- Changed
photo_flip_rotate1 field changed- added
Input schema / properties / degrees / x-uiAdded value: +{ + "unit": "deg" +}
- Changed
photo_image_diff1 field changed- added
Input schema / properties / fuzz / x-uiAdded value: +{ + "unit": "%" +}
- Changed
photo_image_overlay4 fields changed- added
Input schema / properties / opacity / x-uiAdded value: +{ + "unit": "%" +} - added
Input schema / properties / scale / x-uiAdded value: +{ + "unit": "%" +} - added
Input schema / properties / x_offset / x-uiAdded value: +{ + "unit": "px" +} - added
Input schema / properties / y_offset / x-uiAdded value: +{ + "unit": "px" +}
- Changed
photo_image_splitter2 fields changed- added
Input schema / properties / cols / x-uiAdded value: +{ + "unit": "columns" +} - added
Input schema / properties / rows / x-uiAdded value: +{ + "unit": "rows" +}
- Changed
photo_resize3 fields changed- added
Input schema / properties / height / x-uiAdded value: +{ + "unit": "px" +} - added
Input schema / properties / percentage / x-uiAdded value: +{ + "unit": "%" +} - added
Input schema / properties / width / x-uiAdded value: +{ + "unit": "px" +}
- Added
photo_rounded_corners - Changed
photo_shadow_adder4 fields changed- added
Input schema / properties / angle / x-uiAdded value: +{ + "unit": "deg" +} - added
Input schema / properties / blur / x-uiAdded value: +{ + "unit": "px" +} - added
Input schema / properties / distance / x-uiAdded value: +{ + "unit": "px" +} - added
Input schema / properties / opacity / x-uiAdded value: +{ + "unit": "%" +}
- Changed
photo_svg_to_png2 fields changed- added
Input schema / properties / height / x-uiAdded value: +{ + "unit": "px" +} - added
Input schema / properties / width / x-uiAdded value: +{ + "unit": "px" +}
- Changed
photo_to_text1 field changed- added
Input schema / properties / binarize_threshold / x-uiAdded value: +{ + "unit": "%" +}
- Changed
photo_watermark5 fields changed- added
Input schema / properties / font_size / x-uiAdded value: +{ + "unit": "pt" +} - added
Input schema / properties / opacity / x-uiAdded value: +{ + "unit": "%" +} - removed
Input schema / properties / text / defaultRemoved value: -"John's Essentials" - changed
Input schema / properties / text / descriptionPrevious value: -"Defaults to 'John's Essentials' when omitted — always pass your own. A leading '@' is stripped."New value: +"The words stamped onto the photo. Required, and there is no default: a step nobody opened used to stamp our own company name onto the customer's picture. A leading '@' is stripped." - changed
Input schema / requiredPrevious value: -[ - "file" -]New value: +[ + "file", + "text" +]
- Changed
web_extract_table1 field changed- added
Input schema / properties / timeout_ms / x-uiAdded value: +{ + "unit": "ms" +}
- Changed
web_fetch1 field changed- added
Input schema / properties / timeout_ms / x-uiAdded value: +{ + "unit": "ms" +}
- Changed
web_scrape_page1 field changed- added
Input schema / properties / timeout_ms / x-uiAdded value: +{ + "unit": "ms" +}
1 tool update
- Added
drive_upload
79 tool updates
- Changed
analyze_color_palette2 fields changed- changed
Input schema / properties / colors / descriptionPrevious value: -"Number of palette colors to extract."New value: +"How many dominant colours to pull out of the image." - added
Input schema / properties / colors / titleAdded value: +"Colors to extract"
- Changed
analyze_csv1 field changed- added
Input schema / properties / strictAdded value: +{ + "default": false, + "description": "Files over 10,000 rows are analysed from the first 10,000 only. Switch on to get an error instead of statistics that cover part of the file.", + "title": "Refuse partial answers", + "type": "boolean" +}
- Changed
analyze_file_diff5 fields changed- added
Input schema / properties / strictAdded value: +{ + "default": false, + "description": "Only the first 2,000 lines of each side are compared. Switch on to get an error instead of a comparison that covers part of the files.", + "title": "Refuse partial answers", + "type": "boolean" +} - changed
Input schema / properties / text_a / descriptionPrevious value: -"First text — alternative to the file pair. Send text_a AND text_b together (text mode)."New value: +"The BEFORE version. Anything that appears only here is reported as removed." - added
Input schema / properties / text_a / titleAdded value: +"Original text" - changed
Input schema / properties / text_b / descriptionPrevious value: -"Second text."New value: +"The AFTER version. Anything that appears only here is reported as added." - added
Input schema / properties / text_b / titleAdded value: +"Updated text"
- Changed
analyze_grammar_check9 fields changed- added
Input schema / properties / dialect / titleAdded value: +"English spelling" - added
Input schema / properties / dialect / x-uiAdded value: +{ + "labels": { + "auto": "Detect automatically", + "en-AU": "Australian English", + "en-CA": "Canadian English", + "en-GB": "British English", + "en-US": "American English" + } +} - changed
Input schema / properties / include_llm / descriptionPrevious value: -"Run the Grok stage for context-dependent issues LanguageTool misses. Set false for rule-only output."New value: +"Adds a second pass that catches wording and context problems the rule checker cannot see. Turn off for rule-based results only, which is faster." - added
Input schema / properties / include_llm / titleAdded value: +"Deeper AI check" - changed
Input schema / properties / mode / descriptionPrevious value: -"strict = flag any casual phrasing; tone-preserving = preserve the author's voice."New value: +"Keep my voice leaves your phrasing alone; Strict also flags casual or loose wording." - added
Input schema / properties / mode / titleAdded value: +"How picky should it be" - added
Input schema / properties / mode / x-show-whenAdded value: +{ + "include_llm": [ + true + ] +} - added
Input schema / properties / style / titleAdded value: +"Style guide" - added
Input schema / properties / style / x-uiAdded value: +{ + "labels": { + "ap": "AP", + "apa": "APA", + "chicago": "Chicago", + "ieee": "IEEE", + "mla": "MLA", + "none": "No style guide" + } +}
- Changed
analyze_grammar_check_batch8 fields changed- added
Input schema / properties / items / items / properties / dialect / defaultAdded value: +"en-US" - added
Input schema / properties / items / items / properties / dialect / descriptionAdded value: +"Which spelling to expect. Anything we do not recognise is read as en-US." - added
Input schema / properties / items / items / properties / include_llm / defaultAdded value: +true - added
Input schema / properties / items / items / properties / include_llm / descriptionAdded value: +"Also run the slower rewrite pass that suggests whole-sentence improvements. On unless you say otherwise." - added
Input schema / properties / items / items / properties / mode / defaultAdded value: +"tone-preserving" - added
Input schema / properties / items / items / properties / mode / descriptionAdded value: +"Tone-preserving keeps the writer's voice and fixes mistakes; strict rewrites towards plain correctness." - added
Input schema / properties / items / items / properties / style / defaultAdded value: +"none" - added
Input schema / properties / items / items / properties / style / descriptionAdded value: +"Which style guide to judge the writing against. Leave it out and no style guide is applied."
- Changed
analyze_hash5 fields changed- changed
Input schema / properties / file / descriptionPrevious value: -"File to hash (any type)"New value: +"The file to hash. Any type, of any size we accept." - added
Input schema / properties / file / titleAdded value: +"File to hash" - changed
Input schema / properties / text / descriptionPrevious value: -"Direct text alternative to the file."New value: +"Hash typed text instead of a file. Ignored if a file is attached — the file wins." - added
Input schema / properties / text / titleAdded value: +"Text to hash" - changed
Input schema / requiredPrevious value: -[ - "file" -]New value: +[]
- Changed
analyze_link_extractor5 fields changed- changed
Input schema / properties / file / descriptionPrevious value: -"PDF or HTML file. Other types (incl. DOCX) are scanned as raw bytes and usually yield few links."New value: +"A PDF or HTML file to pull the links out of. Any other type is read as plain text." - added
Input schema / properties / file / titleAdded value: +"File to scan" - changed
Input schema / properties / text / descriptionPrevious value: -"Direct text/HTML alternative to the file."New value: +"Paste text or HTML to pull links out of. Ignored if a file is attached — the file wins." - added
Input schema / properties / text / titleAdded value: +"Text or HTML to scan" - changed
Input schema / requiredPrevious value: -[ - "file" -]New value: +[]
- Changed
analyze_readability3 fields changed- changed
Input schema / properties / text / descriptionPrevious value: -"Plain text to score — minimum ~5 words. Required unless 'file' is provided."New value: +"Paste the text to score — about five words minimum. Leave blank if you are uploading a document instead." - added
Input schema / properties / text / titleAdded value: +"Text to score" - changed
Input schema / requiredPrevious value: -[ - "text" -]New value: +[]
- Changed
analyze_ssl2 fields changed- changed
Input schema / properties / hostname / descriptionPrevious value: -"Hostname to check, e.g. example.com. Field name is 'hostname' — not 'domain'. Any port suffix is ignored; 443 is always used."New value: +"The site to check, e.g. example.com — just the address, with no https:// in front and no page path. A port number is ignored; 443 is always used." - added
Input schema / properties / hostname / titleAdded value: +"Website address"
- Changed
analyze_word_count2 fields changed- changed
Input schema / properties / text / descriptionPrevious value: -"Text to analyse. Required unless 'file' is provided."New value: +"Paste the text to count. Leave blank if you are uploading a document instead." - added
Input schema / properties / text / titleAdded value: +"Text to count"
- Changed
analyze_word_frequency4 fields changed- changed
Input schema / properties / exclude / descriptionPrevious value: -"Comma-separated words to exclude from the count."New value: +"Comma-separated, e.g. the, and, of. Capitals and spacing do not matter. Words under two letters are always ignored." - added
Input schema / properties / exclude / titleAdded value: +"Words to ignore" - changed
Input schema / properties / topN / descriptionPrevious value: -"How many top words to return."New value: +"Show this many of the most common words, most frequent first." - added
Input schema / properties / topN / titleAdded value: +"How many words to show"
- Changed
convert_archive2 fields changed- added
Input schema / properties / to / defaultAdded value: +"zip" - changed
Input schema / properties / to / descriptionPrevious value: -"Output archive format. Field name is 'to' — not 'format'."New value: +"The archive format you want back. ZIP opens on every computer without extra software."
- Changed
convert_batch4 fields changed- changed
Input schema / properties / filenames / descriptionPrevious value: -"Original filenames, one per entry in files[] and in the same order (e.g. ['report.csv','photo.heic']). Strongly recommended: per-file format detection and per-extension target rules key off these names."New value: +"Not used by this tool — the names come from the uploaded files themselves. Leave it empty." - added
Input schema / properties / filenames / x-uiAdded value: +{ + "no_recall": true +} - added
Input schema / properties / target / defaultAdded value: +"auto" - changed
Input schema / properties / target / descriptionPrevious value: -"'auto' (default), a single target format like 'pdf', or a JSON map like '{\"docx\":\"pdf\",\"heic\":\"jpg\"}'"New value: +"What to turn every file into. Leave it on 'auto' and we pick a sensible result for each one (Word becomes PDF, HEIC photos become JPG, MOV becomes MP4). Type a single format, like pdf, to force them all the same way."
- Changed
convert_data2 fields changed- added
Input schema / properties / to / defaultAdded value: +"json" - changed
Input schema / properties / to / descriptionPrevious value: -"Target format. Must differ from the source format."New value: +"The format you want back. It has to be different from what you put in."
- Changed
convert_document3 fields changed- changed
Input schema / properties / from / descriptionPrevious value: -"Source format — REQUIRED on this path (extensionless uploads can't be sniffed reliably; this drives the converter engine). 'md' = markdown (GFM); 'ipynb' = Jupyter notebook."New value: +"What the file is now. We normally read this from the file name; set it when the file has no name or an odd one. Markdown and Jupyter notebooks always take their own route, so say so here for those two." - added
Input schema / properties / to / defaultAdded value: +"pdf" - changed
Input schema / properties / to / descriptionPrevious value: -"Target format. Must differ from 'from'. Markdown INPUT converts to pdf, docx, html, epub, txt. Markdown OUTPUT ('md') is supported from docx, html, pdf (text extraction), and ipynb. Jupyter notebooks (ipynb) convert to pdf, html, docx, md."New value: +"What you want back. PDF works from every source. Word stays Word, spreadsheets stay spreadsheets, slides stay slides — a Word file cannot become slides. A PDF source can only come back as Markdown."
- Changed
convert_ebook3 fields changed- added
Input schema / properties / to / defaultAdded value: +"epub" - changed
Input schema / properties / to / descriptionPrevious value: -"Target format. EPUB is the recommended direction."New value: +"The format you want back. EPUB is what a modern Kindle accepts when you send a book to it, so it is the usual answer. Pick MOBI or AZW3 only for an older device." - changed
Input schema / properties / to / enumPrevious value: -[ - "epub", - "pdf", - "mobi", - "azw3" -]New value: +[ + "epub", + "mobi", + "azw3", + "pdf" +]
- Changed
convert_file4 fields changed- changed
Input schema / properties / file / descriptionPrevious value: -"Bytes are taken at face value as 'from' — no content sniffing; a wrong 'from' fails inside the engine, not with a clean 400."New value: +"The file to convert. We read its current format from the file itself, so you only need to say what you want back." - added
Input schema / properties / gif_fpsAdded value: +{ + "default": 10, + "description": "Frames per second. Higher is smoother and bigger. If the width and frame rate together are too heavy we keep the width and ease this down.", + "maximum": 30, + "minimum": 1, + "type": "integer", + "x-show-when": { + "to": [ + "gif" + ] + } +} - added
Input schema / properties / gif_widthAdded value: +{ + "default": 320, + "description": "How wide the GIF should be, in pixels. Height follows automatically. Very wide plus very smooth is capped - we keep the width you asked for and ease the frame rate down.", + "maximum": 1280, + "minimum": 64, + "type": "integer", + "x-show-when": { + "to": [ + "gif" + ] + } +} - changed
Input schema / properties / to / enumPrevious value: -[ - "pdf", - "jpg", - "png", - "webp", - "bmp", - "tiff", - "gif", - "avif", - "ico", - "mp3", - "wav", - "ogg", - "opus", - "flac", - "m4a", - "aac", - "wma", - "aiff", - "alac", - "mp4", - "mov", - "webm", - "mkv", - "avi", - "srt", - "vtt", - "txt", - "3gp", - "flv", - "m2ts", - "mpg", - "ts", - "vob", - "wmv" -]New value: +[ + "pdf", + "jpg", + "png", + "webp", + "bmp", + "tiff", + "gif", + "avif", + "ico", + "mp3", + "wav", + "ogg", + "opus", + "flac", + "m4a", + "aac", + "wma", + "aiff", + "alac", + "mp4", + "mov", + "webm", + "mkv", + "avi", + "3gp", + "flv", + "m2ts", + "mpg", + "ts", + "vob", + "wmv", + "srt", + "vtt", + "txt" +]
- Changed
convert_geo4 fields changed- added
Input schema / properties / strict / defaultAdded value: +false - changed
Input schema / properties / strict / descriptionPrevious value: -"When true, refuse the conversion instead of returning a result that loses information."New value: +"Stop the conversion rather than hand back a file that has lost something. Off by default: you get the result plus a note about anything that could not be carried over." - removed
Input schema / properties / strict / enumRemoved value: -[ - "true", - "false" -] - changed
Input schema / properties / strict / typePrevious value: -"string"New value: +"boolean"
- Changed
convert_parquet2 fields changed- changed
Input schema / properties / sheet / descriptionPrevious value: -"Optional: when the source is .xlsx, which worksheet to read (default: the first)."New value: +"Which worksheet to read. Leave it blank for the first one." - added
Input schema / properties / sheet / x-show-whenAdded value: +{ + "from": [ + "xlsx" + ] +}
- Changed
convert_sqlite3 fields changed- added
Input schema / properties / strictAdded value: +{ + "default": false, + "description": "Stop rather than hand back a partial export. Off by default: a very large database comes back with whatever we could reach, and a note saying what was left out.", + "title": "Refuse partial answers", + "type": "boolean" +} - added
Input schema / properties / to / defaultAdded value: +"csv" - changed
Input schema / properties / to / descriptionPrevious value: -"With 2+ tables, csv arrives as a ZIP of per-table CSVs — pass 'table' when a downstream step needs one plain CSV. xlsx = always one file."New value: +"What you want back. A database holds several tables, so the shape follows: CSV gives one file per table (zipped if there is more than one), Excel gives one workbook with a sheet per table, JSON gives the rows as records."
- Changed
convert_text1 field changed- changed
Input schema / properties / to / descriptionPrevious value: -"What you want back. Must differ from the source. Supported pairs: Markdown↔HTML, CSV→JSON/XML, JSON↔CSV, JSON↔XML, JSON↔YAML, XML→JSON, and anything→plain text."New value: +"What you want back. Must differ from the source. For a Base64 or URL encode/decode, leave this on the format you want the result read as — do NOT pick plain text, which currently returns the input untouched."
- Changed
convert_unit_convert1 field changed- changed
Input schema / properties / value / descriptionPrevious value: -"JSON number, not a string. Negatives are valid (temperatures, deltas)."New value: +"The amount to convert. Negative numbers are fine (below-zero temperatures, drops in weight)."
- Changed
convert_video12 fields changed- changed
Input schema / properties / bitrate_kbps / descriptionPrevious value: -"Giving it switches rate control to ABR (a size target) and beats 'crf'. Omit for CRF quality mode."New value: +"Aim for a file size instead of a quality level. Setting this overrides the quality slider. Leave it alone unless you have a size you must hit." - added
Input schema / properties / bitrate_kbps / x-show-whenAdded value: +{ + "to": [ + "mp4", + "mov", + "webm", + "mkv", + "avi" + ] +} - added
Input schema / properties / codec / defaultAdded value: +"auto" - changed
Input schema / properties / codec / descriptionPrevious value: -"'auto' picks the container's default. h265 and av1 need Business; a codec the container can't hold 400s."New value: +"How the picture is compressed. Leave it on Automatic unless you know you need otherwise — a compression method the chosen format cannot carry (H.265 in a WebM, say) will fail during conversion. H.265 and AV1 need Business." - changed
Input schema / properties / codec / enumPrevious value: -[ - "auto", - "h264", - "h265", - "vp9", - "av1" -]New value: +[ + "auto", + "h264", + "vp9", + "h265", + "av1" +] - added
Input schema / properties / codec / x-show-whenAdded value: +{ + "to": [ + "mp4", + "mov", + "webm", + "mkv", + "avi" + ] +} - added
Input schema / properties / crfAdded value: +{ + "default": 23, + "description": "Picture quality. Lower is better-looking and bigger; higher is smaller and rougher. 23 is the everyday setting for H.264. Each compression method reads this scale differently - left alone we pick the matching everyday value (28 for H.265, 32 for VP9, 30 for AV1). Out-of-range values are pulled back into range rather than refused, and the whole setting is ignored if you set a data rate or pick a platform preset.", + "maximum": 51, + "minimum": 0, + "type": "integer", + "x-show-when": { + "to": [ + "mp4", + "mov", + "webm", + "mkv", + "avi" + ] + } +} - changed
Input schema / properties / preset_name / descriptionPrevious value: -"Business-only. Wins over 'to', 'codec', 'resolution' and 'bitrate_kbps' — every preset forces h264 mp4. Only set when the user names the platform."New value: +"Make it ready for one place in particular. Picking one sets the format, size, compression and data rate for you and ignores your choices above. Business only." - added
Input schema / properties / resolution / defaultAdded value: +"source" - changed
Input schema / properties / resolution / descriptionPrevious value: -"Default 'source' = no scaling. 1080p and 2160p need Business. Scales by height only; aspect ratio preserved."New value: +"How big the picture should be. 'Source' keeps the original size. Height is set and the shape is kept. 1080p and 4K need Business." - added
Input schema / properties / to / defaultAdded value: +"mp4" - changed
Input schema / properties / to / descriptionPrevious value: -"mkv, avi and gif need Business. GIF output is palette-optimized and defaults to 480p unless 'resolution' says otherwise."New value: +"The format you want back. MP4 plays almost everywhere. MKV, AVI and animated GIF need Business. A GIF is made at 480p unless you set the size below."
- Changed
data_to_file4 fields changed- changed
Input schema / properties / format / descriptionPrevious value: -"What kind of file to write. csv turns a list of values into a spreadsheet; json is pretty-printed."New value: +"What kind of file to write. csv turns a list of values into a spreadsheet — a header row and one row per value — and anything it cannot tabulate becomes a single column. json is pretty-printed, and data that is not valid JSON is saved as plain text instead." - added
Input schema / properties / name / defaultAdded value: +"data" - changed
Input schema / properties / name / descriptionPrevious value: -"Optional file name without the extension (default: data)."New value: +"File name without the extension — the extension comes from the format above. Anything over 80 characters is shortened." - changed
Input schema / properties / text / descriptionPrevious value: -"The data to save — normally an earlier step's output, e.g. {{step_1.text}} or {{step_1.palette}}."New value: +"The result to save. Point this at the earlier step whose text or data you want in the file — the colour palette, the password, the extracted text."
- Changed
email_file3 fields changed- changed
Input schema / properties / note / descriptionPrevious value: -"Optional one-line note to include in the email body."New value: +"Optional one-line note to put in the email body. The mail is sent from your own connected Google account, to you — files up to 5 MB." - added
Input schema / properties / subject / defaultAdded value: +"Your file is ready" - changed
Input schema / properties / subject / descriptionPrevious value: -"Optional subject line. Defaults to 'Your file is ready'."New value: +"Subject line of the email."
- Changed
esign_place1 field changed- changed
Input schema / properties / fields / descriptionPrevious value: -"JSON array of field placements: [{page,x,y,w,h,type,value,font_size,image_b64}]"New value: +"Where each signature, initial, date or text box sits on the page. Build these on the PDF E-Signature page — it draws them on the document and gives you this value — then paste it here. Up to 100 placements; each names a page, a box in points from that page's top-left corner, and a type: signature, initial, date or text."
- Changed
files_zip1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Optional name for the archive, without .zip (default: files)."New value: +"Name for the archive, without .zip. Leave it blank and the archive is named johns-essentials- plus today's date."
- Changed
generate_ascii_art6 fields changed- changed
Input schema / properties / file / descriptionPrevious value: -"Image to convert. REQUIRED when mode=image (max 10MB)."New value: +"The picture to convert (max 10 MB)." - added
Input schema / properties / file / x-show-whenAdded value: +{ + "mode": [ + "image" + ] +} - changed
Input schema / properties / font / enumPrevious value: -[ - "standard", - "banner", - "big", - "block", - "bubble", - "digital", - "lean", - "mini", - "script", - "shadow", - "slant", - "small" -]New value: +[ + "standard", + "big", + "block", + "banner", + "bubble", + "digital", + "ivrit", + "lean", + "mini", + "mnemonic", + "script", + "shadow", + "slant", + "small", + "smscript", + "smshadow", + "smslant", + "term" +] - changed
Input schema / properties / mode / descriptionPrevious value: -"Turn words into a banner, or turn a picture into characters."New value: +"Draw your words as big letters, or turn a picture into characters. If you attach a picture and type nothing, picture mode is used automatically." - changed
Input schema / properties / text / descriptionPrevious value: -"The words to render as a banner. Up to 100 characters."New value: +"The words to draw. Longer than 100 characters is trimmed." - changed
Input schema / properties / width / descriptionPrevious value: -"How many characters wide the picture is drawn."New value: +"How many characters wide the picture is."
- Changed
generate_barcode5 fields changed- changed
Input schema / properties / height / descriptionPrevious value: -"Output height in px. Width is derived automatically (height×3; square for qr/datamatrix) — there is no 'width' parameter."New value: +"How tall the bars are, in pixels. The width follows automatically." - changed
Input schema / properties / height / minimumPrevious value: -1New value: +50 - added
Input schema / properties / showTextAdded value: +{ + "default": true, + "description": "Print the encoded digits underneath the bars, so a cashier can key them in if a scan fails.", + "type": "boolean" +} - changed
Input schema / properties / type / descriptionPrevious value: -"Symbology. Unknown types fall back to code128."New value: +"Which barcode standard to make. Code 128 takes any text or number; EAN-13 needs 12-13 digits and EAN-8 needs 7-8; UPC-A needs 11-12; Code 39 takes capitals and digits; ITF-14 needs 13-14 digits; Data Matrix, PDF417 and QR are the square ones that hold any text. Anything we do not recognise is made as a Code 128." - added
Input schema / properties / type / x-uiAdded value: +{ + "labels": { + "code128": "Code 128", + "code39": "Code 39", + "datamatrix": "Data Matrix", + "ean13": "EAN-13", + "ean8": "EAN-8", + "itf14": "ITF-14", + "pdf417": "PDF417", + "qr": "QR Code", + "upca": "UPC-A" + } +}
- Changed
generate_certificate2 fields changed- changed
Input schema / properties / template / descriptionPrevious value: -"Accepted but does NOT change the layout — every template renders identically today; use borderStyle for the look."New value: +"Kept for older calls; it does not change the certificate. Set the heading with Cert title and the look with Border style." - added
Input schema / properties / template / x-show-whenAdded value: +{ + "borderStyle": [ + "__never" + ] +}
- Changed
generate_favicon1 field changed- added
Input schema / properties / backgroundAdded value: +{ + "default": "none", + "description": "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 as see-through.", + "enum": [ + "none", + "white", + "black", + "gray", + "silver", + "red", + "green", + "blue", + "yellow", + "orange", + "purple", + "pink", + "brown", + "navy", + "teal", + "cyan", + "magenta" + ], + "type": "string", + "x-ui": { + "labels": { + "none": "See-through" + } + } +}
- Changed
generate_hash4 fields changed- changed
Input schema / properties / file / descriptionPrevious value: -"Optional file to hash instead of text."New value: +"A file to hash instead of typed text. If you attach one, the file wins." - changed
Input schema / properties / text / descriptionPrevious value: -"Text to hash. Required unless 'file' is provided."New value: +"The text to hash. Leave it blank when you are hashing a file instead." - added
Input schema / properties / text / titleAdded value: +"Text to hash" - changed
Input schema / requiredPrevious value: -[ - "text" -]New value: +[]
- Changed
generate_invoice2 fields changed- changed
Input schema / properties / discountPercent / descriptionPrevious value: -"Percent of subtotal subtracted. Unvalidated — over 100 yields a negative total. Row hidden when 0."New value: +"Percent added to the subtotal. At 0 the tax line is left off the invoice." - changed
Input schema / properties / taxPercent / descriptionPrevious value: -"Percent of subtotal added on top. Unvalidated; the tax row appears only when greater than 0."New value: +"Percent added to the subtotal. At 0 the tax line is left off the invoice."
- Changed
generate_password10 fields changed- changed
Input schema / properties / length / descriptionPrevious value: -"Characters per password. Values over 256 silently clamp to 256; zero or negative resets to the default 16."New value: +"Characters per password." - changed
Input schema / properties / length / minimumPrevious value: -1New value: +4 - changed
Input schema / properties / lowercase / defaultPrevious value: -falseNew value: +true - changed
Input schema / properties / lowercase / descriptionPrevious value: -"Include lowercase letters. NOT implied by the other flags — sending only uppercase/numbers/symbols=true yields a password with no lowercase."New value: +"Include small letters a-z. Turning all four off is the same as leaving all four on." - changed
Input schema / properties / numbers / defaultPrevious value: -falseNew value: +true - changed
Input schema / properties / numbers / descriptionPrevious value: -"Include digits 0-9. Class flags work jointly: all four false/omitted = every class enabled."New value: +"Include digits 0-9. Turning all four off is the same as leaving all four on." - changed
Input schema / properties / symbols / defaultPrevious value: -falseNew value: +true - changed
Input schema / properties / symbols / descriptionPrevious value: -"Include symbols from !@#$%^&*()-_=+[]{}|;:,.<>? — quotes, backslash, backtick, tilde and slash are never used."New value: +"Include symbols from !@#$%^&*()-_=+[]{}|;:,.<>? - quotes, backslash, backtick, tilde and slash are never used. Turning all four off is the same as leaving all four on." - changed
Input schema / properties / uppercase / defaultPrevious value: -falseNew value: +true - changed
Input schema / properties / uppercase / descriptionPrevious value: -"Include uppercase letters. If ALL four class flags (uppercase/lowercase/numbers/symbols) are omitted or false, all classes are used."New value: +"Include capital letters A-Z. Turning all four off is the same as leaving all four on."
- Changed
generate_placeholder_image2 fields changed- changed
Input schema / properties / format / descriptionPrevious value: -"Sets the response MIME (png/jpg/jpeg/webp). Unrecognized values get mislabeled as PNG — stick to the enum."New value: +"Image file type to save as." - changed
Input schema / properties / format / enumPrevious value: -[ - "png", - "jpg", - "jpeg", - "webp" -]New value: +[ + "png", + "jpg", + "webp" +]
- Changed
generate_qr_code2 fields changed- changed
Input schema / properties / size / descriptionPrevious value: -"Image size in pixels (max 2000)"New value: +"Width and height of the square image, in pixels." - changed
Input schema / properties / size / minimumPrevious value: -1New value: +200
- Changed
media_add_watermark4 fields changed- added
Input schema / properties / fontsizeAdded value: +{ + "default": 0, + "description": "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.", + "maximum": 400, + "minimum": 0, + "type": "integer" +} - changed
Input schema / properties / opacity / descriptionPrevious value: -"Fraction 0.0-1.0; invalid values fall back to 0.7."New value: +"How solid the watermark looks: 1 is fully solid, 0.3 is a faint ghost." - changed
Input schema / properties / position / descriptionPrevious value: -"No hyphens — 'bottomright', not 'bottom-right'. Unknown values fall back to bottomright."New value: +"Which corner of the frame the watermark sits in." - added
Input schema / properties / position / x-uiAdded value: +{ + "labels": { + "bottomleft": "Bottom left", + "bottomright": "Bottom right", + "center": "Centre", + "topleft": "Top left", + "topright": "Top right" + } +}
- Changed
media_extract_audio1 field changed- changed
Input schema / properties / format / descriptionPrevious value: -"Values outside the enum are a 400, not a silent fallback. wav/flac come back lossless; mp3/ogg/aac are lossy re-encodes."New value: +"What to save the soundtrack as. WAV and FLAC keep every bit of the original; MP3, OGG and AAC are smaller but re-compressed."
- Changed
media_extract_frames5 fields changed- changed
Input schema / properties / fps / descriptionPrevious value: -"Frames per second to extract"New value: +"How many frames to take per second of video. 1 means one frame a second." - changed
Input schema / properties / fps / maximumPrevious value: -1000New value: +30 - changed
Input schema / properties / fps / minimumPrevious value: -0.01New value: +0.1 - changed
Input schema / properties / max / descriptionPrevious value: -"Maximum number of frames to extract."New value: +"Stop after this many frames, however long the video is." - added
Input schema / properties / max / titleAdded value: +"Most frames to take"
- Changed
octopus_list1 field changed- changed
Input schema / properties / folder / descriptionPrevious value: -"Optional folder path, e.g. /Tax/2026. Omit for all recent files."New value: +"Folder to list, written exactly as it is stored, closing slash included: /Tax/2026/. Leave blank for every recent file."
- Changed
pdf_compress6 fields changed- changed
Input schema / properties / metadataOnly / descriptionPrevious value: -"Strip metadata only (Ghostscript pdfmark) — no image downsampling."New value: +"Only strip the hidden details - author, title, producing software - and leave every page exactly as it is." - changed
Input schema / properties / quality / descriptionPrevious value: -"Compression preset: light=300dpi, balanced=150dpi, mobile=96dpi, maximum=72dpi. Unknown values (including low/medium/high) silently fall back to balanced."New value: +"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." - added
Input schema / properties / quality / x-show-whenAdded value: +{ + "metadataOnly": [ + "false" + ] +} - changed
Input schema / properties / targetSize / descriptionPrevious value: -"Target output size. When set, compresses iteratively to fit and overrides 'quality'."New value: +"Squeeze until the file fits this size. Overrides the preset above." - added
Input schema / properties / targetSize / titleAdded value: +"Squeeze down to" - added
Input schema / properties / targetSize / x-show-whenAdded value: +{ + "metadataOnly": [ + "false" + ] +}
- Changed
pdf_crop8 fields changed- changed
Input schema / properties / bottom / descriptionPrevious value: -"Bottom crop in points."New value: +"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." - changed
Input schema / properties / bottom / maximumPrevious value: -14400New value: +288 - changed
Input schema / properties / left / descriptionPrevious value: -"Left crop in points."New value: +"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." - changed
Input schema / properties / left / maximumPrevious value: -14400New value: +288 - changed
Input schema / properties / right / descriptionPrevious value: -"Right crop in points."New value: +"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." - changed
Input schema / properties / right / maximumPrevious value: -14400New value: +288 - changed
Input schema / properties / top / descriptionPrevious value: -"Top crop in points. 0 = no crop on this edge."New value: +"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." - changed
Input schema / properties / top / maximumPrevious value: -14400New value: +288
- Changed
pdf_excel_to_pdf26 fields changed- changed
Input schema / properties / gridlines / descriptionPrevious value: -"Show gridlines. Empty leaves the sheet's own setting."New value: +"Print the faint grid between cells. Leave blank to keep whatever the sheet already does." - changed
Input schema / properties / gridlines / enumPrevious value: -[ - "", - "true", - "false" -]New value: +[ + "true", + "false" +] - added
Input schema / properties / gridlines / x-uiAdded value: +{ + "labels": { + "false": "Hide gridlines", + "true": "Show gridlines" + } +} - added
Input schema / properties / margins / x-uiAdded value: +{ + "labels": { + "default": "Keep the sheet's own margins", + "narrow": "Narrow", + "normal": "Normal", + "wide": "Wide" + } +} - changed
Input schema / properties / pdfa / descriptionPrevious value: -"Archival PDF/A output. 2b is the safe default."New value: +"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." - added
Input schema / properties / pdfa / x-uiAdded value: +{ + "labels": { + "1b": "PDF/A-1b", + "2b": "PDF/A-2b (most asked for)", + "3b": "PDF/A-3b", + "none": "Ordinary PDF" + } +} - changed
Input schema / properties / permPassword / descriptionPrevious value: -"Owner password for permission restrictions. Optional."New value: +"A second, different password that locks printing, copying and editing. Only takes effect if you also set an open password above." - added
Input schema / properties / permPassword / titleAdded value: +"Owner password" - changed
Input schema / properties / quality / descriptionPrevious value: -"Output compression quality preset."New value: +"How sharp the pictures and charts stay in the PDF. Leave blank for the converter's own setting." - changed
Input schema / properties / quality / enumPrevious value: -[ - "", - "low", - "medium", - "high" -]New value: +[ + "low", + "medium", + "high" +] - added
Input schema / properties / quality / x-uiAdded value: +{ + "labels": { + "high": "Best quality (no downsizing)", + "low": "Smallest file (96 DPI pictures)", + "medium": "Balanced (150 DPI pictures)" + } +} - changed
Input schema / properties / scale / descriptionPrevious value: -"Print scaling percent. Overrides fitToPage when set."New value: +"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 off." - added
Input schema / properties / scale / x-show-whenAdded value: +{ + "fitToPage": [ + "none" + ] +} - added
Input schema / properties / sheets / defaultAdded value: +"all" - changed
Input schema / properties / sheets / descriptionPrevious value: -"Sheet selection: 'all', comma-separated names (e.g. 'Sales,Ledger'), or comma-separated 0-based indexes (e.g. '0,2'). Non-selected sheets are hidden before conversion."New value: +"Which sheets to convert: all, or the names or positions you want — Sales,Ledger or 0,2." - changed
Input schema / properties / showHeaders / descriptionPrevious value: -"Show row/column headers (A/B/C + 1/2/3). Empty leaves the sheet's own setting."New value: +"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." - changed
Input schema / properties / showHeaders / enumPrevious value: -[ - "", - "true", - "false" -]New value: +[ + "true", + "false" +] - added
Input schema / properties / showHeaders / x-uiAdded value: +{ + "labels": { + "false": "Hide row & column headings", + "true": "Show row & column headings" + } +} - changed
Input schema / properties / splitMode / descriptionPrevious value: -"combined = one multi-page PDF; per-sheet = ZIP with one PDF per sheet."New value: +"One PDF containing every sheet, or a ZIP holding one PDF per sheet." - added
Input schema / properties / watermarkColorAdded value: +{ + "default": "#808080", + "description": "Colour of the watermark lettering, as #rgb or #rrggbb. Anything else becomes mid-grey. Only used when there is watermark text.", + "type": "string" +} - added
Input schema / properties / watermarkFontAdded value: +{ + "default": "Helvetica", + "description": "Lettering style for the watermark. Latin alphabet only. Only used when there is watermark text.", + "enum": [ + "Helvetica", + "Times-Roman", + "Courier" + ], + "type": "string" +} - added
Input schema / properties / watermarkFontSizeAdded value: +{ + "default": 48, + "description": "Height of the watermark lettering in points. Only used when there is watermark text.", + "maximum": 1000, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / watermarkOpacityAdded value: +{ + "default": 0.3, + "description": "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.", + "maximum": 1, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / watermarkPositionAdded value: +{ + "default": "c", + "description": "Where the watermark sits on the page. Only used when there is watermark text.", + "enum": [ + "c", + "tl", + "tc", + "tr", + "ml", + "mr", + "bl", + "bc", + "br" + ], + "type": "string", + "x-ui": { + "labels": { + "bc": "Bottom centre", + "bl": "Bottom left", + "br": "Bottom right", + "c": "Centre", + "ml": "Middle left", + "mr": "Middle right", + "tc": "Top centre", + "tl": "Top left", + "tr": "Top right" + } + } +} - added
Input schema / properties / watermarkRotationAdded value: +{ + "default": 45, + "description": "Angle of the watermark in whole degrees; 45 is the classic diagonal. Only used when there is watermark text.", + "maximum": 180, + "minimum": -180, + "type": "integer" +} - added
Input schema / properties / watermarkScaleAdded value: +{ + "default": 1, + "description": "Size multiplier applied on top of the lettering size. Only used when there is watermark text.", + "maximum": 20, + "minimum": 0.01, + "type": "number" +}
- Changed
pdf_excel_to_pdf_batch26 fields changed- changed
Input schema / properties / gridlines / descriptionPrevious value: -"Show gridlines. Empty leaves the sheet's own setting."New value: +"Print the faint grid between cells. Leave blank to keep whatever the sheet already does." - changed
Input schema / properties / gridlines / enumPrevious value: -[ - "", - "true", - "false" -]New value: +[ + "true", + "false" +] - added
Input schema / properties / gridlines / x-uiAdded value: +{ + "labels": { + "false": "Hide gridlines", + "true": "Show gridlines" + } +} - added
Input schema / properties / margins / x-uiAdded value: +{ + "labels": { + "default": "Keep the sheet's own margins", + "narrow": "Narrow", + "normal": "Normal", + "wide": "Wide" + } +} - changed
Input schema / properties / pdfa / descriptionPrevious value: -"Archival PDF/A output. 2b is the safe default."New value: +"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." - added
Input schema / properties / pdfa / x-uiAdded value: +{ + "labels": { + "1b": "PDF/A-1b", + "2b": "PDF/A-2b (most asked for)", + "3b": "PDF/A-3b", + "none": "Ordinary PDF" + } +} - changed
Input schema / properties / permPassword / descriptionPrevious value: -"Owner password for permission restrictions. Optional."New value: +"A second, different password that locks printing, copying and editing. Only takes effect if you also set an open password above." - added
Input schema / properties / permPassword / titleAdded value: +"Owner password" - changed
Input schema / properties / quality / descriptionPrevious value: -"Output compression quality preset."New value: +"How sharp the pictures and charts stay in the PDF. Leave blank for the converter's own setting." - changed
Input schema / properties / quality / enumPrevious value: -[ - "", - "low", - "medium", - "high" -]New value: +[ + "low", + "medium", + "high" +] - added
Input schema / properties / quality / x-uiAdded value: +{ + "labels": { + "high": "Best quality (no downsizing)", + "low": "Smallest file (96 DPI pictures)", + "medium": "Balanced (150 DPI pictures)" + } +} - changed
Input schema / properties / scale / descriptionPrevious value: -"Print scaling percent. Overrides fitToPage when set."New value: +"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 off." - added
Input schema / properties / scale / x-show-whenAdded value: +{ + "fitToPage": [ + "none" + ] +} - added
Input schema / properties / sheets / defaultAdded value: +"all" - changed
Input schema / properties / sheets / descriptionPrevious value: -"Sheet selection: 'all', comma-separated names (e.g. 'Sales,Ledger'), or comma-separated 0-based indexes (e.g. '0,2'). Non-selected sheets are hidden before conversion."New value: +"Which sheets to convert: all, or the names or positions you want — Sales,Ledger or 0,2." - changed
Input schema / properties / showHeaders / descriptionPrevious value: -"Show row/column headers (A/B/C + 1/2/3). Empty leaves the sheet's own setting."New value: +"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." - changed
Input schema / properties / showHeaders / enumPrevious value: -[ - "", - "true", - "false" -]New value: +[ + "true", + "false" +] - added
Input schema / properties / showHeaders / x-uiAdded value: +{ + "labels": { + "false": "Hide row & column headings", + "true": "Show row & column headings" + } +} - changed
Input schema / properties / splitMode / descriptionPrevious value: -"combined = one multi-page PDF; per-sheet = ZIP with one PDF per sheet."New value: +"One PDF containing every sheet, or a ZIP holding one PDF per sheet." - added
Input schema / properties / watermarkColorAdded value: +{ + "default": "#808080", + "description": "Colour of the watermark lettering, as #rgb or #rrggbb. Anything else becomes mid-grey. Only used when there is watermark text.", + "type": "string" +} - added
Input schema / properties / watermarkFontAdded value: +{ + "default": "Helvetica", + "description": "Lettering style for the watermark. Latin alphabet only. Only used when there is watermark text.", + "enum": [ + "Helvetica", + "Times-Roman", + "Courier" + ], + "type": "string" +} - added
Input schema / properties / watermarkFontSizeAdded value: +{ + "default": 48, + "description": "Height of the watermark lettering in points. Only used when there is watermark text.", + "maximum": 1000, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / watermarkOpacityAdded value: +{ + "default": 0.3, + "description": "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.", + "maximum": 1, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / watermarkPositionAdded value: +{ + "default": "c", + "description": "Where the watermark sits on the page. Only used when there is watermark text.", + "enum": [ + "c", + "tl", + "tc", + "tr", + "ml", + "mr", + "bl", + "bc", + "br" + ], + "type": "string", + "x-ui": { + "labels": { + "bc": "Bottom centre", + "bl": "Bottom left", + "br": "Bottom right", + "c": "Centre", + "ml": "Middle left", + "mr": "Middle right", + "tc": "Top centre", + "tl": "Top left", + "tr": "Top right" + } + } +} - added
Input schema / properties / watermarkRotationAdded value: +{ + "default": 45, + "description": "Angle of the watermark in whole degrees; 45 is the classic diagonal. Only used when there is watermark text.", + "maximum": 180, + "minimum": -180, + "type": "integer" +} - added
Input schema / properties / watermarkScaleAdded value: +{ + "default": 1, + "description": "Size multiplier applied on top of the lettering size. Only used when there is watermark text.", + "maximum": 20, + "minimum": 0.01, + "type": "number" +}
- Changed
pdf_flatten11 fields changed- changed
Input schema / properties / compressPreset / descriptionPrevious value: -"screen|ebook|printer|prepress (Ghostscript). Read only when compressImages=true; unknown → ebook. screen=72dpi, printer/prepress=300dpi."New value: +"How hard to squeeze the pictures: screen 72 DPI, ebook 150 DPI, printer and prepress 300 DPI." - added
Input schema / properties / compressPreset / x-show-whenAdded value: +{ + "compressImages": [ + "true" + ] +} - changed
Input schema / properties / exportData / descriptionPrevious value: -"Return a ZIP containing the flattened PDF plus form_values.json and annotations.json side files."New value: +"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." - changed
Input schema / properties / ocrLang / descriptionPrevious value: -"Allowlist: eng fra spa deu ita por nld pol chi_sim jpn kor ara rus hin; unknown → eng. Read only when ocrFirst=true (paid OCR tier)."New value: +"Which language the scanned text is in." - added
Input schema / properties / ocrLang / x-show-whenAdded value: +{ + "ocrFirst": [ + "true" + ] +} - added
Input schema / properties / ocrLang / x-uiAdded value: +{ + "labels": { + "ara": "Arabic", + "chi_sim": "Chinese (Simplified)", + "deu": "German", + "eng": "English", + "fra": "French", + "hin": "Hindi", + "ita": "Italian", + "jpn": "Japanese", + "kor": "Korean", + "nld": "Dutch", + "pol": "Polish", + "por": "Portuguese", + "rus": "Russian", + "spa": "Spanish" + } +} - changed
Input schema / properties / signatureMode / descriptionPrevious value: -"preserve = return original when signatures detected; ignore = flatten anyway (invalidates sigs); block = 409 error."New value: +"What to do if the PDF has been digitally signed. Flattening destroys a signature, so by default we hand the original back untouched." - added
Input schema / properties / signatureMode / x-uiAdded value: +{ + "labels": { + "block": "Stop and tell me", + "ignore": "Flatten anyway (breaks the signature)", + "preserve": "Leave signed files untouched" + } +} - changed
Input schema / properties / watermarkPosition / descriptionPrevious value: -"pdfcpu anchor: c tl tc tr ml mr bl bc br (ml/mr are folded to the engine's l/r); unknown → c (center). Read only when watermarkText is set."New value: +"Where the watermark sits on the page. Only used when there is watermark text." - added
Input schema / properties / watermarkPosition / x-uiAdded value: +{ + "labels": { + "bc": "Bottom centre", + "bl": "Bottom left", + "br": "Bottom right", + "c": "Centre", + "ml": "Middle left", + "mr": "Middle right", + "tc": "Top centre", + "tl": "Top left", + "tr": "Top right" + } +} - removed
Input schema / properties / watermarkTileRemoved value: -{ - "default": false, - "description": "NOT available here — true returns a clear error (the flatten tile path is broken in the pinned engine; run pdf_watermark, which tiles, before flattening).", - "type": "boolean" -}
- Changed
pdf_flatten_batch11 fields changed- changed
Input schema / properties / compressPreset / descriptionPrevious value: -"screen|ebook|printer|prepress (Ghostscript). Read only when compressImages=true; unknown → ebook. screen=72dpi, printer/prepress=300dpi."New value: +"How hard to squeeze the pictures: screen 72 DPI, ebook 150 DPI, printer and prepress 300 DPI." - added
Input schema / properties / compressPreset / x-show-whenAdded value: +{ + "compressImages": [ + "true" + ] +} - changed
Input schema / properties / exportData / descriptionPrevious value: -"Return a ZIP containing the flattened PDF plus form_values.json and annotations.json side files."New value: +"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." - changed
Input schema / properties / ocrLang / descriptionPrevious value: -"Allowlist: eng fra spa deu ita por nld pol chi_sim jpn kor ara rus hin; unknown → eng. Read only when ocrFirst=true (paid OCR tier)."New value: +"Which language the scanned text is in." - added
Input schema / properties / ocrLang / x-show-whenAdded value: +{ + "ocrFirst": [ + "true" + ] +} - added
Input schema / properties / ocrLang / x-uiAdded value: +{ + "labels": { + "ara": "Arabic", + "chi_sim": "Chinese (Simplified)", + "deu": "German", + "eng": "English", + "fra": "French", + "hin": "Hindi", + "ita": "Italian", + "jpn": "Japanese", + "kor": "Korean", + "nld": "Dutch", + "pol": "Polish", + "por": "Portuguese", + "rus": "Russian", + "spa": "Spanish" + } +} - changed
Input schema / properties / signatureMode / descriptionPrevious value: -"preserve = return original when signatures detected; ignore = flatten anyway (invalidates sigs); block = 409 error."New value: +"What to do if the PDF has been digitally signed. Flattening destroys a signature, so by default we hand the original back untouched." - added
Input schema / properties / signatureMode / x-uiAdded value: +{ + "labels": { + "block": "Stop and tell me", + "ignore": "Flatten anyway (breaks the signature)", + "preserve": "Leave signed files untouched" + } +} - changed
Input schema / properties / watermarkPosition / descriptionPrevious value: -"pdfcpu anchor: c tl tc tr ml mr bl bc br (ml/mr are folded to the engine's l/r); unknown → c (center). Read only when watermarkText is set."New value: +"Where the watermark sits on the page. Only used when there is watermark text." - added
Input schema / properties / watermarkPosition / x-uiAdded value: +{ + "labels": { + "bc": "Bottom centre", + "bl": "Bottom left", + "br": "Bottom right", + "c": "Centre", + "ml": "Middle left", + "mr": "Middle right", + "tc": "Top centre", + "tl": "Top left", + "tr": "Top right" + } +} - removed
Input schema / properties / watermarkTileRemoved value: -{ - "default": false, - "description": "NOT available here — true returns a clear error (the flatten tile path is broken in the pinned engine; run pdf_watermark, which tiles, before flattening).", - "type": "boolean" -}
- Changed
pdf_grayscale4 fields changed- added
Input schema / properties / modeAdded value: +{ + "default": "gray", + "description": "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.", + "enum": [ + "gray", + "bw" + ], + "type": "string", + "x-ui": { + "labels": { + "bw": "Pure black and white", + "gray": "Shades of grey" + } + } +} - added
Input schema / properties / outputNameAdded value: +{ + "description": "Optional name for the file you get back. Leave blank and we name it for you.", + "type": "string" +} - added
Input schema / properties / pagesAdded value: +{ + "description": "Which pages to convert, written as 3,7 or 1-5. Leave it blank to convert every page.", + "title": "Only these pages", + "type": "string" +} - added
Input schema / properties / strictAdded value: +{ + "default": false, + "description": "Refuse the job if any page could not be converted, rather than handing back a document with colour pages still in it.", + "title": "Refuse partial answers", + "type": "boolean" +}
- Changed
pdf_header_footer8 fields changed- changed
Input schema / properties / fontFamily / descriptionPrevious value: -"Exactly Helvetica, Times-Roman, or Courier (case-sensitive); anything else silently becomes Helvetica."New value: +"Typeface for the header and footer text." - changed
Input schema / properties / fontSize / descriptionPrevious value: -"Points, integer 6-20; anything outside that range (or non-integer) silently resets to 10."New value: +"Text size in points." - changed
Input schema / properties / footerAlign / descriptionPrevious value: -"left|center|right; unknown values silently become center."New value: +"Line the footer text up left, centred, or right." - changed
Input schema / properties / headerAlign / descriptionPrevious value: -"left|center|right; unknown values silently become center."New value: +"Line the header text up left, centred, or right." - changed
Input schema / properties / margin / descriptionPrevious value: -"Distance from the page edge in points, 10-100; out-of-range or non-numeric silently resets to 30."New value: +"How far in from the edge of the page the text sits, in points (72 = 1 inch)." - changed
Input schema / properties / pageNumberPosition / descriptionPrevious value: -"header or footer; anything else → footer. Only matters when pageNumbers is not 'none'."New value: +"Put the page number in the header or the footer." - added
Input schema / properties / pageNumberPosition / x-show-whenAdded value: +{ + "pageNumbers": [ + "simple", + "pageN", + "nOfTotal", + "pageNOfTotal" + ] +} - added
Input schema / properties / pageNumbers / x-uiAdded value: +{ + "labels": { + "nOfTotal": "7 of 12", + "none": "No page numbers", + "pageN": "Page 7", + "pageNOfTotal": "Page 7 of 12", + "simple": "7" + } +}
- Changed
pdf_images_to_pdf6 fields changed- added
Input schema / properties / autoOrientAdded value: +{ + "default": true, + "description": "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.", + "type": "boolean" +} - changed
Input schema / properties / files / descriptionPrevious value: -"Input files (JPG, PNG, TIFF)"New value: +"Input files (JPG, JPEG, PNG, WEBP)" - added
Input schema / properties / fitModeAdded value: +{ + "default": "contain", + "description": "How each picture sits on the page.", + "enum": [ + "contain", + "fill" + ], + "type": "string", + "x-show-when": { + "pageSize": [ + "a4", + "a4-landscape", + "letter", + "letter-landscape", + "legal", + "legal-landscape", + "a3", + "a3-landscape", + "a5", + "a5-landscape", + "tabloid", + "tabloid-landscape" + ] + }, + "x-ui": { + "labels": { + "contain": "Show the whole picture", + "fill": "Fill the page (crops the edges)" + } + } +} - added
Input schema / properties / marginAdded value: +{ + "default": 0, + "description": "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.", + "maximum": 200, + "minimum": 0, + "type": "integer", + "x-show-when": { + "pageSize": [ + "a4", + "a4-landscape", + "letter", + "letter-landscape", + "legal", + "legal-landscape", + "a3", + "a3-landscape", + "a5", + "a5-landscape", + "tabloid", + "tabloid-landscape" + ] + } +} - added
Input schema / properties / orientationAdded value: +{ + "description": "Leave blank to follow the page size you picked.", + "enum": [ + "portrait", + "landscape", + "auto" + ], + "type": "string", + "x-show-when": { + "pageSize": [ + "a4", + "a4-landscape", + "letter", + "letter-landscape", + "legal", + "legal-landscape", + "a3", + "a3-landscape", + "a5", + "a5-landscape", + "tabloid", + "tabloid-landscape" + ] + }, + "x-ui": { + "labels": { + "auto": "Match each picture", + "landscape": "Landscape", + "portrait": "Portrait" + } + } +} - added
Input schema / properties / pageSizeAdded value: +{ + "default": "fit", + "description": "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.", + "enum": [ + "fit", + "a4", + "a4-landscape", + "letter", + "letter-landscape", + "legal", + "legal-landscape", + "a3", + "a3-landscape", + "a5", + "a5-landscape", + "tabloid", + "tabloid-landscape" + ], + "type": "string", + "x-ui": { + "labels": { + "a3": "A3 portrait", + "a3-landscape": "A3 landscape", + "a4": "A4 portrait", + "a4-landscape": "A4 landscape", + "a5": "A5 portrait", + "a5-landscape": "A5 landscape", + "fit": "Fit the page to the picture", + "legal": "Legal portrait", + "legal-landscape": "Legal landscape", + "letter": "Letter portrait", + "letter-landscape": "Letter landscape", + "tabloid": "Tabloid portrait", + "tabloid-landscape": "Tabloid landscape" + } + } +}
- Changed
pdf_merge2 fields changed- changed
Input schema / properties / pageRanges / descriptionPrevious value: -"Optional per-file page selection aligned with the files order, e.g. '1-3,5'. The multipart field name is 'pageRanges[]' (with brackets)."New value: +"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." - added
Input schema / properties / pageRanges / titleAdded value: +"Pages to take from each file"
- Changed
pdf_page_numbers4 fields changed- changed
Input schema / properties / position / descriptionPrevious value: -"Short codes ONLY: bc=bottom-center, bl=bottom-left, br=bottom-right, tc=top-center, tl=top-left, tr=top-right. Long names like 'bottom-right' are NOT recognized and silently fall back to bottom-center."New value: +"Where the number sits on the page." - added
Input schema / properties / position / x-uiAdded value: +{ + "labels": { + "bc": "Bottom centre", + "bl": "Bottom left", + "br": "Bottom right", + "tc": "Top centre", + "tl": "Top left", + "tr": "Top right" + } +} - changed
Input schema / properties / start / descriptionPrevious value: -"Starting number. Field name is 'start' — not 'start_number'."New value: +"The number printed on the first numbered page." - changed
Input schema / properties / start / maximumPrevious value: -999999New value: +999
- Changed
pdf_protect9 fields changed- changed
Input schema / properties / encryption / descriptionPrevious value: -"Encryption strength."New value: +"How strongly the file is locked." - added
Input schema / properties / encryption / x-uiAdded value: +{ + "labels": { + "aes128": "AES-128 (compatible)", + "aes256": "AES-256 (strongest)" + } +} - changed
Input schema / properties / password / descriptionPrevious value: -"Sets BOTH the user and owner password. May be omitted only when userPassword or ownerPassword is provided instead."New value: +"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." - added
Input schema / properties / password / titleAdded value: +"Password" - removed
Input schema / properties / permissions / defaultRemoved value: -"print" - changed
Input schema / properties / permissions / descriptionPrevious value: -"What a reader is still allowed to do after the password is entered."New value: +"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 none of them are recognised the reader can do nothing at all, so leave this blank rather than guessing." - removed
Input schema / properties / permissions / enumRemoved value: -[ - "all", - "print", - "print,copy", - "copy", - "annotate", - "edit" -] - removed
Input schema / properties / permissions / x-uiRemoved value: -{ - "labels": { - "all": "Allow everything", - "annotate": "Commenting only", - "copy": "Copying text only", - "edit": "Editing only", - "print": "Printing only", - "print,copy": "Printing and copying text" - } -} - changed
Input schema / requiredPrevious value: -[ - "file", - "password" -]New value: +[ + "file" +]
- Changed
pdf_remove_watermark1 field changed- added
Input schema / properties / passthroughAdded value: +{ + "default": false, + "description": "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 workflow still runs.", + "title": "Carry on if there is nothing to remove", + "type": "boolean" +}
- Changed
pdf_reverse3 fields changed- added
Input schema / properties / outputNameAdded value: +{ + "description": "Optional name for the file you get back. Leave blank and we name it for you.", + "type": "string" +} - added
Input schema / properties / rangesAdded value: +{ + "description": "Reverse only these pages, written as 1-3,7-10. Leave it blank to reverse the whole document.", + "title": "Only these pages", + "type": "string" +} - added
Input schema / properties / reverseTargetAdded value: +{ + "default": "in", + "description": "Which pages the reversal applies to when you have named a range above. Ignored when no range is given.", + "enum": [ + "in", + "off" + ], + "type": "string", + "x-ui": { + "labels": { + "in": "Reverse the pages inside those ranges", + "off": "Reverse everything outside those ranges" + } + } +}
- Changed
pdf_rotate3 fields changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Page ranges e.g. '1-3,5'. Empty = ALL pages — do NOT send 'all'."New value: +"Which pages to turn, e.g. '1-3,5'. Leave blank to turn every page." - changed
Input schema / properties / rotation / descriptionPrevious value: -"Degrees clockwise. The field name is 'rotation' — not 'angle'."New value: +"How far to turn each page, clockwise." - added
Input schema / properties / rotation / x-uiAdded value: +{ + "labels": { + "180": "180° (upside down)", + "270": "90° anticlockwise", + "90": "90° clockwise" + } +}
- Changed
pdf_split5 fields changed- changed
Input schema / properties / chunkSize / descriptionPrevious value: -"Pages per chunk when mode=chunks."New value: +"How many pages go into each output file." - changed
Input schema / properties / chunkSize / maximumPrevious value: -10000New value: +100 - added
Input schema / properties / chunkSize / x-show-whenAdded value: +{ + "mode": [ + "chunks" + ] +} - changed
Input schema / properties / pages / descriptionPrevious value: -"Page range e.g. '1-3,5,7-9'. REQUIRED when mode=range (the default); ignored for other modes."New value: +"Which pages to keep, e.g. '1-3,5,7-9'." - added
Input schema / properties / pages / x-show-whenAdded value: +{ + "mode": [ + "range" + ] +}
- Changed
pdf_to_excel6 fields changed- changed
Input schema / properties / ocrLang / descriptionPrevious value: -"Any Tesseract code, passed raw to ocrmypdf -l (default eng). Read only when ocrFirst=true; on OCR failure extraction continues un-OCR'd."New value: +"The language of the writing in the scan." - added
Input schema / properties / ocrLang / x-show-whenAdded value: +{ + "ocrFirst": [ + "true" + ] +} - added
Input schema / properties / ocrLang / x-uiAdded value: +{ + "labels": { + "ara": "Arabic", + "chi_sim": "Chinese (Simplified)", + "deu": "German", + "eng": "English", + "fra": "French", + "hin": "Hindi", + "ita": "Italian", + "jpn": "Japanese", + "kor": "Korean", + "nld": "Dutch", + "pol": "Polish", + "por": "Portuguese", + "rus": "Russian", + "spa": "Spanish" + } +} - changed
Input schema / properties / sheetMode / descriptionPrevious value: -"XLSX sheet strategy. CSV/TSV/JSON ignore this."New value: +"How the tables are laid out across the workbook's sheets." - added
Input schema / properties / sheetMode / x-show-whenAdded value: +{ + "format": [ + "xlsx" + ] +} - added
Input schema / properties / sheetMode / x-uiAdded value: +{ + "labels": { + "per-page": "One sheet per page", + "per-table": "One sheet per table", + "single": "Everything on one sheet" + } +}
- Changed
pdf_to_excel_batch6 fields changed- changed
Input schema / properties / ocrLang / descriptionPrevious value: -"Any Tesseract code, passed raw to ocrmypdf -l (default eng). Read only when ocrFirst=true; on OCR failure extraction continues un-OCR'd."New value: +"The language of the writing in the scan." - added
Input schema / properties / ocrLang / x-show-whenAdded value: +{ + "ocrFirst": [ + "true" + ] +} - added
Input schema / properties / ocrLang / x-uiAdded value: +{ + "labels": { + "ara": "Arabic", + "chi_sim": "Chinese (Simplified)", + "deu": "German", + "eng": "English", + "fra": "French", + "hin": "Hindi", + "ita": "Italian", + "jpn": "Japanese", + "kor": "Korean", + "nld": "Dutch", + "pol": "Polish", + "por": "Portuguese", + "rus": "Russian", + "spa": "Spanish" + } +} - changed
Input schema / properties / sheetMode / descriptionPrevious value: -"XLSX sheet strategy. CSV/TSV/JSON ignore this."New value: +"How the tables are laid out across the workbook's sheets." - added
Input schema / properties / sheetMode / x-show-whenAdded value: +{ + "format": [ + "xlsx" + ] +} - added
Input schema / properties / sheetMode / x-uiAdded value: +{ + "labels": { + "per-page": "One sheet per page", + "per-table": "One sheet per table", + "single": "Everything on one sheet" + } +}
- Changed
pdf_to_excel_inspect6 fields changed- changed
Input schema / properties / ocrFirst / descriptionPrevious value: -"Run OCR before table extraction (scanned PDFs)."New value: +"Accepted but ignored by the inspector — run pdf_ocr first, then inspect." - added
Input schema / properties / ocrFirst / x-show-whenAdded value: +{ + "engine": [ + "__never" + ] +} - changed
Input schema / properties / ocrLang / descriptionPrevious value: -"OCR language (Tesseract code)."New value: +"Accepted but ignored by the inspector - it never runs OCR. Run PDF OCR first, then inspect." - added
Input schema / properties / ocrLang / x-show-whenAdded value: +{ + "engine": [ + "__never" + ] +} - changed
Input schema / properties / tableIndexes / descriptionPrevious value: -"Comma-separated 0-based table indexes to keep. Empty = all tables."New value: +"Accepted but ignored by the inspector - its whole job is to report every table so you can choose indexes on PDF to Excel afterwards." - added
Input schema / properties / tableIndexes / x-show-whenAdded value: +{ + "engine": [ + "__never" + ] +}
- Changed
pdf_to_images30 fields changed- changed
Input schema / properties / avifQuality / descriptionPrevious value: -"AVIF quality (Starter+)"New value: +"Higher keeps more detail and makes a bigger file." - added
Input schema / properties / avifQuality / x-show-whenAdded value: +{ + "format": [ + "avif" + ] +} - changed
Input schema / properties / backgroundColor / descriptionPrevious value: -"Background for transparent PDFs rendered to non-alpha formats"New value: +"What fills the see-through parts of the page in a format that cannot keep them." - added
Input schema / properties / backgroundColor / x-show-whenAdded value: +{ + "format": [ + "jpg", + "webp" + ] +} - changed
Input schema / properties / jpegQuality / descriptionPrevious value: -"Consulted only when format=jpg. Out-of-range clamps silently to 50-95 — this is not a 0-100 scale."New value: +"Higher keeps more detail and makes a bigger file. 50 is the lowest this tool will go." - added
Input schema / properties / jpegQuality / x-show-whenAdded value: +{ + "format": [ + "jpg", + "tiff" + ] +} - changed
Input schema / properties / maxWidth / descriptionPrevious value: -"Cap width (shrink-only, preserves aspect)"New value: +"Shrink-only width cap in pixels, aspect preserved. Leave blank for no cap — an explicit 0 clamps UP to 100 and shrinks every page." - changed
Input schema / properties / preset / descriptionPrevious value: -"One-click preset bundle. Explicit fields override preset values."New value: +"A ready-made bundle of settings. Anything you set yourself wins over the preset." - changed
Input schema / properties / preset / enumPrevious value: -[ - "", - "web", - "print", - "email", - "archive" -]New value: +[ + "web", + "print", + "email", + "archive" +] - added
Input schema / properties / preset / x-uiAdded value: +{ + "labels": { + "archive": "For keeping (PNG, 300 DPI)", + "email": "For emailing (JPG, 150 DPI)", + "print": "For printing (PNG, 300 DPI)", + "web": "For a web page (WEBP, 96 DPI)" + } +} - changed
Input schema / properties / sheetBackground / descriptionPrevious value: -"Canvas color behind tiles, sheet/filmstrip modes only. #rgb or #rrggbb; invalid hex silently keeps #FFFFFF."New value: +"Colour of the canvas behind the tiles, as #rgb or #rrggbb. Anything we cannot read stays white." - added
Input schema / properties / sheetBackground / titleAdded value: +"Sheet background colour" - added
Input schema / properties / sheetBackground / x-show-whenAdded value: +{ + "mode": [ + "sheet", + "filmstrip" + ] +} - changed
Input schema / properties / sheetColumns / descriptionPrevious value: -"mode=sheet only — filmstrip is always one row. Out-of-range clamps silently to 1-10."New value: +"How many pages sit side by side on the contact sheet." - added
Input schema / properties / sheetColumns / x-show-whenAdded value: +{ + "mode": [ + "sheet" + ] +} - changed
Input schema / properties / sheetGap / descriptionPrevious value: -"Pixel spacing between tiles in sheet/filmstrip modes. Out-of-range clamps silently to 0-200."New value: +"Spacing between the tiles, in pixels." - added
Input schema / properties / sheetGap / x-show-whenAdded value: +{ + "mode": [ + "sheet", + "filmstrip" + ] +} - changed
Input schema / properties / tiffCompression / descriptionPrevious value: -"TIFF compression (format=tiff only)."New value: +"How the TIFF is packed down." - added
Input schema / properties / tiffCompression / x-show-whenAdded value: +{ + "format": [ + "tiff" + ] +} - added
Input schema / properties / tiffCompression / x-uiAdded value: +{ + "labels": { + "g4": "Group 4 (black and white)", + "jpeg": "JPEG (smaller, lossy)", + "lzw": "LZW (lossless, default)", + "none": "None (largest)", + "packbits": "PackBits (lossless)", + "zip": "ZIP (lossless)" + } +} - changed
Input schema / properties / transparent / descriptionPrevious value: -"PNG alpha channel when true"New value: +"Leave the paper see-through instead of white." - added
Input schema / properties / transparent / x-show-whenAdded value: +{ + "colorMode": [ + "rgb" + ], + "format": [ + "png", + "webp", + "avif" + ] +} - changed
Input schema / properties / watermarkPosition / descriptionPrevious value: -"Unknown codes silently become c (center). Does nothing unless watermarkText is set."New value: +"Where the stamp sits on each image." - added
Input schema / properties / watermarkPosition / x-uiAdded value: +{ + "labels": { + "bc": "Bottom centre", + "bl": "Bottom left", + "br": "Bottom right", + "c": "Centre", + "ml": "Middle left", + "mr": "Middle right", + "tc": "Top centre", + "tl": "Top left", + "tr": "Top right" + } +} - changed
Input schema / properties / watermarkScale / descriptionPrevious value: -"ACCEPTED BUT UNUSED in this tool — the raster stamp sizes by watermarkFontSize only; set that instead."New value: +"Not used by this tool — size the stamp with Watermark font size." - added
Input schema / properties / watermarkScale / x-show-whenAdded value: +{ + "mode": [ + "__never" + ] +} - changed
Input schema / properties / watermarkTile / descriptionPrevious value: -"ACCEPTED BUT UNUSED in this tool — no tiling on rasterized pages; the stamp renders once at watermarkPosition."New value: +"Not used by this tool - a rasterised page is stamped once, where Watermark position says." - added
Input schema / properties / watermarkTile / x-show-whenAdded value: +{ + "mode": [ + "__never" + ] +} - changed
Input schema / properties / webpQuality / descriptionPrevious value: -"Consulted only when format=webp. Out-of-range clamps silently to 50-95 — this is not a 0-100 scale."New value: +"Higher keeps more detail and makes a bigger file." - added
Input schema / properties / webpQuality / x-show-whenAdded value: +{ + "format": [ + "webp" + ] +}
- Changed
pdf_to_images_batch30 fields changed- changed
Input schema / properties / avifQuality / descriptionPrevious value: -"AVIF quality (Starter+)"New value: +"Higher keeps more detail and makes a bigger file." - added
Input schema / properties / avifQuality / x-show-whenAdded value: +{ + "format": [ + "avif" + ] +} - changed
Input schema / properties / backgroundColor / descriptionPrevious value: -"Background for transparent PDFs rendered to non-alpha formats"New value: +"What fills the see-through parts of the page in a format that cannot keep them." - added
Input schema / properties / backgroundColor / x-show-whenAdded value: +{ + "format": [ + "jpg", + "webp" + ] +} - changed
Input schema / properties / jpegQuality / descriptionPrevious value: -"Consulted only when format=jpg. Out-of-range clamps silently to 50-95 — this is not a 0-100 scale."New value: +"Higher keeps more detail and makes a bigger file. 50 is the lowest this tool will go." - added
Input schema / properties / jpegQuality / x-show-whenAdded value: +{ + "format": [ + "jpg", + "tiff" + ] +} - changed
Input schema / properties / maxWidth / descriptionPrevious value: -"Cap width (shrink-only, preserves aspect)"New value: +"Shrink-only width cap in pixels, aspect preserved. Leave blank for no cap — an explicit 0 clamps UP to 100 and shrinks every page." - changed
Input schema / properties / preset / descriptionPrevious value: -"One-click preset bundle. Explicit fields override preset values."New value: +"A ready-made bundle of settings. Anything you set yourself wins over the preset." - changed
Input schema / properties / preset / enumPrevious value: -[ - "", - "web", - "print", - "email", - "archive" -]New value: +[ + "web", + "print", + "email", + "archive" +] - added
Input schema / properties / preset / x-uiAdded value: +{ + "labels": { + "archive": "For keeping (PNG, 300 DPI)", + "email": "For emailing (JPG, 150 DPI)", + "print": "For printing (PNG, 300 DPI)", + "web": "For a web page (WEBP, 96 DPI)" + } +} - changed
Input schema / properties / sheetBackground / descriptionPrevious value: -"Canvas color behind tiles, sheet/filmstrip modes only. #rgb or #rrggbb; invalid hex silently keeps #FFFFFF."New value: +"Colour of the canvas behind the tiles, as #rgb or #rrggbb. Anything we cannot read stays white." - added
Input schema / properties / sheetBackground / titleAdded value: +"Sheet background colour" - added
Input schema / properties / sheetBackground / x-show-whenAdded value: +{ + "mode": [ + "sheet", + "filmstrip" + ] +} - changed
Input schema / properties / sheetColumns / descriptionPrevious value: -"mode=sheet only — filmstrip is always one row. Out-of-range clamps silently to 1-10."New value: +"How many pages sit side by side on the contact sheet." - added
Input schema / properties / sheetColumns / x-show-whenAdded value: +{ + "mode": [ + "sheet" + ] +} - changed
Input schema / properties / sheetGap / descriptionPrevious value: -"Pixel spacing between tiles in sheet/filmstrip modes. Out-of-range clamps silently to 0-200."New value: +"Spacing between the tiles, in pixels." - added
Input schema / properties / sheetGap / x-show-whenAdded value: +{ + "mode": [ + "sheet", + "filmstrip" + ] +} - changed
Input schema / properties / tiffCompression / descriptionPrevious value: -"TIFF compression (format=tiff only)."New value: +"How the TIFF is packed down." - added
Input schema / properties / tiffCompression / x-show-whenAdded value: +{ + "format": [ + "tiff" + ] +} - added
Input schema / properties / tiffCompression / x-uiAdded value: +{ + "labels": { + "g4": "Group 4 (black and white)", + "jpeg": "JPEG (smaller, lossy)", + "lzw": "LZW (lossless, default)", + "none": "None (largest)", + "packbits": "PackBits (lossless)", + "zip": "ZIP (lossless)" + } +} - changed
Input schema / properties / transparent / descriptionPrevious value: -"PNG alpha channel when true"New value: +"Leave the paper see-through instead of white." - added
Input schema / properties / transparent / x-show-whenAdded value: +{ + "colorMode": [ + "rgb" + ], + "format": [ + "png", + "webp", + "avif" + ] +} - changed
Input schema / properties / watermarkPosition / descriptionPrevious value: -"Unknown codes silently become c (center). Does nothing unless watermarkText is set."New value: +"Where the stamp sits on each image." - added
Input schema / properties / watermarkPosition / x-uiAdded value: +{ + "labels": { + "bc": "Bottom centre", + "bl": "Bottom left", + "br": "Bottom right", + "c": "Centre", + "ml": "Middle left", + "mr": "Middle right", + "tc": "Top centre", + "tl": "Top left", + "tr": "Top right" + } +} - changed
Input schema / properties / watermarkScale / descriptionPrevious value: -"ACCEPTED BUT UNUSED in this tool — the raster stamp sizes by watermarkFontSize only; set that instead."New value: +"Not used by this tool — size the stamp with Watermark font size." - added
Input schema / properties / watermarkScale / x-show-whenAdded value: +{ + "mode": [ + "__never" + ] +} - changed
Input schema / properties / watermarkTile / descriptionPrevious value: -"ACCEPTED BUT UNUSED in this tool — no tiling on rasterized pages; the stamp renders once at watermarkPosition."New value: +"Not used by this tool - a rasterised page is stamped once, where Watermark position says." - added
Input schema / properties / watermarkTile / x-show-whenAdded value: +{ + "mode": [ + "__never" + ] +} - changed
Input schema / properties / webpQuality / descriptionPrevious value: -"Consulted only when format=webp. Out-of-range clamps silently to 50-95 — this is not a 0-100 scale."New value: +"Higher keeps more detail and makes a bigger file." - added
Input schema / properties / webpQuality / x-show-whenAdded value: +{ + "format": [ + "webp" + ] +}
- Changed
pdf_watermark8 fields changed- changed
Input schema / properties / color / descriptionPrevious value: -"Hex color #rgb or #rrggbb (mode=text)."New value: +"Colour of the lettering. Hex, #rgb or #rrggbb." - added
Input schema / properties / color / x-show-whenAdded value: +{ + "mode": [ + "text" + ] +} - changed
Input schema / properties / fontFamily / descriptionPrevious value: -"Outside the enum it silently becomes Helvetica. All three are Latin-1 — non-Latin text is refused 400 (use mode=image)."New value: +"Lettering style. Latin alphabet only — for other scripts stamp an image instead." - added
Input schema / properties / fontFamily / x-show-whenAdded value: +{ + "mode": [ + "text" + ] +} - changed
Input schema / properties / fontSize / descriptionPrevious value: -"Point size on the page (mode=text only). Non-integer input silently resets to 48."New value: +"Height of the lettering in points." - added
Input schema / properties / fontSize / x-show-whenAdded value: +{ + "mode": [ + "text" + ] +} - changed
Input schema / properties / text / descriptionPrevious value: -"Watermark text (used when mode=text)."New value: +"The wording stamped across each page." - added
Input schema / properties / text / x-show-whenAdded value: +{ + "mode": [ + "text" + ] +}
- Changed
photo_bg_remover5 fields changed- added
Input schema / properties / alpha_mattingAdded value: +{ + "default": false, + "description": "Re-solves hair, fur and glass edges as a soft fade instead of a hard cut. Slower and uses more memory.", + "title": "Soften the edges", + "type": "boolean" +} - added
Input schema / properties / alpha_matting_background_thresholdAdded value: +{ + "default": 10, + "description": "How certain a pixel must be to count as definitely background. Only used when edge softening is on. Values outside 0-255 are pulled back into range.", + "maximum": 255, + "minimum": 0, + "type": "integer", + "x-show-when": { + "alpha_matting": [ + "true" + ] + } +} - added
Input schema / properties / alpha_matting_erode_sizeAdded value: +{ + "default": 10, + "description": "Width of the band around the subject that gets re-solved. Only used when edge softening is on. Values outside 0-64 are pulled back into range.", + "maximum": 64, + "minimum": 0, + "type": "integer", + "x-show-when": { + "alpha_matting": [ + "true" + ] + } +} - added
Input schema / properties / alpha_matting_foreground_thresholdAdded value: +{ + "default": 240, + "description": "How certain a pixel must be to count as definitely the subject. Only used when edge softening is on. Values outside 0-255 are pulled back into range.", + "maximum": 255, + "minimum": 0, + "type": "integer", + "x-show-when": { + "alpha_matting": [ + "true" + ] + } +} - added
Input schema / properties / model / x-uiAdded value: +{ + "labels": { + "isnet-general-use": "Fine detail (slower)", + "u2net": "Standard", + "u2net_human_seg": "People and portraits" + } +}
- Changed
photo_collage15 fields changed- added
Input schema / properties / aspect_ratio / defaultAdded value: +"1:1" - added
Input schema / properties / aspect_ratio / x-show-whenAdded value: +{ + "layout_mode": [ + "smart", + "grid_legacy" + ] +} - added
Input schema / properties / layout / defaultAdded value: +"2x2" - changed
Input schema / properties / layout / descriptionPrevious value: -"Legacy NxM grid, e.g. 2x2, 3x3 (layout_mode=grid_legacy)."New value: +"A plain grid, written as columns then rows." - added
Input schema / properties / layout / enumAdded value: +[ + "1x2", + "2x1", + "2x2", + "2x3", + "3x2", + "3x3", + "4x4" +] - added
Input schema / properties / layout / x-show-whenAdded value: +{ + "layout_mode": [ + "grid_legacy" + ] +} - added
Input schema / properties / output_long_edge / defaultAdded value: +1200 - changed
Input schema / properties / output_width / descriptionPrevious value: -"Legacy alias for output_long_edge."New value: +"Older name for the setting above. Set the longest side instead; this is only used if that one is left empty." - added
Input schema / properties / quality / defaultAdded value: +90 - changed
Input schema / properties / quality / minimumPrevious value: -0New value: +1 - added
Input schema / properties / quality / x-show-whenAdded value: +{ + "output_format": [ + "jpg", + "webp", + "avif" + ] +} - changed
Input schema / properties / template / descriptionPrevious value: -"Named template (layout_mode=template), e.g. ig_post_2x2, ig_story_3_vertical, magazine_5_hero."New value: +"Named template (layout_mode=template), e.g. ig_post_2x2, ig_story_3_vertical, ig_post_5_magazine." - added
Input schema / properties / template / enumAdded value: +[ + "ig_post_2x2", + "ig_post_hero_3", + "ig_post_5_magazine", + "ig_story_3_vertical", + "ig_story_hero_4", + "ig_carousel_4_split", + "pinterest_3_stack", + "landscape_3up_equal", + "landscape_hero_2_offset", + "landscape_film_strip", + "square_diptych", + "square_triptych_top_2_bottom_1" +] - added
Input schema / properties / template / x-show-whenAdded value: +{ + "layout_mode": [ + "template" + ] +} - added
Input schema / properties / template / x-uiAdded value: +{ + "labels": { + "ig_carousel_4_split": "Carousel — quad split", + "ig_post_2x2": "Instagram post — 2x2", + "ig_post_5_magazine": "Magazine — 5 photos", + "ig_post_hero_3": "Instagram post — hero + 3", + "ig_story_3_vertical": "Story — 3 stacked", + "ig_story_hero_4": "Story — hero + 4 strip", + "landscape_3up_equal": "Landscape — 3 equal columns", + "landscape_film_strip": "Landscape — 5 film strip", + "landscape_hero_2_offset": "Landscape — hero + 2 stacked", + "pinterest_3_stack": "Pinterest — 3 stack", + "square_diptych": "Diptych — side by side", + "square_triptych_top_2_bottom_1": "Triptych — 2 over 1" + } +}
- Changed
photo_compress_to_size4 fields changed- changed
Input schema / properties / output_format / descriptionPrevious value: -"Optional output format, e.g. jpg, png, webp. HEIC/HEIF inputs default to jpg output."New value: +"What to save it as. Leave blank to keep the format it came in as - except HEIC and HEIF pictures, which always come back as JPG. Squeezing to a size needs a format that compresses, which is why BMP and GIF are not offered." - added
Input schema / properties / output_format / enumAdded value: +[ + "jpg", + "png", + "webp" +] - added
Input schema / properties / target_size_kb / defaultAdded value: +500 - changed
Input schema / properties / target_size_kb / maximumPrevious value: -524288New value: +25600
- Changed
photo_face_blur7 fields changed- changed
Input schema / properties / block_size / descriptionPrevious value: -"Pixelate block size override. 0 = auto from blur_strength."New value: +"Size of each mosaic square. 0 uses the amount chosen above; 1 is ignored, use 2 or more." - added
Input schema / properties / block_size / x-show-whenAdded value: +{ + "blur_mode": [ + "pixelate" + ] +} - added
Input schema / properties / blur_radius / x-show-whenAdded value: +{ + "blur_mode": [ + "gaussian" + ] +} - added
Input schema / properties / blur_strength / x-show-whenAdded value: +{ + "blur_mode": [ + "gaussian", + "pixelate" + ] +} - changed
Input schema / properties / manual_faces / descriptionPrevious value: -"Optional JSON array of manual face rectangles to blur."New value: +"Advanced: extra rectangles to blur even if no face was found there, as [{\"x\":10,\"y\":20,\"w\":80,\"h\":80}] in pixels." - added
Input schema / properties / output_format / enumAdded value: +[ + "jpg", + "png", + "webp", + "bmp" +] - changed
Input schema / properties / selected_faces / descriptionPrevious value: -"Optional JSON array of detected-face indexes to blur (default: all)."New value: +"Advanced: which detected faces to blur, as a list of numbers starting at 0, e.g. [0,2]. Leave empty to blur every face found."
- Changed
photo_flip_rotate2 fields changed- added
Input schema / properties / action / x-uiAdded value: +{ + "labels": { + "custom": "Rotate by an exact angle", + "flip-h": "Flip left to right", + "flip-v": "Flip top to bottom", + "rotate180": "Rotate 180°", + "rotate270": "Rotate 90° left", + "rotate90": "Rotate 90° right" + } +} - added
Input schema / properties / degrees / x-show-whenAdded value: +{ + "action": [ + "custom" + ] +}
- Changed
photo_image_overlay1 field changed- added
Input schema / properties / output_format / enumAdded value: +[ + "jpg", + "png", + "webp", + "bmp" +]
- Changed
photo_image_splitter1 field changed- added
Input schema / properties / output_format / enumAdded value: +[ + "jpg", + "png", + "webp", + "bmp" +]
- Changed
photo_meme_generator2 fields changed- changed
Input schema / properties / font_size / descriptionPrevious value: -"'auto' or a pixel size."New value: +"Caption size in pixels, or the word auto to size it from the picture (a tenth of its height, kept between 20 and 150). A number outside 10 to 200 is treated as auto." - changed
Input schema / properties / output_format / enumPrevious value: -[ - "jpg", - "jpeg", - "png", - "webp" -]New value: +[ + "jpg", + "png", + "webp" +]
- Changed
photo_noise_reducer4 fields changed- added
Input schema / properties / mode / x-uiAdded value: +{ + "labels": { + "auto": "Balanced", + "dctdnoiz": "Best for JPEG blockiness (slow)", + "despeckle": "Gentle speckle removal", + "gaussian": "Soft blur", + "luminance": "Keep colour, smooth brightness", + "median": "Speckle removal", + "nlmeans": "Best quality (slow)", + "smart": "Let the tool decide" + } +} - added
Input schema / properties / sharpen / x-show-whenAdded value: +{ + "mode": [ + "auto", + "median", + "despeckle", + "gaussian", + "luminance", + "nlmeans", + "dctdnoiz" + ] +} - added
Input schema / properties / strength / x-show-whenAdded value: +{ + "mode": [ + "auto", + "median", + "despeckle", + "gaussian", + "luminance", + "nlmeans", + "dctdnoiz" + ] +} - added
Input schema / properties / strength / x-uiAdded value: +{ + "labels": { + "1": "Light", + "2": "Medium", + "3": "Strong", + "4": "Maximum" + } +}
- Changed
photo_resize10 fields changed- changed
Input schema / properties / bg_color / descriptionPrevious value: -"Canvas background color (mode=canvas)."New value: +"Colour of the padding added around the picture when it does not fill the canvas." - added
Input schema / properties / bg_color / x-show-whenAdded value: +{ + "mode": [ + "canvas" + ] +} - added
Input schema / properties / force_exact / x-show-whenAdded value: +{ + "mode": [ + "dimensions" + ] +} - added
Input schema / properties / height / x-show-whenAdded value: +{ + "mode": [ + "dimensions", + "height", + "canvas" + ] +} - added
Input schema / properties / maintain_ratio / x-show-whenAdded value: +{ + "mode": [ + "dimensions" + ] +} - added
Input schema / properties / mode / x-uiAdded value: +{ + "labels": { + "canvas": "Pad to an exact canvas", + "dimensions": "Exact width and height", + "height": "Fit to a height", + "max": "Fit inside a box (never enlarge)", + "percentage": "Scale by percent", + "width": "Fit to a width" + } +} - changed
Input schema / properties / percentage / descriptionPrevious value: -"Scale percentage — REQUIRED when mode=percentage."New value: +"Scale to this percent of the original size." - added
Input schema / properties / percentage / x-show-whenAdded value: +{ + "mode": [ + "percentage" + ] +} - changed
Input schema / properties / width / descriptionPrevious value: -"Target width px. In the default 'dimensions' mode at least one of width/height is REQUIRED; also required for width/max/canvas modes."New value: +"Target width in pixels. In 'Fit inside a box' mode this is the longest side the picture may reach." - added
Input schema / properties / width / x-show-whenAdded value: +{ + "mode": [ + "dimensions", + "width", + "max", + "canvas" + ] +}
- Changed
photo_shadow_adder2 fields changed- changed
Input schema / properties / output_format / descriptionPrevious value: -"Optional output format."New value: +"Leave blank to keep the format it came in as. Only PNG keeps the area around the shadow see-through; JPG and WebP are flattened onto white." - added
Input schema / properties / output_format / enumAdded value: +[ + "png", + "jpg", + "webp" +]
- Changed
photo_to_text3 fields changed- added
Input schema / properties / binarizeAdded value: +{ + "default": false, + "description": "Force the picture to pure black and white before reading it. Off by default because it destroys text in uneven light; try it on faint or washed-out scans.", + "title": "Force black and white", + "type": "boolean" +} - added
Input schema / properties / binarize_thresholdAdded value: +{ + "default": 60, + "description": "The cut-off between black and white, as a percent. Lower keeps more of the picture black. Only used when black and white is forced on; anything outside 1-99 quietly reverts to 60.", + "maximum": 99, + "minimum": 1, + "type": "integer", + "x-show-when": { + "binarize": [ + "true" + ] + } +} - changed
Input schema / properties / languages / descriptionPrevious value: -"Comma-separated ISO-639-1 codes, e.g. 'en' or 'en,fr'. Supported: en, fr, de, es, pt, it, zh, ja, ar, ru, ko, nl. Field name is 'languages' — not 'language'; Tesseract codes like 'eng' are NOT recognized."New value: +"Which language or languages the writing is in, as two-letter codes. One, or several separated by commas: en, or en,fr. Common ones are en, fr, de, es, pt, it, nl, ru, ar, zh, ja, ko. Field name is languages, not language, and Tesseract-style codes like eng are not recognised."
- Changed
photo_upscaler2 fields changed- added
Input schema / properties / model / x-uiAdded value: +{ + "labels": { + "fast": "Fast — about 15 seconds", + "quality": "Best detail — up to 4 minutes" + } +} - changed
Input schema / properties / output_format / enumPrevious value: -[ - "jpg", - "jpeg", - "png", - "webp" -]New value: +[ + "jpg", + "png", + "webp" +]
- Changed
photo_watermark4 fields changed- added
Input schema / properties / colorAdded value: +{ + "default": "#ffffff", + "description": "A hex colour, or one of white, black, gray, red, orange, yellow, green, blue, cyan, magenta, purple, pink, brown. Anything else falls back to white.", + "title": "Watermark colour", + "type": "string" +} - added
Input schema / properties / position / x-uiAdded value: +{ + "labels": { + "Center": "Middle centre", + "East": "Middle right", + "North": "Top centre", + "NorthEast": "Top right", + "NorthWest": "Top left", + "South": "Bottom centre", + "SouthEast": "Bottom right", + "SouthWest": "Bottom left", + "West": "Middle left" + } +} - added
Input schema / properties / stroke_colorAdded value: +{ + "description": "The outline behind the text, which is what keeps a watermark readable over a white dress or a black suit. Leave it unset and it is picked for you - black behind a light colour, white behind a dark one. Same colour names as above.", + "title": "Outline colour", + "type": "string" +} - added
Input schema / properties / stroke_widthAdded value: +{ + "default": "auto", + "description": "How thick the outline behind the text is. Leave it on auto and it scales with the text size. 0 turns the outline off; otherwise a whole number up to 20 - anything larger is treated as 20.", + "title": "Outline thickness", + "type": "string" +}
- Changed
web_extract_table9 fields changed- changed
Input schema / properties / acknowledge_robots / descriptionPrevious value: -"Business+ only: proceed even when robots.txt disallows the page."New value: +"Business plan: read the table even when the site's robots.txt asks bots to stay away. On any other plan this switch does nothing and the page is still refused." - changed
Input schema / properties / output / descriptionPrevious value: -"Both values return a JSON envelope: 'json' puts a rows matrix in 'rows'; 'csv' puts one CSV string in the 'csv' field — never a file."New value: +"How the table comes back: JSON gives rows you can feed to the next step, CSV gives one block of comma-separated text. Either way it is data, not a downloadable file." - changed
Input schema / properties / table_index / descriptionPrevious value: -"0-based table index"New value: +"Which table on the page, counting from 0 for the first one. If the page has fewer tables than this, the error tells you how many it found." - added
Input schema / properties / table_index / maximumAdded value: +50 - added
Input schema / properties / table_index / minimumAdded value: +0 - added
Input schema / properties / timeout_ms / defaultAdded value: +30000 - changed
Input schema / properties / timeout_ms / descriptionPrevious value: -"Optional fetch timeout override in milliseconds."New value: +"How long to wait for the page before giving up, in milliseconds (30000 = 30 seconds)." - changed
Input schema / properties / timeout_ms / minimumPrevious value: -1New value: +1000 - changed
Input schema / properties / user_agent / descriptionPrevious value: -"Optional custom User-Agent header."New value: +"Advanced: how we introduce ourselves to the site. Left blank we identify as JohnsEssentialsBot."
- Changed
web_fetch5 fields changed- changed
Input schema / properties / acknowledge_robots / descriptionPrevious value: -"Business+ only: proceed even when robots.txt disallows the page."New value: +"Business plan only: fetch the page even when the site's rules file (robots.txt) asks crawlers to stay away. On other plans this switch has no effect." - added
Input schema / properties / timeout_ms / defaultAdded value: +30000 - changed
Input schema / properties / timeout_ms / descriptionPrevious value: -"Optional fetch timeout override in milliseconds."New value: +"How long to wait for the page before giving up, in milliseconds (30000 = 30 seconds)." - changed
Input schema / properties / timeout_ms / minimumPrevious value: -1New value: +1000 - changed
Input schema / properties / user_agent / descriptionPrevious value: -"Optional custom User-Agent header."New value: +"What to tell the site we are. Leave blank and we identify honestly as JohnsEssentialsBot/1.0."
- Changed
web_scrape_page8 fields changed- changed
Input schema / properties / acknowledge_robots / descriptionPrevious value: -"Business+ only: proceed even when robots.txt disallows the page."New value: +"Business plan: scrape the page even when the site's robots.txt asks bots to stay away. On any other plan this switch does nothing and the page is still refused." - changed
Input schema / properties / mode / descriptionPrevious value: -"Chooses the response shape: selectors returns per-key text under 'data'; readability returns the article object under 'article'."New value: +"Readability gives you the page's main article as clean text. Selectors gives you only the specific bits you name below." - changed
Input schema / properties / selectors / descriptionPrevious value: -"key → CSS selector map — REQUIRED (non-empty) when mode=selectors"New value: +"One CSS selector per thing you want, named: {\"headline\": \"h1\", \"price\": \".price\"}. Needed only when you pick Selectors above." - added
Input schema / properties / selectors / x-show-whenAdded value: +{ + "mode": [ + "selectors" + ] +} - added
Input schema / properties / timeout_ms / defaultAdded value: +30000 - changed
Input schema / properties / timeout_ms / descriptionPrevious value: -"Optional fetch timeout override in milliseconds."New value: +"How long to wait for the page before giving up, in milliseconds (30000 = 30 seconds)." - changed
Input schema / properties / timeout_ms / minimumPrevious value: -1New value: +1000 - changed
Input schema / properties / user_agent / descriptionPrevious value: -"Optional custom User-Agent header."New value: +"Advanced: how we introduce ourselves to the site. Left blank we identify as JohnsEssentialsBot."
9 tool updates
- Changed
analyze_word_count1 field changed- changed
Input schema / requiredPrevious value: -[ - "text" -]New value: +[]
- Changed
convert_file4 fields changed- changed
Input schema / properties / from / descriptionPrevious value: -"Source format, e.g. 'jpg', 'mp3', 'docx'. OPTIONAL — leave it out and we read the format from the file's own bytes. Only worth setting when the bytes are ambiguous or the file has a synthetic name."New value: +"Leave blank and we read the format from the file itself. Only set it if the file has no name or an odd one." - added
Input schema / properties / from / enumAdded value: +[ + "jpg", + "png", + "webp", + "bmp", + "tiff", + "gif", + "avif", + "ico", + "heic", + "svg", + "psd", + "mp3", + "wav", + "ogg", + "opus", + "flac", + "m4a", + "aac", + "wma", + "aiff", + "alac", + "mp4", + "mov", + "webm", + "mkv", + "avi", + "flv", + "wmv", + "3gp", + "mpg", + "vob", + "ts", + "m2ts", + "srt", + "vtt", + "docx", + "doc", + "txt", + "cbz" +] - changed
Input schema / properties / to / descriptionPrevious value: -"Target format, e.g. 'png', 'pdf', 'mp3'."New value: +"The format you want back. Apple Lossless (alac) is delivered as a .m4a file." - added
Input schema / properties / to / enumAdded value: +[ + "pdf", + "jpg", + "png", + "webp", + "bmp", + "tiff", + "gif", + "avif", + "ico", + "mp3", + "wav", + "ogg", + "opus", + "flac", + "m4a", + "aac", + "wma", + "aiff", + "alac", + "mp4", + "mov", + "webm", + "mkv", + "avi", + "srt", + "vtt", + "txt", + "3gp", + "flv", + "m2ts", + "mpg", + "ts", + "vob", + "wmv" +]
- Changed
convert_text6 fields changed- added
Input schema / properties / from / defaultAdded value: +"md" - changed
Input schema / properties / from / descriptionPrevious value: -"Source format or operation: md, html, csv, json, xml, yaml — or base64_encode, base64_decode, url_encode, url_decode (the operation rides in 'from')."New value: +"What the text is now — or the encoding job to run (Base64 / URL encode and decode ride in this field)." - added
Input schema / properties / from / enumAdded value: +[ + "md", + "html", + "csv", + "json", + "xml", + "yaml", + "base64_encode", + "base64_decode", + "url_encode", + "url_decode" +] - added
Input schema / properties / to / defaultAdded value: +"html" - changed
Input schema / properties / to / descriptionPrevious value: -"Target format: html, md, json, csv, xml, yaml, txt. Must differ from 'from'. Supported pairs: md↔html, csv→json/xml, json↔csv, json↔xml, json↔yaml, xml→json, any→txt; for encode/decode operations set to='txt'."New value: +"What you want back. Must differ from the source. Supported pairs: Markdown↔HTML, CSV→JSON/XML, JSON↔CSV, JSON↔XML, JSON↔YAML, XML→JSON, and anything→plain text." - added
Input schema / properties / to / enumAdded value: +[ + "html", + "md", + "json", + "csv", + "xml", + "yaml", + "txt" +]
- Changed
convert_unit_convert7 fields changed- added
Input schema / properties / category / defaultAdded value: +"length" - changed
Input schema / properties / category / descriptionPrevious value: -"One of: length, weight, area, volume, speed, time, data, temperature. Anything else = 400."New value: +"What kind of measurement this is. Pick this first — it decides which units are available." - added
Input schema / properties / category / enumAdded value: +[ + "length", + "weight", + "area", + "volume", + "speed", + "time", + "data", + "temperature" +] - changed
Input schema / properties / from / descriptionPrevious value: -"Full snake_case name ('kilometer', 'mile_per_hour'), not symbols. Temperature units aren't validated — a typo returns garbage."New value: +"The unit you have. It must belong to the kind of measurement chosen above. Data sizes are the computing kind (1 kilobyte = 1024 bytes)." - added
Input schema / properties / from / enumAdded value: +[ + "meter", + "kilometer", + "centimeter", + "millimeter", + "mile", + "yard", + "foot", + "inch", + "nautical_mile", + "kilogram", + "gram", + "milligram", + "pound", + "ounce", + "ton", + "stone", + "square_meter", + "square_kilometer", + "square_centimeter", + "square_mile", + "square_yard", + "square_foot", + "square_inch", + "hectare", + "acre", + "liter", + "milliliter", + "cubic_meter", + "cubic_centimeter", + "gallon_us", + "gallon_uk", + "quart", + "pint", + "cup", + "fluid_ounce", + "tablespoon", + "teaspoon", + "meter_per_second", + "kilometer_per_hour", + "mile_per_hour", + "knot", + "foot_per_second", + "second", + "millisecond", + "minute", + "hour", + "day", + "week", + "month", + "year", + "byte", + "kilobyte", + "megabyte", + "gigabyte", + "terabyte", + "bit", + "kilobit", + "megabit", + "gigabit", + "celsius", + "fahrenheit", + "kelvin" +] - changed
Input schema / properties / to / descriptionPrevious value: -"Same rules as 'from', same category. Data units are binary (kilobyte = 1024 B); temperature accepts only celsius/fahrenheit/kelvin."New value: +"The unit you want. It must belong to the same kind of measurement as the one you have." - added
Input schema / properties / to / enumAdded value: +[ + "meter", + "kilometer", + "centimeter", + "millimeter", + "mile", + "yard", + "foot", + "inch", + "nautical_mile", + "kilogram", + "gram", + "milligram", + "pound", + "ounce", + "ton", + "stone", + "square_meter", + "square_kilometer", + "square_centimeter", + "square_mile", + "square_yard", + "square_foot", + "square_inch", + "hectare", + "acre", + "liter", + "milliliter", + "cubic_meter", + "cubic_centimeter", + "gallon_us", + "gallon_uk", + "quart", + "pint", + "cup", + "fluid_ounce", + "tablespoon", + "teaspoon", + "meter_per_second", + "kilometer_per_hour", + "mile_per_hour", + "knot", + "foot_per_second", + "second", + "millisecond", + "minute", + "hour", + "day", + "week", + "month", + "year", + "byte", + "kilobyte", + "megabyte", + "gigabyte", + "terabyte", + "bit", + "kilobit", + "megabit", + "gigabit", + "celsius", + "fahrenheit", + "kelvin" +]
- Changed
generate_ascii_art8 fields changed- changed
Input schema / properties / font / descriptionPrevious value: -"FIGlet font name (default 'standard')."New value: +"Lettering style." - added
Input schema / properties / font / enumAdded value: +[ + "standard", + "banner", + "big", + "block", + "bubble", + "digital", + "lean", + "mini", + "script", + "shadow", + "slant", + "small" +] - added
Input schema / properties / font / x-show-whenAdded value: +{ + "mode": [ + "text" + ] +} - changed
Input schema / properties / mode / descriptionPrevious value: -"'text' (default) renders 'text' via figlet+'font'; 'image' converts 'file' at 'width' chars. Any other value 400s."New value: +"Turn words into a banner, or turn a picture into characters." - changed
Input schema / properties / text / descriptionPrevious value: -"Text to render. REQUIRED when mode=text (the default). Truncated at 100 characters."New value: +"The words to render as a banner. Up to 100 characters." - added
Input schema / properties / text / x-show-whenAdded value: +{ + "mode": [ + "text" + ] +} - changed
Input schema / properties / width / descriptionPrevious value: -"Output width in characters, 40-200 (mode=image)."New value: +"How many characters wide the picture is drawn." - added
Input schema / properties / width / x-show-whenAdded value: +{ + "mode": [ + "image" + ] +}
- Changed
generate_business_card2 fields changed- changed
Input schema / properties / template / descriptionPrevious value: -"Card template, e.g. modern or classic."New value: +"Card layout." - added
Input schema / properties / template / enumAdded value: +[ + "modern", + "classic", + "minimal", + "creative", + "corporate", + "elegant" +]
- Changed
pdf_ocr3 fields changed- changed
Input schema / properties / lang / descriptionPrevious value: -"Tesseract language code(s): three letters, joinable with '+' (e.g. 'eng', 'deu', 'eng+fra'). The pack must be installed on the server."New value: +"The language of the writing in the scan. The wrong language makes the searchable text gibberish." - added
Input schema / properties / lang / enumAdded value: +[ + "eng", + "deu", + "fra", + "spa", + "ita", + "por", + "nld", + "rus", + "jpn", + "kor", + "chi_sim", + "chi_tra", + "ara", + "hin", + "eng+fra", + "eng+deu", + "eng+spa" +] - added
Input schema / properties / lang / x-uiAdded value: +{ + "labels": { + "ara": "Arabic", + "chi_sim": "Chinese (Simplified)", + "chi_tra": "Chinese (Traditional)", + "deu": "German", + "eng": "English", + "eng+deu": "English + German", + "eng+fra": "English + French", + "eng+spa": "English + Spanish", + "fra": "French", + "hin": "Hindi", + "ita": "Italian", + "jpn": "Japanese", + "kor": "Korean", + "nld": "Dutch", + "por": "Portuguese", + "rus": "Russian", + "spa": "Spanish" + } +}
- Changed
pdf_page_numbers3 fields changed- changed
Input schema / properties / format / descriptionPrevious value: -"Number template with {page} and {pages} tokens."New value: +"How each number is written on the page." - added
Input schema / properties / format / enumAdded value: +[ + "Page {page}", + "{page}", + "{page} of {pages}", + "- {page} -" +] - added
Input schema / properties / format / x-uiAdded value: +{ + "labels": { + "- {page} -": "- 1 -", + "Page {page}": "Page 1", + "{page}": "1", + "{page} of {pages}": "1 of 10" + } +}
- Changed
pdf_protect4 fields changed- added
Input schema / properties / permissions / defaultAdded value: +"print" - changed
Input schema / properties / permissions / descriptionPrevious value: -"Comma-separated permissions to ALLOW: print, copy, edit, modify, annotate, all. Empty = pdfcpu defaults."New value: +"What a reader is still allowed to do after the password is entered." - added
Input schema / properties / permissions / enumAdded value: +[ + "all", + "print", + "print,copy", + "copy", + "annotate", + "edit" +] - added
Input schema / properties / permissions / x-uiAdded value: +{ + "labels": { + "all": "Allow everything", + "annotate": "Commenting only", + "copy": "Copying text only", + "edit": "Editing only", + "print": "Printing only", + "print,copy": "Printing and copying text" + } +}
1 tool update
- Changed
convert_file1 field changed- changed
Input schema / properties / from / descriptionPrevious value: -"Source format, e.g. 'jpg', 'mp3', 'docx' — REQUIRED and must match the uploaded file."New value: +"Source format, e.g. 'jpg', 'mp3', 'docx'. OPTIONAL — leave it out and we read the format from the file's own bytes. Only worth setting when the bytes are ambiguous or the file has a synthetic name."
3 tool updates
- Changed
convert_file1 field changed- changed
Input schema / requiredPrevious value: -[ - "file", - "from", - "to" -]New value: +[ + "file", + "to" +]
- Added
data_to_file - Added
files_unzip
1 tool update
- Added
files_zip
1 tool update
- Changed
convert_video2 fields changed- changed
Input schema / properties / preset_name / descriptionPrevious value: -"Business-only. Wins over 'to', 'codec', 'resolution' and 'bitrate_kbps' — every preset forces h264 mp4."New value: +"Business-only. Wins over 'to', 'codec', 'resolution' and 'bitrate_kbps' — every preset forces h264 mp4. Only set when the user names the platform." - added
Input schema / properties / preset_name / x-uiAdded value: +{ + "no_recall": true +}
Related MCP Connectors
PDF tools: merge, split, compress, convert, OCR & more. OAuth with auto-registration or API key.
26 deterministic tools: PDF, image, QR, CSV/Excel, HTML to PDF, DNS/RDAP, FX rates, time zones.
26 deterministic tools: PDF, image, QR, CSV/Excel, HTML to PDF, DNS/RDAP, FX rates, time zones.
PDF from HTML or Markdown, OCR, email validation, image conversion and hosting, QR and barcodes.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables AI agents to convert documents, images, and data files across 50+ format pairs and to run PDF/image operations such as merge, split, compress, rotate, protect, unlock, extract text, and resize or compress images. Files are passed URL-in and returned URL-out (or saved locally in stdio mode), with tools for checking credits and generating Stripe checkout or billing-portal links.1829 PyPIMIT
- AlicenseNot gradedqualityDmaintenancePrivacy-first file tools for AI agents, enabling operations like PDF merge/split, image compression/convert, metadata stripping, and background removal without storing files.27 npmMIT
- AlicenseNot gradedqualityDmaintenanceConverts various document formats to desired output formats, currently supporting PDF to image conversion. No access keys required for basic file format conversion operations.3MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to discover 180+ free in-browser file tools and return deep-link URLs without uploading any files.8 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.