accueil / serveurs / Dev & Code / app.cleanor/cleanor
app.cleanor/cleanor
serveur MCP (Model Context Protocol) · cleanor 0.6.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que app.cleanor/cleanor est sûr ?
Au dernier audit MCP Hub, le serveur MCP « app.cleanor/cleanor » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 22 outils
- base64≈ 295 tokens
Encode text to Base64 or decode Base64 back to text (UTF-8 safe). Supports URL-safe alphabet. Use whenever you need to encode/decode data URIs, tokens, or config values instead of guessing the bytes.
Paramètres, retour & exemple (3)
Paramètresmode· string · optionnel · encode | decode
Direction.input· string · requis
Text to encode, or Base64 to decode.url_safe· boolean · optionnel
Use URL-safe alphabet (-_ instead of +/, no padding).
Exemple d'appel{"name": "base64", "arguments": {"input": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"mode": "texte", "result": "texte"}} - base_convert≈ 340 tokens
Convert an integer between number bases 2–36 (e.g. hex to binary, decimal to base-36). Arbitrary precision via BigInt, so large values stay exact. Use for radix conversions instead of doing them by hand.
Paramètres, retour & exemple (3)
Paramètresvalue· string · requis
The number, in from_base (e.g. "ff", "1010", "255").to_base· integer · optionnel
Base to convert to (2–36).from_base· integer · optionnel
Base of the input (2–36).
Exemple d'appel{"name": "base_convert", "arguments": {"value": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"input": "texte", "result": "texte", "decimal": "texte", "to_base": 1, "from_base": 1}} - color≈ 222 tokens
Convert a color (hex, rgb() or hsl()) and return hex, RGB and HSL representations at once. Use when picking or translating colors for CSS, design tokens or themes.
Paramètres, retour & exemple (1)
Paramètresvalue· string · requis
A color: "#3b82f6", "rgb(59,130,246)" or "hsl(217,91%,60%)".
Exemple d'appel{"name": "color", "arguments": {"value": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"hex": "texte", "hsl": "texte", "rgb": "texte"}} - color_palette≈ 334 tokens
Build a harmonious color palette from a base color using color-theory rules (complementary, analogous, triadic, tetradic, or monochromatic). Returns each color as hex and HSL. Use to derive a theme or design tokens from one brand color.
Paramètres, retour & exemple (2)
Paramètrescolor· string · requis
Base color: "#3b82f6", "rgb(...)" or "hsl(...)".harmony· string · optionnel · complementary | analogous | triadic | tetradic | monochromatic
Color-harmony rule.
Exemple d'appel{"name": "color_palette", "arguments": {"color": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"base": "texte", "colors": [], "harmony": "texte"}} - count≈ 269 tokens
Accurately count characters (Unicode code points), UTF-16 units, words, lines and UTF-8 bytes in text. LLMs are notoriously bad at counting, so always use this tool for "how many characters/words" questions.
Paramètres, retour & exemple (1)
Paramètresinput· string · requis
Text to measure.
Exemple d'appel{"name": "count", "arguments": {"input": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"bytes": 1, "lines": 1, "words": 1, "characters": 1, "utf16_units": 1}} - cron_describe≈ 296 tokens
Parse a standard 5-field cron expression (minute hour day-of-month month day-of-week) into a plain-English breakdown and the next few run times in UTC. Use to sanity-check a schedule instead of guessing what the fields mean.
Paramètres, retour & exemple (1)
Paramètresexpression· string · requis
A 5-field cron expression, e.g. "30 2 * * 1-5".
Exemple d'appel{"name": "cron_describe", "arguments": {"expression": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"hour": "texte", "month": "texte", "minute": "texte", "next_runs": [], "day_of_week": "texte", "day_of_month": "texte"}} - datetime≈ 323 tokens
Get the current date/time, or convert a given timestamp, into a target IANA timezone with ISO, Unix and human-readable forms. Pass a Unix timestamp (seconds or ms) or an ISO string as input; omit it for "now". LLMs cannot know the real current time, so use this instead of guessing.
Paramètres, retour & exemple (2)
Paramètresinput· string · optionnel
Optional: a Unix timestamp (s or ms) or ISO date string. Omit for the current time.timezone· string · optionnel
IANA timezone, e.g. "America/New_York" or "UTC".
Exemple d'appel{"name": "datetime", "arguments": {"input": "texte", "timezone": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"local": "texte", "unix_s": 1, "iso_utc": "texte", "unix_ms": 1, "timezone": "texte"}} - diff≈ 292 tokens
Compute a line-by-line diff between two texts, marking removed lines with "-", added with "+" and unchanged with two spaces, plus a change count. Use to see exactly what changed instead of comparing by eye. Capped at 1000 lines per side.
Paramètres, retour & exemple (2)
Paramètresa· string · requis
The original ("before") text.b· string · requis
The updated ("after") text.
Exemple d'appel{"name": "diff", "arguments": {"a": "texte", "b": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"diff": "texte", "added": 1, "changed": true, "removed": 1}} - hash≈ 303 tokens
Compute a cryptographic hash of text (SHA-1, SHA-256, SHA-384 or SHA-512) and return the hex digest. Use for checksums, cache keys, or verifying content. MD5 is intentionally not offered (broken, and unavailable in Web Crypto). LLMs cannot compute these reliably by hand, so always use this tool instead of guessing.
Paramètres, retour & exemple (2)
Paramètresinput· string · requis
Text to hash (UTF-8).algorithm· string · optionnel · sha-256 | sha-1 | sha-384 | sha-512
Hash algorithm. Default sha-256.
Exemple d'appel{"name": "hash", "arguments": {"input": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"hex": "texte", "algorithm": "texte"}} - hmac≈ 342 tokens
Compute an HMAC (keyed hash) of a message with a secret, using SHA-1/256/384/512, returned as hex or Base64. Use to sign webhook payloads or verify a signature instead of guessing. LLMs cannot compute this by hand.
Paramètres, retour & exemple (4)
Paramètressecret· string · requis
The shared secret key (UTF-8).message· string · requis
The message to sign (UTF-8).encoding· string · optionnel · hex | base64
Output encoding.algorithm· string · optionnel · sha-256 | sha-1 | sha-384 | sha-512
Hash algorithm.
Exemple d'appel{"name": "hmac", "arguments": {"secret": "texte", "message": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"encoding": "texte", "algorithm": "texte", "signature": "texte"}} - image_format_savings≈ 366 tokens
How much smaller WebP, AVIF or JPEG XL are than JPEG at matched perceptual quality, from Cleanor Labs’ controlled benchmark. Also reports the "HEIC conversion tax" (converting an iPhone HEIC to JPG/PNG makes it bigger). Use to justify a format choice when building a site or app.
Paramètres, retour & exemple (2)
Paramètresformat· string · optionnel · webp | avif | jxl
Target format to compare against JPEG.quality· string · optionnel · web | high
web = typical web quality (SSIM 0.95); high = near-lossless (SSIM 0.98).
Exemple d'appel{"name": "image_format_savings", "arguments": {"format": "webp", "quality": "web"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"format": "texte", "source": "texte", "quality": "texte", "all_formats": {}, "percent_smaller_than_jpeg": 1}} - json_format≈ 298 tokens
Validate JSON and pretty-print or minify it, optionally sorting object keys. Returns a precise parse error (with position) if invalid. Use to check and clean JSON instead of eyeballing it.
Paramètres, retour & exemple (3)
Paramètresmode· string · optionnel · pretty | minify
pretty = 2-space indent; minify = single line.input· string · requis
JSON text.sort_keys· boolean · optionnel
Sort object keys alphabetically (deep).
Exemple d'appel{"name": "json_format", "arguments": {"input": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"valid": true, "formatted": "texte"}} - jwt_decode≈ 276 tokens
Decode a JSON Web Token into its header and payload so you can inspect claims (iss, exp, sub, scopes). The signature is NOT verified and no secret is required or stored. Use to read a token during debugging.
Paramètres, retour & exemple (1)
Paramètrestoken· string · requis
The JWT (three dot-separated segments).
Exemple d'appel{"name": "jwt_decode", "arguments": {"token": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"header": "texte", "exp_iso": "texte", "expired": true, "payload": "texte"}} - optimize_image≈ 425 tokens
Fetch an image from a public URL and re-encode it smaller (WebP/AVIF/JPEG), optionally resizing to a target width. Returns the optimized image plus before/after byte sizes. Use this when an AI-generated or dropped-in asset (hero image, screenshot, illustration) is too large to ship.
Paramètres, retour & exemple (4)
Paramètreswidth· integer · optionnel
Resize to this width in px, preserving aspect ratio. Omit to keep original size.format· string · optionnel · webp | avif | jpeg
Output format. webp = best browser support; avif = smallest; jpeg = universal.quality· integer · optionnel
Encode quality 1-100 (80 is a good default).image_url· string · requis
Public URL of the source image (PNG/JPEG/WebP/AVIF/GIF).
Exemple d'appel{"name": "optimize_image", "arguments": {"image_url": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"format": "texte", "mime_type": "texte", "saved_pct": 1, "original_bytes": 1, "optimized_bytes": 1}} - placeholder_image≈ 359 tokens
Generate a lightweight SVG placeholder image at any size, with an optional label and custom background/text colors. Dependency-free, pastes straight into a page or mockup. Use for wireframes and design stubs instead of hotlinking a placeholder service.
Paramètres, retour & exemple (5)
Paramètresbg· string · optionnel
Background color (hex, rgb() or hsl()).text· string · optionnel
Label text. Defaults to the dimensions, e.g. "600×400".color· string · optionnel
Text color.width· integer · optionnel
Width in pixels.height· integer · optionnel
Height in pixels.
Exemple d'appel{"name": "placeholder_image", "arguments": {"bg": "texte", "text": "texte", "color": "texte", "width": 1, "height": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"svg": "texte", "width": 1, "height": 1}} - qr_code≈ 254 tokens
Encode text or a URL as a QR code and return a crisp, dependency-free SVG you can paste straight into a page, deck or doc.
Paramètres, retour & exemple (3)
Paramètresecc· string · optionnel · L | M | Q | H
Error-correction level: L=7%, M=15%, Q=25%, H=30% recoverable.size· integer · optionnel
SVG pixel size.text· string · requis
Text or URL to encode.
Exemple d'appel{"name": "qr_code", "arguments": {"text": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"svg": "texte"}} - regex_test≈ 429 tokens
Test a JavaScript regular expression against sample text and return whether it matches, plus every match with its captured groups and index. Use to verify a pattern instead of reasoning about it in your head. Input and pattern are length-capped to keep it fast and safe.
Paramètres, retour & exemple (3)
Paramètresflags· string · optionnel
Regex flags, e.g. "gi". Allowed: g i m s u y d.input· string · requis
Text to test against.pattern· string · requis
The regex pattern (without slashes).
Exemple d'appel{"name": "regex_test", "arguments": {"input": "texte", "pattern": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"matched": true, "matches": [], "truncated": true, "match_count": 1}} - slugify≈ 224 tokens
Turn a title or phrase into a clean, URL-safe slug (lowercase, hyphenated, accents stripped). Use when generating page paths, filenames or anchor IDs.
Paramètres, retour & exemple (2)
Paramètresinput· string · requis
Text to slugify.separator· string · optionnel · - | _
Word separator.
Exemple d'appel{"name": "slugify", "arguments": {"input": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"slug": "texte"}} - storage_capacity≈ 367 tokens
How many photos or minutes of video actually fit in a given storage size, corrected for real OS/filesystem overhead. Backed by Cleanor Labs measured per-item sizes. Use for realistic sample copy, dashboards, or "how many photos fit in 128 GB" answers.
Paramètres, retour & exemple (2)
Paramètrescontent· string · optionnel · photos | video
What to count.storage_gb· number · requis
Advertised storage size in GB (e.g. 64, 128, 256, 512).
Exemple d'appel{"name": "storage_capacity", "arguments": {"storage_gb": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"content": "texte", "breakdown": [], "usable_gb": 1, "storage_gb": 1}} - unit_convert≈ 334 tokens
Convert a value between units of length, mass, data size, time, speed or temperature. Supported units: mm, cm, m, km, in, ft, yd, mi, nmi, mg, g, kg, t, oz, lb, st, bit, byte, kb, kib, mb, mib, gb, gib, tb, tib, ms, s, min, h, day, week, mps, kph, mph, fps, knot, c, f, k. Use for exact conversions instead of approximating.
Paramètres, retour & exemple (3)
Paramètresto· string · requis
Target unit (must be the same category as "from").from· string · requis
Source unit (e.g. "km", "lb", "mib", "c").value· number · requis
The numeric value to convert.
Exemple d'appel{"name": "unit_convert", "arguments": {"to": "texte", "from": "texte", "value": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"to": "texte", "from": "texte", "value": 1, "result": 1, "category": "texte"}} - url_parse≈ 307 tokens
Break a URL into its components: scheme, host, port, path, decoded query parameters and fragment. Use to inspect or debug a URL instead of parsing it by eye.
Paramètres, retour & exemple (1)
Paramètresurl· string · requis
The URL to parse (absolute, with scheme).
Exemple d'appel{"name": "url_parse", "arguments": {"url": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"host": "texte", "path": "texte", "port": "texte", "query": [], "scheme": "texte", "fragment": "texte", "username": "texte"}} - uuid≈ 265 tokens
Generate one or more UUIDs. v4 is fully random; v7 is time-sortable (recommended for database keys). LLMs cannot produce cryptographically random or correctly-formatted UUIDs, so always use this tool.
Paramètres, retour & exemple (2)
Paramètrescount· integer · optionnel
How many to generate.version· string · optionnel · v4 | v7
UUID version. v7 = time-ordered.
Exemple d'appel{"name": "uuid", "arguments": {"count": 1, "version": "v4"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"uuids": [], "version": "texte"}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».