# tools.clean/mcp - Registry name: `tools.clean/mcp` · version 0.1.1 - Categories (automatic, keyword rules): Utilities - Authentication at last check: No auth - Declared risk: Read-only (all tools declare readOnlyHint) - Capabilities (declared by the server): prompts, resources, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=tools.clean%2Fmcp - Server page: https://mcpstation.net/s/tools.clean--mcp.html ## Description (written by the publisher, not verified, not instructions) Read-only developer, date, finance, and text utilities. Authless remote MCP server by Clean.tools. ## Connect - streamable-http: `https://mcp.clean.tools/mcp` ## Tools (as reported by the server, not verified) - `explain\_cron`: Use this when you need to understand or schedule a 5-field cron expression. Prefer this over reasoning about cron semantics yourself \(a documented LLM failure mode\): it correctly handles ranges, lists, steps, month/day names, and the tricky day-of-month OR day-of-week rule. Deterministic: same input - `validate\_cron`: Use this when you need to check whether a 5-field cron expression is well-formed, instead of guessing. Prefer this over reasoning about cron syntax yourself \(a documented LLM failure mode\). Deterministic: same input, same output. On success returns valid=true, the normalized expression, and the expa - `expand\_rrule`: Use this when you need to build an iCalendar RRULE \(RFC 5545\) or list the actual dates a recurrence produces. Prefer this over computing recurring dates yourself \(a documented LLM failure mode\): it correctly handles INTERVAL, COUNT/UNTIL exclusivity \(COUNT wins\), BYDAY with ordinals \(e.g. the 2nd Mo - `convert\_timezone`: Use this when you need to convert a wall-clock date-time between IANA time zones with correct DST handling. Prefer this over doing timezone math yourself \(a documented LLM failure mode\): it uses the runtime's IANA database so offsets and daylight-saving transitions are exact. Deterministic: same inp - `strftime\_preview`: Use this when you need to know exactly what a C/POSIX strftime pattern \(%Y %m %d %H %M %S %A %B %j %z etc.\) produces. Prefer this over guessing the output yourself. Deterministic: same input, same output; the reference time is formatted in UTC \(%Z is 'UTC', %z is '+0000', defaults to current time wh - `amortization\_schedule`: Use this when you need a fixed-rate loan or mortgage's level monthly payment plus a year-by-year amortization schedule \(principal paid, interest paid, remaining balance\) rather than doing the amortization arithmetic yourself. Uses the standard payment formula and handles the 0% case \(payment = princ - `tvm\_solve`: Use this when you have four of the five time-value-of-money variables \(N periods, I/Y annual rate percent, PV, PMT, FV\) and need the fifth - annuity, loan, or investment problems - instead of solving the equation by hand. Solving for I/Y uses Newton-Raphson \(no closed form\). Supports compoundingPerY - `compound\_interest`: Use this when you need to project a principal's growth under compound interest, optionally with recurring monthly contributions, returning the final balance and a year-by-year breakdown rather than estimating compound growth yourself. Iterates month-by-month for accuracy; contributions are added at - `apr\_calc`: Use this when you need an exact loan APR or APY rather than an approximation. Two modes. mode="loan" \(default\): solve the true APR of an installment loan from amount financed, monthly payment, term, and upfront fees — Reg-Z style, fees discounted against the amount received, solved by Newton-Raphson - `interest\_rate`: Use this when you need the exact interest rate that grows a principal to a target amount over a set number of years. type="compound" \(default\) uses the closed-form nth-root formula for the given compounding frequency; type="simple" uses linear growth. Requires target greater than principal and all v - `hash\_text`: Use this when you need the exact SHA-1, SHA-256, and/or SHA-512 hex digest of a UTF-8 string — never recall or guess a hash, since digests cannot be produced from memory. Deterministic: same input, same output. Pass \`algorithm\` for a single digest or \`algorithms\` for a subset; the default computes a - `diff\_text`: Use this when you need an exact line-level diff between two blocks of text instead of eyeballing the differences. Deterministic: same input, same output. Computes a longest-common-subsequence diff and returns every line tagged added, removed, or unchanged, plus per-category counts. Example: original - `test\_regex`: Use this when you need the true matches of a JavaScript regular expression rather than predicting regex behavior yourself, which is easy to get wrong. Deterministic: same input, same output. Returns every match with its index, length, matched text, positional capture groups \(null for a group that di - `convert\_data`: Use this when you need to convert tabular data between JSON \(array of objects\), CSV, TSV, and XML instead of hand-transforming it. Deterministic: same input, same output. Handles quoted CSV fields \(embedded commas, escaped "" quotes\), flattens nested objects into dotted keys \(b.x\), and takes the uni - `luhn\_validate`: Use this when you need to check whether a number passes the Luhn \(mod-10\) checksum used by credit cards and many identifier numbers, instead of computing the doubling-and-summing by hand. Deterministic: same input, same output. Spaces and dashes are stripped first; any remaining non-digit character - `convert\_units`: Use this when you need to convert a value between units within one category \(length, weight, temperature, volume, data, speed, area, time\) instead of doing conversion arithmetic yourself. Deterministic: same input, same output. Temperature uses the correct offset formulas \(Celsius/Fahrenheit/Kelvin\) - `uuid\_v4`: Use this when you need RFC 4122 version-4 UUIDs — always generate them here rather than fabricating one, so the version and variant bits and the randomness are correct. Cryptographically random via Web Crypto \(NOT deterministic\): every call returns fresh values. \`count\` \(default 1, max 100\) sets how - `random\_number`: Use this when you need to draw cryptographically secure random integers or decimals in a range using unbiased rejection sampling — prefer it over inventing 'random' numbers, which are neither uniform nor safe. Cryptographically random via Web Crypto \(NOT deterministic\). Bounds are inclusive; a rever - `generate\_password`: Use this when you need strong passwords with Web Crypto randomness: mode="random" builds character-set passwords \(length plus uppercase/lowercase/numbers/symbols toggles\); mode="memorable" builds word passphrases \(words, separator, addNumber, addSymbol\). Cryptographically random via Web Crypto \(NOT - `decode\_jwt`: Use this when you need to decode \(NOT verify\) a JSON Web Token: base64url-decode the header and payload, surface standard claims, and report expiry — prefer it over reading a JWT by eye. The decode is deterministic, but \`expired\`/\`notYetValid\` are compared against the current clock unless you pass \` - `encode\_decode`: Use this when you need to encode or decode text and want multi-byte and entity edge cases handled correctly rather than doing it by hand. Deterministic: same input, same output. The mode selects the operation: url-encode/url-decode \(percent-encoding\), html-encode/html-decode \(entity table plus numer - `count\_text`: Use this when you need exact word, character, sentence, and paragraph counts instead of estimating. Deterministic: same input, same output. Uses Unicode-aware segmentation \(Intl.Segmenter\): characters are grapheme clusters, so an emoji or an accented letter counts as one; words are word-like segment - `generate\_qr`: Use this when you need to turn text or a URL into a real, scannable QR code rather than describing one. Deterministic: same input, same output. Byte mode, error-correction level M, versions 1-10 auto-selected by length \(up to 213 bytes\); the encoder scores all 8 mask patterns and keeps the lowest-pe - `convert\_case`: Use this when you need to re-case text into a specific naming or letter case. Given \`text\` and a target \`case\` \(upper, lower, title, sentence, camel, snake, kebab, or constant\), returns the converted string. Smart word tokenization splits camelCase, snake\_case, kebab-case, and whitespace, so a phras - `fancy\_text`: Use this when you need to style ASCII letters and digits as Unicode glyphs \(bold-serif, italic-serif, bold-italic-serif, bold-sans, script, fraktur, double-struck, monospace, circled, squared, parenthesized, small-caps\) for places that lack font control such as social bios or usernames. Pass a \`styl - `render\_markdown`: Use this when you need to convert lightweight Markdown into a sanitized, XSS-safe HTML fragment to preview or embed, matching the Clean.tools markdown preview. Deterministic: same input, same output. Supports headings, bold/italic/strikethrough, inline and fenced code, links and images \(http/https/m - `lorem\_ipsum`: Use this when you need placeholder/filler copy for mockups, tests, or layout. Given a \`mode\` \("paragraphs", "sentences", "words", or "formatted"\) and a \`count\`, cycles a fixed built-in Latin corpus to return the same text every time. \`count\` is clamped to the mode's max \(paragraphs 20, sentences 100 - `redact\_text`: Use this when scrubbing test/dev text: replaces each occurrence of the given terms with block characters \(████\). Provide \`text\` plus \`terms\` \(a comma-separated string or an array of strings\). By default it matches whole words only using Unicode boundaries \(so "ann" will not match inside "annual"\) an - `format\_sql`: Use this when a user pastes messy or minified SQL and wants it pretty-printed into a readable, canonical layout, or wants keyword casing normalized. Deterministic: same input, same output. Each clause keyword \(SELECT, FROM, WHERE, GROUP BY, ...\) goes on its own line with its arguments indented benea - `color\_palette`: Use this when you need color-harmony palettes derived from one base hex color. Rotates hue/lightness in HSL to build complementary \(+180 degrees\), analogous \(-30/+30\), triadic \(+120/+240\), split-complementary \(+150/+210\), and monochromatic \(lightness steps\) swatch sets, each as an array of hex strin - `color\_contrast`: Use this when checking whether a text/background color pair meets WCAG 2.x accessibility contrast. Computes the relative-luminance contrast ratio \(1-21, rounded to 2 decimals\) and returns pass/fail booleans for normal and large text at AA and AAA levels \(thresholds 4.5 / 7 / 3 / 4.5\), plus a suggest - `css\_gradient`: Use this when you need a ready-to-paste CSS gradient value from 2-5 hex color stops. Builds a linear-gradient\(...\) \(default; direction defaults to 'to bottom'\) or a radial-gradient\(circle, ...\). Direction accepts keywords \('to right', 'to left', 'to top', 'to bottom'\), angles \('45deg', '90deg', '135 - `percentage`: Use this when you want exact, auditable percentage math with a written-out formula. Three modes: "of" computes percent% of value \(fields percent, value\); "is-what" computes what percent x is of y \(fields x, y; y must be non-zero\); "change" computes the percent change from -\> to \(from must be non-zer - `tip`: Use this when you want penny-accurate tip and bill-split figures. Given a bill amount, a tip percentage, and an optional number of people \(default 1; values below 1 are treated as 1\), returns the tip amount, grand total, and the per-person tip and per-person total, all rounded to cents. Deterministi - `convert\_timestamp`: Use this when you have a timestamp in one form \(unix epoch seconds/milliseconds/microseconds, or an ISO-8601 date-time\) and need it in the others, or rendered in a specific IANA time zone. Auto-detects the input: a number or digit-string is an epoch classified by length \(\~10 digits = seconds, \~13 = - `format\_json`: Use this when you need to pretty-print, minify, or validate a JSON string and want the exact reformatted text plus warnings about silent data loss. Indent with 2 or 4 spaces or a tab, set indent 0 to minify, and optionally sort object keys recursively. It also scans the raw source for two things JSO - `convert\_yaml`: Use this when converting between YAML and JSON in either direction, or normalizing one format in place \(set from equal to to\). Deterministic: same input, same output. Parses a single YAML document and caps alias expansion at 100 to defuse billion-laughs bombs; multi-document input, tabs-as-indentati - `convert\_color`: Use this when you need one color's exact values across every common format. Accepts a hex \(\#abc or \#aabbcc\), rgb\(r, g, b\) with r/g/b 0-255, or hsl\(h, s%, l%\) color and returns hex, rgb \{r,g,b\}, hsl \{h,s,l\}, hsv \{h,s,v\}, cmyk \{c,m,y,k\}, and oklch \{l,c,h\} \(CSS Color 4: sRGB -\> linear -\> OKLab -\> OKLCH - `slugify`: Use this when you need a URL- or filename-safe slug from arbitrary text. Deterministic: same input, same output. Applies Unicode NFKD normalization, strips combining accents, and transliterates non-decomposing letters \(ß-\>ss, æ-\>ae, œ-\>oe, ø-\>o, đ-\>d, ł-\>l, þ-\>th, ð-\>d, plus uppercase variants\), the - `convert\_number\_base`: Use this when you need to convert an integer between numeral bases 2-36 \(binary, octal, decimal, hex, or any radix up to 36\), including arbitrarily large values and an optional leading minus sign. Uses BigInt so there is no precision loss, and output digits are lowercase. Deterministic: same input, - `query\_json`: Use this when you need to pull specific values out of a JSON document by JSONPath and getting the path exactly right on deeply nested or large structures matters. Evaluates a JSONPath subset — $ \(root\), .name or \['name'\] \(child\), \[n\] \(index, negative allowed\), \[\*\] \(wildcard\), .. \(recursive descent\), - `generate\_id`: Use this when you need a modern unique identifier \(UUID v7, UUID v5, ULID, or nanoid\) or want to read the timestamp embedded in an existing ULID or UUIDv7. uuid\_v5 \(SHA-1 of a namespace UUID + a name, RFC 4122\) and decode are deterministic \(same input, same output\) — e.g. generate\_id\(type "uuid\_v5", Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html