Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

S3eidat Tools

NPM · S3EIDAT-TOOLS-MCP

Free, private PDF, image, text, developer, calculator and QR tools. Runs locally; no uploads.

Available components

62 Trust /100

Last scanned (21 hours ago)

Scores higher than 31% of npm servers

Category Documents and Files

Trust breakdown (7 categories)

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
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.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 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.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 4 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 4 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-g3hv-75wg-m249 CVE-2026-118764 medium 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 →

MCP tools · 162 exposed · ~49,341 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
ai_chart ~457

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×).

NameTypeReqDescription
backgroundstring–Background colour. Default white; "transparent" for none.
colorstring–Optional field that splits the data into coloured series.
dataarray–Rows for the simple chart, e.g. [{"month":"Jan","sales":12}].
formatstring–Output format: svg (default) or png.
heightinteger–Plot height in px (default 360).
outputstring–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).
returnBase64boolean–Also return the output as base64 in the result (only for small files). Default false.
scalenumber–PNG only: pixel density multiplier (2 = twice the SVG size, sharp on high-DPI screens). Default 2.
specobject–A full Vega-Lite spec (or Vega, if its $schema says so). Data must be inline (data.values). Use this or "type".
titlestring––
typestring–Simple chart type. Use with data, x and y.
widthinteger–Plot width in px (default 600; pie 360).
xstring–Field for the x axis (the category / slice label for pie).
y––Numeric field for the y axis (slice size for pie). A list of fields draws one series per field.

No output schema declared.

No examples provided.

ai_chunk_text ~437

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).

NameTypeReqDescription
encodingstring–Tokenizer: "o200k_base" (GPT-4o / o-series, default) or "cl100k_base" (GPT-4 / GPT-3.5 / text-embedding-3).
includeTextboolean–Return each chunk's text inline. Default: true, or false when "output" is given.
markdownboolean–Treat "#" lines as section headings (default true). Set false for plain text.
maxChunksinteger–Most chunks to return inline (the JSONL file always has all). Default 2000.
maxTokensinteger–Largest chunk, in tokens. Default 500.
outputstring–Also write the chunks as JSONL to this file (or folder ending in "/").
overlapTokensinteger–Tokens repeated from the end of the previous chunk (same section only). Default 50. Must be below maxTokens.
pathstring–Or: a UTF-8 text/markdown file, as a local path or base64 (raw or a data: URI).
textstring–The text (inline).

No output schema declared.

No examples provided.

ai_create_pptx ~276

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.

NameTypeReqDescription
authorstring––
outputstring–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).
returnBase64boolean–Also return the output as base64 in the result (only for small files). Default false.
slideNumbersboolean–Show slide numbers on content slides. Default true.
slidesarrayyes–
subtitlestring–Subtitle on the title slide.
themestring––
titlestring–Deck title: adds a title slide and sets the file title.

No output schema declared.

No examples provided.

ai_create_xlsx ~339

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.

NameTypeReqDescription
authorstring–Author in the file properties.
outputstring–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).
parseDatesboolean–Write ISO date strings as Excel dates (default true).
returnBase64boolean–Also return the output as base64 in the result (only for small files). Default false.
sheetsarrayyes–
titlestring–Workbook title (file properties, and the default file name).

No output schema declared.

No examples provided.

ai_csv_profile ~326

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.

NameTypeReqDescription
columnsarray–Only profile these columns (default: all).
csvstring–Or: CSV/TSV text inline (delimiter detected; first row is the header).
filestring–A table file: local path (absolute, or relative to --root) or base64. CSV, TSV, JSON array, JSONL or .xlsx.
formatstring–Force the file format (default "auto": by extension, then by content).
json––Or: JSON inline: an array of objects (or of arrays, first one the header), as a value or as JSON/JSONL text.
sheetstring–For .xlsx: the sheet name to read (default: the first sheet).

No output schema declared.

No examples provided.

ai_detect_language ~250

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).

NameTypeReqDescription
onlyarray–Restrict to these ISO 639-3 codes (e.g. ["arb","eng","fra"]).
pathstring–Or: a UTF-8 text/markdown file, as a local path or base64 (raw or a data: URI).
textstring–The text (inline).

No output schema declared.

No examples provided.

ai_diagram ~392

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: `direction: LR` (TB, LR, BT, RL), `title: My flow`, `A [shape=diamond, label="Ready?", color=#fde68a]` (shapes: box, round, diamond, circle, ellipse), edges `A -> B: label`, chains `A -> B -> C`, `-->` dashed, `==>` thick, `<->` both ends, `--` no arrow; quote names with spaces ("Start here" -> A); `\n` in labels breaks lines; # starts a comment. Or pass JSON { nodes: [{id, label, shape, color}], edges: [{from, to, label, style, arrow}] } as "graph". Up to 500 nodes and 2000 edges. Labels use Helvetica/Arial metrics (Latin text is measured best).

NameTypeReqDescription
directionstring–Override the layout direction: TB (top-bottom, default), LR, BT, RL.
formatstring–Output format: svg (default) or png.
graphobject–The diagram as JSON instead of "source".
outputstring–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).
returnBase64boolean–Also return the output as base64 in the result (only for small files). Default false.
scalenumber–PNG only: pixel density multiplier (2 = twice the SVG size, sharp on high-DPI screens). Default 2.
sourcestring–Diagram text in the DSL (or a JSON graph as text).
themestring––

No output schema declared.

No examples provided.

ai_docx_to_markdown ~266

Convert a Word .docx document to Markdown: headings (from Heading styles), bold/italic, lists, links, tables, footnotes. Images become placeholders like ![](image-1.png) 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.

NameTypeReqDescription
embedImagesboolean–Embed images as base64 data: URIs instead of placeholders. Default false.
filestringyesThe .docx document: a local file path (absolute, or relative to the server's --root) or base64 data (raw or a data: URI).
maxCharsinteger–Cut the inline Markdown after this many characters, with a note (a file written with "output" is never cut). Default 200000.
outputstring–Write the Markdown to this file (or folder ending in "/") and return its path instead of the inline text.

No output schema declared.

No examples provided.

ai_extract_entities ~382

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).

NameTypeReqDescription
defaultRegionstring–Two-letter country for local phone numbers, regional currencies (dinar, riyal…) and D/M/Y vs M/D/Y. Default JO.
maxPerTypeinteger–Most unique items to return per type. Default 500.
pathstring–Or: a UTF-8 text/markdown file, as a local path or base64 (raw or a data: URI).
textstring–The text (inline).
typesarray–Only these types (default all): emails, urls, phones, dates, money, percentages, hashtags, mentions, ipv4, ipv6, ibans, cards.

No output schema declared.

No examples provided.

ai_file_identify ~204

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.

NameTypeReqDescription
filestringyesThe file to identify: a local file path (absolute, or relative to the server's --root) or base64 data (raw or a data: URI).
namestring–File name to compare the extension against (handy for base64 input). Default: the path's own name.

No output schema declared.

No examples provided.

ai_html_to_markdown ~356

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.

NameTypeReqDescription
baseUrlstring–URL the HTML came from, to make relative links and images absolute.
htmlstring–The HTML text. Give this or "path".
includeLinksboolean–Keep links and images. False turns links into plain text and drops images.
maxCharsinteger–Cut the inline Markdown after this many characters, with a note (a file written with "output" is never cut). Default 200000.
outputstring–Write the Markdown to this file (or folder ending in "/") and return its path instead of the inline text.
pathstring–An .html file instead of "html": local path or base64.
readableboolean–Keep only the main content (article text), dropping navigation, ads and footers.
selectorstring–CSS selector: convert only the matching elements (e.g. "main", "article .post").

No output schema declared.

No examples provided.

ai_image_diff ~329

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.

NameTypeReqDescription
astringyesThe first (reference) image: a local file path (absolute, or relative to the server's --root) or base64 data (raw or a data: URI).
bstringyesThe second image: a local file path (absolute, or relative to the server's --root) or base64 data (raw or a data: URI).
includeAAboolean–Count anti-aliased edge pixels as differences too. Default false.
outputstring–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).
resizeboolean–Resize the second image to the first one's size when they differ (otherwise that is an error).
returnBase64boolean–Also return the output as base64 in the result (only for small files). Default false.
thresholdnumber–Colour difference tolerance 0..1; smaller is stricter. Default 0.1.

No output schema declared.

No examples provided.

ai_json_schema_infer ~398

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".

NameTypeReqDescription
additionalPropertiesboolean–false adds additionalProperties: false to every object (strict). Default true (left open).
eachItemboolean–If the only sample is an array, use its elements as the samples (schema of one record). Default false.
enumsboolean–Emit "enum" for string fields with few distinct values that repeat. Default false.
filestring–Or: a .json/.jsonl file (local path or base64).
formatsboolean–Guess string formats (default true).
maxEnumValuesinteger–Largest string set turned into an enum (default 8).
outputstring–Optional: also write the schema as a .json file here.
requiredboolean–List keys present in every sample as "required" (default true).
samplesarray–Sample values; each element is one sample.
textstring–Or: JSON text (one sample) or JSONL (one sample per line).
titlestring–Optional "title" for the schema.

No output schema declared.

No examples provided.

ai_json_schema_validate ~301

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.

NameTypeReqDescription
data––The JSON value to validate, inline (a string here is validated as a string; use dataText for JSON text).
dataFilestring–Or: a JSON file (local path or base64).
dataTextstring–Or: the data as JSON text.
maxErrorsinteger–Most errors to return (default 100).
schema––The JSON Schema inline: an object (or JSON text).
schemaFilestring–Or: a JSON Schema file (local path or base64).

No output schema declared.

No examples provided.

ai_markdown_to_docx ~394

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).

NameTypeReqDescription
authorstring–Author shown in the file properties.
fontstring–Body font (default Calibri).
fontSizenumber–Body font size in points (default 11).
markdownstring–The Markdown text inline.
outputstring–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).
pathstring–Or: a Markdown file (local path or base64).
returnBase64boolean–Also return the output as base64 in the result (only for small files). Default false.
rtlstring–Right-to-left paragraphs: "auto" (detect Arabic/Hebrew per paragraph), "on" or "off".
titlestring–Document title (file properties, and the default file name).

No output schema declared.

No examples provided.

ai_markdown_to_pdf ~461

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 <!-- pagebreak -->), 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.

NameTypeReqDescription
authorstring––
fontstring–Body font: sans (Helvetica) or serif (Times). Code is always Courier.
fontSizenumber–Body font size in pt. Default 10.5.
landscapeboolean––
marginnumber–Page margin in mm. Default 20.
markdownstring–Markdown text. Use this or "path".
onUnsupportedCharstring–What to do with characters the PDF fonts can't show: replace with "?" (default) or fail.
outputstring–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).
pageNumbersboolean–Print "n / total" at the bottom of each page. Default true.
paperstring––
pathstring–A .md file: local path or base64. Relative image links resolve against its folder.
returnBase64boolean–Also return the output as base64 in the result (only for small files). Default false.
titlestring–PDF title metadata. Default: the first # / ## heading.

No output schema declared.

No examples provided.

ai_media_info ~204

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.

NameTypeReqDescription
filestringyesThe audio or video file: a local file path (absolute, or relative to the server's --root) or base64 data (raw or a data: URI).

No output schema declared.

No examples provided.

ai_ocr ~398

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.

NameTypeReqDescription
dpiinteger–Render resolution for PDF pages. Default 200.
filestringyesThe image or PDF: a local file path (absolute, or relative to the server's --root) or base64 data (raw or a data: URI).
languagesstring–Languages to read. Default "eng+ara".
maxCharsinteger–Cut the inline text after this many characters (the file is never cut).
outputstring–Also write the text to this .txt file (or folder ending in "/").
pagesstring–PDF pages / TIFF frames, e.g. "1-3, 5" (default all).
perPageboolean–Also return the text of each page separately in "pages". Default false (the joined "text" has page separators).
psmstring–Page layout: "auto" (default), "block" (one uniform block), "line", "word", or "sparse" (scattered text).

No output schema declared.

No examples provided.

ai_pdf_to_markdown ~316

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.

NameTypeReqDescription
filestringyesThe PDF: a local file path (absolute, or relative to the server's --root) or base64 data (raw or a data: URI).
maxCharsinteger–Cut the inline Markdown after this many characters, with a note (a file written with "output" is never cut). Default 200000.
outputstring–Write the Markdown to this file (or folder ending in "/") and return its path instead of the inline text.
pageMarkersboolean–Put "<!-- Page N -->" before each page and "---" between pages. Default false.
pagesstring–Pages to convert, e.g. "1-3, 7" or "5-" (1-based). Default: all.
passwordstring–Password, if the PDF is protected.

No output schema declared.

No examples provided.

ai_pptx_to_markdown ~294

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.

NameTypeReqDescription
filestringyesThe .pptx presentation: a local file path (absolute, or relative to the server's --root) or base64 data (raw or a data: URI).
maxCharsinteger–Cut the inline Markdown after this many characters, with a note (a file written with "output" is never cut). Default 200000.
notesboolean–Include speaker notes. Default true.
outputstring–Write the Markdown to this file (or folder ending in "/") and return its path instead of the inline text.
slidesstring–Slides to include, e.g. "1-3, 7" or "5-" (1-based). Default: all.

No output schema declared.

No examples provided.

ai_sql_query ~416

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.

NameTypeReqDescription
maxRowsinteger–Rows to return inline (default 500). "total" always counts all rows.
outputstring–Optional: save ALL result rows to this file; the type comes from the extension (.csv, .tsv, .json, .jsonl, .xlsx; default .csv).
querystringyesOne SELECT statement, e.g. SELECT region, SUM(amount) AS revenue FROM sales GROUP BY region ORDER BY revenue DESC
tablesarrayyesThe tables the query can read (1-20).
typesboolean–Type CSV cells (numbers, booleans, null). Default true; false keeps every CSV cell as text.

No output schema declared.

No examples provided.

ai_text_similarity ~381

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~B and B~C put A, B, C together). Give "texts" (inline strings) and/or "paths" (file paths or base64). Up to 1000 texts.

NameTypeReqDescription
labelsarray–Optional names for the texts, in order (texts first, then paths). Default: "#1", "#2"… or the file name.
maxPairsinteger–Most pairs to return (highest first). Default 200.
metricstring–Metric used to sort pairs and to group duplicates. Default jaccard.
modestring–"pairs" (similarity of each pair) or "dedupe" (groups of near-duplicates).
numHashesinteger–MinHash signature length. Default 128 (error about ±0.09).
pathsarray–Or/also: UTF-8 text files (local paths or base64).
shingleSizeinteger–Words per shingle (k). Default 3.
textsarray–Texts to compare (inline).
thresholdnumber–Dedupe: pairs at or above this are duplicates. Default 0.8.

No output schema declared.

No examples provided.

ai_token_count ~279

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.

NameTypeReqDescription
encodingstring–Tokenizer: "o200k_base" (GPT-4o / o-series, default) or "cl100k_base" (GPT-4 / GPT-3.5 / text-embedding-3).
pathstring–Or: a UTF-8 text/markdown file, as a local path or base64 (raw or a data: URI).
textstring–The text (inline).

No output schema declared.

No examples provided.

ai_web_fetch ~352

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.

NameTypeReqDescription
allowPrivateboolean–Allow private, local and loopback hosts (e.g. a dev server on localhost). Default false.
includeLinksboolean–Keep links (made absolute) and images. False turns links into plain text and drops images.
maxCharsinteger–Cut the inline Markdown after this many characters, with a note (a file written with "output" is never cut). Default 200000.
outputstring–Write the Markdown to this file (or folder ending in "/") and return its path instead of the inline text.
readableboolean–Keep only the main content (default true). False converts the whole page body.
selectorstring–CSS selector: convert only the matching elements instead of the Readability main content.
urlstringyesThe page to fetch (http:// or https://).

No output schema declared.

No examples provided.

ai_xlsx_to_markdown ~345

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.

NameTypeReqDescription
filestringyesThe .xlsx or .csv file: a local file path (absolute, or relative to the server's --root) or base64 data (raw or a data: URI).
formatstring–Input format. "auto" tells .xlsx (a ZIP) from CSV by its bytes.
maxCharsinteger–Cut the inline Markdown after this many characters, with a note (a file written with "output" is never cut). Default 200000.
maxRowsinteger–Data rows to show per sheet (after the header). Default 200.
outputstring–Write the Markdown to this file (or folder ending in "/") and return its path instead of the inline text.
sheetstring–Only this sheet: its name, or its 1-based position (e.g. "2"). Default: every sheet.

No output schema declared.

No examples provided.

ai_zip ~310

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.

NameTypeReqDescription
actionstringyes–
filesarray–create: files and folders to add (local paths).
levelinteger–create: compression level 0 (store) to 9 (smallest). Default 6.
maxFilesinteger–Cap on the number of entries. Default 10000.
maxTotalMBnumber–Cap on the total uncompressed size, MB. Default 500.
outputstring–create: the .zip path (or a folder ending in "/"). extract: the folder to extract into. Default: the server output folder.
overwriteboolean–extract: replace files that already exist in the output folder. Default false (they are skipped).
zipstring–extract / list: the ZIP archive, a local path or base64.

No output schema declared.

No examples provided.

barcode_generate ~431

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/

NameTypeReqDescription
backgroundstring–Background colour, hex.
barWidthinteger–Narrow bar (module) width in px, 1-6 (default 2).
code39Checkboolean–Code 39 only: append the mod-43 check character.
foregroundstring–Bar colour, hex.
formatstring–Output format (default svg).
heightinteger–Bar height in px, 30-220 (default 80).
outputstring–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).
returnBase64boolean–Also return the output as base64 in the result (only for small files). Default false.
scaleinteger–PNG only: pixel scale (1×, 2× default, 4×…).
showTextboolean–Print the human-readable text/digits under the bars.
symbologystring–Barcode type (default code128).
valuestring–The value to encode (one barcode).
valuesarray–Or: many values; each becomes its own file in the output folder.

No output schema declared.

No examples provided.

base_convert ~281

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/

NameTypeReqDescription
from––Input base 2–36, or "auto" (prefix, else decimal).
groupboolean–Group digits like the website (binary/hex by 4, octal by 3, decimal with commas).
toarray–Output bases. Default [2, 8, 10, 16, 36].
uppercaseboolean–Upper-case letters for bases above 10.
valuestringyesThe number, e.g. "0xC0FFEE", "-0b101", "1_000_000", "zz" (with from=36).
width––Bit width for the two's complement view.

No output schema declared.

No examples provided.

base64_decode ~197

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/

NameTypeReqDescription
base64stringyesThe Base64 text to decode (may be a data: URI).
fileNamestring–Base name for the written file (extension follows the detected type). Default "decoded".
outputstring–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).

No output schema declared.

No examples provided.

base64_encode ~246

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/

NameTypeReqDescription
dataUriboolean–Return a data: URI (data:<mime>;base64,…) instead of bare Base64.
filestring–Or: a file to encode: local path or base64 data.
outputstring–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).
textstring–Text to encode (UTF-8).
urlSafeboolean–Use the URL-safe alphabet (- and _) and drop "=" padding.
wrapboolean–Insert a line break every 76 characters (MIME style).

No output schema declared.

No examples provided.

bytes_convert ~148

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/

NameTypeReqDescription
bytesstring–Or: bytes to turn into text, in the chosen format.
formatstring–Byte format. Default hex.
textstring–Text to turn into bytes.
uppercaseboolean–Upper-case hex digits.

No output schema declared.

No examples provided.

calc_age ~200

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/

NameTypeReqDescription
birthDatestringyesDate of birth, YYYY-MM-DD.
onDatestring–Work out the age on this date (YYYY-MM-DD). Default: today.
otherBirthDatestring–Optional second person's date of birth, to compare.
otherNamestring–Name of the second person (default "They").

No output schema declared.

No examples provided.

calc_bmi ~287

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/

NameTypeReqDescription
agenumber|string–Age in years (adults 18+ get BMR and calories).
heightCmnumber|string–Height in cm (metric).
heightFtnumber|string–Height, feet part (imperial).
heightInnumber|string–Height, inches part (imperial).
sexstring–Sex, for BMR (m or f).
unitsstring–metric: cm and kg; imperial: ft + in and lb.
waistnumber|string–Optional waist size in cm (metric) or inches (imperial).
weightnumber|string–Weight in kg (metric) or lb (imperial).

No output schema declared.

No examples provided.

calc_cash_count ~227

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/

NameTypeReqDescription
countsarray–What you counted.
currencystring–Currency preset, or CUSTOM.
customobject–CUSTOM currency definition.
expectednumber|string–Expected total, to show over/short.
listboolean–Just list the denominations.
notestring–Optional note for the summary (e.g. "Evening shift").

No output schema declared.

No examples provided.

calc_compound_interest ~255

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/

NameTypeReqDescription
annualRatenumber|stringyesNominal annual interest rate in percent, e.g. 7.
compoundingstring–How often interest compounds.
inflationnumber|string–Optional yearly inflation in percent, to show the balance in today's money.
initialnumber|string–Initial deposit (default 0).
monthlynumber|string–Monthly contribution (default 0).
tableboolean–Include the year-by-year table.
timingstring–Contributions at the end (ordinary annuity) or start (annuity due) of each month.
yearsnumber|stringyesDuration in years (fractions allowed, e.g. 1.5; at least one month).

No output schema declared.

No examples provided.

calc_date_diff ~299

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/

NameTypeReqDescription
amountinteger–add: how many units to add (use subtract to go back).
datestring–add: the starting date YYYY-MM-DD (default today).
endstring–difference: end date YYYY-MM-DD (default today).
inclusiveboolean–difference: count the end date too.
modestring–difference between two dates, or add/subtract an amount.
startstring–difference: start date YYYY-MM-DD (default today).
subtractboolean–add: go back in time instead.
unitstring–add: unit of amount.
weekendstring–Weekend days skipped by working-day counts.

No output schema declared.

No examples provided.

calc_discount ~344

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/

NameTypeReqDescription
amountAnumber|string–compare: amount of deal A (e.g. 0.5 for 500 g when unit is kg).
amountBnumber|string–compare: amount of deal B.
discountnumber|string–sale: first discount (percent by default).
discountTypestring–sale: first discount is a percent or a fixed amount.
extraDiscountnumber|string–sale: optional second discount applied after the first.
extraDiscountTypestring–sale: second discount type.
modestring–Which calculator.
nownumber|string–reverse: the new price.
pricenumber|string–sale: original price.
priceAnumber|string–compare: price of deal A.
priceBnumber|string–compare: price of deal B.
taxPercentnumber|string–sale: optional tax / VAT percent added after the discounts.
unitstring–compare: the unit name (kg, L, item…). Default "unit".
wasnumber|string–reverse: the old price.

No output schema declared.

No examples provided.

calc_due_date ~253

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/

NameTypeReqDescription
cycleLengthinteger–lmp: average cycle length in days (default 28).
datestringyesThe date for that method, YYYY-MM-DD.
hijriboolean–Also give Umm al-Qura Hijri dates.
ivfEmbryoDay––ivf: embryo age at transfer, day 3 or day 5.
methodstring–lmp = first day of last period; conception; ivf = embryo transfer date.
todaystring–Work out progress on this date, YYYY-MM-DD (default today).

No output schema declared.

No examples provided.

calc_equation ~280

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/

NameTypeReqDescription
coefficientsarray–linear: [a, b, c] for a·x + b = c; quadratic: [a, b, c]; cubic: [a, b, c, d].
systemarray–system: rows of the augmented matrix, 2 rows of [a, b, rhs] (x, y) or 3 rows of [a, b, c, rhs] (x, y, z).
typestringyesEquation type.

No output schema declared.

No examples provided.

calc_expression ~279

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/

NameTypeReqDescription
anglestring–Angle unit for trig functions.
ansnumber–Value of "ans" (the previous answer). Default 0.
expressionstringyesThe expression, e.g. "sin(30) + 2^3^2", "5!/(2!×3!)", "200×15%".
formatstring–Display: normal, or always scientific notation.
variablesobject–Variables to use, e.g. {"x": 2, "r": 5}.

No output schema declared.

No examples provided.

calc_fraction ~210

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/

NameTypeReqDescription
inputstringyescalculate: "1 1/2 + 3/4 × 2/5"; decimal_to_fraction: "0.1(6)"; fraction_to_decimal: "5/7"; compare: "2/3, 3/5, 7/10".
modestring–What to do.

No output schema declared.

No examples provided.

calc_fuel_cost ~311

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/

NameTypeReqDescription
compareobject–Optional second car to compare.
consumptionnumber|stringyesCar consumption / economy, e.g. 7.5 (L/100 km) or 35 (mpg).
consumptionUnitstring–l100 = L/100 km, kml = km/L, mpgus, mpguk.
currencystring–Currency label for the text, e.g. "JD" or "$".
distancenumber|stringyesTrip distance (one way unless roundTrip).
distanceUnitstring–Distance unit.
namestring–Name of the car (default "Car A").
peopleinteger–Split the cost between this many people.
pricenumber|stringyesFuel price per priceUnit.
priceUnitstring–The price is per litre, US gallon or UK gallon.
roundTripboolean–Double the distance (there and back).

No output schema declared.

No examples provided.

calc_gpa ~272

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/

NameTypeReqDescription
coursesarrayyesThis semester's courses.
percentMaxnumber|string–percent scale: highest mark (default 100).
percentMinnumber|string–percent scale: lowest passing mark (default 35).
previousCreditsnumber|string–Credits completed before this semester.
previousGpanumber|string–GPA before this semester.
remainingCreditsnumber|string–Credits still to take after this semester (for the target).
scalestring–Grading scale.
targetGpanumber|string–Target cumulative GPA.

No output schema declared.

No examples provided.

calc_hijri ~359

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/

NameTypeReqDescription
arabicDigitsboolean–Use Arabic-Indic digits in the Arabic text.
birthDatestring–age: Gregorian date of birth YYYY-MM-DD.
datestring–to_hijri: Gregorian date YYYY-MM-DD (default today).
gregorianArabicMonthsstring–Arabic Gregorian month names: intl (Egypt/Gulf style, January = Yanayir) or levant (Syria/Jordan style, January = Kanun al-Thani).
hijriDayinteger–to_gregorian: Hijri day 1–30.
hijriMonthinteger–to_gregorian / month: Hijri month 1–12 (1 = Muharram, 9 = Ramadan).
hijriYearinteger–to_gregorian / month: Hijri year (1300–1600).
modestringyesWhich conversion.
onDatestring–age: age on this Gregorian date (default today).

No output schema declared.

No examples provided.

calc_hours ~295

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/

NameTypeReqDescription
currencystring–Currency label for the summary.
dailyOvertimeHoursnumber–Hours per day after which time is overtime (e.g. 8).
hourlyRatenumber–Pay per regular hour.
overtimeMultipliernumber–Overtime pay multiplier.
roundMinutes––Round each shift to the nearest 5, 6 or 15 minutes (0 = off).
shiftsarrayyesThe week's shifts.
weekOfstring–Optional: any date in that week (YYYY-MM-DD) to date each day.
weekStartstring–First day of the week (order of the days).
weeklyOvertimeHoursnumber–Regular hours per week after which time is overtime (e.g. 40).

No output schema declared.

No examples provided.

Install

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

# add to Claude Code
claude mcp add s3eidat-s3eidat-tools-mcp -- npx -y s3eidat-tools-mcp
Common questions

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 4 known advisories against it as of 4 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 4 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.