S3eidat Tools
NPM · S3EIDAT-TOOLS-MCP
Free, private PDF, image, text, developer, calculator and QR tools. Runs locally; no uploads.
Available components
Last scanned (11 hours ago)
Scores higher than 31% of npm servers
Category Documents and Files
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security88
- No malware found by supply-chain analysis.Pass
- CVE check failed: a known high-severity CVE affects image-size 1.2.1, reached via pptxgenjs > image-size. A fixed version is available. View diagnostics → Fail
- No install/post-install scripts declared.Pass
- Dependency health was assessed across the 400 of 513 dependencies we could resolve, so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 5 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability58
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 49482 tokens (~305/item across 162 items; 162 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage99
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 98% of tool parameters carry a description.Partial
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "image_exif_strip" implies "remove" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Fail
- An AI judge read all 163 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Checks we ran (15)
- Malware scan
- Known CVEs
- Install scripts
- Dependency health
- Source repository
- Provenance
- License
- Maintenance
- Security disclosure
- Schema quality
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
Checks we could not complete (1)
These are gaps on our side, not findings about this package. We only credit what we can confirm, so a category made up entirely of them scores 0.
- Stability in Stability & Change Management (scores 0 for this)Stability not yet verified: not enough scan history yet (needs a 30-day window).
Does not apply to this package (2)
- Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
- Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
The score does not measure everything. What the score does not measure →
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 0
- CVE-2026-118764 no longer affects this package ▲ security
- 31 Oct 26 +15
- CVE-2026-118764 affects this package: high ▼ security
- Malware scan: unverified → pass ▲ security
- 30 Oct 26 47
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed npm/s3eidat-tools-mcp@0.1.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Vulnerabilities 3 findings
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-5p2g-fcmc-qvqq | CVE-2025-71329 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-w3rx-r6r6-pgpr | CVE-2025-71330 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-w5hq-g745-h8pq | CVE-2026-41907 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N | yes |
Background: What a vulnerability scan can and cannot prove →
Dependencies 400 packages
| Packages resolved | 400 |
|---|---|
| Deprecated | 6 |
| Stale | 116 |
| No linked repository | 1 |
| Tree resolution | Partial |
The dependency tree was only partially resolved, so these counts may be incomplete.
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
qr_wifi Wi-Fi QR code and card ~440
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/
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | pdf = printable card sheet (default); png/svg = just the QR code. |
| hidden | boolean | – | The network is hidden (not broadcast). |
| layout | string | – | PDF: a6 = one A6 card; a4 = one A4 poster; a4x4 = A4 sheet of 4 cards (default); a4x9 = A4 sheet of 9 small cards. |
| margin | integer | – | PNG/SVG: quiet zone in modules. |
| output | string | – | Where to write the result: a file path, or a folder ending in "/". Default: the server output folder (a temp folder unless --out-dir is set). |
| password | string | – | Wi-Fi password (ignored for open networks). |
| returnBase64 | boolean | – | Also return the output as base64 in the result (only for small files). Default false. |
| security | string | – | WPA (WPA/WPA2/WPA3, default), WEP, or nopass (open network). |
| showPassword | boolean | – | PDF: print the password under the code. |
| size | integer | – | PNG/SVG: image size in px. |
| ssid | string | yes | Network name (SSID). |
| theme | string | – | PDF: card colour; "saver" is an ink-saving outline. |
| title | string | – | PDF: heading on the card (default "Wi-Fi"). |
No output schema declared.
No examples provided.
random_dice Dice roller, coin flip, random numbers ~300
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/
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | numbers: how many numbers. |
| flips | integer | – | coin: how many coins to flip. |
| max | integer | – | numbers: largest value (inclusive). |
| min | integer | – | numbers: smallest value (inclusive). |
| mode | string | – | What to do. |
| notation | string | – | dice: the dice notation, e.g. "3d8+2d6+4". |
| rolls | integer | – | dice: how many times to roll the expression. |
| seed | string | – | Optional seed for a reproducible result (same seed + same input = same output). Omit for true crypto randomness. |
| sort | boolean | – | numbers: sort ascending. |
| unique | boolean | – | numbers: no repeats. |
No output schema declared.
No examples provided.
random_pick Wheel picker (random pick) ~201
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/
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | How many winners to pick (each winner is removed before the next spin). |
| items | array | – | The entries, one per array item. |
| mode | string | – | "pick" winners, "shuffle" the list, or "sort" it A→Z. |
| seed | string | – | Optional seed for a reproducible result (same seed + same input = same output). Omit for true crypto randomness. |
| text | string | – | Or: the entries as text, one per line. |
No output schema declared.
No examples provided.
random_teams Team maker ~299
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/
| Name | Type | Req | Description |
|---|---|---|---|
| balance | boolean | – | Balance teams by skill when skills are given. |
| customNames | array | – | naming=custom: team names in order (missing ones fall back to "Team N"). |
| mode | string | – | "teams": make `num` teams; "per": `num` people per team. |
| naming | string | – | Team names: Team 1…, Team A…, colours, animals, or customNames. |
| num | integer | – | Number of teams (min 2) or people per team (min 1), see mode. |
| people | array | – | People, one per item, optionally "Name, skill" (skill 0–100). |
| seed | string | – | Optional seed for a reproducible result (same seed + same input = same output). Omit for true crypto randomness. |
| text | string | – | Or: people as text, one per line. |
No output schema declared.
No examples provided.
regex_test Regex test ~231
Run a JavaScript regular expression against text: every match with its index, length, numbered and named capture groups, plus an optional replace preview ($1, $<name>, $&, $`, $', $$). 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/
| Name | Type | Req | Description |
|---|---|---|---|
| flags | string | – | Regex flags, default "g". |
| limit | integer | – | Max matches to include in the result (count is still total). Default 500. |
| pattern | string | yes | The regex source, without slashes, e.g. "(\\d+)-(?<w>[a-z]+)". |
| replace | string | – | Replacement string for a replace preview (JavaScript String.replace syntax). |
| text | string | yes | The text to search. |
| timeoutMs | integer | – | Kill the regex after this many ms. Default 1500. |
No output schema declared.
No examples provided.
secret_santa_draw Secret Santa draw ~241
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/
| Name | Type | Req | Description |
|---|---|---|---|
| budget | string | – | Optional gift budget, e.g. "20 JD". |
| date | string | – | Optional exchange date, YYYY-MM-DD. |
| exclusions | array | – | Pairs of names who must not draw each other, e.g. [["Omar","Sara"]]. |
| message | string | – | Optional note for everyone. |
| names | array | yes | Participants (an item may also hold several names separated by commas or new lines). |
| seed | string | – | Optional seed for a reproducible result (same seed + same input = same output). Omit for true crypto randomness. |
No output schema declared.
No examples provided.
sql_format SQL format / minify ~349
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", `x` and [x] identifiers, $$ dollar quotes, ::casts, JSON operators, :name/$1/? parameters. Only re-spaces; never runs anything. Give "text" or a file "path". Web version: https://s3eidat.github.io/sql-format/
| Name | Type | Req | Description |
|---|---|---|---|
| commas | string | – | Put list commas at line ends (trailing) or starts (leading). |
| indent | – | – | Indentation: 2, 4 or "tab". |
| keepComments | boolean | – | Minify only: keep comments (as /* */). Optimizer hints /*+ */ and /*! */ are always kept. |
| keywordCase | string | – | Keyword and built-in function case. |
| mode | string | – | "format" (default) or "minify". |
| output | string | – | Optional: also write the result to this file path (or folder ending in "/"). The result text is then left out of the reply. Results over 1,000,000 characters are always written to a file. |
| path | string | – | Or: a path to a .sql file (UTF-8; use this for big inputs). |
| text | string | – | The SQL as inline text. |
No output schema declared.
No examples provided.
subnet_calc Subnet calculator (IPv4 / IPv6) ~322
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/
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | IPv4 or IPv6 address, optionally with /prefix (or an IPv4 dotted mask after a space or slash). |
| prefix | integer | – | Prefix length to use when "address" has none (default /24 for IPv4, /128 for IPv6), or to override it. |
| split | integer | – | IPv4: split the network into at least this many equal subnets (rounded up to a power of two; first 4096 listed). |
| vlsm | string | – | IPv4: VLSM host requirements, e.g. "50, 20, 10" or "Sales:50, Ops:20". Largest first, each block aligned. |
No output schema declared.
No examples provided.
text_arabic Arabic text tools ~505
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/
| Name | Type | Req | Description |
|---|---|---|---|
| arabicPunctuation | boolean | – | clean: Latin comma, semicolon and question mark → Arabic ones. |
| digits | string | – | clean: keep digits, convert Arabic-Indic/Persian digits to 0-9 ("western"), or 0-9 to Arabic-Indic ("arabic"). |
| keepShadda | boolean | – | clean: when removing tashkeel, keep the shadda. |
| mode | string | – | "clean" = clean & normalise Arabic text (default); "arabizi" = Arabizi (Latin letters + numbers) → Arabic script. |
| normalizeAlef | boolean | – | clean: alef with hamza above/below, madda or wasla → bare alef. |
| normalizeHamza | boolean | – | clean: hamza on waw → waw, hamza on ya → ya. |
| normalizeYa | boolean | – | clean: alef maqsura and Farsi ya → Arabic ya. |
| output | string | – | Optional: write the result to this file path (or folder ending in "/") instead of returning it. |
| path | string | – | Or: a path to a UTF-8 text file. |
| removeTashkeel | boolean | – | clean: remove tashkeel / harakat (default true). |
| removeTatweel | boolean | – | clean: remove tatweel / kashida (default true). |
| taMarbutaToHa | boolean | – | clean: ta marbuta → ha. |
| text | string | – | The text to transform. |
No output schema declared.
No examples provided.
text_case Case convert ~100
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/
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | yes | Target case. |
| text | string | yes | Text to convert. |
No output schema declared.
No examples provided.
text_citation Citation generator ~222
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 <i>), 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/
| Name | Type | Req | Description |
|---|---|---|---|
| autoCase | boolean | – | Apply title case where the style wants it (MLA, Chicago, IEEE book titles). Default true. |
| sources | array | yes | One or more sources. |
| style | string | yes | Citation style: apa, mla, chicago, harvard or ieee. |
No output schema declared.
No examples provided.
text_clean Text cleaner ~441
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/
| Name | Type | Req | Description |
|---|---|---|---|
| collapseSpaces | boolean | – | Collapse runs of spaces/tabs into one space (default true). |
| ignoreCase | boolean | – | When removing duplicates, treat lines that differ only in case as duplicates (default false). |
| numberLines | boolean | – | Prefix each line with its number ("1. ", padded) (default false). |
| output | string | – | Optional: write the cleaned text to this file path (or folder ending in "/") instead of returning it. |
| path | string | – | Or: a path to a UTF-8 text file. |
| removeDuplicates | boolean | – | Remove duplicate lines, keeping the first (default false). |
| removeEmoji | boolean | – | Remove emojis (©, ® and ™ are kept) (default false). |
| removeEmptyLines | boolean | – | Remove empty (whitespace-only) lines (default true). |
| reverse | boolean | – | Reverse the line order (default false). |
| seed | integer | – | Seed for a reproducible shuffle (default: random). |
| shuffle | boolean | – | Shuffle the lines (default false). |
| sort | string | – | Sort lines: none (default), az, za, natural (item 2 before item 10), length (shortest first). |
| stripHtml | boolean | – | Strip HTML tags (drops script/style/comments, block ends become line breaks) and decode entities (default false). |
| text | string | – | The text to clean. |
| trim | boolean | – | Trim spaces at the start and end of each line (default true). |
No output schema declared.
No examples provided.
text_diff Diff two texts ~264
Compare two texts line by line (Myers diff) and return a unified diff (3 lines of context, like `diff -u`), counts of added/removed/unchanged lines, and change blocks where each removed line is paired with the added line that replaced it and the changed words are marked [-old-] / {+new+}. Can ignore whitespace and case. Works with any language (Arabic included). Up to 50,000 lines per side. Web version: https://s3eidat.github.io/diff-view/
| Name | Type | Req | Description |
|---|---|---|---|
| changed | string | – | The changed text ("after"). |
| changedPath | string | – | Or: path to the changed text file. |
| ignoreCase | boolean | – | Treat lines that differ only in letter case as equal. |
| ignoreWhitespace | boolean | – | Treat lines that differ only in spacing as equal. |
| nameA | string | – | Label for the "---" header (default "original"). |
| nameB | string | – | Label for the "+++" header (default "changed"). |
| original | string | – | The original text ("before"). |
| originalPath | string | – | Or: path to the original text file. |
| wordDiff | boolean | – | Mark the changed words inside paired lines (default true). |
No output schema declared.
No examples provided.
text_escape Escape / unescape text ~446
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/
| Name | Type | Req | Description |
|---|---|---|---|
| allTargets | boolean | – | escape only: also return the text escaped for every target. |
| alwaysQuote | boolean | – | csv: always quote the field. |
| ascii | boolean | – | json/js/html/c/java: also escape non-ASCII characters (c: as UTF-8 octal). |
| delimiter | string | – | csv: field delimiter (comma, semicolon or tab). |
| direction | string | – | escape (default) or unescape. |
| every | boolean | – | unicode: escape every character, not only non-ASCII. |
| form | boolean | – | url: form style, + for spaces. |
| mysql | boolean | – | sql: escape backslashes too (MySQL). |
| named | boolean | – | html (with ascii): prefer named entities such as ©. |
| target | string | yes | Format: json, js, html, xml, url, sql, csv, regex, shell, c, java, unicode. |
| text | string | yes | The text to escape, or the escaped text to unescape. |
| unicodeFormat | string | – | unicode: u4 = \uXXXX (JS, JSON, Java), ubrace = \u{X} (ES6, Rust, Swift), u8 = \UXXXXXXXX (Python, C), html = &#xX;, uplus = U+XXXX. |
| wrap | boolean | – | sql: wrap in single quotes (unescape: strip them). |
No output schema declared.
No examples provided.
text_fancy Fancy text (Unicode styles) ~226
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/
| Name | Type | Req | Description |
|---|---|---|---|
| style | string | – | One style name (exact, e.g. "Bold", "Script", "Upside down"). Omit to get all styles. |
| text | string | yes | The text to restyle. |
No output schema declared.
No examples provided.
text_layout_fix Keyboard layout fixer (EN ⇄ AR) ~241
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/
| Name | Type | Req | Description |
|---|---|---|---|
| capsLock | boolean | – | Caps Lock was on: treat capital Latin letters as lowercase (detected automatically when all letters are capitals). |
| direction | string | – | "auto" (default) detects; "ar" = typed on English keys, convert to Arabic; "en" = typed on Arabic keys, convert to English. |
| path | string | – | Or: a path to a UTF-8 text file. |
| text | string | – | The mistyped text. |
No output schema declared.
No examples provided.
text_lorem Lorem ipsum generator ~254
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 <p> 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/
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | How many paragraphs / sentences / words (clamped to the unit limit). |
| html | boolean | – | Wrap each paragraph in <p>…</p>. |
| opener | boolean | – | Start with the classic opening line ("Lorem ipsum dolor sit amet…", "The quick brown fox…", or the Arabic one). Default true. |
| output | string | – | Optional: write the text to this file path (or folder ending in "/") instead of returning it. |
| seed | integer | – | Seed for repeatable output (default: random). |
| style | string | – | Word list: lorem (Latin), english, or arabic. |
| unit | string | – | What "count" counts. |
No output schema declared.
No examples provided.
text_morse Morse code translator ~204
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/
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | – | "encode" text → Morse, "decode" Morse → text, or "auto" (default): decode if the input only has Morse symbols, spaces, / and |. |
| text | string | yes | Text to encode, or Morse code to decode. |
| wpm | number | – | Speed in words per minute for the duration estimate (default 18). |
No output schema declared.
No examples provided.
text_number_to_words Number to words (English & Arabic) ~337
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/
| Name | Type | Req | Description |
|---|---|---|---|
| british | boolean | – | British English "and": one hundred and five. |
| currency | string | – | Currency for cheque / tafqeet wording: none (default), JOD, USD, SAR, AED, KWD, EGP, GBP. |
| modernHundred | boolean | – | Arabic: use the modern spelling of "hundred" (without the extra alif). |
| number | string|number | yes | The number or amount, e.g. "1500.250", "1,234,567.89", -12.05 (Arabic-Indic digits work too). |
| only | boolean | – | Add "only" (English) and the Arabic "faqat … la ghayr" wrapper to amounts. |
| subStyle | string | – | Cheque sub-units in words (twenty-five cents) or as a fraction (25/100). |
No output schema declared.
No examples provided.
text_readability Readability score ~165
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/
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | – | Or: a path to a UTF-8 text file. |
| text | string | – | The text to score. |
No output schema declared.
No examples provided.
text_slugify Slugify ~269
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/
| Name | Type | Req | Description |
|---|---|---|---|
| arabic | string | – | "latin" transliterates Arabic letters (default); "keep" keeps them. |
| foldAccents | boolean | – | Transliterate accents: é → e, ß → ss, æ → ae (default true). |
| lowercase | boolean | – | Lowercase the slug (default true). |
| maxLength | integer | – | Maximum slug length in characters, cut at a word boundary (0 = no limit). |
| removeStopWords | boolean | – | Remove stop words in English and Arabic such as the, of, and (kept if nothing else is left). |
| separator | string | – | Word separator: dash (default), underscore or dot. |
| text | string | yes | Title(s) to slugify. Each non-empty line becomes one slug. |
No output schema declared.
No examples provided.
text_social_count Social media character counter ~305
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/
| Name | Type | Req | Description |
|---|---|---|---|
| gsmLookalikes | boolean | – | Also return the text with curly quotes, dashes, ellipses, odd spaces etc. replaced by GSM-7 look-alikes (cheaper SMS). |
| path | string | – | Or: a path to a UTF-8 text file. |
| platforms | array | – | Only these meters: x, threads, bsky, ig, li, fb, tt, yt, ytd, pin, gt (Google title), gd (meta description). Default: all. |
| text | string | – | The post text. |
No output schema declared.
No examples provided.
text_word_count Word count ~157
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/
| Name | Type | Req | Description |
|---|---|---|---|
| includeStopWords | boolean | – | Count common words like "the"/"في" as keywords. |
| keywords | integer | – | How many top keywords to return (0 = none). |
| path | string | – | Or: a path to a UTF-8 text file. |
| text | string | – | The text to analyse. |
No output schema declared.
No examples provided.
time_convert Timestamp convert ~315
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/
| Name | Type | Req | Description |
|---|---|---|---|
| now | number | – | Reference "now" in Unix ms for the relative time. Default: the current time. |
| timezone | string | – | IANA timezone for the local view and for wall-clock input. Default: the server's (UTC). |
| unit | string | – | Unit of a numeric timestamp. Default: auto-detect. |
| value | string|number | – | A Unix timestamp (e.g. 1700000000 or "1700000000123"), an ISO/RFC date string, or a wall-clock "YYYY-MM-DDTHH:MM[:SS]". Default: now. |
| zones | array | – | Extra IANA timezones to show the same instant in, e.g. ["UTC","Asia/Tokyo"]. |
No output schema declared.
No examples provided.
time_world_clock World clock & meeting planner ~315
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/
| Name | Type | Req | Description |
|---|---|---|---|
| at | string | – | The instant to show (ISO 8601, e.g. "2026-01-15T12:00:00Z"). Default: now. |
| homeZone | string | – | Zone the differences and the planner day are measured from. Default: the first of zones. |
| hour12 | boolean | – | 12-hour clock (AM/PM) instead of 24-hour. |
| planner | boolean | – | Include the 24-hour meeting planner. |
| plannerDate | string | – | Planner day (YYYY-MM-DD in the home zone). Default: the date of "at" there. |
| zones | array | yes | Time zones or cities, e.g. ["Asia/Amman", "London", "New York"]. The first is the home zone unless homeZone is set. |
No output schema declared.
No examples provided.
url_decode URL decode ~130
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/
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | – | "component" = encodeURIComponent (for one query value or path segment; escapes / ? & = #). "full" = encodeURI (a whole URL; keeps those). |
| plusAsSpace | boolean | – | Treat "+" as a space (application/x-www-form-urlencoded). |
| text | string | yes | Percent-encoded text. |
No output schema declared.
No examples provided.
url_encode URL encode ~104
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/
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | – | "component" = encodeURIComponent (for one query value or path segment; escapes / ? & = #). "full" = encodeURI (a whole URL; keeps those). |
| text | string | yes | Text to encode. |
No output schema declared.
No examples provided.
url_parse URL parse ~144
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/
| Name | Type | Req | Description |
|---|---|---|---|
| stripTracking | boolean | – | Also return "cleanUrl" with tracking parameters removed. |
| url | string | yes | The URL to parse. |
No output schema declared.
No examples provided.
useragent_parse User agent parse ~244
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/
| Name | Type | Req | Description |
|---|---|---|---|
| accessLog | boolean | – | Read "file" as an access log: take the last quoted field of each line. |
| file | string | – | Or: a text file (path or base64) with one user agent per line, or an access log. |
| userAgent | string | – | One user-agent string. |
| userAgents | array | – | Several user-agent strings. |
No output schema declared.
No examples provided.
xml_format XML format / minify / validate / to JSON ~289
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/
| Name | Type | Req | Description |
|---|---|---|---|
| indent | – | – | Indentation: 2, 4, "tab" (or any number of spaces 0-8). |
| mode | string | – | "format" pretty-prints, "minify" strips layout whitespace, "json" converts to JSON, "validate" only checks (never throws on bad XML). |
| output | string | – | Optional: also write the result to this file path (or folder ending in "/"). The result text is then left out of the reply. Results over 1,000,000 characters are always written to a file. |
| path | string | – | Or: a path to a XML file (UTF-8; use this for big inputs). |
| removeComments | boolean | – | Drop <!-- comments --> (format and minify). |
| text | string | – | The XML as inline text. |
No output schema declared.
No examples provided.
xml_query XML XPath query ~258
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/
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Return at most this many nodes (default 1000). |
| namespaces | object | – | Extra or overriding prefix → namespace URI bindings, e.g. {"atom":"http://www.w3.org/2005/Atom"}. |
| path | string | – | Or: a path to a XML file (UTF-8; use this for big inputs). |
| text | string | – | The XML as inline text. |
| xpath | string | yes | XPath 1.0 expression, e.g. "//book[price > 30]/title", "count(//item)", "//d:entry/@id". |
No output schema declared.
No examples provided.
yaml_to_json YAML to JSON ~234
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/
| Name | Type | Req | Description |
|---|---|---|---|
| alwaysArray | boolean | – | Always output an array of documents, even for one document. |
| indent | – | – | Indentation: 2 or 4 spaces. |
| output | string | – | Optional: also write the result to this file path (or folder ending in "/"). The result text is then left out of the reply. Results over 1,000,000 characters are always written to a file. |
| path | string | – | Or: a path to a YAML file (UTF-8; use this for big inputs). |
| sortKeys | boolean | – | Sort object keys alphabetically at every level. |
| text | string | – | The YAML as inline text. |
No output schema declared.
No examples provided.
How do I install the S3eidat Tools MCP server?
S3eidat Tools runs locally as an npm package, launched with npx -y s3eidat-tools-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · s3eidat-tools-mcp
claude mcp add s3eidat-s3eidat-tools-mcp -- npx -y s3eidat-tools-mcp
What is the S3eidat Tools MCP server?
S3eidat Tools is an MCP server listed in the public MCP registry as io.github.s3eidat/s3eidat-tools-mcp. Free, private PDF, image, text, developer, calculator and QR tools. Runs locally; no uploads. This page covers its npm package (s3eidat-tools-mcp).
Is the S3eidat Tools MCP server safe to use?
S3eidat Tools scores 62 out of 100 on VerifyMCP. We recorded 3 known advisories against it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the S3eidat Tools MCP server expose?
S3eidat Tools exposes 162 tools: ai_chart, ai_chunk_text, ai_create_pptx, ai_create_xlsx, ai_csv_profile, and 157 more. Their descriptions and schemas cost roughly 49,341 tokens of context every time the server is loaded.
Is the S3eidat Tools MCP server still maintained?
S3eidat Tools is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the S3eidat Tools MCP server under?
S3eidat Tools declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.
What did VerifyMCP test on the S3eidat Tools MCP server?
VerifyMCP ran 15 checks on S3eidat Tools, covering Malware scan, Known CVEs, Install scripts, Dependency health and 11 more. One item could not be completed, a gap on our side rather than a finding about S3eidat Tools: Stability. One category scores 0 for that reason, because we only credit what we can confirm. Endpoint Security and Transport & Reachability do not apply to an npm package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.