Cleanor
What this MCP does
Offers deterministic developer utilities, data conversion and validation tools, image optimization, color tools, QR generation, and placeholder graphics.
Tools
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['input'], 'properties': {'mode': {'enum': ['encode', 'decode'], 'type': 'string', 'default': 'encode', 'description': 'Direction.'}, 'input': {'type': 'string', 'maxLength': 100000, 'minLength': 1, 'description': 'Text to encode, or Base64 to decode.'}, 'url_safe': {'type': 'boolean', 'default': False, 'description': 'Use URL-safe alphabet (-_ instead of +/, no padding).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['mode', 'result'], 'properties': {'mode': {'type': 'string', 'description': 'encode or decode.'}, 'result': {'type': 'string', 'description': 'The encoded or decoded text.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['value'], 'properties': {'value': {'type': 'string', 'maxLength': 2000, 'minLength': 1, 'description': 'The number, in from_base (e.g. "ff", "1010", "255").'}, 'to_base': {'type': 'integer', 'default': 16, 'maximum': 36, 'minimum': 2, 'description': 'Base to convert to (2â\x80\x9336).'}, 'from_base': {'type': 'integer', 'default': 10, 'maximum': 36, 'minimum': 2, 'description': 'Base of the input (2â\x80\x9336).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['input', 'from_base', 'to_base', 'result', 'decimal'], 'properties': {'input': {'type': 'string'}, 'result': {'type': 'string', 'description': 'The value in to_base.'}, 'decimal': {'type': 'string', 'description': 'The value in base 10.'}, 'to_base': {'type': 'number'}, 'from_base': {'type': 'number'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['value'], 'properties': {'value': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'A color: "#3b82f6", "rgb(59,130,246)" or "hsl(217,91%,60%)".'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['hex', 'rgb', 'hsl'], 'properties': {'hex': {'type': 'string'}, 'hsl': {'type': 'string'}, 'rgb': {'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['color'], 'properties': {'color': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Base color: "#3b82f6", "rgb(...)" or "hsl(...)".'}, 'harmony': {'enum': ['complementary', 'analogous', 'triadic', 'tetradic', 'monochromatic'], 'type': 'string', 'default': 'analogous', 'description': 'Color-harmony rule.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['harmony', 'base', 'colors'], 'properties': {'base': {'type': 'string', 'description': 'The base color as hex.'}, 'colors': {'type': 'array', 'items': {'type': 'object', 'required': ['hex', 'hsl'], 'properties': {'hex': {'type': 'string'}, 'hsl': {'type': 'string'}}, 'additionalProperties': False}}, 'harmony': {'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['input'], 'properties': {'input': {'type': 'string', 'maxLength': 100000, 'minLength': 0, 'description': 'Text to measure.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['characters', 'utf16_units', 'words', 'lines', 'bytes'], 'properties': {'bytes': {'type': 'number', 'description': 'UTF-8 bytes.'}, 'lines': {'type': 'number'}, 'words': {'type': 'number'}, 'characters': {'type': 'number', 'description': 'Unicode code points.'}, 'utf16_units': {'type': 'number'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['expression'], 'properties': {'expression': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'A 5-field cron expression, e.g. "30 2 * * 1-5".'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['minute', 'hour', 'day_of_month', 'month', 'day_of_week', 'next_runs'], 'properties': {'hour': {'type': 'string'}, 'month': {'type': 'string'}, 'minute': {'type': 'string'}, 'next_runs': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Next run times in UTC ISO 8601.'}, 'day_of_week': {'type': 'string'}, 'day_of_month': {'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'input': {'type': 'string', 'maxLength': 64, 'description': 'Optional: a Unix timestamp (s or ms) or ISO date string. Omit for the current time.'}, 'timezone': {'type': 'string', 'default': 'UTC', 'maxLength': 64, 'description': 'IANA timezone, e.g. "America/New_York" or "UTC".'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['timezone', 'local', 'iso_utc', 'unix_s', 'unix_ms'], 'properties': {'local': {'type': 'string', 'description': 'Human-readable local time in the timezone.'}, 'unix_s': {'type': 'number'}, 'iso_utc': {'type': 'string'}, 'unix_ms': {'type': 'number'}, 'timezone': {'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['a', 'b'], 'properties': {'a': {'type': 'string', 'maxLength': 100000, 'minLength': 0, 'description': 'The original ("before") text.'}, 'b': {'type': 'string', 'maxLength': 100000, 'minLength': 0, 'description': 'The updated ("after") text.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['changed', 'added', 'removed', 'diff'], 'properties': {'diff': {'type': 'string', 'description': 'The line diff (+/-/space prefixed), empty if identical.'}, 'added': {'type': 'number'}, 'changed': {'type': 'boolean'}, 'removed': {'type': 'number'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['input'], 'properties': {'input': {'type': 'string', 'maxLength': 100000, 'minLength': 1, 'description': 'Text to hash (UTF-8).'}, 'algorithm': {'enum': ['sha-256', 'sha-1', 'sha-384', 'sha-512'], 'type': 'string', 'default': 'sha-256', 'description': 'Hash algorithm. Default sha-256.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['algorithm', 'hex'], 'properties': {'hex': {'type': 'string', 'description': 'The hex-encoded digest.'}, 'algorithm': {'type': 'string', 'description': 'The hash algorithm used.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['message', 'secret'], 'properties': {'secret': {'type': 'string', 'maxLength': 4096, 'minLength': 1, 'description': 'The shared secret key (UTF-8).'}, 'message': {'type': 'string', 'maxLength': 100000, 'minLength': 0, 'description': 'The message to sign (UTF-8).'}, 'encoding': {'enum': ['hex', 'base64'], 'type': 'string', 'default': 'hex', 'description': 'Output encoding.'}, 'algorithm': {'enum': ['sha-256', 'sha-1', 'sha-384', 'sha-512'], 'type': 'string', 'default': 'sha-256', 'description': 'Hash algorithm.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['algorithm', 'encoding', 'signature'], 'properties': {'encoding': {'type': 'string'}, 'algorithm': {'type': 'string'}, 'signature': {'type': 'string', 'description': 'The HMAC in the requested encoding.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'format': {'enum': ['webp', 'avif', 'jxl'], 'type': 'string', 'default': 'avif', 'description': 'Target format to compare against JPEG.'}, 'quality': {'enum': ['web', 'high'], 'type': 'string', 'default': 'web', 'description': 'web = typical web quality (SSIM 0.95); high = near-lossless (SSIM 0.98).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['format', 'quality', 'percent_smaller_than_jpeg', 'all_formats', 'source'], 'properties': {'format': {'type': 'string'}, 'source': {'type': 'string'}, 'quality': {'type': 'string'}, 'all_formats': {'type': 'object', 'required': ['avif', 'webp', 'jxl'], 'properties': {'jxl': {'type': 'number'}, 'avif': {'type': 'number'}, 'webp': {'type': 'number'}}, 'additionalProperties': False}, 'percent_smaller_than_jpeg': {'type': 'number'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['input'], 'properties': {'mode': {'enum': ['pretty', 'minify'], 'type': 'string', 'default': 'pretty', 'description': 'pretty = 2-space indent; minify = single line.'}, 'input': {'type': 'string', 'maxLength': 100000, 'minLength': 1, 'description': 'JSON text.'}, 'sort_keys': {'type': 'boolean', 'default': False, 'description': 'Sort object keys alphabetically (deep).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['valid', 'formatted'], 'properties': {'valid': {'type': 'boolean', 'description': 'Whether the input was valid JSON.'}, 'formatted': {'type': 'string', 'description': 'The formatted JSON text.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['token'], 'properties': {'token': {'type': 'string', 'maxLength': 100000, 'minLength': 1, 'description': 'The JWT (three dot-separated segments).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'header': {'description': 'The decoded JWT header object.'}, 'exp_iso': {'type': 'string', 'description': 'Expiry as ISO 8601, if present.'}, 'expired': {'type': 'boolean', 'description': 'Whether the token is past its exp, if present.'}, 'payload': {'description': 'The decoded JWT payload (claims).'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['image_url'], 'properties': {'width': {'type': 'integer', 'maximum': 4096, 'minimum': 16, 'description': 'Resize to this width in px, preserving aspect ratio. Omit to keep original size.'}, 'format': {'enum': ['webp', 'avif', 'jpeg'], 'type': 'string', 'default': 'webp', 'description': 'Output format. webp = best browser support; avif = smallest; jpeg = universal.'}, 'quality': {'type': 'integer', 'default': 80, 'maximum': 100, 'minimum': 1, 'description': 'Encode quality 1-100 (80 is a good default).'}, 'image_url': {'type': 'string', 'format': 'uri', 'description': 'Public URL of the source image (PNG/JPEG/WebP/AVIF/GIF).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['format', 'original_bytes', 'optimized_bytes', 'saved_pct', 'mime_type'], 'properties': {'format': {'type': 'string', 'description': 'Output image format.'}, 'mime_type': {'type': 'string'}, 'saved_pct': {'type': 'number', 'description': 'Percent smaller than the original.'}, 'original_bytes': {'type': 'number'}, 'optimized_bytes': {'type': 'number'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'bg': {'type': 'string', 'default': '#e5e7eb', 'maxLength': 32, 'description': 'Background color (hex, rgb() or hsl()).'}, 'text': {'type': 'string', 'maxLength': 120, 'description': 'Label text. Defaults to the dimensions, e.g. "600Ã\x97400".'}, 'color': {'type': 'string', 'default': '#6b7280', 'maxLength': 32, 'description': 'Text color.'}, 'width': {'type': 'integer', 'default': 600, 'maximum': 4000, 'minimum': 1, 'description': 'Width in pixels.'}, 'height': {'type': 'integer', 'default': 400, 'maximum': 4000, 'minimum': 1, 'description': 'Height in pixels.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['svg', 'width', 'height'], 'properties': {'svg': {'type': 'string', 'description': 'The SVG markup.'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['text'], 'properties': {'ecc': {'enum': ['L', 'M', 'Q', 'H'], 'type': 'string', 'default': 'M', 'description': 'Error-correction level: L=7%, M=15%, Q=25%, H=30% recoverable.'}, 'size': {'type': 'integer', 'default': 320, 'maximum': 1024, 'minimum': 64, 'description': 'SVG pixel size.'}, 'text': {'type': 'string', 'maxLength': 2000, 'minLength': 1, 'description': 'Text or URL to encode.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['svg'], 'properties': {'svg': {'type': 'string', 'description': 'The QR code as SVG markup.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['pattern', 'input'], 'properties': {'flags': {'type': 'string', 'default': 'g', 'maxLength': 8, 'description': 'Regex flags, e.g. "gi". Allowed: g i m s u y d.'}, 'input': {'type': 'string', 'maxLength': 20000, 'minLength': 0, 'description': 'Text to test against.'}, 'pattern': {'type': 'string', 'maxLength': 1000, 'minLength': 1, 'description': 'The regex pattern (without slashes).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['matched', 'match_count', 'truncated', 'matches'], 'properties': {'matched': {'type': 'boolean', 'description': 'Whether the pattern matched at all.'}, 'matches': {'type': 'array', 'items': {'type': 'object', 'required': ['index', 'match', 'groups'], 'properties': {'index': {'type': 'number'}, 'match': {'type': 'string'}, 'groups': {'type': 'array', 'items': {'type': ['string', 'null']}}}, 'additionalProperties': False}, 'description': 'Each match with its start index and captured groups.'}, 'truncated': {'type': 'boolean', 'description': 'True if results were capped at 100.'}, 'match_count': {'type': 'number'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['input'], 'properties': {'input': {'type': 'string', 'maxLength': 2000, 'minLength': 1, 'description': 'Text to slugify.'}, 'separator': {'enum': ['-', '_'], 'type': 'string', 'default': '-', 'description': 'Word separator.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'The URL-safe slug.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['storage_gb'], 'properties': {'content': {'enum': ['photos', 'video'], 'type': 'string', 'default': 'photos', 'description': 'What to count.'}, 'storage_gb': {'type': 'number', 'maximum': 4096, 'minimum': 1, 'description': 'Advertised storage size in GB (e.g. 64, 128, 256, 512).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['storage_gb', 'usable_gb', 'content', 'breakdown'], 'properties': {'content': {'type': 'string'}, 'breakdown': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'count', 'unit'], 'properties': {'unit': {'type': 'string'}, 'count': {'type': 'number'}, 'label': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'How many of each item fit.'}, 'usable_gb': {'type': 'number', 'description': 'Usable GB after OS/filesystem overhead.'}, 'storage_gb': {'type': 'number'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['value', 'from', 'to'], 'properties': {'to': {'type': 'string', 'maxLength': 8, 'minLength': 1, 'description': 'Target unit (must be the same category as "from").'}, 'from': {'type': 'string', 'maxLength': 8, 'minLength': 1, 'description': 'Source unit (e.g. "km", "lb", "mib", "c").'}, 'value': {'type': 'number', 'description': 'The numeric value to convert.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['value', 'from', 'to', 'result', 'category'], 'properties': {'to': {'type': 'string'}, 'from': {'type': 'string'}, 'value': {'type': 'number'}, 'result': {'type': 'number'}, 'category': {'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['url'], 'properties': {'url': {'type': 'string', 'maxLength': 4000, 'minLength': 1, 'description': 'The URL to parse (absolute, with scheme).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['scheme', 'host', 'port', 'path', 'query', 'fragment'], 'properties': {'host': {'type': 'string'}, 'path': {'type': 'string'}, 'port': {'type': 'string', 'description': 'Port, or empty if the scheme default.'}, 'query': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'value'], 'properties': {'key': {'type': 'string'}, 'value': {'type': 'string'}}, 'additionalProperties': False}}, 'scheme': {'type': 'string'}, 'fragment': {'type': 'string'}, 'username': {'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'count': {'type': 'integer', 'default': 1, 'maximum': 100, 'minimum': 1, 'description': 'How many to generate.'}, 'version': {'enum': ['v4', 'v7'], 'type': 'string', 'default': 'v4', 'description': 'UUID version. v7 = time-ordered.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['version', 'uuids'], 'properties': {'uuids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The generated UUIDs.'}, 'version': {'type': 'string', 'description': 'UUID version generated.'}}, 'additionalProperties': False}
Recent tool changes
Similar MCP servers
GripForge
Generates, rigs, animates, analyzes, and packages game characters, weapons, armor, effects, environments, and engine-ready assets.
spriteship
Generates and manages 2D game characters, assets, animations, tilesets, UI packs, maps, and engine-ready exports for multiple gam…
Blixtworks
Offers pay-per-call utilities for text, image processing and analysis, data conversion, validation, web inspection, cryptography,…
Compose Preview Catalogs
Browses, renders, compares, audits, and edits Jetpack Compose preview catalogs and associated UI designs.
arch-tools-mcp
Provides general-purpose agent APIs for browser automation, web and PDF extraction, data conversion, email operations, fact check…
kernelcad
Authors, evaluates, reviews, simulates, edits, and exports parametric CAD assemblies and geometry from editable TypeScript-based …
floot
Creates, edits, previews, databases, and publishes full-stack web and mobile applications with hosted resources and deployment wo…
Raven
Supports coding agents with design audits, design-system guidance, and a configurable visual preference profile.