Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Certificate changed, valid to 2027-01-14
Unavailable → Live
Recently observed → Unavailable
Live → Recently observed
Added "color_contrast", "color_convert", "csv_from_json" and 16 more; changed the definition of "encode_decode" and "encode_encode" (33 tools before, 52 now)
Decodes rot13, base64, base64url, base32, hex, uuencode, urlcomponent, urlform, oruuencodehtml text back to the original. encoding in the ⟨15 unchanged words⟩
⟨5 unchanged words⟩ "rot13, base64, base64url, base32, hex, uuencode, urlcomponent, urlform, oruuencodehtml","type":"string"},"input":{ ⟨12 unchanged words⟩
Added "datetime_now" (32 tools before, 33 now)
Returns the actual current date/time — an LLM has a training cutoff and no live clock, so it can't know what time it actually is right now.
Added "encode_decode" and "encode_encode" (30 tools before, 32 now)
Decodes rot13, base64, base64url, base32, hex, or uuencode text back to the original. encoding in the result is "text" if the decoded bytes are valid UTF-8, or "base64" if they're binary.
Encodes plain UTF-8 text into rot13, base64, base64url, base32, hex, or uuencode. Returns plain ASCII.
Added "random_int" (29 tools before, 30 now)
Generates cryptographically random integers in [min, max] (inclusive), using crypto/rand — an actual random value, not a guess. count defaults to 1, max 1000.
Certificate recorded, valid to 2026-11-15
Authorization not required
First tool surface recorded: 29 tools (server version 1.0.0)
Showing the latest 11 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨5 unchanged words⟩ rot13, base64, base64url, base32, hex, uuencode, urlcomponent (RFC 3986 percent-encoding, space -> %20), urlform (application/x-www-form-urlencoded, space -> +), oruuencode.html (entity-escapes < > & ' "). Returns plain ASCII.
⟨5 unchanged words⟩ "rot13, base64, base64url, base32, hex, uuencode, urlcomponent, urlform, oruuencodehtml","type":"string"},"input":{ ⟨13 unchanged words⟩
Computes the WCAG 2.1 contrast ratio between two hex colors. Alpha, if present, is composited over white first.
Converts a color between hex, rgb, hsl, and hsv. value's shape depends on from/to: a string for hex, an object ({r,g,b,a?} etc.) otherwise.
Converts JSON records to CSV text. columns is the explicit, ordered header — JSON object key order can't be relied on to infer it.
Parses CSV text into rows of string fields (no type guessing). Ragged rows are tolerated — use csv_validate to detect them.
Parses CSV text (header row required) and reports per-column non-empty/empty value counts across the data rows. No numeric aggregation.
Converts CSV text to JSON: header=true (default) returns one object per data row keyed by the header row; header=false returns raw rows. Every value is a string.
Reports whether CSV text is structurally well-formed: every row has the same field count as the first.
Computes an HMAC of input (decoded per encoding) using algo: md5, sha1, sha256, or sha512 (crc32 isn't offered — it's a checksum, not a cryptographic primitive HMAC composes with). key is used as its raw UTF-8 bytes, not decoded per encoding. Returns the MAC as lowercase hex.
Reports whether a CIDR block contains an address. Different address families (IPv4 vs IPv6) never match.
Parses a CIDR block and reports its network address, address range, and address count. An address with host bits set (e.g. 10.14.32.17/21) is normalized to its network address in the result.
Reports whether two CIDR blocks share any address.
Runs a short ordered chain of existing apished operations in one call (same as POST /v1/pipe/run), passing one named field of each step's result into the next step's args. Stops at the first failing step.
Extracts up to maxMatches non-overlapping regex matches from input, using Go's RE2-based regexp engine (linear-time, no backreferences/lookaround). Named groups (?P<name>...) are reported in namedGroups.
Replaces every regex match of pattern in input with replacement, which may reference capture groups as $1, $name, etc. (Go's Regexp.Expand syntax).
Splits input around regex matches of pattern, returning at most limit substrings (the last holds the unsplit remainder). limit<=0 means no limit.
Converts a data-size value (decimal string) between bit, Kbit, Mbit, Gbit, Tbit (SI bits), B, KB, MB, GB, TB, PB (SI bytes), and KiB, MiB, GiB, TiB, PiB (IEC bytes). Always exact.
Converts a temperature value (decimal string) between C, F, and K. Offset-aware, not a bare multiplier.
Generates count (default 1, max 1000) random version-4 UUIDs from crypto/rand-backed entropy.
Parses value as a UUID and reports its version/variant if well-formed.