Korean holidays, business days & legal deadlines, won amounts in words, NEIS/SMS byte counts
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Move forward (or back, with negative days) a number of South Korean business days from a start date, skipping weekends and public holidays. The start date itself is not counted. Use for deadlines like "within 7 business days". Holiday data covers 2024-2027 (source: KASI; updated 2026-11-12). It includes substitute holidays and election days, and the 2026 additions Labor Day (May 1) and Constitution Day (Jul 17).
Business days to add; negative goes back.
YYYY-MM-DD. Omit for today in Korea (KST).
Optional extra non-working dates (YYYY-MM-DD), e.g. company holidays.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http korea-tools https://mcp.thequokkacompany.com/korea
Move forward (or back, with negative days) a number of South Korean business days from a start date, skipping weekends and public holidays. The start date itself is not counted. Use for deadlines like "within 7 business days". Holiday data covers 2024-2027 (source: KASI; updated 2026-11-12). It includes substitute holidays and election days, and the 2026 additions Labor Day (May 1) and Constitution Day (Jul 17).
| Argument | Type | Description |
|---|---|---|
| days* | integer | Business days to add; negative goes back. |
| start | string | YYYY-MM-DD. Omit for today in Korea (KST). |
| extra_closed_dates | array | Optional extra non-working dates (YYYY-MM-DD), e.g. company holidays. |
{
"type": "object",
"required": [
"days"
],
"properties": {
"days": {
"type": "integer",
"description": "Business days to add; negative goes back."
},
"start": {
"type": "string",
"description": "YYYY-MM-DD. Omit for today in Korea (KST)."
},
"extra_closed_dates": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional extra non-working dates (YYYY-MM-DD), e.g. company holidays."
}
}
}Split South Korean addresses into province/city (시도, normalized to the official name such as 서울특별시), district (시군구, including 일반구 like 수원시 영통구), base address (road name + building number) and detail (unit). Handles leading postal codes and addresses written without spaces. Rule-based; does not look up a database.
| Argument | Type | Description |
|---|---|---|
| addresses* | array | Up to 1000 addresses |
{
"type": "object",
"required": [
"addresses"
],
"properties": {
"addresses": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 1000 addresses"
}
}
}Compute international age (만 나이, the legal standard in Korea since June 2023) and year age (연 나이, used by the Youth Protection Act and military service) on a reference date. Input a birth date, or the first 7 digits of a resident registration number (YYMMDD-G) to also get sex and century. Feb 29 birthdays turn a year older on Mar 1 in common years. The input is not stored.
| Argument | Type | Description |
|---|---|---|
| on | string | YYYY-MM-DD. Omit for today in Korea (KST). |
| birth* | string | 1990-01-02, 19900102, 900102, or RRN front 900102-1 |
{
"type": "object",
"required": [
"birth"
],
"properties": {
"on": {
"type": "string",
"description": "YYYY-MM-DD. Omit for today in Korea (KST)."
},
"birth": {
"type": "string",
"description": "1990-01-02, 19900102, 900102, or RRN front 900102-1"
}
}
}Write a won amount in Korean words exactly: reading form ("백이십삼만 사천오백육십칠 원", spaced every 만 per Korean orthography), contract/receipt form ("일금 일백이십삼만사천오백육십칠원정"), and mixed form ("123만 4,567원"). Whole numbers below 10^20.
| Argument | Type | Description |
|---|---|---|
| amount* | string | integer | Whole number; commas allowed, e.g. "1,234,567" |
{
"type": "object",
"required": [
"amount"
],
"properties": {
"amount": {
"type": [
"string",
"integer"
],
"description": "Whole number; commas allowed, e.g. \"1,234,567\""
}
}
}Check whether a date is a business day in South Korea (not a weekend and not a public holiday), and give the previous and next business days. Holiday data covers 2024-2027 (source: KASI; updated 2026-11-12). It includes substitute holidays and election days, and the 2026 additions Labor Day (May 1) and Constitution Day (Jul 17).
| Argument | Type | Description |
|---|---|---|
| date | string | YYYY-MM-DD. Omit for today in Korea (KST). |
| extra_closed_dates | array | Optional extra non-working dates (YYYY-MM-DD), e.g. company holidays. |
{
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "YYYY-MM-DD. Omit for today in Korea (KST)."
},
"extra_closed_dates": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional extra non-working dates (YYYY-MM-DD), e.g. company holidays."
}
}
}Validate the format and check digit of South Korean business registration numbers (사업자등록번호, 10 digits, NTS weights 1,3,7,1,3,7,1,3,5) and format them as 123-45-67890. This is an offline checksum test only: it does not tell whether the business is open or closed.
| Argument | Type | Description |
|---|---|---|
| numbers* | array | Up to 1000 numbers, any punctuation |
{
"type": "object",
"required": [
"numbers"
],
"properties": {
"numbers": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 1000 numbers, any punctuation"
}
}
}Count South Korean business days between two dates (both ends included by default). Also returns weekend and weekday-holiday counts. Holiday data covers 2024-2027 (source: KASI; updated 2026-11-12). It includes substitute holidays and election days, and the 2026 additions Labor Day (May 1) and Constitution Day (Jul 17).
| Argument | Type | Description |
|---|---|---|
| to* | string | End YYYY-MM-DD |
| from* | string | Start YYYY-MM-DD |
| include_end | boolean | Count the end date (default true) |
| include_start | boolean | Count the start date (default true) |
| extra_closed_dates | array | Optional extra non-working dates (YYYY-MM-DD), e.g. company holidays. |
{
"type": "object",
"required": [
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"description": "End YYYY-MM-DD"
},
"from": {
"type": "string",
"description": "Start YYYY-MM-DD"
},
"include_end": {
"type": "boolean",
"description": "Count the end date (default true)"
},
"include_start": {
"type": "boolean",
"description": "Count the start date (default true)"
},
"extra_closed_dates": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional extra non-working dates (YYYY-MM-DD), e.g. company holidays."
}
}
}List South Korean public holidays (공휴일) for a year or a date range, with Korean names. Holiday data covers 2024-2027 (source: KASI; updated 2026-11-12). It includes substitute holidays and election days, and the 2026 additions Labor Day (May 1) and Constitution Day (Jul 17).
| Argument | Type | Description |
|---|---|---|
| to | string | Range end YYYY-MM-DD |
| from | string | Range start YYYY-MM-DD |
| year | integer | Year 2024-2027. Ignored if from/to are given. |
{
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "Range end YYYY-MM-DD"
},
"from": {
"type": "string",
"description": "Range start YYYY-MM-DD"
},
"year": {
"type": "integer",
"description": "Year 2024-2027. Ignored if from/to are given."
}
}
}Read a Korean money expression as an exact number: "1억 2천만 원", "삼백오십만원", "일금 일백만원정", "2.5억", "12만3천". Returns digits and comma form.
| Argument | Type | Description |
|---|---|---|
| text* | string | Korean amount text |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "Korean amount text"
}
}
}Compute when a period expires under the Korean Civil Act (arts. 155-161), the default rule when a law or contract does not say otherwise: the first day is not counted unless the period starts at 00:00; weeks, months and years follow the calendar and end the day before the corresponding date (or at month end if that date does not exist); if the last day is a Saturday, Sunday or public holiday the deadline moves to the next working day. Use for "within 14 days of receipt", "1 month from notice", contract terms. Not legal advice; some statutes set their own rules. Holiday data covers 2024-2027 (source: KASI; updated 2026-11-12). It includes substitute holidays and election days, and the 2026 additions Labor Day (May 1) and Constitution Day (Jul 17).
| Argument | Type | Description |
|---|---|---|
| unit* | string | |
| amount* | integer | Length of the period |
| event_date* | string | Date of the triggering event (notice received, contract signed), YYYY-MM-DD |
| extra_closed_dates | array | Optional extra non-working dates (YYYY-MM-DD), e.g. company holidays. |
| starts_at_midnight | boolean | True if the period starts at 00:00 of event_date (e.g. a date fixed in advance); then the first day counts. Default false. |
Mask Korean personal data before you store, log or share it. Text mode finds and masks resident registration numbers (900101-1******), phone numbers (010-****-5678), emails (ab****@x.com) and 16-digit card numbers inside free text. Item mode masks given values by kind, including names (홍*동). Nothing is stored or logged.
| Argument | Type | Description |
|---|---|---|
| text | string | Free text to scan (up to 100,000 characters) |
| items | array | Values with a known kind (up to 1000) |
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "Free text to scan (up to 100,000 characters)"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"value",
"kind"
],
"properties": {
"kind": {
"enum": [
"name",
"phone",
"rrn",
"email"
],
"type": "string"
},
"value": {
"type": "string"
}
}
},
"description": "Values with a known kind (up to 1000)"
}
}
}Split Korean full names into family name and given name, recognizing two-character surnames (남궁, 황보, 제갈, 선우 …). Flags names that are ambiguous from the characters alone (선우진 = 선 + 우진 or 선우 + 진). Latin-script names use the last word as family name.
| Argument | Type | Description |
|---|---|---|
| names* | array | Up to 1000 names |
{
"type": "object",
"required": [
"names"
],
"properties": {
"names": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 1000 names"
}
}
}Normalize South Korean phone numbers (mobile 010, Seoul 02, regional 031-064, 070, 050x safe numbers, 15xx/16xx/18xx company numbers) to one style. Restores a leading 0 dropped by Excel, converts +82, keeps extensions. Unknown shapes return null.
| Argument | Type | Description |
|---|---|---|
| style | string | hyphen 010-1234-5678 (default), digits 01012345678, intl +82 10-1234-5678 |
| numbers* | array | Up to 1000 numbers |
{
"type": "object",
"required": [
"numbers"
],
"properties": {
"style": {
"enum": [
"hyphen",
"digits",
"intl"
],
"type": "string",
"description": "hyphen 010-1234-5678 (default), digits 01012345678, intl +82 10-1234-5678"
},
"numbers": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 1000 numbers"
}
}
}Turn a Korean relative date expression into an exact date and weekday, counted from a base date in Korea time: 오늘/내일/모레/내일모레/글피, 어제/그제, "3일 뒤", "이틀 후", "2주 후", "한 달 뒤", "3영업일 후", "다음 주 화요일", "지난주 금요일", "이번 주말", "금요일", "다음 달 말일", "이번 달 25일", "내년 3월 1일", "연말". Weeks start on Monday. Also says whether the result is a Korean business day. Use this instead of working out weekdays yourself.
| Argument | Type | Description |
|---|---|---|
| base_date | string | YYYY-MM-DD. Omit for today in Korea (KST). |
| expressions* | array | Up to 100 Korean expressions |
{
"type": "object",
"required": [
"expressions"
],
"properties": {
"base_date": {
"type": "string",
"description": "YYYY-MM-DD. Omit for today in Korea (KST)."
},
"expressions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 100 Korean expressions"
}
}
}Count Korean text exactly: characters with and without spaces (as Korean job sites count 자기소개서), lines, words, UTF-8 bytes, NEIS school-record bytes (Hangul 3, ASCII 1), and SMS/LMS bytes with the message type. Models see tokens, not characters, so use this instead of estimating length.
| Argument | Type | Description |
|---|---|---|
| text* | string | Text to count (up to 100,000 characters) |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "Text to count (up to 100,000 characters)"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 12, 2026.
{
"type": "object",
"required": [
"event_date",
"amount",
"unit"
],
"properties": {
"unit": {
"enum": [
"day",
"week",
"month",
"year"
],
"type": "string"
},
"amount": {
"type": "integer",
"description": "Length of the period"
},
"event_date": {
"type": "string",
"description": "Date of the triggering event (notice received, contract signed), YYYY-MM-DD"
},
"extra_closed_dates": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional extra non-working dates (YYYY-MM-DD), e.g. company holidays."
},
"starts_at_midnight": {
"type": "boolean",
"description": "True if the period starts at 00:00 of event_date (e.g. a date fixed in advance); then the first day counts. Default false."
}
}
}