이 MCP로 할 수 있는 일
Offers deterministic developer and data utilities for formatting, encoding, conversion, scheduling, text processing, and financial calculations.
도구
입력 스키마
{'type': 'object', 'required': ['principal', 'annualRate', 'years'], 'properties': {'years': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Loan term in years.'}, 'principal': {'type': 'number', 'description': 'Loan amount (positive).'}, 'annualRate': {'type': 'number', 'description': 'Annual interest rate as a percent, e.g. 6.5.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['monthlyPayment', 'totalPaid', 'totalInterest', 'numberOfPayments', 'schedule'], 'properties': {'schedule': {'type': 'array', 'items': {'type': 'object', 'required': ['year', 'startingBalance', 'principalPaid', 'interestPaid', 'endingBalance'], 'properties': {'year': {'type': 'integer', 'description': '1-based year number.'}, 'interestPaid': {'type': 'number', 'description': 'Interest paid during the year.'}, 'endingBalance': {'type': 'number', 'description': 'Balance at year end (0 once the loan is retired).'}, 'principalPaid': {'type': 'number', 'description': 'Principal repaid during the year.'}, 'startingBalance': {'type': 'number', 'description': 'Balance at the start of the year.'}}, 'additionalProperties': False}, 'description': 'One row per year of the term.'}, 'totalPaid': {'type': 'number', 'description': 'Sum of all payments over the full term (monthlyPayment * numberOfPayments).'}, 'totalInterest': {'type': 'number', 'description': 'Total interest paid = totalPaid - principal.'}, 'monthlyPayment': {'type': 'number', 'description': 'Level monthly payment, rounded to cents.'}, 'numberOfPayments': {'type': 'integer', 'description': 'Total monthly payments = years * 12.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': [], 'properties': {'fees': {'type': 'number', 'description': '[loan mode] Upfront finance charge/fees (default 0).'}, 'mode': {'enum': ['rate', 'loan'], 'type': 'string', 'description': '"rate" for nominal->APY, "loan" for loan APR (default loan).'}, 'loanAmount': {'type': 'number', 'description': '[loan mode] Amount financed.'}, 'termMonths': {'type': 'integer', 'minimum': 1, 'description': '[loan mode] Number of monthly payments.'}, 'nominalRate': {'type': 'number', 'description': '[rate mode] Nominal annual rate as a percent.'}, 'monthlyPayment': {'type': 'number', 'description': '[loan mode] Payment per month.'}, 'compoundingPerYear': {'type': 'integer', 'minimum': 1, 'description': '[rate mode] Compounding periods per year.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['mode'], 'properties': {'apr': {'type': 'number', 'description': '(loan mode) True annual percentage rate as a percent, rounded to 4 decimals.'}, 'apy': {'type': 'number', 'description': '(rate mode) Annual percentage yield as a percent, rounded to 4 decimals.'}, 'mode': {'enum': ['rate', 'loan'], 'type': 'string', 'description': 'Which calculation was performed.'}, 'totalPaid': {'type': 'number', 'description': '(loan mode) monthlyPayment x termMonths, rounded to cents.'}, 'monthlyRate': {'type': 'number', 'description': '(loan mode) Periodic (monthly) rate as a percent, rounded to 6 decimals.'}, 'nominalRate': {'type': 'number', 'description': '(rate mode) The nominal annual rate that was supplied, as a percent.'}, 'totalInterest': {'type': 'number', 'description': '(loan mode) totalPaid minus loanAmount, rounded to cents.'}, 'compoundingPerYear': {'type': 'integer', 'description': '(rate mode) Compounding periods per year used for the APY.'}}}
입력 스키마
{'type': 'object', 'required': ['foreground', 'background'], 'properties': {'background': {'type': 'string', 'description': 'Background color as a 3 or 6 digit HEX string, with or without a leading #, e.g. "#ffffff" or "fff".'}, 'foreground': {'type': 'string', 'description': 'Foreground (text) color as a 3 or 6 digit HEX string, with or without a leading #, e.g. "#1a1a1a" or "777".'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['foreground', 'background', 'ratio', 'normalAA', 'normalAAA', 'largeAA', 'largeAAA', 'suggestedForeground'], 'properties': {'ratio': {'type': 'number', 'description': 'WCAG 2.x contrast ratio, 1 to 21, rounded to 2 decimals.'}, 'largeAA': {'type': 'boolean', 'description': 'Unrounded ratio >= 3 (large text >=18pt / 14pt bold, AA).'}, 'largeAAA': {'type': 'boolean', 'description': 'Unrounded ratio >= 4.5 (large text, AAA).'}, 'normalAA': {'type': 'boolean', 'description': 'Unrounded ratio >= 4.5 (normal text, AA).'}, 'normalAAA': {'type': 'boolean', 'description': 'Unrounded ratio >= 7 (normal text, AAA).'}, 'background': {'type': 'string', 'description': 'Normalized background color as a 6-digit hex string.'}, 'foreground': {'type': 'string', 'description': 'Normalized foreground color as a 6-digit hex string.'}, 'suggestedForeground': {'type': ['string', 'null'], 'description': 'A passing foreground hex (>=4.5 vs the background) when normal-text AA fails; null when the pair already passes or no passing value is found.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['color'], 'properties': {'color': {'type': 'string', 'description': 'A 6-digit hex color, with or without a leading \'#\', e.g. "#e11d48" or "e11d48". Case-insensitive.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['base', 'complementary', 'analogous', 'triadic', 'splitComplementary', 'monochromatic'], 'properties': {'base': {'type': 'string', 'description': "Normalized base color as a 6-digit hex string (lowercased, with leading '#')."}, 'triadic': {'type': 'array', 'items': {'type': 'string'}, 'description': '[base, hue+120, hue+240] — 3 hex swatches.'}, 'analogous': {'type': 'array', 'items': {'type': 'string'}, 'description': '[hue-30, base, hue+30] — 3 hex swatches.'}, 'complementary': {'type': 'array', 'items': {'type': 'string'}, 'description': '[base, hue+180] — 2 hex swatches.'}, 'monochromatic': {'type': 'array', 'items': {'type': 'string'}, 'description': '5 hex shades stepping lightness by -30, -15, 0, +15, +30 from the base; the two darker steps are floored at lightness 5 and 10, and the two lighter steps capped at 90 and 95.'}, 'splitComplementary': {'type': 'array', 'items': {'type': 'string'}, 'description': '[base, hue+150, hue+210] — 3 hex swatches.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['principal', 'annualRate', 'years'], 'properties': {'years': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'Number of years.'}, 'principal': {'type': 'number', 'description': 'Starting principal (>= 0).'}, 'annualRate': {'type': 'number', 'description': 'Annual interest rate as a percent.'}, 'compoundingPerYear': {'type': 'integer', 'minimum': 1, 'description': 'Compounding periods per year (default 12).'}, 'monthlyContribution': {'type': 'number', 'description': 'Amount added at the start of each month (default 0).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['finalBalance', 'totalContributions', 'totalInterest', 'schedule'], 'properties': {'schedule': {'type': 'array', 'items': {'type': 'object', 'required': ['year', 'startingBalance', 'interest', 'contributions', 'endingBalance'], 'properties': {'year': {'type': 'integer', 'description': '1-based year number.'}, 'interest': {'type': 'number', 'description': 'Interest credited during the year.'}, 'contributions': {'type': 'number', 'description': 'Contributions added during the year.'}, 'endingBalance': {'type': 'number', 'description': 'Balance at year end.'}, 'startingBalance': {'type': 'number', 'description': 'Balance at the start of the year.'}}, 'additionalProperties': False}, 'description': 'One row per year.'}, 'finalBalance': {'type': 'number', 'description': 'Ending balance after all years.'}, 'totalInterest': {'type': 'number', 'description': 'Interest earned = finalBalance - totalContributions.'}, 'totalContributions': {'type': 'number', 'description': 'Principal plus all monthly contributions.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['text', 'case'], 'properties': {'case': {'enum': ['upper', 'lower', 'title', 'sentence', 'camel', 'snake', 'kebab', 'constant'], 'type': 'string', 'description': 'Target case: upper (UPPER CASE), lower (lower case), title (Title Case with stop-words), sentence (Sentence case), camel (camelCase), snake (snake_case), kebab (kebab-case), constant (CONSTANT_CASE).'}, 'text': {'type': 'string', 'description': 'The input text to convert.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['case', 'result'], 'properties': {'case': {'type': 'string', 'description': 'The target case that was applied (echoes the requested `case`).'}, 'result': {'type': 'string', 'description': 'The converted text. Empty string if the input text was empty.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['color'], 'properties': {'color': {'type': 'string', 'description': 'A color as hex (#abc or #aabbcc), rgb(r, g, b) with r/g/b 0-255, or hsl(h, s%, l%). Alpha is not supported.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['hex', 'rgb', 'hsl', 'hsv', 'cmyk', 'oklch'], 'properties': {'hex': {'type': 'string', 'description': "6-digit lowercase hex, e.g. '#ff0000'."}, 'hsl': {'type': 'object', 'required': ['h', 's', 'l'], 'properties': {'h': {'type': 'integer', 'description': 'Hue 0-360 degrees (0 for grays).'}, 'l': {'type': 'integer', 'description': 'Lightness 0-100 percent.'}, 's': {'type': 'integer', 'description': 'Saturation 0-100 percent.'}}, 'additionalProperties': False}, 'hsv': {'type': 'object', 'required': ['h', 's', 'v'], 'properties': {'h': {'type': 'integer', 'description': 'Hue 0-360 degrees.'}, 's': {'type': 'integer', 'description': 'Saturation 0-100 percent.'}, 'v': {'type': 'integer', 'description': 'Value/brightness 0-100 percent.'}}, 'additionalProperties': False}, 'rgb': {'type': 'object', 'required': ['r', 'g', 'b'], 'properties': {'b': {'type': 'integer', 'description': 'Blue 0-255.'}, 'g': {'type': 'integer', 'description': 'Green 0-255.'}, 'r': {'type': 'integer', 'description': 'Red 0-255.'}}, 'additionalProperties': False}, 'cmyk': {'type': 'object', 'required': ['c', 'm', 'y', 'k'], 'properties': {'c': {'type': 'integer', 'description': 'Cyan 0-100 percent.'}, 'k': {'type': 'integer', 'description': 'Key/black 0-100 percent.'}, 'm': {'type': 'integer', 'description': 'Magenta 0-100 percent.'}, 'y': {'type': 'integer', 'description': 'Yellow 0-100 percent.'}}, 'additionalProperties': False}, 'oklch': {'type': 'object', 'required': ['l', 'c', 'h'], 'properties': {'c': {'type': 'number', 'description': 'OKLCH chroma, rounded to 4 decimals.'}, 'h': {'type': 'number', 'description': 'OKLCH hue 0-360 degrees (0 for grays), rounded to 4 decimals.'}, 'l': {'type': 'number', 'description': 'OKLCH lightness 0-1 (not 0-100), rounded to 4 decimals.'}}, 'additionalProperties': False}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['data', 'from', 'to'], 'properties': {'to': {'enum': ['json', 'csv', 'tsv', 'xml'], 'type': 'string', 'description': 'Output format.'}, 'data': {'type': 'string', 'description': 'The source document as text.'}, 'from': {'enum': ['json', 'csv', 'tsv', 'xml'], 'type': 'string', 'description': 'Input format.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['from', 'to', 'rowCount', 'output'], 'properties': {'to': {'enum': ['json', 'csv', 'tsv', 'xml'], 'type': 'string', 'description': 'Echo of the target format.'}, 'from': {'enum': ['json', 'csv', 'tsv', 'xml'], 'type': 'string', 'description': 'Echo of the input format.'}, 'output': {'type': 'string', 'description': 'The converted document as text in the target format (JSON is pretty-printed with 2-space indent).'}, 'rowCount': {'type': 'integer', 'description': 'Number of data rows (objects) parsed from the input.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['value', 'from'], 'properties': {'to': {'oneOf': [{'type': 'integer', 'maximum': 36, 'minimum': 2}, {'type': 'array', 'items': {'type': 'integer', 'maximum': 36, 'minimum': 2}}], 'description': 'Target base(s): a single integer 2-36, or an array of them. Optional; defaults to [2, 8, 10, 16] with the source base excluded.'}, 'from': {'type': 'integer', 'maximum': 36, 'minimum': 2, 'description': 'The base the input value is written in (2-36).'}, 'value': {'type': 'string', 'description': 'The number to convert, as a string so huge values are not truncated. Digits are case-insensitive (a-z = 10-35) and an optional leading "-" is allowed, e.g. "ff", "-1010", "HELLOWORLD123".'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['value', 'from', 'decimal', 'results'], 'properties': {'from': {'type': 'integer', 'maximum': 36, 'minimum': 2, 'description': 'Echo of the source base.'}, 'value': {'type': 'string', 'description': 'Echo of the input value.'}, 'decimal': {'type': 'string', 'description': "The value in base 10 (may carry a leading '-')."}, 'results': {'type': 'object', 'description': "Converted representations keyed by 'base<N>' (e.g. base2, base8, base16) with lowercase digit strings. Which keys appear depends on the `to` argument (default bases 2, 8, 10, 16 excluding the source base).", 'additionalProperties': {'type': 'string'}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['value'], 'properties': {'value': {'type': ['string', 'number'], 'description': 'The timestamp to convert: a unix epoch (number or digit-string; seconds/milliseconds/microseconds auto-detected by length) or an ISO-8601 date-time (e.g. "2026-07-07T15:04:00-05:00" or "2026-07-07"). A naive date-time with no zone designator is interpreted as UTC.'}, 'timezone': {'type': 'string', 'description': 'IANA time zone used to render iso_tz, human, and weekday, e.g. "America/Chicago". Defaults to "UTC".'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['detected', 'timezone', 'unix_s', 'unix_ms', 'iso_utc', 'iso_tz', 'human', 'weekday'], 'properties': {'human': {'type': 'string', 'description': 'Human-readable local time with weekday, date, time, and zone abbreviation.'}, 'iso_tz': {'type': 'string', 'description': "The instant rendered in the requested zone, ISO-8601 with a numeric offset (e.g. '-05:00')."}, 'unix_s': {'type': 'integer', 'description': 'Unix epoch in whole seconds (negative for pre-1970 instants).'}, 'iso_utc': {'type': 'string', 'description': "The instant in UTC, ISO-8601 with milliseconds and a trailing 'Z'."}, 'unix_ms': {'type': 'integer', 'description': 'Unix epoch in milliseconds.'}, 'weekday': {'type': 'string', 'description': "Day of week in the requested zone, e.g. 'Tuesday'."}, 'detected': {'enum': ['seconds', 'milliseconds', 'microseconds', 'iso'], 'type': 'string', 'description': "How the input was classified: an epoch band chosen by digit length, or 'iso' when parsed as a date-time string."}, 'timezone': {'type': 'string', 'description': "IANA time zone used to render iso_tz, human, and weekday (echo of input; default 'UTC')."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['datetime', 'fromTz', 'toTz'], 'properties': {'toTz': {'type': 'string', 'description': 'Target IANA zone, e.g. Asia/Tokyo.'}, 'fromTz': {'type': 'string', 'description': 'Source IANA zone, e.g. America/New_York.'}, 'datetime': {'type': 'string', 'description': 'Local date-time in the source zone, ISO form YYYY-MM-DDTHH:MM.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['input', 'fromTz', 'toTz', 'utc', 'fromUtcOffsetMinutes', 'toUtcOffsetMinutes', 'converted'], 'properties': {'utc': {'type': 'string', 'description': 'The corresponding UTC instant, ISO-8601.'}, 'toTz': {'type': 'string', 'description': 'Target IANA time zone.'}, 'input': {'type': 'string', 'description': 'Echo of the source wall-clock datetime.'}, 'fromTz': {'type': 'string', 'description': 'Source IANA time zone.'}, 'converted': {'type': 'string', 'description': "Wall-clock time in the target zone, e.g. '9 Jul 2026, 03:30:00'."}, 'toUtcOffsetMinutes': {'type': 'integer', 'description': "Target zone's UTC offset in minutes at that instant (e.g. 540 for JST)."}, 'fromUtcOffsetMinutes': {'type': 'integer', 'description': "Source zone's UTC offset in minutes at that instant (e.g. -240 for EDT)."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['category', 'value', 'from', 'to'], 'properties': {'to': {'type': 'string', 'description': 'Target unit key.'}, 'from': {'type': 'string', 'description': 'Source unit key (e.g. km, lb, celsius, MB).'}, 'value': {'type': 'number', 'description': 'The numeric value to convert.'}, 'category': {'enum': ['length', 'weight', 'temperature', 'volume', 'data', 'speed', 'area', 'time'], 'type': 'string', 'description': 'Unit category.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['category', 'value', 'from', 'to', 'result'], 'properties': {'to': {'type': 'string', 'description': 'Echo of the target unit key.'}, 'from': {'type': 'string', 'description': 'Echo of the source unit key.'}, 'value': {'type': 'number', 'description': 'Echo of the input value (coerced to a number).'}, 'result': {'type': 'number', 'description': 'Converted value, rounded to 12 significant figures (magnitudes >= 1e15 or < 1e-10 use exponential rounding to ~7 significant figures).'}, 'category': {'enum': ['length', 'weight', 'temperature', 'volume', 'data', 'speed', 'area', 'time'], 'type': 'string', 'description': 'Echo of the unit category, lowercased.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['data', 'from', 'to'], 'properties': {'to': {'enum': ['yaml', 'json'], 'type': 'string', 'description': 'Output format; if equal to "from", the document is normalized (parsed and re-emitted).'}, 'data': {'type': 'string', 'description': 'The document to convert, as a string.'}, 'from': {'enum': ['yaml', 'json'], 'type': 'string', 'description': 'Input format of data.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['result'], 'properties': {'result': {'type': 'string', 'description': 'The converted (or, when from equals to, normalized) document as text in the target format.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'Text to analyze.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['words', 'characters', 'charactersNoSpaces', 'sentences', 'paragraphs'], 'properties': {'words': {'type': 'integer', 'description': 'Count of word-like segments.'}, 'sentences': {'type': 'integer', 'description': 'Sentence count using abbreviation-aware segmentation.'}, 'characters': {'type': 'integer', 'description': 'Count of grapheme clusters (user-perceived characters), including whitespace.'}, 'paragraphs': {'type': 'integer', 'description': 'Count of non-empty blocks separated by blank lines.'}, 'charactersNoSpaces': {'type': 'integer', 'description': 'Grapheme count after removing all whitespace.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['colors'], 'properties': {'type': {'enum': ['linear', 'radial'], 'type': 'string', 'description': 'Gradient type. Defaults to "linear". "radial" produces radial-gradient(circle, ...).'}, 'colors': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 5, 'minItems': 2, 'description': '2 to 5 color stops as 6-digit hex strings, with or without a leading \'#\', e.g. ["#3b82f6", "8b5cf6"].'}, 'direction': {'type': 'string', 'description': 'Linear direction: a keyword ("to right", "to left", "to bottom", "to top"), an angle ("45deg", "135deg", "90deg"), or "to <side> <side>". Defaults to "to bottom". Ignored for radial; passing "radial" here forces a radial gradient.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['css', 'type', 'colors'], 'properties': {'css': {'type': 'string', 'description': "Ready-to-paste CSS gradient value, e.g. 'linear-gradient(to bottom, #3b82f6, #8b5cf6)' or 'radial-gradient(circle, #3b82f6, #8b5cf6)'."}, 'type': {'enum': ['linear', 'radial'], 'type': 'string', 'description': 'Resolved gradient type.'}, 'colors': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Normalized 6-digit hex color stops, in input order.'}, 'direction': {'type': 'string', 'description': 'Resolved linear direction (keyword or angle). Present only for linear gradients; omitted for radial.'}}}
입력 스키마
{'type': 'object', 'required': ['token'], 'properties': {'now': {'type': 'string', 'description': 'Optional ISO time for the expiry check (default: current time).'}, 'token': {'type': 'string', 'description': 'The compact JWT string (header.payload.signature).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['signatureVerified', 'header', 'payload', 'claims', 'expired', 'notYetValid', 'segments'], 'properties': {'claims': {'type': 'object', 'properties': {'issuer': {'type': 'string', 'description': 'iss claim.'}, 'expires': {'type': 'string', 'description': 'exp converted to ISO 8601.'}, 'subject': {'type': 'string', 'description': 'sub claim.'}, 'audience': {'description': 'aud claim, copied verbatim (a string or an array of strings).'}, 'issuedAt': {'type': 'string', 'description': 'iat converted to ISO 8601.'}, 'notBefore': {'type': 'string', 'description': 'nbf converted to ISO 8601.'}}, 'description': 'Normalized standard claims; each key appears only when the corresponding claim is present in the payload.', 'additionalProperties': False}, 'header': {'type': 'object', 'description': 'Decoded JWT header (parsed JSON; arbitrary fields, e.g. alg, typ).', 'additionalProperties': True}, 'expired': {'type': ['boolean', 'null'], 'description': 'Whether now is past exp; null when the payload has no numeric exp.'}, 'payload': {'type': 'object', 'description': 'Decoded JWT payload/claims (parsed JSON; arbitrary fields).', 'additionalProperties': True}, 'segments': {'enum': [2, 3], 'type': 'integer', 'description': 'Number of dot-separated segments in the token (2 or 3).'}, 'notYetValid': {'type': ['boolean', 'null'], 'description': 'Whether now is before nbf; null when the payload has no numeric nbf.'}, 'signatureVerified': {'type': 'boolean', 'description': 'Always false — this tool never checks the signature.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['original', 'modified'], 'properties': {'modified': {'type': 'string', 'description': 'Modified text.'}, 'original': {'type': 'string', 'description': 'Original text.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['added', 'removed', 'unchanged', 'lines'], 'properties': {'added': {'type': 'integer', 'description': 'Number of lines present only in the modified text.'}, 'lines': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'text'], 'properties': {'text': {'type': 'string', 'description': 'The line content (without its trailing newline).'}, 'type': {'enum': ['added', 'removed', 'unchanged'], 'type': 'string', 'description': 'How this line differs between the two texts.'}}, 'additionalProperties': False}, 'description': 'The full diff in order, one entry per line.'}, 'removed': {'type': 'integer', 'description': 'Number of lines present only in the original text.'}, 'unchanged': {'type': 'integer', 'description': 'Number of lines common to both texts.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['mode', 'text'], 'properties': {'mode': {'enum': ['url-encode', 'url-decode', 'html-encode', 'html-decode', 'base64-encode', 'base64-decode', 'unicode-encode', 'unicode-decode'], 'type': 'string', 'description': 'Operation to perform.'}, 'text': {'type': 'string', 'description': 'Input text.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['mode', 'output'], 'properties': {'mode': {'enum': ['url-encode', 'url-decode', 'html-encode', 'html-decode', 'base64-encode', 'base64-decode', 'unicode-encode', 'unicode-decode'], 'type': 'string', 'description': 'The operation that was performed (echoed back).'}, 'output': {'type': 'string', 'description': 'The encoded or decoded result string.'}}}
입력 스키마
{'type': 'object', 'required': ['freq', 'start'], 'properties': {'freq': {'enum': ['DAILY', 'WEEKLY', 'MONTHLY', 'YEARLY'], 'type': 'string', 'description': 'Recurrence frequency.'}, 'byday': {'type': 'array', 'items': {'enum': ['MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU'], 'type': 'string'}, 'description': 'Days of week (WEEKLY/MONTHLY).'}, 'count': {'type': 'integer', 'minimum': 1, 'description': 'Total number of occurrences (mutually exclusive with until; count wins).'}, 'start': {'type': 'string', 'description': 'Start date-time, ISO form YYYY-MM-DDTHH:MM (interpreted as UTC).'}, 'until': {'type': 'string', 'description': 'End date YYYY-MM-DD (ignored if count is set).'}, 'bymonth': {'type': 'array', 'items': {'type': 'integer', 'maximum': 12, 'minimum': 1}, 'description': 'Months (YEARLY).'}, 'ordinal': {'enum': [1, 2, 3, 4, -1], 'type': 'integer', 'description': 'Ordinal week position for MONTHLY BYDAY (e.g. 2 = 2nd, -1 = last).'}, 'interval': {'type': 'integer', 'minimum': 1, 'description': 'Repeat every N periods (default 1).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['rrule', 'description', 'occurrences'], 'properties': {'rrule': {'type': 'string', 'description': "iCalendar RRULE string, e.g. 'RRULE:FREQ=MONTHLY;BYDAY=2MO;COUNT=3'."}, 'description': {'type': 'string', 'description': 'Plain-English description of the recurrence.'}, 'occurrences': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Upcoming occurrence timestamps as ISO-8601 UTC strings; capped at min(COUNT,10), otherwise 10.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['expression'], 'properties': {'now': {'type': 'string', 'description': 'Optional ISO timestamp to compute next runs from (default: current time).'}, 'count': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'How many upcoming run times to return (default 5).'}, 'expression': {'type': 'string', 'description': '5-field cron, e.g. "*/15 9-17 * * 1-5" (minute hour day-of-month month day-of-week).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['valid', 'error', 'expression', 'description', 'fields', 'nextRuns'], 'properties': {'error': {'type': 'null', 'description': 'Always null on the success result.'}, 'valid': {'type': 'boolean', 'description': 'Always true on the success result.'}, 'fields': {'type': 'object', 'required': ['minute', 'hour', 'dayOfMonth', 'month', 'dayOfWeek'], 'properties': {'hour': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Matching hours, 0-23.'}, 'month': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Matching months, 1-12.'}, 'minute': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Matching minutes, 0-59.'}, 'dayOfWeek': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Matching weekdays, 0=Sunday .. 6=Saturday (7 folds to 0).'}, 'dayOfMonth': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Matching days of month, 1-31.'}}, 'additionalProperties': False}, 'nextRuns': {'type': 'array', 'items': {'type': 'object', 'required': ['iso', 'label'], 'properties': {'iso': {'type': 'string', 'description': 'ISO-8601 UTC timestamp of the run.'}, 'label': {'type': 'string', 'description': "Human-readable UTC label, e.g. 'Fri Jan 1 2027, 00:00 UTC'."}}, 'additionalProperties': False}, 'description': 'Upcoming run times in UTC; length is capped by `count` (default 5).'}, 'expression': {'type': 'string', 'description': 'The normalized 5-field cron expression.'}, 'description': {'type': 'string', 'description': 'Plain-English description of the schedule.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': [], 'properties': {'text': {'type': 'string', 'description': 'The text to transform. ASCII A-Z, a-z, and 0-9 are mapped to styled glyphs; other characters (spaces, punctuation, emoji) pass through unchanged. Required when a style is given.'}, 'style': {'enum': ['bold-serif', 'italic-serif', 'bold-italic-serif', 'bold-sans', 'script', 'fraktur', 'double-struck', 'monospace', 'circled', 'squared', 'parenthesized', 'small-caps'], 'type': 'string', 'description': 'The style to apply. Omit entirely to receive the list of valid style keys instead of transforming.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'style': {'type': 'string', 'description': 'Transform mode only: the style that was applied (echoes the requested `style`).'}, 'result': {'type': 'string', 'description': 'Transform mode only: the styled text, with unsupported characters passed through unchanged.'}, 'styles': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Discovery mode only (when `style` is omitted): the list of valid style keys.'}}}
입력 스키마
{'type': 'object', 'required': ['json'], 'properties': {'json': {'type': 'string', 'description': 'The JSON document to format, minify, or validate. Required, capped at 128 KB.'}, 'indent': {'oneOf': [{'enum': [0, 2, 4], 'type': 'integer'}, {'enum': ['0', '2', '4', 'tab'], 'type': 'string'}], 'description': 'Indentation for pretty-printing: 2 or 4 spaces, "tab" for tab characters, or 0 to minify. Optional; defaults to 2.'}, 'sortKeys': {'type': 'boolean', 'description': 'Recursively sort object keys alphabetically; array element order is preserved (default false).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['formatted', 'valid', 'warnings'], 'properties': {'valid': {'type': 'boolean', 'description': 'Always true on the success result; malformed JSON instead returns {error, line, column}.'}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Non-fatal data-loss warnings detected in the raw source: duplicate object keys (last value kept) and integers beyond 2^53 (rounded on parse). Empty when none.'}, 'formatted': {'type': 'string', 'description': 'The reformatted JSON text (pretty-printed, minified, or key-sorted per the options).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['sql'], 'properties': {'sql': {'type': 'string', 'description': 'The SQL query text to format. Required, non-empty.'}, 'indent': {'oneOf': [{'type': 'integer', 'maximum': 8, 'minimum': 1}, {'enum': ['2', '4', 'tab'], 'type': 'string'}], 'description': 'Indentation: a number of spaces (e.g. 2 or 4) or the string "tab" for tab characters. Optional; defaults to 2.'}, 'dialect': {'enum': ['sql', 'postgresql', 'mysql', 'tsql', 'bigquery', 'sqlite'], 'type': 'string', 'description': "SQL dialect hint (affects identifier quoting, e.g. T-SQL [brackets]). Optional; defaults to standard 'sql'."}, 'keywordCase': {'enum': ['upper', 'lower', 'preserve'], 'type': 'string', 'description': "How to case reserved keywords/functions: UPPER, lower, or preserve as-is. Optional; defaults to 'upper'."}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['formatted'], 'properties': {'formatted': {'type': 'string', 'description': 'The reformatted SQL as a single text string, with newlines and indentation applied. Trailing whitespace and leading/trailing blank lines are stripped.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': [], 'properties': {'name': {'type': 'string', 'description': 'uuid_v5 only: the name hashed within the namespace.'}, 'size': {'type': 'integer', 'maximum': 64, 'minimum': 2, 'description': 'nanoid only: id length (default 21).'}, 'type': {'enum': ['uuid_v7', 'uuid_v5', 'ulid', 'nanoid'], 'type': 'string', 'description': 'Which id to generate. Required unless decode is given.'}, 'count': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'How many ids to generate (default 1). For uuid_v5 all copies are identical (deterministic).'}, 'decode': {'type': 'string', 'description': 'A ULID or UUIDv7 to decode; returns its embedded timestamp. type is ignored when set.'}, 'alphabet': {'type': 'string', 'description': 'nanoid only: characters to draw from (2-256 chars; default is the 64-char URL-safe set).'}, 'namespace': {'type': 'string', 'description': 'uuid_v5 only: the namespace UUID, e.g. 6ba7b810-9dad-11d1-80b4-00c04fd430c8 (DNS).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'properties': {'ids': {'type': 'array', 'items': {'type': 'string'}, 'description': '[generate mode] The generated identifiers, length = count. For uuid_v5 every copy is identical (deterministic).'}, 'decoded': {'type': 'object', 'required': ['kind', 'unix_ms', 'timestamp_iso'], 'properties': {'kind': {'enum': ['ulid', 'uuid_v7'], 'type': 'string', 'description': 'Which id family was decoded.'}, 'unix_ms': {'type': 'integer', 'description': 'Embedded timestamp as Unix epoch milliseconds.'}, 'timestamp_iso': {'type': 'string', 'description': 'Embedded timestamp as an ISO-8601 UTC string.'}}, 'description': '[decode mode] The timestamp embedded in the supplied ULID or UUIDv7.', 'additionalProperties': False}}, 'description': 'Generate mode returns `ids`; decode mode returns `decoded`. Exactly one of the two is present.'}
입력 스키마
{'type': 'object', 'required': [], 'properties': {'mode': {'enum': ['random', 'memorable'], 'type': 'string', 'description': 'Password style (default random).'}, 'count': {'type': 'integer', 'maximum': 10, 'minimum': 1, 'description': 'How many passwords (default 1).'}, 'words': {'type': 'integer', 'maximum': 8, 'minimum': 3, 'description': '[memorable] Number of words (default 4).'}, 'length': {'type': 'integer', 'maximum': 128, 'minimum': 4, 'description': '[random] Character length (default 16).'}, 'numbers': {'type': 'boolean', 'description': '[random] Include 0-9 (default true).'}, 'symbols': {'type': 'boolean', 'description': '[random] Include symbols (default false).'}, 'addNumber': {'type': 'boolean', 'description': '[memorable] Insert a random number (default true).'}, 'addSymbol': {'type': 'boolean', 'description': '[memorable] Insert a random symbol (default false).'}, 'lowercase': {'type': 'boolean', 'description': '[random] Include a-z (default true).'}, 'separator': {'type': 'string', 'description': '[memorable] Word separator (default "-").'}, 'uppercase': {'type': 'boolean', 'description': '[random] Include A-Z (default true).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['mode', 'count', 'passwords'], 'properties': {'mode': {'enum': ['random', 'memorable'], 'type': 'string', 'description': 'Which generator produced the passwords.'}, 'count': {'type': 'integer', 'description': 'Number of passwords generated (matches passwords.length).'}, 'words': {'type': 'integer', 'description': '[memorable mode only] number of words in each passphrase.'}, 'length': {'type': 'integer', 'description': '[random mode only] character length of each password.'}, 'passwords': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The generated passwords/passphrases, length = count.'}}}
입력 스키마
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'Text/URL to encode (up to 213 bytes).'}, 'quietZone': {'type': 'integer', 'maximum': 16, 'minimum': 0, 'description': 'Quiet-zone module border (default 4).'}, 'moduleSize': {'type': 'integer', 'maximum': 40, 'minimum': 1, 'description': 'SVG pixels per module (default 10).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['text', 'version', 'errorCorrectionLevel', 'mask', 'size', 'byteLength', 'quietZone', 'moduleSize', 'matrix', 'svg'], 'properties': {'svg': {'type': 'string', 'description': 'Self-contained SVG document string rendering the QR code (includes the quiet zone and moduleSize scaling): a white background rect plus a #000000 group of one rect per dark module.'}, 'mask': {'type': 'integer', 'maximum': 7, 'minimum': 0, 'description': 'Chosen mask pattern (0-7), the one with the lowest penalty score.'}, 'size': {'type': 'integer', 'description': 'Matrix dimension in modules (version*4+17, so 21-57).'}, 'text': {'type': 'string', 'description': 'Echo of the encoded text.'}, 'matrix': {'type': 'array', 'items': {'type': 'array', 'items': {'enum': [0, 1], 'type': 'integer'}}, 'description': 'size x size grid; each row is an array of 0/1 where 1 is a dark module. Excludes the quiet-zone border.'}, 'version': {'type': 'integer', 'maximum': 10, 'minimum': 1, 'description': 'Auto-selected QR version (1-10).'}, 'quietZone': {'type': 'integer', 'description': 'Quiet-zone border width in modules (echo of input, clamped 0-16; default 4).'}, 'byteLength': {'type': 'integer', 'description': 'UTF-8 byte length of the encoded text.'}, 'moduleSize': {'type': 'integer', 'description': 'SVG pixels per module (echo of input, clamped 1-40; default 10).'}, 'errorCorrectionLevel': {'enum': ['M'], 'type': 'string', 'description': 'Always "M" (medium, ~15% recovery).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'The text to hash (UTF-8; empty string is allowed).'}, 'algorithm': {'enum': ['SHA-1', 'SHA-256', 'SHA-512'], 'type': 'string', 'description': 'A single algorithm to compute.'}, 'algorithms': {'type': 'array', 'items': {'enum': ['SHA-1', 'SHA-256', 'SHA-512'], 'type': 'string'}, 'description': 'Multiple algorithms (default: all three).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['byteLength', 'hashes'], 'properties': {'hashes': {'type': 'object', 'properties': {'SHA-1': {'type': 'string', 'description': '40-char lowercase hex SHA-1 digest.'}, 'SHA-256': {'type': 'string', 'description': '64-char lowercase hex SHA-256 digest.'}, 'SHA-512': {'type': 'string', 'description': '128-char lowercase hex SHA-512 digest.'}}, 'description': 'Lowercase hex digest keyed by algorithm; only the requested algorithms appear.', 'additionalProperties': False}, 'byteLength': {'type': 'integer', 'description': 'UTF-8 encoded byte length of the input text (0 for the empty string).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['principal', 'target', 'years'], 'properties': {'type': {'enum': ['simple', 'compound'], 'type': 'string', 'description': 'Interest model (default compound).'}, 'years': {'type': 'number', 'description': 'Time horizon in years (positive).'}, 'target': {'type': 'number', 'description': 'Ending amount (must exceed principal).'}, 'principal': {'type': 'number', 'description': 'Starting amount (positive).'}, 'compoundingPerYear': {'type': 'integer', 'minimum': 1, 'description': 'Compounding periods per year for compound mode (default 1).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['type', 'ratePercent', 'compoundingPerYear', 'interestEarned', 'growthMultiple'], 'properties': {'type': {'enum': ['simple', 'compound'], 'type': 'string', 'description': 'Interest model used.'}, 'ratePercent': {'type': 'number', 'description': 'Solved annual interest rate as a percent, rounded to 4 decimals.'}, 'growthMultiple': {'type': 'number', 'description': 'target divided by principal, rounded to 4 decimals.'}, 'interestEarned': {'type': 'number', 'description': 'target minus principal, rounded to cents.'}, 'compoundingPerYear': {'type': ['integer', 'null'], 'description': 'Compounding periods per year for compound mode; null for simple interest.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['mode'], 'properties': {'mode': {'enum': ['paragraphs', 'sentences', 'words', 'formatted'], 'type': 'string', 'description': 'Unit of generated text. "paragraphs", "sentences", or "words" repeat the corpus up to the requested count; "formatted" returns a fixed multi-block sample as plain text and ignores count.'}, 'count': {'type': 'integer', 'minimum': 1, 'description': 'How many units to generate. Clamped to the mode\'s max (paragraphs 20, sentences 100, words 500); values below 1 or missing default to 1. Unused for "formatted".'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['mode', 'count', 'text'], 'properties': {'mode': {'enum': ['paragraphs', 'sentences', 'words', 'formatted'], 'type': 'string', 'description': 'The generation mode used (echoes the requested `mode`).'}, 'text': {'type': 'string', 'description': 'The generated placeholder text. Paragraphs are separated by blank lines; words mode is capitalized and terminated with a period.'}, 'count': {'type': 'integer', 'description': 'The effective number of units generated after clamping/defaulting; always 0 for "formatted" mode.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['number'], 'properties': {'number': {'type': 'string', 'description': 'Digits to validate (spaces and dashes are ignored).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['number', 'valid', 'sum', 'mod10', 'digitCount', 'steps'], 'properties': {'sum': {'type': 'integer', 'description': 'Sum of the transformed digits.'}, 'mod10': {'type': 'integer', 'description': 'sum modulo 10; 0 exactly when valid.'}, 'steps': {'type': 'array', 'items': {'type': 'object', 'required': ['digit', 'transformed', 'doubled'], 'properties': {'digit': {'type': 'integer', 'description': 'The original digit (0-9).'}, 'doubled': {'type': 'boolean', 'description': 'Whether this position was doubled (every second digit from the right).'}, 'transformed': {'type': 'integer', 'description': 'Value used in the sum: doubled digits have 9 subtracted when the double exceeds 9, otherwise the digit is unchanged.'}}, 'additionalProperties': False}, 'description': 'Per-digit working, one entry per digit in original left-to-right order.'}, 'valid': {'type': 'boolean', 'description': 'True when sum is divisible by 10 (mod10 === 0).'}, 'number': {'type': 'string', 'description': 'Input with spaces and dashes removed (digits only).'}, 'digitCount': {'type': 'integer', 'description': 'Number of digits validated.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['mode'], 'properties': {'x': {'type': 'number', 'description': '(mode "is-what") The part value.'}, 'y': {'type': 'number', 'description': '(mode "is-what") The whole value; must be non-zero.'}, 'to': {'type': 'number', 'description': '(mode "change") The ending value.'}, 'from': {'type': 'number', 'description': '(mode "change") The starting value; must be non-zero.'}, 'mode': {'enum': ['of', 'is-what', 'change'], 'type': 'string', 'default': 'of', 'description': 'Which calculation to perform. "of" = percent% of value; "is-what" = x is what percent of y; "change" = percent change from -> to.'}, 'value': {'type': 'number', 'description': '(mode "of") The base value that the percentage is taken of.'}, 'percent': {'type': 'number', 'description': '(mode "of") The percentage to apply, e.g. 15 for 15%.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['mode', 'result', 'formula'], 'properties': {'mode': {'enum': ['of', 'is-what', 'change'], 'type': 'string', 'description': 'Which calculation was performed.'}, 'result': {'type': 'number', 'description': 'The numeric answer: the computed amount (of), or the percent (is-what, change). May be negative for a decrease.'}, 'formula': {'type': 'string', 'description': 'Human-readable statement of what was computed, e.g. "15% of 80".'}, 'percent': {'type': 'number', 'description': '(is-what and change modes) The percent, equal to result; present alongside result for those two modes.'}, 'direction': {'enum': ['increase', 'decrease'], 'type': 'string', 'description': '(change mode only) Whether the change was an increase (result >= 0) or a decrease.'}}}
입력 스키마
{'type': 'object', 'required': ['json', 'path'], 'properties': {'json': {'type': 'string', 'description': 'The JSON document to query, as a string. Must parse as valid JSON (object, array, or primitive).'}, 'path': {'type': 'string', 'maxLength': 500, 'description': "JSONPath (subset). Supports $ root, .name / ['name'] child, [n] index (negative allowed), [*] wildcard, .. recursive descent, and [start:end] slice (optional :step). Filter (?()) and script (()) expressions are not supported. Example: $.items[*].id"}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['path', 'matches', 'count', 'truncated'], 'properties': {'path': {'type': 'string', 'description': 'Echo of the JSONPath that was evaluated.'}, 'count': {'type': 'integer', 'description': 'Number of matches (equals matches.length).'}, 'matches': {'type': 'array', 'items': {}, 'description': 'Every matching value in document order; items may be any JSON type (object, array, string, number, boolean, or null).'}, 'truncated': {'type': 'boolean', 'description': 'True if the internal match cap was reached and further matches were dropped.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['min', 'max'], 'properties': {'max': {'type': 'number', 'description': 'Upper bound (inclusive for integers).'}, 'min': {'type': 'number', 'description': 'Lower bound (inclusive).'}, 'type': {'enum': ['integer', 'decimal'], 'type': 'string', 'description': 'Number type (default integer).'}, 'count': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'How many numbers (default 1).'}, 'decimals': {'type': 'integer', 'maximum': 10, 'minimum': 0, 'description': 'Decimal places for decimal type (default 0).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['type', 'min', 'max', 'count', 'values'], 'properties': {'max': {'type': 'number', 'description': 'Effective upper bound after normalization (inclusive for integers).'}, 'min': {'type': 'number', 'description': 'Effective lower bound after normalization (inclusive).'}, 'type': {'enum': ['integer', 'decimal'], 'type': 'string', 'description': 'Whether integers or decimals were drawn.'}, 'count': {'type': 'integer', 'description': 'Number of values drawn (matches values.length).'}, 'values': {'type': 'array', 'items': {'type': 'number'}, 'description': 'The generated numbers, length = count.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['text', 'terms'], 'properties': {'text': {'type': 'string', 'description': 'The text to redact terms from.'}, 'terms': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}], 'description': 'The sensitive terms to redact, given either as a comma-separated string (e.g. "Jane Doe, jane@x.com") or an array of strings.'}, 'fixedWidth': {'type': 'boolean', 'description': 'When true, replace every matched term with a constant-width block bar so the redacted length does not leak the original term length. Defaults to false (block length equals term length).'}, 'wholeWords': {'type': 'boolean', 'description': 'When true (default), only match terms as whole words using Unicode word boundaries (so "ann" will not match inside "annual").'}, 'caseSensitive': {'type': 'boolean', 'description': 'When true, match terms case-sensitively. Defaults to false (case-insensitive).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['redacted', 'redactedCount'], 'properties': {'redacted': {'type': 'string', 'description': 'The text with all matched terms replaced by block characters; identical to the input when no terms matched.'}, 'redactedCount': {'type': 'integer', 'description': 'The number of replacements made.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['markdown'], 'properties': {'markdown': {'type': 'string', 'description': 'The Markdown source text to render to HTML.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['html'], 'properties': {'html': {'type': 'string', 'description': 'The rendered HTML fragment. Block elements are concatenated with no separators; inline styles are attached to tables, code, blockquotes, images, and task-list items. No wrapping document element.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'Text to slugify (max 10000 characters).'}, 'lowercase': {'type': 'boolean', 'description': 'Lowercase the result (default true).'}, 'maxLength': {'type': 'integer', 'minimum': 0, 'description': 'Maximum slug length; 0 means no limit (default). When set and exceeded, the slug is cut at a separator boundary when possible, otherwise hard-cut.'}, 'separator': {'type': 'string', 'maxLength': 1, 'description': 'Word separator: empty string (join words) or a single character from "-", "_", ".". Default "-".'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['slug', 'changed'], 'properties': {'slug': {'type': 'string', 'description': 'The URL/filename-safe slug.'}, 'changed': {'type': 'boolean', 'description': 'True when the slug differs from the input text.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['format'], 'properties': {'now': {'type': 'string', 'description': 'Alias for the reference time when datetime is omitted.'}, 'format': {'type': 'string', 'description': 'strftime format string, e.g. "%A, %B %e, %Y at %I:%M %p".'}, 'datetime': {'type': 'string', 'description': 'Optional ISO date-time to format (default: current time).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['format', 'datetimeUtc', 'output'], 'properties': {'format': {'type': 'string', 'description': 'Echo of the strftime format string.'}, 'output': {'type': 'string', 'description': "The formatted result; unknown directives are emitted literally as '%X'."}, 'datetimeUtc': {'type': 'string', 'description': 'The reference date-time that was formatted, ISO-8601 UTC.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['pattern', 'text'], 'properties': {'text': {'type': 'string', 'description': 'String to search.'}, 'flags': {'type': 'string', 'description': 'Any of g i m s u v y.'}, 'pattern': {'type': 'string', 'description': 'Regular expression source (no delimiters).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['pattern', 'flags', 'matchCount', 'truncated', 'matches'], 'properties': {'flags': {'type': 'string', 'description': 'The flags applied (subset of g i m s u v y).'}, 'matches': {'type': 'array', 'items': {'type': 'object', 'required': ['index', 'length', 'match', 'groups', 'named'], 'properties': {'index': {'type': 'integer', 'description': 'Zero-based start offset of the match in the text.'}, 'match': {'type': 'string', 'description': 'The full matched substring (group 0).'}, 'named': {'type': ['object', 'null'], 'description': 'Named capture groups as name->value, or null when the pattern defines none; a non-participating named group is null.', 'additionalProperties': {'type': ['string', 'null']}}, 'groups': {'type': 'array', 'items': {'type': ['string', 'null']}, 'description': 'Positional capture groups 1..n; a non-participating group is null.'}, 'length': {'type': 'integer', 'description': 'Length of the matched substring.'}}, 'additionalProperties': False}, 'description': 'One entry per match, in order of appearance.'}, 'pattern': {'type': 'string', 'description': 'The regex source that was compiled (echoed back).'}, 'truncated': {'type': 'boolean', 'description': 'True if the 10,000-match cap was hit and further matches were dropped.'}, 'matchCount': {'type': 'integer', 'description': 'Number of matches returned in the matches array.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['bill', 'tipPercent'], 'properties': {'bill': {'type': 'number', 'description': 'The pre-tip bill amount in dollars. Required. Must be zero or positive.'}, 'people': {'type': 'integer', 'minimum': 1, 'description': 'Number of people splitting the bill. Optional, defaults to 1; values below 1 are treated as 1.'}, 'tipPercent': {'type': 'number', 'description': 'The tip as a percentage of the bill (e.g. 20 for 20%). Required. Must be zero or positive.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['bill', 'tipPercent', 'people', 'tipAmount', 'total', 'perPersonTip', 'perPersonTotal'], 'properties': {'bill': {'type': 'number', 'description': 'The pre-tip bill amount, rounded to cents.'}, 'total': {'type': 'number', 'description': 'Bill plus tip in dollars, rounded to cents.'}, 'people': {'type': 'integer', 'description': 'Number of people the bill was split across (>= 1).'}, 'tipAmount': {'type': 'number', 'description': 'Total tip in dollars, rounded to cents.'}, 'tipPercent': {'type': 'number', 'description': 'The tip percentage that was applied (echoed as supplied).'}, 'perPersonTip': {'type': 'number', 'description': 'tipAmount divided by people, rounded to cents.'}, 'perPersonTotal': {'type': 'number', 'description': 'total divided by people, rounded to cents.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['solveFor'], 'properties': {'n': {'type': 'number', 'description': 'Number of periods.'}, 'fv': {'type': 'number', 'description': 'Future value.'}, 'iy': {'type': 'number', 'description': 'Interest rate per year as a percent.'}, 'pv': {'type': 'number', 'description': 'Present value (cash-flow sign convention).'}, 'pmt': {'type': 'number', 'description': 'Payment per period.'}, 'solveFor': {'enum': ['n', 'iy', 'pv', 'pmt', 'fv'], 'type': 'string', 'description': 'Which variable to solve for.'}, 'annuityDue': {'type': 'boolean', 'description': 'True if payments occur at the beginning of each period (default false = ordinary annuity).'}, 'compoundingPerYear': {'type': 'integer', 'minimum': 1, 'description': 'Compounding periods per year (default 1).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['solveFor', 'result', 'compoundingPerYear', 'annuityDue'], 'properties': {'result': {'type': 'number', 'description': 'The solved value (iy in percent, rounded to 4 decimals; n/pv/pmt/fv rounded to 2).'}, 'solveFor': {'enum': ['n', 'iy', 'pv', 'pmt', 'fv'], 'type': 'string', 'description': 'Echo of which variable was solved for.'}, 'annuityDue': {'type': 'boolean', 'description': 'True if payments were treated as beginning-of-period (annuity due).'}, 'compoundingPerYear': {'type': 'integer', 'description': 'Compounding periods per year used (default 1).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': [], 'properties': {'count': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'How many UUIDs to generate (default 1).'}, 'uppercase': {'type': 'boolean', 'description': 'Return uppercase hex (default false).'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['count', 'uuids'], 'properties': {'count': {'type': 'integer', 'description': 'Number of UUIDs generated (matches uuids.length).'}, 'uuids': {'type': 'array', 'items': {'type': 'string', 'description': 'A v4 UUID; lowercase hex unless uppercase=true.'}, 'description': 'The generated RFC 4122 v4 UUIDs, length = count.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', 'required': ['expression'], 'properties': {'expression': {'type': 'string', 'description': '5-field cron expression to validate.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['valid', 'error', 'normalized', 'fields'], 'properties': {'error': {'type': 'null', 'description': 'Always null on the success result.'}, 'valid': {'type': 'boolean', 'description': 'Always true on the success result (a failed validation instead returns {valid:false, error}).'}, 'fields': {'type': 'object', 'required': ['minute', 'hour', 'dayOfMonth', 'month', 'dayOfWeek'], 'properties': {'hour': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Matching hours, 0-23.'}, 'month': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Matching months, 1-12.'}, 'minute': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Matching minutes, 0-59.'}, 'dayOfWeek': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Matching weekdays, 0=Sunday .. 6=Saturday (7 folds to 0).'}, 'dayOfMonth': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Matching days of month, 1-31.'}}, 'additionalProperties': False}, 'normalized': {'type': 'string', 'description': 'The normalized 5-field cron expression.'}}, 'additionalProperties': False}
최근 도구 변경
유사한 MCP 서버
gateway
Aggregates tools for web accessibility, AI compliance, financial analysis, API migration, software security, payment operations, …
Openfigi
Maps financial instrument identifiers such as tickers, ISINs, CUSIPs, SEDOLs, and CIKs to OpenFIGI identifiers and instrument met…
SODAX Builders MCP
Exposes cross-chain DeFi and AMM analytics, money-market positions, token and chain data, order books, swap quotes, and SDK docum…
aeX402 — Cross-Chain DeFi MCP: LINQ, AMM, Bridge, AI
Provides cross-chain blockchain and DeFi access, including AMM quotes and swaps, bridging, token and contract discovery, RPC call…
BIC 11-char shape, value discarded
Checks the shape of an 11-character BIC banking identifier.
BIC 8-char shape, value discarded
Checks the shape of an 8-character BIC banking identifier.
BIC/SWIFT shape, value discarded
Checks the format of a BIC or SWIFT banking identifier.
FIXSIM
Provides sandbox and hosted FIX trading sessions for sending orders, simulating fills and rejects, testing raw FIX messages, and …