S3eidat Tools MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ai_chartA | Render a chart to an SVG or PNG file, offline. Either give a simple description ({ type: bar|line|area|pie|scatter, data: rows, x, y, color?, title? }; y may be a list of fields for multi-series line/bar charts), or a full Vega-Lite (or Vega) spec in "spec" with the rows inline in data.values. Field types are inferred (numbers = quantitative, ISO dates = temporal, other = categories). Loading data or images from URLs or files is refused. Up to 50,000 rows. PNG is rasterised from the SVG at "scale" (default 2×). |
| ai_chunk_textA | Split text, markdown or a text file into token-sized chunks for retrieval (RAG) and embeddings. Splits at markdown headings (ATX "#" headings, never inside code fences) and paragraphs first, then sentences (lines inside code blocks), and only cuts mid-sentence when a single sentence is longer than maxTokens. Consecutive chunks of the same section share about overlapTokens of text. Each chunk returns index, text, tokens, startChar/endChar (JavaScript string offsets, end exclusive, so text === source.slice(startChar, endChar) once CRLF line endings are normalised to \n) and the heading path it sits under. Tokens are counted with tiktoken (o200k_base by default; for Claude treat counts as estimates). Give "text" or "path" (file path or base64); give "output" to also write the chunks as JSONL (one JSON object per line). |
| ai_create_pptxA | Build a 16:9 PowerPoint (.pptx) deck from a simple outline: an optional title slide, then slides with a title plus any of bullets (nested), a paragraph, an image (file path or base64), a table (first row = header; long tables continue on extra slides), a native editable chart (bar, line, pie) and speaker notes. Light or dark theme with clean, readable defaults; text plus a visual are laid out side by side. Arabic/Hebrew text is set right-to-left. Up to 300 slides. Opens in PowerPoint, Keynote, Google Slides and LibreOffice. |
| ai_create_xlsxA | Build a real Excel .xlsx file from data: one or more sheets, each with optional column definitions (header, key, width, numFmt) and rows given as objects or arrays. Bold shaded header, frozen header row and filter buttons (both on by default), column widths fitted to the content, Excel number formats (raw codes like "#,##0.00" or aliases: integer, number, percent, currency, usd, eur, gbp, date, datetime, time, text), strings starting with "=" written as live formulas (=SUM(B2:B9), =B2*C2, cross-sheet refs), ISO date strings written as real dates, and an optional totals row (SUM/AVERAGE/COUNT/MIN/MAX formulas). Up to 50 sheets and 1,000,000 rows per sheet. Formulas are calculated by Excel when the file is opened. Writes to "output" (default "workbook.xlsx" in the output folder) and returns the path and a summary of each sheet. |
| ai_csv_profileA | Profile a table to understand and clean it before analysis: row and column counts, and per column the inferred type (integer, number, boolean, date, datetime, string), non-null and null counts, unique count, top 5 values, sample values, min/max/mean/median/stddev for numbers, min/max for ISO dates, min/max length for text, plus data-quality warnings (mixed types, leading/trailing spaces, mostly missing, constant columns, duplicate rows, ragged headers). Input: "file" (local path or base64 of CSV, TSV, JSON array, JSONL or .xlsx, first sheet or "sheet") or inline "csv" / "json". Empty cells, "null" and "NULL" count as missing. Runs locally; nothing is uploaded. |
| ai_detect_languageA | Detect the language of a text with franc-min (82 languages with 8M+ speakers, ISO 639-3 codes) and the writing systems it uses (Latin, Arabic, Cyrillic, Han/CJK, Hangul, Devanagari, Greek, Hebrew, Thai…). Returns the top 3 candidates with scores (1 = best match, relative to the others), English names and ISO 639-1 codes where they exist, plus a share per script. Texts under 20 characters are "too short": only the script is reported. Works best on a sentence or more of one language; for mixed text the dominant script wins; long texts are judged on their first 100,000 characters. Hebrew is not among the languages (script only). Give "text" or "path" (file path or base64). |
| ai_diagramA | Draw a flowchart / graph diagram from a tiny text language and save it as SVG or PNG, laid out automatically (dagre). One statement per line: |
| ai_docx_to_markdownA | Convert a Word .docx document to Markdown: headings (from Heading styles), bold/italic, lists, links, tables, footnotes. Images become placeholders like |
| ai_extract_entitiesA | Pull structured items out of text or a text file, deduplicated with counts: emails, URLs, phone numbers (libphonenumber, validated, E.164 plus type/country; local numbers read with defaultRegion, default JO), dates (ISO, D/M/Y or M/D/Y, Y/M/D, English month names; normalised to YYYY-MM-DD; a date like 03/04/2024 is flagged ambiguous with the other reading), money ($, €, £, JOD/JD/د.أ, SAR/ر.س, AED/د.إ, KWD, EGP… and Arabic currency words, with amount and ISO currency), percentages, #hashtags, @mentions, IPv4/IPv6, IBANs (country length and mod-97 checked) and card-like numbers (only Luhn-valid ones with a known brand prefix, always masked: only the last 4 digits are shown, the full number is never returned). Arabic-Indic digits are understood. Regex-based, not NLP: no names, places or organisations. Give "text" or "path" (file path or base64). |
| ai_file_identifyA | Find out what a file really is from its content (magic bytes, via file-type: images, video, audio, archives, Office, PDF, fonts, executables… ~150 formats), not its name. Reports the detected type and MIME, whether the extension disagrees with the content, size, SHA-256, and for text files an encoding guess (UTF-8, UTF-8/16/32 with BOM, UTF-16 without BOM, ASCII, 8-bit legacy) plus a text kind (JSON, XML, SVG, HTML…). Accepts a file path or base64. Nothing is executed. |
| ai_html_to_markdownA | Convert HTML to clean Markdown for reading or feeding to a model: headings, lists, links, images, code blocks, GitHub-style tables and strikethrough. Give the HTML inline ("html") or as a file ("path": local path or base64). Optional "readable" keeps only the main article (Mozilla Readability, falls back to the whole body), "selector" converts only matching elements, "baseUrl" makes relative links absolute, "includeLinks": false drops link URLs and images. Scripts, styles and forms are removed. Inline Markdown is cut at maxChars (default 200k) with a note; give "output" to save the whole thing to a .md file. Runs locally; nothing is uploaded. |
| ai_image_diffA | Compare two images pixel by pixel (pixelmatch, anti-aliasing aware) and write a diff PNG with changed pixels in red over a faded copy of the first image. Returns the number and percentage of different pixels. Images must be the same size unless resize is true (the second is stretched to the first's size). Reads PNG, JPEG, WebP, AVIF, GIF (first frame), TIFF and SVG; file path or base64; up to 50 MP. Good for visual regression checks. |
| ai_json_schema_inferB | Generate a JSON Schema (draft 2020-12) from one or more sample JSON values: types (integer vs number, mixed types as a type list), "null" added where a value can be null, required = keys present in every sample object, array items merged across all elements, string formats guessed when every sample matches (date-time, date, email, uri, uuid), and optional enums for small repeated string sets. Give "samples" (an array of sample values), or "text" (JSON, or JSONL = one sample per line), or "file" (path or base64 of a .json/.jsonl file). An array sample describes an array; to treat its elements as separate samples set eachItem. Pure local code; optionally writes the schema to "output". |
| ai_json_schema_validateA | Validate JSON data against a JSON Schema with Ajv, reporting every error (allErrors) with its instancePath (JSON Pointer), schemaPath, keyword, message and params. Draft 2020-12 is used when the schema's $schema says 2020-12 (2019-09 likewise), otherwise draft-07 (draft-04/06 schemas are checked as draft-07). Formats checked: date, time, date-time, email, hostname, ipv4, ipv6, uri, uri-reference, uuid, regex, json-pointer (other formats are ignored and listed). Data: inline "data" (any JSON value), "dataText" (JSON text) or "dataFile" (path or base64). Schema: inline "schema" (object or JSON text) or "schemaFile". Remote $ref URLs are never fetched. Runs locally. |
| ai_markdown_to_docxA | Convert Markdown (GitHub flavoured) to a real Word .docx: headings H1-H6 (Word heading styles, so the navigation pane and table of contents work), paragraphs with bold, italic, strikethrough, inline code and clickable links, bullet and numbered lists (nested, numbering restarts per list, task-list checkboxes), tables (header row shaded, column alignment kept), blockquotes, fenced code blocks in a monospace font, horizontal rules, and a page break wherever a line says \newpage. Arabic/Hebrew paragraphs are laid out right-to-left automatically (rtl: "auto"). Images are not embedded (their alt text is shown); raw HTML tags are dropped. Options: title and author (document properties), font (default Calibri), fontSize. Give "markdown" inline or "path" to a .md file. Writes the .docx to "output" (default name from the title or first heading). |
| ai_markdown_to_pdfB | Turn Markdown (GitHub-flavoured) into a clean, paginated A4/Letter/A5 PDF: headings, paragraphs with word wrap, bold/italic/strikethrough, inline code, links (clickable), bullet / numbered / task lists (nested), tables (wrapped cells, header repeated on new pages), blockquotes, code blocks, horizontal rules, local images (relative to the Markdown file; remote images are never fetched and show as alt text), page breaks (\pagebreak, \newpage or ), page numbers, margins and title metadata. Text uses the built-in PDF fonts: Latin text only (English and Western European). Arabic, CJK and other scripts are not supported yet: such characters are replaced with "?" (or rejected with onUnsupportedChar: "error"); emoji are dropped; arrows and common symbols are transliterated. Give "markdown" inline or "path" to a .md file. |
| ai_media_infoA | Read audio and video file metadata offline (music-metadata): container, codec, duration, bitrate, sample rate, bit depth, channels, lossless or not, tags (title, artist, album, year, genre, track…), embedded cover art, and per-track info (including video width/height for MP4/MKV/WebM). Formats: MP3, AAC/M4A/MP4/MOV, FLAC, WAV, AIFF, OGG/Opus/Vorbis, WebM/Matroska, WMA/ASF, APE, WavPack, DSD and more. File path (streamed, any size) or base64. Duration of VBR MP3s without a header is computed by scanning the file. |
| ai_ocrA | Read the text in an image (PNG, JPEG, WebP, TIFF incl. multi-page, GIF, AVIF) or a scanned PDF with Tesseract (tesseract.js), fully offline: the English and Arabic models ship with the server and nothing is downloaded or uploaded. Languages: "eng", "ara" or "eng+ara" (default). PDF pages are rendered at 200 dpi by default. Returns the text per page and the mean word confidence (0-100); give "output" to also write a .txt file. Limits: up to 200 pages per call, roughly 1-5 s per page; printed text works well, handwriting and very small or skewed text poorly. For PDFs that already have a text layer, pdf_to_text is faster and exact. Give "file" as a local path or base64. |
| ai_pdf_to_markdownA | Convert a text PDF to structured Markdown: headings guessed from font size (text clearly larger than the body becomes #, ##, ###), paragraphs rebuilt from line spacing with hyphenated words mended, bullet and numbered lists kept, right-to-left lines in reading order. Optional page range ("1-5, 8") and page markers. Scanned PDFs without a text layer give empty pages (listed in pagesWithoutText; run OCR first). Tables and columns are read line by line. Accepts a local path or base64. Inline Markdown is cut at maxChars (default 200k); "output" saves it to a file. |
| ai_pptx_to_markdownA | Extract the text of a PowerPoint .pptx deck as Markdown: one "## Slide N: title" section per slide in presentation order, text boxes as paragraphs and bullet lists (with indent levels), tables as Markdown tables, and speaker notes as a quote under each slide. Images, charts and SmartArt text are not extracted. Old binary .ppt is not supported. Optional "slides" range (e.g. "1-5, 8"). Accepts a local path or base64. Inline Markdown is cut at maxChars (default 200k); "output" saves it to a file. Runs locally; nothing is uploaded. |
| ai_sql_queryA | Run one read-only SQL SELECT (alasql dialect: JOIN, GROUP BY, HAVING, ORDER BY, LIMIT, UNION, WITH, subqueries, CASE, SUM/COUNT/AVG/MIN/MAX/MEDIAN/STDEV, string and date functions) over one or more tables. Each table is { name, file | csv | json }: a local path or base64 of a CSV, TSV, JSON array, JSONL or .xlsx (first sheet, or "sheet"), or inline CSV text / JSON rows. CSV cells are typed (numbers, true/false, empty → null; ISO dates stay ISO text, so they sort and compare correctly; YEAR()/MONTH() work on them). Only SELECT is allowed: INSERT/UPDATE/DELETE/DROP/CREATE/ALTER/ATTACH, SELECT INTO, file readers like FROM CSV(...), inline JavaScript and the -> operator are refused. Table names are case-sensitive; quote odd column names and reserved words (total, value, count, date…) as [My Column]. Returns columns and up to maxRows rows (default 500) with the total count; set "output" (.csv, .tsv, .json, .jsonl or .xlsx) to save every row to a file. Runs locally; nothing is uploaded. |
| ai_text_similarityA | Compare two or more texts (or text files) for overlap. For every pair returns: Jaccard similarity of word shingles (k=3 words by default), a MinHash estimate of that Jaccard (128 hashes), and cosine similarity of word frequencies. Words are lower-cased, punctuation and Arabic diacritics ignored. Measures wording overlap, not meaning (no embeddings): paraphrases score low. Mode "pairs" (default) lists pairs sorted by the chosen metric; mode "dedupe" groups near-duplicates whose metric is at least "threshold" (default 0.8; groups are connected, so A |
| ai_token_countA | Count LLM tokens in a text or text file with the OpenAI tiktoken tokenizers ("o200k_base", default, used by GPT-4o and the o-series; or "cl100k_base", used by GPT-4/3.5 and text-embedding-3). Also returns characters and words, and whether the text fits in common context windows (8k, 32k, 128k, 200k, 1M: e.g. "fits in 200k: yes"). Claude's tokenizer is not public, so for Claude the count is an estimate (typically within ~10-20%; Claude usually needs a little more), returned as a rough range. Runs locally, no API calls. Give "text" or "path" (file path or base64). Large texts (many MB) take a few seconds. |
| ai_web_fetchA | Fetch a web page (http/https) and return its readable content as clean Markdown, with title, byline, final URL after redirects and a word count. Uses Mozilla Readability to keep the main article (falls back to the whole page), or a CSS "selector" you give. Respects robots.txt (refuses pages disallowed for the s3eidat-tools-mcp user agent), only reads HTML and text responses, stops at 5 MB and 20 seconds, follows up to 5 redirects, and refuses private, local and loopback addresses unless allowPrivate is true. Does not run JavaScript, so pages that build their content in the browser may come back nearly empty. Inline Markdown is cut at maxChars (default 200k); "output" saves it to a file. |
| ai_xlsx_to_markdownA | Turn an Excel .xlsx workbook (or a .csv/.tsv file) into Markdown tables, one "## sheet" section per sheet, or only the sheet you name. The first used row is the table header; empty rows and columns around the data are dropped. Formulas show their cached result (as last saved by Excel), dates are ISO (2026-10-30, or 2026-10-30T14:05:00), merged cells show their value once, hyperlinks become Markdown links. Each sheet shows at most maxRows data rows (default 200) and says how many were left out. Old binary .xls is not supported. Accepts a local path or base64. Runs locally. |
| ai_zipA | Work with ZIP archives locally. action "create": zip files and folders (given as paths; folders keep their own name as the top folder, symlinks are skipped) into one .zip. action "extract": unpack a .zip (path or base64) into the "output" folder; entries with "..", absolute paths or drive letters are refused (zip-slip protection), existing files are kept unless overwrite is true. action "list": entry names with sizes, no extraction. Limits: total uncompressed size 500 MB and 10000 files by default (maxTotalMB / maxFiles). Encrypted ZIPs are not supported. |
| barcode_generateA | Make 1D barcodes as SVG or PNG: Code 128 (any printable ASCII; digit runs packed with subset C automatically), EAN-13 (12 digits, check digit added; or 13, check digit verified), UPC-A (11 or 12 digits, same) and Code 39 (A-Z, 0-9, space, - . $ / + %, optional mod-43 check). Same encoders, quiet zones, guard bars and human-readable digits as the website. Give "value" for one barcode, or "values" (up to 1000) to write one file per value into a folder; invalid values are reported, not fatal. PNG text uses the system monospace font. Web version: https://s3eidat.github.io/barcode-gen/ |
| base_convertA | Convert a whole number of any size (BigInt) between bases 2–36: binary, octal, decimal, hex, base 36 or any other. Input base can be auto-detected from 0x / 0b / 0o prefixes; spaces, _ and , separators are ignored; negatives OK. Also shows bit length and the two's complement view (signed/unsigned value, hex, bits) at 8/16/32/64 bits, and whether it fits. Fractions are not supported (same as the website). Web version: https://s3eidat.github.io/base-convert/ |
| base64_decodeA | Decode Base64 (standard or URL-safe, padding optional, whitespace and data: URI prefix allowed). Valid UTF-8 text is returned inline; binary data (or anything when "output" is given) is written to a file whose extension comes from the detected type (PNG, JPEG, GIF, WebP, BMP, PDF, ZIP, gzip, MP3, Ogg, MP4, WOFF2, SVG, JSON). Web version: https://s3eidat.github.io/base64-kit/ |
| base64_encodeA | Encode text (as UTF-8) or a file (path or base64) to Base64. Options: URL-safe alphabet (- and _, no padding), wrap at 76 columns (MIME), or a data: URI for files (MIME type detected from magic bytes). Results over 1 MB, or when "output" is given, are written to a text file instead of returned inline. Web version: https://s3eidat.github.io/base64-kit/ |
| bytes_convertA | Turn text into its UTF-8 bytes (hex, binary or decimal), or bytes back into text. Byte input is lenient: "48 65", "4865", "0x48,0x69", "01001000 01101001", "72 105". Invalid UTF-8 is reported and shown with � replacements. Web version: https://s3eidat.github.io/base-convert/ |
| calc_ageA | Exact age in years, months and days from a date of birth (on today or any "on" date), with totals in months, weeks, days and hours, the weekday of birth, Hijri (Umm al-Qura) birth date and Hijri age, next birthday (Feb 29 birthdays fall on Feb 28 in common years), star sign, Chinese zodiac, the next 1,000-day milestone, and optionally the age gap to a second person. Dates are ISO YYYY-MM-DD. Web version: https://s3eidat.github.io/age-calc/ |
| calc_bmiA | Body mass index with the WHO adult category, the healthy weight range for your height (BMI 18.5–24.9), BMI Prime, optional waist-to-height ratio, and for adults (18–120, with age) BMR by Mifflin-St Jeor plus daily calories to maintain or lose ~0.5 kg (1 lb) a week at five activity levels. Metric (cm, kg) or imperial (ft + in, lb). Height 50–272 cm, weight 10–650 kg. Not medical advice; children need percentile charts. Web version: https://s3eidat.github.io/bmi-calc/ |
| calc_cash_countA | Count a cash drawer by denomination with exact integer maths (no float errors): JOD (3 decimals, fils), USD, EUR, SAR, AED, GBP, KWD, EGP, or a custom currency (your own note and coin values, 0/2/3 decimals). Give how many of each note/coin (by value like 50 or 0.25, by label like "50 JD" or "¼ dinar"); returns per-denomination amounts, the total, notes and coins counted, and over/short against an expected amount. list=true shows the denominations of a currency. Web version: https://s3eidat.github.io/cash-counter/ |
| calc_compound_interestA | Project savings with compound interest: an initial deposit plus monthly contributions (at the start or end of each month), a nominal annual rate compounded yearly, half-yearly, quarterly, monthly, daily or continuously, optionally adjusted for inflation ("today's money"). Returns final balance, total deposits, interest earned and a year-by-year table. Rate -50–100 %, 1 month to 100 years. Web version: https://s3eidat.github.io/compound-interest/ |
| calc_date_diffA | Two date jobs. difference: days between two dates (optionally counting the end day), as years/months/days, weeks, whole months, working days and weekend days for a chosen weekend (Fri–Sat default, Sat–Sun, Fri only, Sun only; public holidays are not counted). add: add or subtract days, business days, weeks, months or years to a date (month ends clamp: Jan 31 + 1 month = Feb 28/29). Results include the weekday and Umm al-Qura Hijri date. Dates are ISO YYYY-MM-DD; for Hijri ⇄ Gregorian conversion use calc_hijri. Web version: https://s3eidat.github.io/date-diff/ |
| calc_discountA | Three shop maths jobs. sale: price after one or two stacked discounts (each a percent or a fixed amount) plus optional tax/VAT, with what you save and the effective total discount (stacked percents multiply). reverse: the discount % between an old and a new price. compare: which of two deals is cheaper per unit (price and amount of each). Money is rounded to the cent at each step like a till. Web version: https://s3eidat.github.io/discount-calc/ |
| calc_due_dateA | Estimated pregnancy due date from the first day of the last period (Naegele's rule, adjusted for cycle length 20–45 days), the conception date, or an IVF embryo transfer date (day-3 or day-5 embryo). Also gives the estimated conception date, full-term date, how far along you are on a given day (weeks + days, trimester, days to go) and a dated timeline of common milestones (weeks 4–42), optionally with Hijri dates. Estimate only, not medical advice. Web version: https://s3eidat.github.io/due-date/ |
| calc_equationA | Solve equations exactly with worked steps, like the website: linear a·x + b = c, quadratic a·x² + b·x + c = 0 (exact rational or surd roots like 1/2 + √5/2, complex roots), cubic a·x³ + b·x² + c·x + d = 0 (rational root test, else trigonometric/Cardano to 10 significant digits), and systems of 2 or 3 linear equations (Gauss–Jordan; no solution and infinitely many solutions are detected and parametrised). Coefficients may be integers, decimals, fractions ("3/4"), mixed numbers ("-1 1/2") or e-notation. Web version: https://s3eidat.github.io/equation-solver/ |
| calc_expressionA | Evaluate a maths expression safely with the website's own parser (never eval): + − × ÷ ^ (right-associative), implicit multiplication (2(3+4), 2x), postfix ! and %, √, brackets; functions sin cos tan sec csc cot (+ asin acos atan atan2) in degrees (default), radians or grads, sinh cosh tanh and inverses, sqrt cbrt root(x,n) abs exp ln log(x[,base]) log10 log2 floor ceil round sign min max mod nCr nPr fact gamma; constants pi π e tau phi; "ans" and your own variables. Results to 12 significant digits, plain or scientific notation. Web version: https://s3eidat.github.io/sci-calc/ |
| calc_fractionA | Exact fraction maths with big integers (never rounded) and worked steps. calculate: an expression with fractions, mixed numbers ("1 1/2"), decimals and repeating decimals ("0.(3)"), + − × ÷ ^ and brackets (a/b binds tighter than ÷). decimal_to_fraction: "0.75", "0.1(6)" (brackets mark the repeating part), with close small-denominator approximations. fraction_to_decimal: exact decimal with the repeating block, and percent. compare: put two or more fractions in order. Web version: https://s3eidat.github.io/fraction-calc/ |
| calc_fuel_costA | Fuel needed and cost of a trip from distance (km or miles, optionally round trip), fuel price (per litre, US gallon or UK gallon) and consumption in L/100 km, km/L, mpg (US) or mpg (UK); split between people; cost per km/mile and per 100. Optionally compare a second car (its own consumption and, if different, fuel price). Also converts the consumption to the other units. Web version: https://s3eidat.github.io/fuel-cost/ |
| calc_gpaA | Credit-weighted semester GPA, cumulative GPA (with previous credits and GPA) and the average you need over the remaining credits to reach a target. Scales: 4.0 (A…F, no A+), 4.3 (A+ = 4.3), 5.0 (A+ 5, A 4.75, B+ 4.5 … F 1) with letter grades, or "percent" with numeric marks between a minimum and maximum (default 35–100). Courses with no credits or an invalid grade are skipped (and listed). Up to 40 courses. Web version: https://s3eidat.github.io/gpa-calc/ |
| calc_hijriA | Convert between Gregorian and Hijri dates with the Umm al-Qura calendar (the same Intl calendar the website uses), both ways. Modes: to_hijri (a Gregorian date), to_gregorian (Hijri year, month 1–12, day), month (length of a Hijri month and its Gregorian start/end), age (age in Hijri and Gregorian years, next Hijri birthday). Results come in English and Arabic (Arabic-Indic digits by default; Gregorian month names in the Egyptian/Gulf or Levant style). Supported range 1300–1600 AH (1882–2174). Web version: https://s3eidat.github.io/hijri-converter/ |
| calc_hoursA | Weekly time card: add shifts (start and end "HH:MM", unpaid break minutes; an end at or before the start is an overnight shift), up to 6 shifts a day. Totals per shift, per day and per week in h:mm and decimal hours; optional rounding of each shift to 5, 6 or 15 minutes; overtime over N hours a day and/or N regular hours a week (daily first, then weekly), paid at a multiplier (default 1.5); pay at an hourly rate. Web version: https://s3eidat.github.io/hours-calc/ |
| calc_loanA | Monthly payment, total interest, total paid and payoff month for a fixed-rate loan or mortgage, with an optional extra monthly payment (shows interest saved and how much sooner it ends) and an amortization schedule by year or by month (or none). Maths is in whole cents like the website; the last payment absorbs the rounding so the balance ends at 0. Rate 0–100 %, term 1 month to 100 years. Web version: https://s3eidat.github.io/loan-calc/ |
| calc_percentageA | Every percentage question the website answers: "X% of Y" (percent_of: percent, value), "X is what % of Y" (what_percent: part, whole), percent change from A to B (change: from, to), increase/decrease a value by X% (increase/decrease: value, percent), find the original before a X% increase/decrease (reverse_increase/reverse_decrease: value, percent), and profit margin vs markup (margin_markup: cost, price). Returns the number, a display string and the worked formula. Web version: https://s3eidat.github.io/percentage-calc/ |
| calc_primesA | Number theory with big integers, like the website. check: is a number prime (trial division, deterministic Miller-Rabin below 2^64, probabilistic above), its prime factorisation (Pollard rho), number of divisors, sum of divisors σ, Euler φ, the divisor list, previous/next prime and whether it is perfect; the number may be an expression like "2^61-1", "10!+1" or "1000003*1000033" (up to 400 digits). gcd_lcm: GCD and LCM of 2–50 numbers with Euclid's steps. range: list the primes between two numbers (below 10^15, at most 10,000,000 numbers per range). Web version: https://s3eidat.github.io/prime-tools/ |
| calc_romanA | Convert numbers to Roman numerals (1–3,999 in standard form; up to 3,999,999 with a vinculum bar, which multiplies by 1,000) and Roman numerals back to numbers with strict validation that explains mistakes (IIII, IC, VV, non-standard forms like IIX…) and the symbol-by-symbol working. Also writes a date in Roman numerals (day/month/year order and separator of your choice, years 1–3999). Web version: https://s3eidat.github.io/roman-numerals/ |
| calc_salaryA | Convert pay between per hour, day, week, every 2 weeks, twice a month, month and year using your hours per week, days per week and weeks per year (defaults 40 / 5 / 52). Optional overtime (hours per week × multiplier, e.g. 1.25, 1.5, 2) and a raise given as a percent or as the new monthly pay. Amounts are rounded to 2 decimals. Web version: https://s3eidat.github.io/salary-calc/ |
| calc_sleepA | Sleep in whole cycles so you wake in light sleep: given a wake-up time, the bedtimes for 6, 5, 4 or 3 cycles; given a bedtime (or "now"), the wake-up times. Defaults: 90-minute cycles (70–110) and 15 minutes to fall asleep (0–60). With mode "bed"/"now" it also lists nap alarms (20, 30, 60 min and one full cycle). 12- or 24-hour clock. Web version: https://s3eidat.github.io/sleep-calc/ |
| calc_split_billA | Split a restaurant bill with tax/service and tip, in whole cents so the shares always add up exactly (left-over cents go to the largest remainders). simple: one bill split evenly between N people (1–100). items: list who had what; each item is split between the people who shared it (nobody listed = everyone), and tax and tip are shared in proportion. Tip can be on the subtotal or on subtotal + tax; each share can be rounded up to a step (e.g. 0.5 or 1). Returns a ready-to-send summary. Web version: https://s3eidat.github.io/split-bill/ |
| calc_statsA | Descriptive statistics for a list of numbers: count, sum, mean, median, mode(s), min, max, range, sample and population variance and SD, standard error, coefficient of variation, quartiles (inclusive = Excel QUARTILE.INC, exclusive = QUARTILE.EXC, or Tukey median-of-halves), IQR, 1.5×IQR outlier fences and outliers, a frequency table (values, or Sturges bins when there are more than 20 distinct values) and z-scores. Paste numbers separated by spaces, commas, semicolons, | or new lines; headers and text are skipped and reported. Commas can be separators, thousands marks or decimal commas. Up to 1,000,000 numbers. Web version: https://s3eidat.github.io/stats-calc/ |
| calc_unit_convertA | Convert between units in 14 categories, the same table as the website: length, mass, temperature, volume, area (incl. dunam), speed, time, data (kB/MB vs KiB/MiB, bits), pressure, energy, power, angle, fuel economy (L/100km, km/L, mpg US/UK) and cooking (tsp, tbsp, cups, metric spoons). Give value + from + to (symbols like "km", "°F", "GiB" or names like "miles"; ASCII forms like "m2", "um" work), or a query like "5 km to mi". Set all=true for the value in every unit of the category, or list=true to see every category and unit. Web version: https://s3eidat.github.io/unit-convert/ |
| calc_zakatA | Zakat on wealth: 2.5 % of net zakatable wealth (cash, bank, investments, trade goods, money owed to you, gold and silver, minus debts due now) when it reaches the nisab: the value of 85 g of pure gold (default) or 595 g of silver. Gold weight is converted to pure gold by karat (24/22/21/18). You give today's gold/silver price per gram in your currency: nothing is fetched from the network. An estimate only; consult a scholar. Web version: https://s3eidat.github.io/zakat-calc/ |
| chmod_calcA | Convert Unix file permissions between octal (755, 0644, 4755), symbolic (rwxr-xr-x, ls -l style -rwsr-xr-x) and chmod clauses (u=rwx,g=rx,o=; relative ones like g+w or +x apply to "base"). Returns all forms, a plain-English description per owner/group/others, setuid/setgid/sticky meaning, safety warnings, and ready chmod commands. Web version: https://s3eidat.github.io/chmod-calc/ |
| cron_explainA | Explain a standard 5-field cron expression (minute hour day-of-month month day-of-week; names like MON/JAN, ranges, lists, steps, ? and the @hourly/@daily/@weekly/@monthly/@yearly/@reboot macros) in plain English and list the next run times in an IANA timezone. Follows Vixie cron: when both day fields are restricted a day matches either one. Quartz 6/7-field and L/W/# syntax are rejected with a clear message; per-field errors are reported. Web version: https://s3eidat.github.io/cron-explain/ |
| crypto_file_decryptA | Decrypt an .s3enc file made by the S3eidat File Encrypt website or crypto_file_encrypt, verify every chunk, and write the original file back under its stored (sanitised) name. A wrong password, damage, truncation or reordering is reported and nothing is written. Web version: https://s3eidat.github.io/file-encrypt/ |
| crypto_file_encryptA | Encrypt any file with a password into the website's .s3enc format: chunked AES-256-GCM, key from PBKDF2-SHA256 (600,000 rounds, random salt), original name/type/size stored encrypted inside, tamper/truncation/reorder-proof. Files made here open at https://s3eidat.github.io/file-encrypt/ and vice versa (crypto_file_decrypt). Whole file is processed in memory (size limit = server --max-mb). Web version: https://s3eidat.github.io/file-encrypt/ |
| crypto_stego_hideA | Hide a text message inside an image (LSB steganography in R, G, B; the picture looks the same) and save it as a lossless PNG, optionally encrypted with a password (AES-256-GCM, PBKDF2-SHA256 600,000). Same bit layout as the website, so the PNG reveals at https://s3eidat.github.io/stego-image/ or with crypto_stego_reveal. Capacity ≈ width×height×3/8 − 10 bytes (−44 more when encrypted). Transparency is filled with white. The result is read back and checked before returning. Sending it through apps that recompress images (JPEG, chat apps) destroys the message. Web version: https://s3eidat.github.io/stego-image/ |
| crypto_stego_revealA | Read a message hidden in a PNG by the S3eidat Stego Image website or crypto_stego_hide (decrypting it if a password was used). Reports when there is no message, e.g. because the image was recompressed (JPEG), resized or edited. Web version: https://s3eidat.github.io/stego-image/ |
| crypto_text_decryptA | Decrypt an "S3E1.…" message made by the S3eidat Text Encrypt website or crypto_text_encrypt, with its password. Verifies integrity: a wrong password or any change to the text is reported, never garbage output. Accepts base64url and line breaks. Web version: https://s3eidat.github.io/text-encrypt/ |
| crypto_text_encryptA | Encrypt a message with a password: AES-256-GCM, key from PBKDF2-SHA256 (600,000 rounds, random 16-byte salt, 12-byte IV), output as one "S3E1.…" base64 line. Exactly the website's format, so the result can be decrypted at https://s3eidat.github.io/text-encrypt/ or with crypto_text_decrypt. Each run gives a different output. Web version: https://s3eidat.github.io/text-encrypt/ |
| css_clampA | Build a fluid typography/spacing value: CSS clamp() that grows linearly from a size at a small viewport to a size at a large viewport (sizes and viewports in px), expressed in rem or px. Also returns the computed size at sample viewport widths. Web version: https://s3eidat.github.io/css-units/ |
| css_formatA | Beautify CSS (one declaration per line, one selector per line, blank line between top-level rules, nested @media blocks) or minify it. Strings, url(...) and escapes are kept intact; calc() spacing is preserved. Optional comment removal (/*! … */ kept). Give "text" or a file "path". Web version: https://s3eidat.github.io/html-css-format/ |
| css_unitsA | Convert a CSS length between px, rem, em, %, pt, pc, in, cm, mm, vw, vh, vmin and vmax, using a root font size, parent font size and viewport size (defaults 16px / 16px / 1440×900). Uses the CSS definition of 96px per inch. Returns every unit, rounded to 4 decimals by default. Web version: https://s3eidat.github.io/css-units/ |
| csv_to_jsonA | Convert CSV/TSV to JSON with an RFC 4180 parser (quoted fields, "" escapes, line breaks inside quotes, CR/LF/CRLF, BOM). Detects the delimiter (comma, semicolon, tab, pipe), uses the first row as headers (blank → column_N, duplicates → name_2), and can type values (numbers, true/false, null; long digit strings like IDs stay strings). Output: array of objects or array of arrays, pretty-printed. Give "text" or a file "path". Web version: https://s3eidat.github.io/csv-json/ |
| curl_to_codeA | Convert a curl command (bash/zsh quoting incl. $'…', line continuations, "Copy as cURL" from browsers) into code for JavaScript fetch, axios, Python requests, PHP cURL, Go net/http or Node.js http/https: every target the website supports. Understands -X, -H, -d/--data-raw/--data-binary/--data-urlencode, --json, -F forms and files, -u, -b, -A, -e, -G, -I, -k, -L, -m, --connect-timeout, -x, -T, --compressed, --oauth2-bearer. Also returns the parsed request (secrets masked unless revealSecrets) and notes on what could not be converted. Only parses text; never sends the request. Web version: https://s3eidat.github.io/curl-convert/ |
| doc_attendance_sheetA | Make a printable attendance / sign-in sheet PDF: names down the side, one column per date for a month (skipping chosen weekdays, e.g. Fri+Sat or Sat+Sun), a run of N sessions from a start date, or N blank columns; tick boxes or wide signature cells; row numbers, a total column, extra empty rows, title, group and teacher. Same page maths as the website: rows that don't fit continue on more pages, and too many date columns are split across pages with the same names. Also returns a blank register CSV. English labels, Latin text only for now. Web version: https://s3eidat.github.io/attendance-sheet/ |
| doc_business_cardsA | Design business cards and get a print-ready PDF sheet: cards centred on A4 or Letter with crop marks (10 per sheet for 85 × 55 mm EU or 3.5 × 2 in US cards), plus a back side page mirrored for long-edge duplex printing. Four front templates (classic, band, centered, minimal), backs with your logo, a "scan to save my contact" vCard QR code, or blank; six colour themes or your own accent/paper/ink colours; optional logo and a vCard QR on the front. Also returns the vCard text. Print at 100% / actual size. Latin text only for now (the website also does an Arabic side). Web version: https://s3eidat.github.io/business-card/ |
| doc_calendarA | Make a printable calendar PDF: a month grid (one page per month, several months in a row if you like) or a whole year on one page, A4 or Letter, landscape or portrait. Week starts on Saturday (default, like the website), Sunday or Monday; optional Hijri (Umm al-Qura) dates; events (one-off or yearly, 7 colours) shown in the day cells, or as coloured days plus a legend in the year view; optional title. English names by default; other Latin-script locales (fr, de, es, tr…) use their own month/day names. Web version: https://s3eidat.github.io/calendar-maker/ |
| doc_invoiceA | Make a clean A4 invoice PDF: your business (logo, name, address, email, phone, tax ID), client, invoice number and dates, line items with quantity, unit price, per-line discount % and tax %, subtotal, discount, tax per rate and total, notes, payment terms, and an optional PAID stamp. Same maths as the website: every line is rounded to the currency's minor unit (2 decimals, 3 for JOD/KWD/BHD/OMR/TND…, 0 for JPY…) with half-up rounding; amounts formatted en-US style ($1,234.50, JOD 10.124). Long item lists continue on more pages. Returns the PDF path and the computed totals. Latin text only for now. Web version: https://s3eidat.github.io/invoice-maker/ |
| doc_labelsA | Print address or product labels on standard sticker sheets as PDF: A4 21/24/14/40/65-up (L7160, L7159, L7163, L7654, L7651 sizes) or Letter 30/10/80-up (5160, 5163, 5167 sizes), or custom geometry in mm. Text modes: "list" (one label per block, blank line between labels), "csv" (rows filled into a template like "{Name}\n{Street}\n{City} {Postcode}", header row or {1},{2}…), or "same" (one text × count). Copies per label, start at a later position to reuse a part-used sheet, alignment, font, size, bold first line, border, shrink-to-fit and printer offset nudges. Print at 100% / actual size. Up to 3000 labels. Latin text only for now. Web version: https://s3eidat.github.io/label-maker/ |
| doc_receiptA | Make a simple sales receipt as PDF: an 80 mm thermal-roll receipt (page height fits the content, monospace) or an A5 page. Shop header (name, address, phone, tax number), receipt number with prefix, date/time, customer, items (name × qty × price), discount (% or fixed amount), tax % after discount, total, payment method, amount paid and change, note and footer. Same maths as the website: amounts rounded half-up to 0, 2 or 3 decimals. Also returns the totals and a 32-column plain-text version. English labels, Latin text only for now. Web version: https://s3eidat.github.io/receipt-maker/ |
| doc_resumeA | Turn structured CV fields into a clean A4 resume PDF: contact header, summary, experience, education, skills, projects and languages, in any section order, with three templates like the website: "classic" (centred header and accent rule), "modern" (coloured sidebar with contact, skills and languages) and "compact" (denser, headings in a left column). Description lines starting with "-", "•", "*" or "–" become bullet points; skills are comma-separated. Aims for one page; longer CVs continue on a second page. English headings, Latin text only for now. Web version: https://s3eidat.github.io/resume-builder/ |
| gitignore_generateA | Build a .gitignore by combining the website's templates for languages, frameworks, mobile, game engines, tools, OSes and editors (node, python, java, android, ios, flutter, reactnative, unity, unreal, go, rust, cpp, dotnet, php, wordpress, rails, django, nextjs, vite, docker, terraform, macos, windows, linux, vscode, jetbrains, vim). Templates can be named by id, name or keyword (e.g. "javascript" → node). Duplicate patterns are removed, optional "### Name ###" section headers, plus your own custom lines at the end. Returns the text, or writes it to "output" (e.g. "./.gitignore"). Set "list" to see all templates. Web version: https://s3eidat.github.io/gitignore-gen/ |
| hash_computeA | Compute MD5, SHA-1, SHA-256 and SHA-512 of text or a file (path or base64), optionally an HMAC with a key, and check against an expected checksum (hex in any case/spacing, "SHA256 (file) = …" lines, or base64). Web version: https://s3eidat.github.io/hash-lab/ |
| html_formatA | Beautify (indent block elements, keep inline runs on one line) or minify HTML with a forgiving tokenizer: implied end tags (, , …), void elements, and , , , contents kept byte-for-byte. Whitespace between attributes is normalised; attribute values are never changed. Optional comment removal (IE conditional comments kept). Text only: nothing is rendered or run. Give "text" or a file "path". Web version: https://s3eidat.github.io/html-css-format/ |
| http_statusA | Look up HTTP status codes: by exact code (e.g. 418, also non-standard ones like 499 or 524), by code prefix ("50"), or by words ("too many", "redirect post"), optionally limited to a class (1xx–5xx). Each result has the name, what it means, when to use it, common causes and the defining spec. Non-standard nginx/Cloudflare codes are only searched when "includeNonStandard" is set. Web version: https://s3eidat.github.io/http-status/ |
| id_generateA | Generate 1–1000 unique IDs with a cryptographic RNG: UUID v4 (random), UUID v7 (time-ordered, RFC 9562, strictly increasing within a batch), ULID (26 Crockford Base32 chars, monotonic) or NanoID (custom length 2–128 and alphabet: URL-safe default, alphanumeric, hex, digits, no look-alikes, or your own). Options: uppercase, no dashes. Web version: https://s3eidat.github.io/uuid-forge/ |
| id_inspectA | Check whether a string is a valid UUID (any version; braces, urn:uuid: and missing dashes accepted) or ULID, and report its version, variant and canonical form. For UUID v1, v6, v7 and ULID also returns the embedded creation time. Web version: https://s3eidat.github.io/uuid-forge/ |
| image_ascii_artA | Turn an image into ASCII art: each character cell takes the average brightness of its area (cells are twice as tall as wide) and maps it onto a character ramp: standard " .:-=+*#%@", detailed (70 characters), blocks " ░▒▓█", simple, binary, or your own. Contrast, brightness and invert (for light text on dark backgrounds). Returns the text; format "png" also renders it to an image (optionally in the image's colours). Transparent areas count as white paper. Web version: https://s3eidat.github.io/ascii-art/ |
| image_ascii_bannerA | Big banner letters from text, using the website's own bitmap fonts: block (█ 5×7), char (any fill character, e.g. #), shadow (█ with ░ shade), compact (half-block 5×7), small (█ 3×5), tiny (half-block 3×5). Letters A-Z, digits and common punctuation (unknown characters show as "?"); one banner per input line. Returns the text; format "png" also renders it to banner.png. Web version: https://s3eidat.github.io/ascii-art/ |
| image_compressA | Make an image file smaller: re-encode at a quality (default 80) and optionally cap the longest side (maxSide), as JPEG, WebP, AVIF or PNG ("keep" = same format; GIF/BMP/TIFF become PNG). Or give targetBytes to find the highest quality that fits that size. With keepSmaller (default on) the original is kept when re-encoding would not make it smaller. Reports before/after sizes and % saved. Transparent areas become white in JPEG. Metadata (EXIF, GPS) is not copied. PNG is lossless (quality ignored). Web version: https://s3eidat.github.io/image-squeeze/ |
| image_convertA | Convert an image to PNG, JPEG, WebP, AVIF, GIF or TIFF. Reads JPEG, PNG, WebP, AVIF/HEIF, GIF (first frame), TIFF, SVG, BMP and ICO. Transparent areas are filled with |
| image_cropA | Crop an image to a pixel box (x, y, width, height) or to an aspect ratio (1:1, 4:5, 3:2, 16:9, 9:16, "W:H" or a number), taking the largest centred region (or aligned to an edge with |
| image_exif_readA | Show the hidden metadata in a photo: camera make/model, lens, date taken, exposure, ISO, software, author/copyright, serial numbers, comments, PNG text chunks, and GPS coordinates (where the photo was taken). Lists every metadata block (EXIF, XMP, ICC, IPTC, embedded previews) with its size and flags privacy-sensitive fields. JPEG and PNG fully; WebP/AVIF/HEIC/TIFF EXIF via sharp. Web version: https://s3eidat.github.io/exif-cleaner/ |
| image_exif_stripA | Remove EXIF, GPS location, XMP, IPTC, comments, PNG text chunks and embedded previews from a photo before sharing it. JPEG and PNG are cleaned losslessly (image data copied byte for byte, like the website); by default the rotation is kept as a tiny orientation-only EXIF and the ICC colour profile is kept. applyOrientation re-encodes JPEGs with the rotation baked into the pixels. WebP/AVIF/HEIC/TIFF are re-encoded without metadata. Output name -clean.. Web version: https://s3eidat.github.io/exif-cleaner/ |
| image_favicon_setB | Make a complete favicon set from a letter/emoji/short text or from an image: favicon.ico (16, 32, 48 px), favicon-16x16.png, favicon-32x32.png, apple-touch-icon.png (180, square, solid), android-chrome-192x192.png and -512x512.png, site.webmanifest and head-snippet.html with the tags. Rounded square with background colour (or transparent), corner radius and padding in %. Writes everything into one folder. Web version: https://s3eidat.github.io/favicon-forge/ |
| image_from_base64B | Decode Base64 back into a file: accepts a data URI, a CSS url("data:…") rule, an tag, URL-encoded SVG data URIs, or raw Base64 (standard or URL-safe, line breaks allowed). Detects the real type from the bytes, warns when it differs from the declared one, and writes decoded.. Give the text inline or as a path to a text file. Web version: https://s3eidat.github.io/image-to-base64/ |
| image_paletteA | Extract the main colours of an image with their share of the picture: k-means (default, deterministic) or median cut, 1-16 colours, sorted by share. Transparent pixels are ignored. Returns hex + rgb + % per colour, CSS custom properties (:root { --color-1 … }) or JSON, and optionally writes the website's swatch strip as palette.png. Same algorithm and sampling as the website, so the colours match. Web version: https://s3eidat.github.io/palette-from-image/ |
| image_placeholderA | Make a placeholder image of any size (up to 8000 px a side): solid background with centred text (default "W × H", "\n" for line breaks), auto-fitted font size or a fixed one, PNG / JPEG / WebP / SVG. Size presets for web, social media, IAB ads and devices. Optionally returns a data URI / tag for inlining. Text uses Inter when installed, else a system sans-serif. Web version: https://s3eidat.github.io/placeholder-image/ |
| image_resizeA | Resize an image by pixels or percent, keeping the aspect ratio. Give width or height (the other side follows), or both: fit "cover" (default, as on the website) centre-crops to that ratio first so nothing is stretched, "contain" fits inside the box, "fill" stretches. Optional crop ratio (1:1, 4:5, 3:2, 16:9, 9:16, orig) or crop box before resizing, social-media presets, output JPEG/PNG/WebP/AVIF. Up to 16384 px a side. Output name: -x.. Web version: https://s3eidat.github.io/image-resize/ |
| image_rotateA | Rotate an image clockwise by 90, 180, 270 or any angle (the canvas grows to fit; new corners get |
| image_svg_to_pngA | Rasterise an SVG to a crisp PNG: scale (1×, 2×, 3×, 4×… default 2×), a target width or height (aspect kept), or an exact size (stretched). Units (px, pt, mm, cm, in) and viewBox-only SVGs are understood; transparent background or a solid colour. Scripts, event handlers and external references are removed first. Name @2x.png. Web version: https://s3eidat.github.io/svg-to-png/ |
| image_to_base64A | Encode an image (or any file) as Base64: a data URI, bare Base64, a CSS background-image rule, an HTML tag (with width/height), Markdown, or for SVG a URL-encoded data URI (usually ~30% smaller). Detects the type from the bytes and warns when the result is too big to inline (over 10 KB: slows pages; over 1 MB: use a normal file). Results longer than maxChars are written to a .txt file instead of being returned. Web version: https://s3eidat.github.io/image-to-base64/ |
| image_watermarkA | Add a text or logo watermark to a photo. Size is a % of the photo width, margin a % of the shorter side, so the result looks the same on any resolution. One of 9 positions or tiled across the whole image (brick pattern), with opacity, rotation, colour, weight and a soft shadow for text. Logo: any image (PNG with transparency works best). Output keeps the input format (JPEG/PNG/WebP) or as chosen; name -watermarked.. Text uses the Inter font when installed, else a system sans-serif. Web version: https://s3eidat.github.io/watermark/ |
| ip_in_rangeB | Check whether an IPv4 or IPv6 address falls inside a range given as CIDR ("10.0.0.0/8", "2001:db8::/32"), a dash range ("192.168.1.10 - 192.168.1.60") or a single address. Web version: https://s3eidat.github.io/subnet-calc/ |
| json_formatA | Validate, pretty-print (2 or 4 spaces, tab) or minify JSON, optionally sorting object keys (deeply). Invalid JSON gives a clear error with line and column and the lines around it. Also returns size, key count, depth and value count. Give "text" or a file "path"; "output" writes the result to a file. Uses the standard JSON parser (no comments or trailing commas). Web version: https://s3eidat.github.io/json-studio/ |
| json_queryA | Pick values out of JSON with a JSONPath expression. Supported: $ (root, optional), .key, ['key'], [0], [-1], [], ., ..key (recursive), [start:end:step] slices, unions [0,2] / ['a','b'], and filters like [?(@.price < 10 && @.tags)] (==, !=, <, <=, >, >=, =~ /regex/i, &&, ||, !, .length). Returns each match with its path (the same path style the website's tree view copies, e.g. $.store.book[0].title). Give "text" or a file "path". Web version: https://s3eidat.github.io/json-studio/ |
| json_to_csvA | Convert JSON to CSV. An array of objects becomes one row per object with nested objects/arrays flattened to dotted columns (address.city, tags.0); an array of arrays is written as-is. Fields are quoted only when needed (delimiter, quotes, line breaks, leading/trailing spaces); CRLF line ends. A formula guard (on by default) prefixes cells starting with = + - @ so spreadsheets don't run them. Give "text" or a file "path". Web version: https://s3eidat.github.io/csv-json/ |
| json_to_typesA | Generate type definitions from a JSON sample: TypeScript interfaces (or type aliases), Go structs with json tags (initialisms like ID/URL, pointers for optional/nullable, optional omitempty), Python dataclasses (snake_case fields with the original key noted) and Zod schemas. All items of an array are merged into one type (missing keys become optional, null makes a field nullable, int+float → number/float64, mixed values → unions); identical shapes share one name. These four are every language the website supports. Give "text" or a file "path". Web version: https://s3eidat.github.io/json-to-types/ |
| json_to_yamlA | Convert JSON to YAML (js-yaml dump: no line wrapping, no anchors; strings that would read as numbers/booleans are quoted). Options: 2 or 4 space indent, sort keys, and write a top-level array as a multi-document YAML stream (--- per item). Invalid JSON gives line and column. Give "text" or a file "path". Web version: https://s3eidat.github.io/yaml-json/ |
| jwt_decodeA | Decode a JSON Web Token (a leading "Bearer " is fine): header, payload, iat/nbf/exp/auth_time as ISO dates with relative time, expired / not-yet-valid status, and named standard claims. If "secret" is given, verifies HS256/HS384/HS512 signatures (secret as text or Base64URL). RS/ES/PS tokens are decoded but not verified (needs a public key). Encrypted JWE tokens can't be read. Web version: https://s3eidat.github.io/jwt-inspector/ |
| markdown_tableA | Make a GitHub-flavoured Markdown table from CSV, TSV, a JSON array (of objects or of arrays), an existing Markdown table (to re-align / re-pad it) or a "rows" array. Per-column alignment (left, center, right), columns padded to line up (optional), pipes escaped as | and line breaks as . CSV delimiter (comma, semicolon, tab) is detected from the first line. Give "text", a file "path" or "rows". Web version: https://s3eidat.github.io/markdown-table/ |
| markdown_table_parseA | Read a Markdown table (pipes optional at the ends, | escapes, as line breaks) back into data: JSON objects keyed by the header, JSON arrays, or CSV; also returns each column's alignment. Uses the website's Markdown import. Give "text" or a file "path". Web version: https://s3eidat.github.io/markdown-table/ |
| meta_tags_generateA | Generate the HTML for SEO and social sharing: , meta description, canonical link, Open Graph (og:type, url, title, description, image + alt, site_name, locale) and X/Twitter card tags. All values are HTML-escaped. Also checks lengths (title 30–60, description 70–160 characters), URLs and the @handle, and shows how Google, Facebook and X would truncate the title and description. URLs without a scheme get https://. Optionally writes the tags to an .html file. Web version: https://s3eidat.github.io/meta-tags/ |
| password_checkA | Estimate how strong a password really is, the way attackers guess (zxcvbn-style): finds common passwords (1,282-entry list), dictionary words (also reversed, capitalised or l33t), keyboard walks, sequences, repeats, years and dates, then the cheapest way to guess the whole thing. Returns a 0–4 score, entropy bits, guesses, crack time for 4 attack scenarios, the pieces found, and advice. Offline only: no breach lookups, nothing stored or logged. Web version: https://s3eidat.github.io/password-check/ |
| password_generateA | Generate strong random passwords (8–128 chars; lower/upper/digits/symbols; skip look-alikes Il1|O0o; exclude your own characters; require every chosen set) or passphrases (3–12 words from the website's 2,381-word list, separator, capitalise, add a number). Returns 1–1000 results with exact entropy bits, a strength grade and the time to crack at 100 billion guesses/s. Always crypto random (OS CSPRNG, rejection sampling); nothing is stored or logged. Web version: https://s3eidat.github.io/pass-forge/ |
| pdf_compressA | Shrink a PDF by re-rendering every page as a JPEG image (best for scans and photo-heavy files). Presets like the website: email (96 DPI, quality 55), balanced (144 DPI, 72), high (220 DPI, 85); or set dpi/quality yourself; optional grayscale. The result loses selectable text, links and form fields. Reports before/after size and a verdict ("bigger" means keep the original: the PDF was already efficient). Web version: https://s3eidat.github.io/pdf-compress/ |
| pdf_extract_pagesA | Make one new PDF from selected pages of a PDF, e.g. "1-3, 7, 10-" (order as written, each page once). The rest of the file is left out. To reorder, duplicate or delete pages use pdf_organize. Web version: https://s3eidat.github.io/pdf-split/ |
| pdf_form_fieldsA | List the fillable fields of a PDF form in reading order: name, readable label, type (text, checkbox, radio, dropdown, list, signature, button), page, current value, options, and whether it is required / read-only / multi-line. Use the names with pdf_form_fill. Web version: https://s3eidat.github.io/pdf-fill/ |
| pdf_form_fillA | Fill PDF form fields by name (get names from pdf_form_fields): text as strings, checkboxes as true/false, radio groups and dropdowns by option text, lists as arrays. Optionally flatten (bake the answers into the page, no longer editable). Only changed fields are redrawn. Text the standard font cannot draw (Arabic…) is kept and viewers are asked to draw it, but cannot be flattened. Web version: https://s3eidat.github.io/pdf-fill/ |
| pdf_from_imagesA | Make a PDF from images (JPEG, PNG, WebP, GIF, TIFF, AVIF, SVG…), one image per page, in the order given. Page size A4, Letter, or "fit" (page = image size at 96 dpi); orientation auto/portrait/landscape; margin in mm; quality "original" (JPEG/PNG kept as-is), high (≤3000 px, JPEG 90), medium (≤2000 px, 75) or small (≤1400 px, 60). Photos are turned upright from their EXIF orientation. Web version: https://s3eidat.github.io/images-to-pdf/ |
| pdf_infoA | Quick facts about a PDF for planning the next step: page count, page sizes (points, mm, paper name such as "A4 portrait", grouped by size), rotated pages, encryption, PDF version, form field count, title/author, and which pages have no text layer (scans that would need OCR). Related web tool: https://s3eidat.github.io/pdf-metadata/ |
| pdf_mergeA | Combine several PDFs into one, in the order given. Each entry can be a file (path or base64) or {file, pages} to take only some pages ("1-3, 5, 8-"; "3-1" keeps reverse order; a page can repeat). Password-protected PDFs must be unlocked first. Web version: https://s3eidat.github.io/pdf-merge/ |
| pdf_metadata_readA | Show what a PDF reveals about itself: Title, Author, Subject, Keywords, Creator, Producer, creation/modification dates (with time zone), custom info fields, XMP metadata (size, edit history, creator) and the document ID. Optionally returns the XMP XML. Web version: https://s3eidat.github.io/pdf-metadata/ |
| pdf_metadata_writeB | Change PDF info fields (title, author, subject, keywords, creator, producer, dates, custom fields) or strip all metadata: info fields, XMP, page-level data and the document ID, and drop unreachable leftovers from earlier edits so no trace stays in the bytes. Untouched values keep their exact original form. Web version: https://s3eidat.github.io/pdf-metadata/ |
| pdf_organizeA | Rebuild a PDF from a page list: reorder, delete (leave pages out), duplicate (list a page twice) and insert blank pages. "3, 1-2, blank, 5-" puts page 3 first, then 1-2, a blank page (same size as the page before it), then 5 to the end; page 4 is dropped. Optionally rotate pages of the result. Existing page rotation is kept. Web version: https://s3eidat.github.io/pdf-organizer/ |
| pdf_page_numbersA | Add page numbers to a PDF, plus an optional header and footer line. Format tokens: {n}, {total}, {date}, {filename} (e.g. "Page {n} of {total}", "{n} / {total}", "- {n} -"). Choose the corner/edge, start number, how many leading pages to skip (e.g. a cover), a page range, font, size, colour and margin. Numbers stay upright on rotated pages. Web version: https://s3eidat.github.io/pdf-page-numbers/ |
| pdf_rotateA | Rotate selected pages of a PDF by 90, 180 or 270 degrees clockwise (-90 = counter-clockwise), on top of any rotation they already have. Other pages, links and form fields are left as they are. Web version: https://s3eidat.github.io/pdf-organizer/ |
| pdf_sign_imageA | Place a signature (or initials, stamp, logo) image on PDF pages at x/y/width in points, measured from the top-left of the page as it is shown (rotated pages are handled). A light paper background is removed by default so scanned signatures sit cleanly on the page. Optional text marks (name, date…) can be added too. This is a visual signature, not a cryptographic digital signature. To draw a signature by hand, use the web version: https://s3eidat.github.io/pdf-sign/ |
| pdf_splitA | Split one PDF into several PDFs written to a folder: by page ranges (one file per range, e.g. "1-3, 4-6, 7-"), every N pages, or one file per page. Files are named like the website: -pages-1-3.pdf, -part-01.pdf, -page-001.pdf. Use pdf_extract_pages to get a single PDF with chosen pages. Web version: https://s3eidat.github.io/pdf-split/ |
| pdf_to_imagesA | Render PDF pages to PNG, JPEG or WebP images in a folder (one file per page, named -p001.png…). Choose the DPI (72 = screen size, 150 = default, 300 = print), JPEG/WebP quality, a page range, and a transparent background for PNG/WebP. Very large pages are capped at 16384 px a side / 16.7 megapixels, like the website. Web version: https://s3eidat.github.io/pdf-to-images/ |
| pdf_to_textA | Extract the text of a PDF with lines and paragraphs rebuilt (right-to-left Arabic/Hebrew lines in reading order), as plain text or Markdown, with optional page separators and reflow (join lines, mend hyphenated words). Returns per-page word counts and flags pages with no text layer (scans: this tool does no OCR). Supports page ranges and passwords. Give "output" to write a .txt/.md file instead of returning the text inline. Web version: https://s3eidat.github.io/pdf-to-text/ |
| pdf_watermarkA | Stamp a text or image watermark on PDF pages: centred or tiled across the page, with opacity, angle, size, colour and a page range. It reads upright on rotated pages. Text the standard PDF fonts cannot draw (Arabic, CJK…) is stamped as an image. Defaults match the website: "CONFIDENTIAL", Helvetica Bold 72 pt, #d64545, 25% opacity, 45°. Web version: https://s3eidat.github.io/pdf-watermark/ |
| prayer_timesA | Islamic prayer times (Fajr, Sunrise, Dhuhr, Asr, Maghrib, Isha) for any coordinates + IANA time zone, or a known city, for one day, several days or a whole month, plus the Hijri (Umm al-Qura) date and the next prayer with a countdown. Same astronomy as the website (adhan.js): 13 methods (Jordan Awqaf, MWL, Umm al-Qura, Egyptian, ISNA, Karachi, Dubai, Kuwait, Qatar, Turkey, Singapore, Tehran, Moonsighting), Shafi'i or Hanafi Asr, and the recommended high-latitude rule beyond 48° (overridable). Times are local HH:MM (24 h) in the given zone, plus UTC ISO. Coordinates are rounded to 4 decimals like the site. Web version: https://s3eidat.github.io/prayer-times/ |
| qibla_directionA | Qibla direction (great-circle bearing from true north to the Kaaba in Makkah) and distance from any coordinates or a known city, with the compass point, a "face north, then turn right/left N°" instruction, and (if you give a device heading) how far to turn. Bearings are from TRUE north; a magnetic compass can differ by a few degrees. Web version: https://s3eidat.github.io/qibla-finder/ |
| qr_generateA | Make a QR code as SVG or PNG for a link, plain text, Wi-Fi login, contact card (vCard 3.0), email, SMS, phone call or map location. Same encoder as the website (qrcode.js: versions 1-40, error correction L/M/Q/H, smallest version that fits, best mask), UTF-8 so Arabic/emoji work. Options: size in px, quiet-zone margin, colours, square/rounded/dots modules, and an optional centre logo (forces level H). Returns the file path, the exact encoded text, version, module count and contrast warnings. Max about 2.9 KB of data at level L. Web version: https://s3eidat.github.io/qr-studio/ |
| qr_readA | Read (decode) a QR code from an image file: photo, screenshot or scan (PNG, JPEG, WebP, GIF, TIFF, AVIF, SVG). Uses jsQR like the website, trying several sizes and inverted (light-on-dark) codes. Returns the text plus what it is (Link, Wi-Fi, Contact, Email, SMS, Phone, Location, Event or Text) with parsed fields, and safety notes for links (http, hidden @ user part, punycode lookalikes, bare IPs, odd ports). Links are never opened. Reads one code per image. Web version (with camera): https://s3eidat.github.io/qr-scanner/ |
| qr_wifiA | Make a Wi-Fi QR code that phones join by scanning (WPA/WPA2/WPA3, WEP or open; hidden networks), as PNG or SVG, or a printable PDF card like the website's: coloured header with the Wi-Fi symbol, "Scan to join", the QR code, network name and (optionally) the password, on an A6 card, an A4 poster, or A4 sheets of 4 or 9 cards to cut. Special characters (; , : " ) are escaped. The PDF card uses English labels and Latin text only for now. Web version: https://s3eidat.github.io/wifi-card/ |
| random_diceA | Roll dice with standard notation (2d6+3, d20, d%, 4d6dl1 / "4d6 drop lowest", 2d20kh1 advantage, 2d20kl1, 5d10dh2; up to 100 dice per term, 2–1000 sides, 20 terms), flip coins (counts + streaks), or draw random whole numbers in a range (optionally unique and sorted, up to 10,000). Crypto random with rejection sampling (no modulo bias); optional seed for reproducible results. Web version: https://s3eidat.github.io/dice-roller/ |
| random_pickA | Pick a random winner (or several, without repeats, like spinning with "remove winner" on) from a list of names, or shuffle / sort the whole list. Fair: crypto random with rejection sampling. Entries are trimmed, cut to 100 characters, max 500; at least 2 needed. Optional seed for a reproducible draw. Web version: https://s3eidat.github.io/wheel-picker/ |
| random_teamsA | Split a list of people into fair random teams: choose the number of teams or people per team. Add a skill level ("Ali, 5" / "Sara: 3") and teams are balanced by total skill (people without one count as the average). Team names: numbers, letters, colours, animals or your own. Crypto-random shuffle; optional seed for a reproducible split. Max 2000 people, 100 teams. Web version: https://s3eidat.github.io/team-maker/ |
| regex_testA | Run a JavaScript regular expression against text: every match with its index, length, numbered and named capture groups, plus an optional replace preview ($1, $, $&, $`, $', $$). Flags g i m s u y (and d, v). Runs in an isolated worker with a timeout (default 1.5 s) so catastrophic backtracking is reported instead of hanging. Lists up to 5000 matches. Web version: https://s3eidat.github.io/regex-playground/ |
| secret_santa_drawA | Draw Secret Santa (gift exchange) pairs: everyone gives to exactly one other person and receives from one, never themselves. Exclusions (couples, housemates…) block a pair both ways. Checks exactly whether a draw is possible and explains why not (and which exclusion to drop). Crypto random and uniform; optional seed. Up to 200 people. Nothing is emailed: hand each giver only their own line. Optional budget, date and message are echoed for slips. Web version: https://s3eidat.github.io/secret-santa/ |
| sql_formatA | Format SQL (one clause per line, indented sub-queries, CASE blocks, JOIN … ON with AND/OR, CREATE TABLE column lists) or minify it to one line per statement. Options: keyword case (UPPER, lower, keep), indent (2, 4, tab), trailing or leading commas, keep/drop comments when minifying. Dialect-neutral tokenizer: understands -- and /* */ comments, '' and E''' strings, "x", |
| subnet_calcA | IPv4: from "192.168.1.0/26", "10.0.0.5 255.255.255.0" or a wildcard mask, get network, broadcast, first/last host, usable and total addresses, netmask, wildcard, class, address type (private, CGNAT, loopback, documentation…), integer/hex/binary forms; optionally split into N equal subnets or allocate VLSM blocks by host counts ("Sales:50, Ops:20"). /31 and /32 follow RFC 3021. IPv6: compressed (RFC 5952) and expanded forms, network, first/last address, address count, number of /64s, reverse DNS name and type. Web version: https://s3eidat.github.io/subnet-calc/ |
| text_arabicA | Arabic text utilities. mode "clean": remove tashkeel (harakat and Quranic marks, optionally keeping shadda), remove tatweel (kashida), normalise letters (alef with hamza/madda/wasla → bare alef; alef maqsura and Farsi ya → ya; ta marbuta → ha; hamza on waw/ya → waw/ya), switch Latin , ; ? to Arabic punctuation, and convert digits (Arabic-Indic ↔ Western). mode "arabizi": turn Arabizi / Franco-Arabic chat text (mar7aba, 3arabi, 5ala9, el bait) into Arabic script. Returns the result with letter/word/character counts. Give "text" or a text file "path". Web version: https://s3eidat.github.io/arabic-tools/ |
| text_caseA | Convert text case: upper, lower, title (smart: keeps small words lower and iPhone/NASA as typed), sentence, camel, pascal, snake, kebab, constant, alternate, inverse. Works line by line and handles Unicode (Arabic, accents, ß). Web version: https://s3eidat.github.io/case-convert/ |
| text_citationA | Format references from structured fields in APA 7, MLA 9, Chicago author-date (17th), Harvard (Cite Them Right) or IEEE, for books, book chapters, journal articles, web pages, newspaper/magazine articles, videos and reports. Handles author-count rules (et al.), initials, organisations as authors, editions, page ranges (MLA 127-53), DOIs, URLs and access dates, and title case for MLA/Chicago/IEEE. Returns each citation as plain text and HTML (italics as ), the in-text citation, missing-field hints, and the whole list as a bibliography sorted for the style (numbered for IEEE). Web version: https://s3eidat.github.io/citation-gen/ |
| text_cleanA | Clean up text line by line with a fixed pipeline (same order as the website): strip HTML tags and decode entities → remove emojis → trim each line → collapse repeated spaces → remove empty lines → remove duplicate lines (optionally ignoring case) → sort (A–Z, Z–A, natural, by length) → reverse → shuffle (seedable) → add line numbers. Returns the cleaned text plus counts, or writes it to a file when "output" is given. Give "text" or a text file "path". Web version: https://s3eidat.github.io/text-cleaner/ |
| text_diffA | Compare two texts line by line (Myers diff) and return a unified diff (3 lines of context, like |
| text_escapeA | Escape or unescape a string for a target: JSON (string body), JavaScript (incl. template literals), HTML, XML, URL (encodeURIComponent, optional form +), SQL (doubled quotes, optional MySQL backslashes and wrapping quotes), CSV field (RFC 4180; comma, semicolon or tab), regex, POSIX shell single quotes, C/C++, Java/C#, and Unicode escapes (\uXXXX, \u{X}, \UXXXXXXXX, &#xX;, U+XXXX). Options per target as on the website. Set "allTargets" to get the escaped form for every target at once. Web version: https://s3eidat.github.io/text-escape/ |
| text_fancyA | Restyle text with Unicode look-alike characters for bios and posts (28 styles): Bold, Italic, Bold italic, Script, Bold script, Fraktur, Bold fraktur, Double-struck, Sans-serif, Sans bold, Sans italic, Sans bold italic, Monospace, Circled, Circled dark, Squared, Squared dark, Parenthesized, Fullwidth, Small caps, Superscript, Upside down, Strikethrough, Underline, Double underline, Slashed, Overline, Wide spaced. Only Latin letters and digits change (other scripts such as Arabic and emoji pass through); some styles cover only capitals or only some symbols. Give one "style", or none to get every style. Up to 20,000 characters. Web version: https://s3eidat.github.io/fancy-text/ |
| text_layout_fixA | Fix text typed with the wrong keyboard layout between US English (QWERTY) and Arabic (101): "hgsghl ugd;l" becomes the Arabic greeting, and Arabic gibberish typed on English keys becomes "hello". Direction "auto" detects it; in mixed text only the words that look mistyped are converted (using small English/Arabic letter-pair models), so words that are already right stay as they are. Handles the shift layer (harakat, hamza forms), lam-alef keys and Caps Lock (all-caps Latin input is treated as lowercase). Web version: https://s3eidat.github.io/layout-fixer/ |
| text_loremA | Generate placeholder text: classic Lorem ipsum, readable English filler, or Arabic filler. Choose paragraphs (max 100), sentences (max 500) or words (max 10000); optionally start with the classic opener and wrap paragraphs in tags. Give a seed for repeatable output (the same seed gives the same text). Writes a .txt/.html file instead when "output" is given. Web version: https://s3eidat.github.io/lorem-gen/ |
| text_morseA | Translate text to International Morse code and back. Encoding: letters separated by spaces, words by " / "; accents are folded (é → E) and characters without a code are skipped and counted. Decoding accepts . and - plus look-alikes (• · – — _), with words split by /, | or 2+ spaces; unknown codes become #. Encoding also returns the playing time at a given speed (PARIS timing: dot = 1200/WPM ms). No audio. Web version: https://s3eidat.github.io/morse-code/ |
| text_number_to_wordsA | Spell a number in words in English and Arabic: English cardinal (with decimals, optional British "and"), ordinal (twenty-first), cheque wording for an amount in a currency (cents in words or as 25/100, optional "only"), Arabic cardinal, and Arabic tafqeet for amounts with correct gender/number agreement of the currency noun (optional "faqat … la ghayr" wrapper and the modern 100 spelling). Currencies: JOD, USD, SAR, AED, KWD, EGP, GBP (or none). Accepts Arabic-Indic digits and thousands separators. Up to 999 trillion (15 digits). Web version: https://s3eidat.github.io/number-words/ |
| text_readabilityA | Score how easy an English text is to read: Flesch Reading Ease, Flesch-Kincaid Grade, Gunning Fog, SMOG, Coleman-Liau and Automated Readability Index (same formulas, sentence splitter and syllable estimate as the website), plus a verdict, average grade level, and Hemingway-style hints: long sentences (over 20 / 30 words), passive voice and adverbs. The formulas are built for English; for Arabic text the result says so (arabicWarning). Give "text" or a text file "path". Web version: https://s3eidat.github.io/readability/ |
| text_slugifyA | Turn titles into clean URL slugs, one slug per non-empty line (bulk). Folds accents (é → e, ß → ss), transliterates Arabic to Latin (the article al- becomes its own word) or keeps Arabic letters, converts Arabic-Indic digits, drops tashkeel, turns & into "and", can remove stop words (English and Arabic) and cap the length at a word boundary. Web version: https://s3eidat.github.io/slugify/ |
| text_social_countA | Check a post against platform limits the way the platforms count: X/Twitter weighted length (links = 23, emoji = 2, CJK = 2; limit 280), Threads 500, Bluesky 300, Instagram 2,200 (+ 30 hashtags), LinkedIn 3,000, Facebook 63,206, TikTok 4,000, YouTube title 100 / description 5,000, Pinterest 500, Google title ~60, meta description ~160. Characters are counted as user-perceived graphemes (one emoji = 1). Also: words, hashtags, mentions, links, emoji, and SMS encoding (GSM-7 vs Unicode) with the number of SMS parts and the characters that force Unicode. Give "text" or a text file "path". Web version: https://s3eidat.github.io/social-counter/ |
| text_word_countA | Count words, characters (with and without spaces), sentences, paragraphs, lines and unique words; estimate reading (238 wpm) and speaking (150 wpm) time; list the most used keywords with density. Works for English and Arabic (tashkeel ignored). Give "text" or a text file "path". Web version: https://s3eidat.github.io/word-count/ |
| time_convertA | Convert a Unix timestamp (seconds, ms, µs or ns — auto-detected from the number of digits, or set "unit") or a date string to ISO 8601 (UTC and in a timezone), RFC 7231 / UTC string, local time in any IANA timezone with its offset, relative time ("3 hours ago"), day of year, ISO week, and Unix seconds/ms. A wall-clock time without an offset (e.g. "2026-10-26T14:30") is read in "timezone". Also shows the same instant in extra "zones" (world clock). No value = now. Date arithmetic is not done here. Web version: https://s3eidat.github.io/timestamp-convert/ |
| time_world_clockA | Current (or any given) time in a list of time zones or cities: local time, date, weekday, UTC offset, difference from a home zone, day/night and working-hours flags. Plus the website's meeting planner: the 24 hours of a day in the home zone, each zone's local hour and band (work 9–17, awake 7–22, night), and the hours when everyone is in working hours. Zones: IANA ids ("Asia/Tokyo") or city names ("Mecca", "New York", "Tokyo"). Uses Node's ICU time-zone data; no network. Web version: https://s3eidat.github.io/world-clock/ |
| url_decodeA | Decode percent-encoded text (decodeURIComponent, or decodeURI with mode "full"). Optionally turn "+" into spaces (form encoding). Errors on malformed %-sequences. Web version: https://s3eidat.github.io/url-toolkit/ |
| url_encodeA | Percent-encode text for URLs, exactly like JavaScript encodeURIComponent ("component", default) or encodeURI ("full"). UTF-8 based. Web version: https://s3eidat.github.io/url-toolkit/ |
| url_parseA | Split a URL into protocol, user, host, port, path, query, fragment and origin (with decoded forms), list its query parameters in order (duplicates and bare flags kept, + as space) and flag tracking parameters (utm_*, fbclid, gclid, msclkid, mc_cid, _ga, _hsenc…). Optionally returns the URL with tracking removed. A missing scheme means https://. Passwords are never echoed. Web version: https://s3eidat.github.io/url-toolkit/ |
| useragent_parseA | Parse browser user-agent strings into browser + version, engine (Blink, WebKit, Gecko, Trident, EdgeHTML, Presto), OS + version, device type (desktop, mobile, tablet, TV, console, bot, HTTP client), vendor and model. Recognises ~50 crawlers and AI bots (Googlebot, Bingbot, GPTBot, ClaudeBot, PerplexityBot…) and HTTP clients (curl, python-requests, Go, okhttp, Postman…). Give one "userAgent", a list, or a text/log file (one per line, or the last quoted field of each access-log line); up to 5000 per call, with a count by type. Web version: https://s3eidat.github.io/ua-parser/ |
| xml_formatA | Validate XML (well-formedness and namespaces, with line and column for errors), pretty-print it (2, 4 spaces or tab; mixed content, CDATA and xml:space="preserve" kept exactly as written), minify it, or convert it to JSON (attributes as "@name", repeated elements as arrays, text as "#text"). Optionally removes comments. Never loads external DTDs or entities. Give "text" or a file "path". Web version: https://s3eidat.github.io/xml-format/ |
| xml_queryA | Run an XPath 1.0 expression on XML: node-sets (elements, attributes, text…), numbers (count(), sum()), strings and booleans. Full XPath 1.0: all axes, predicates, operators and the core function library. Namespace prefixes declared anywhere in the document can be used as-is; a default namespace on the root gets the prefix "d" (e.g. //d:book), as on the website. Each matched node comes back as XML text plus its type, name and XPath location. Web version: https://s3eidat.github.io/xml-format/ |
| yaml_to_jsonA | Convert YAML to JSON (YAML 1.2 core schema plus anchors/aliases, << merge keys, timestamps, multi-document files). Safe: no code tags (!!js/function, !!python… are rejected), alias bombs and recursive aliases are stopped. Several documents become a JSON array. Errors give line and column. Give "text" or a file "path". Web version: https://s3eidat.github.io/yaml-json/ |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 162 tools
Most tools target distinct operations, but the large surface creates real overlap clusters: base64_decode vs image_from_base64, image_convert vs image_svg_to_png, image_resize vs image_crop, and pdf_split vs pdf_extract_pages vs pdf_organize. The detailed descriptions help resolve these, but an agent must still carefully compare several similar tools before choosing.
Names consistently use snake_case with a category prefix (ai_, pdf_, image_, text_, calc_, json_, etc.) and readable action/resource suffixes. There is some variation between verb-first and noun-first forms (pdf_merge vs pdf_page_numbers, image_resize vs image_palette), but the pattern remains predictable overall.
162 tools is far beyond a well-scoped MCP surface; even for a broad utility suite, this volume imposes a heavy selection and context burden on an agent. Many individual tools are justified, but the overall set is excessively large rather than appropriately bounded.
Coverage is unusually broad across PDFs, images, documents, text, JSON/XML/YAML, calculators, crypto, QR/barcodes, and developer utilities, with most workflows having multiple supporting operations. Minor gaps remain, such as audio/video transformation or generic file-system operations, but core domains are well covered.
unless embedImages is true (then data: URIs, which can be very large). Returns the number of conversion warnings (unrecognised styles and the like) and the first few messages. Old binary .doc files are not supported. Accepts a local path or base64. Inline Markdown is cut at maxChars (default 200k); "output" saves it to a file. Runs locally; nothing is uploaded.