Skip to content

Japan Business Tools

by ossalt.jp · remote · no sign-in to list tools · v0.9.0 · published by jp.ossalt

Japanese holidays, business days, eras, postal codes, addresses and corporate numbers.

Changes · 6

13 tools: 6 change things and 7 only read.

Scanned Oct 21, 2026

3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http jp-biz-tools https://biz.ossalt.jp/mcp

Findings

Matches of fixed checks, with the text they matched.

3 warn
  • The server marks "add_business_days" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The name "add_business_days" says "add": a word for a change.

    What this check looks for
  • The server marks "to_japanese_era" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • The server marks "from_japanese_era" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

13 tools

Changes things 6Claude Code: ask
  • add_business_daysReturn the date that is N business days after (or before, if N is negative) the given date.1 finding

    Why it is in this group

    • The name "add_business_days" says "add": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "add_business_days" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The name "add_business_days" says "add": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Return the date that is N business days after (or before, if N is negative) the given date. The start date itself is not counted; e.g. 1 business day after a Friday is the next Monday unless it is a holiday. / n営業日後(nが負なら前)の日付。起算日は数えない。

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • adjust_to_business_dayIf the date is a business day, return it as is; otherwise move to the next ("next") or previous ("previous") business day.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    If the date is a business day, return it as is; otherwise move to the next ("next") or previous ("previous") business day. Useful for payment due dates that fall on holidays. / 営業日ならその日、休みなら次(next)または前(previous)の営業日。支払日が休みのときなどに使う。

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • check_business_dayCheck whether a date is a business day in Japan, and if not, why (weekend, holiday name, bank closure, or a custom closed day).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Check whether a date is a business day in Japan, and if not, why (weekend, holiday name, bank closure, or a custom closed day). `reason` is Japanese text; `reason_code` is one of weekend, holiday, bank_closure, extra_holiday (null on business days). flags: `estimated`/`unverified` when the year's holidays are an estimate. / その日が営業日かどうかと、休みの理由(土日・祝日の名前・銀行の休業日・指定された休日)。reason_code は weekend・holiday・bank_closure・extra_holiday。

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • from_japanese_eraConvert a Japanese era date to YYYY-MM-DD.1 finding

    Why it is in this group

    • The description's first verb is "convert": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "from_japanese_era" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert a Japanese era date to YYYY-MM-DD. Accepts 令和8年10月7日, 令和元年5月1日, R8.10.7, H31/4/30, Reiwa 8.10.7, kanji numerals (昭和六十四年一月七日), a trailing weekday such as (水) or 水曜日, and full-width characters. `input_era`/`input_era_year` echo the input; `actual` is the correct era for that date. If the date is outside the input era (e.g. 平成31年5月1日, written after the era changed), it is still converted by counting years, `within_era` is false and flags has `outside_era`. If a weekday was given and does not match, `weekday_matches` is false and flags has `weekday_mismatch`. / 和暦の日付を西暦にする。元号の範囲の外(平成31年5月1日など)も年を数えて変換し、within_era が false・flags に outside_era。曜日が合わなければ weekday_mismatch。

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • normalize_addressSplit a Japanese address into prefecture, city, town and the rest (block numbers, building), matching Japan Post's address data, and return candidate postal codes.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Split a Japanese address into prefecture, city, town and the rest (block numbers, building), matching Japan Post's address data, and return candidate postal codes. Absorbs full/half-width, spacing, kanji vs. arabic numerals, ヶ/ケ and omitted county names; fills in the prefecture when the city is unique. Does NOT verify block/house numbers and has no coordinates. `level` tells how far the match went: 0 = nothing matched, 1 = prefecture only (see `city_candidates` if the city name is ambiguous), 2 = city matched but not the town (`postal_codes` are city-wide candidates), 3 = town matched. `address` and `municipality_code` are null below level 2. flags: `partial` (level below 3), `ambiguous` (several city or postal code candidates — ask the user or show all). / 住所を都道府県・市区町村・町域・残り(番地・建物名など)に分け、郵便番号の候補を返す(日本郵便のデータにあてはめる)。番地が実在するかの確認と緯度・経度はない。level:0=わからない、1=都道府県まで、2=市区町村まで(町域はわからない)、3=町域まで。

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • to_japanese_eraConvert a Gregorian date (YYYY-MM-DD) to the Japanese era calendar, e.g.1 finding

    Why it is in this group

    • The description's first verb is "convert": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "to_japanese_era" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert a Gregorian date (YYYY-MM-DD) to the Japanese era calendar, e.g. 2026-10-07 → 令和8年10月7日 (wareki_short R8.10.07, zero-padded). Year 1 is written 元年. Supported from 1873-01-01 (the Gregorian calendar was adopted on 明治6年1月1日). Eras: 令和 (R) from 2019-05-01, 平成 (H) from 1989-01-08, 昭和 (S) from 1926-12-25, 大正 (T) from 1912-07-30, 明治 (M) from 1868-01-25. flags: `assumes_current_era` for dates after today (the era might change). / 西暦の日付を和暦にする。1年目は「元年」。明治6年(1873年)1月1日から。今日より後の日付には assumes_current_era。

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
Only reads 7Claude Code: allow
  • count_business_daysCount business days from start to end, inclusive of both ends.No findings

    Why it is in this group

    • The name "count_business_days" says "count": a word for reading.
    Description, as the server wrote it
    Count business days from start to end, inclusive of both ends. Returns 0 if start is after end. The period can be up to 3,660 days (about 10 years). / start から end までの営業日の数(両端を含む)。start が end より後なら 0。期間は3,660日(約10年)まで。

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • last_business_day_of_monthReturn the last business day of the given month.No findings

    Why it is in this group

    • The description's first verb is "return": a word for reading.
    Description, as the server wrote it
    Return the last business day of the given month. / その月の最終営業日。

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • list_holidaysList all Japanese national holidays and substitute holidays for a year, based on the National Holidays Act and verified against the Cabinet Office CSV.No findings

    Why it is in this group

    • The name "list_holidays" says "list": a word for reading.
    Description, as the server wrote it
    List all Japanese national holidays and substitute holidays for a year, based on the National Holidays Act and verified against the Cabinet Office CSV. Each holiday has `name` (descriptive) and `official_name` (as written by the Cabinet Office). / その年の国民の祝日・休日(振替休日・国民の休日を含む)の一覧。name は内容がわかる名前、official_name は内閣府の表記。

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • lookup_corporate_numberLook up a 13-digit Japanese corporate number (法人番号) in the National Tax Agency's monthly bulk data: name, furigana, English name, kind, registered address and postal code, assignme…No findings

    Why it is in this group

    • The name "lookup_corporate_number" says "lookup": a word for reading.
    Description, as the server wrote it
    Look up a 13-digit Japanese corporate number (法人番号) in the National Tax Agency's monthly bulk data: name, furigana, English name, kind, registered address and postal code, assignment date, and closure (date, cause, successor) if the registry record was closed. The check digit (first digit) is verified first; a wrong check digit is reported as an input error. flags: `closed` (the registry record is closed — tell the user), `excluded_from_search`, `not_found`. This is not the invoice (qualified invoice issuer) registry. / 法人番号(13桁)から、名前・フリガナ・英語の名前・法人の種類・所在地・郵便番号・指定の日・閉鎖の日と事由・承継先を返す。国税庁の全件データ(月1回)。先頭の1桁(チェックデジット)を確かめ、合わなければ入力の誤りとして返す。インボイス(適格請求書発行事業者)の登録の確認ではない。

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • lookup_postal_codeLook up the address (prefecture, city, town) for a 7-digit Japanese postal code, from Japan Post data.No findings

    Why it is in this group

    • The name "lookup_postal_code" says "lookup": a word for reading.
    Description, as the server wrote it
    Look up the address (prefecture, city, town) for a 7-digit Japanese postal code, from Japan Post data. Accepts forms like 1000001, 100-0001 or 〒100-0001. One code can cover several towns; all are returned. `town_detail` holds the parenthesized part as written by Japan Post (e.g. chome ranges or building floors). If the code is a business-specific code (大口事業所個別番号) or a PO box code, the business is returned in `offices`. / 郵便番号から住所(都道府県・市区町村・町域)。日本郵便のデータ。1つの郵便番号に町域が複数あれば、すべて返す。事業所の個別郵便番号なら、事業所名と所在地を offices に返す。

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • search_corporation_by_nameFind Japanese corporations whose name starts with the given text (prefix match), in the National Tax Agency's monthly bulk data.No findings

    Why it is in this group

    • The name "search_corporation_by_name" says "search": a word for reading.
    Description, as the server wrote it
    Find Japanese corporations whose name starts with the given text (prefix match), in the National Tax Agency's monthly bulk data. Legal-form words such as 株式会社 or 一般社団法人 are ignored at either end, and full/half-width and spaces are normalized. Matching in the middle of a name and furigana search are not supported. flags: `truncated`, `exact_match_only` (too many names start with the input; only exact matches returned), `not_found`. Returns up to 100 matches (`total`, `returned`, `truncated`) with corporate number, name, prefecture, city and `is_closed` (registry record closed); use lookup_corporate_number for details. Corporations marked as excluded from search on the NTA site are not included. / 名前の先頭から合う法人を探す(前方一致)。株式会社などの言葉は前後どちらにあっても無視し、全角・半角や空白の違いも吸収する。名前の途中からの検索とフリガナの検索はできない。最大100件。詳しい情報は lookup_corporate_number で。国税庁のサイトで検索対象除外の法人は入っていない。

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • search_postal_codeFind Japanese postal codes by prefecture, city and (optionally) part of the town name, from Japan Post data.No findings

    Why it is in this group

    • The name "search_postal_code" says "search": a word for reading.
    Description, as the server wrote it
    Find Japanese postal codes by prefecture, city and (optionally) part of the town name, from Japan Post data. The city must be the full municipality name (e.g. 札幌市中央区, 新宿区); the county name may be omitted. With `office_name`, searches business-specific codes (大口事業所個別番号) of businesses in that city by name instead. Returns up to 100 matches. / 都道府県・市区町村・町域(部分一致、任意)から郵便番号を探す。市区町村は正式な名前で(郡名は省いてよい)。office_name を指定すると、その市区町村の事業所の個別郵便番号を事業所名(部分一致)で探す。

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.9.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http jp-biz-tools https://biz.ossalt.jp/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__jp-biz-tools__list_holidays",
      "mcp__jp-biz-tools__count_business_days",
      "mcp__jp-biz-tools__last_business_day_of_month",
      "mcp__jp-biz-tools__lookup_postal_code",
      "mcp__jp-biz-tools__search_postal_code",
      "mcp__jp-biz-tools__lookup_corporate_number",
      "mcp__jp-biz-tools__search_corporation_by_name"
    ],
    "ask": [
      "mcp__jp-biz-tools__check_business_day",
      "mcp__jp-biz-tools__add_business_days",
      "mcp__jp-biz-tools__adjust_to_business_day",
      "mcp__jp-biz-tools__to_japanese_era",
      "mcp__jp-biz-tools__from_japanese_era",
      "mcp__jp-biz-tools__normalize_address"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as jp-biz-tools. Review it before you use it.