# Reported issues for houki-nta-mcp

Pod holds 17 of 24 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to [houki-nta-mcp](/mcp/houki-nta-mcp).

## Most discussed

### nta_get_tsutatsu の国税庁サイトからの取得は、消費税法基本通達でしか成功しない

# nta_get_tsutatsu の国税庁サイトからの取得は、消費税法基本通達でしか成功しない

- 起票先: shuji-bonji/houki-nta-mcp（起票済み: #54）
- 日付: 2026-09-24（JST）
- 経緯: houki-nta-mcp#53（`specs/changes/20260924-tsutatsu-clause-forms/`）を起こす途中で見つけた。proposal.md の末尾「この差分に含めないが、確かめる中で見つけたこと」の Issue 化

---

## タイトル

nta_get_tsutatsu の国税庁サイトからの取得は、消費税法基本通達でしか成功しない（SPEC-NTA-GET-TSUTATSU-006 と実装の食い違い）

## 本文

### 何が起きているか

`nta_get_tsutatsu` は、通達が DB に無いとき、次の 4 通達は国税庁サイトから取得して返すことになっています。

- 仕様: `specs/current/nta_get_tsutatsu/spec.md` の…

[Read the thread](https://github.com/shuji-bonji/houki-nta-mcp/issues/54) · 2026-09-24 · closed · 1 comment

### 改正通達の PDF の読み方を決める

### 背景

Discussion #24 の劣っている点 5 です。改正通達は本体が PDF のことが多く、いまは `nta_inspect_pdf_meta` がメタ情報と kind 分類と `pdf-reader-mcp` の呼び方を返すところまでです。新旧対照表の中身には入れません。

自分で改正を追うときにも、他者に使ってもらうときにも、同じところで止まります。

### いまの状態

- `nta_inspect_pdf_meta` が PDF の kind を分類し、`pdf-reader-mcp` への案内を返す
- 本文の取り出しは利用者側（別サーバー）に任せている

### 方針の選択肢

houki-nta-mcp が PDF を読むのか、`pdf-reader-mcp` に渡し続けるのかを先に決めます。

1. **渡し続ける（いまの形を強くする）** — `nta_inspect_pdf_meta` の `reader_hints` を、そのまま `pdf-reader-mcp` のツール呼び出しに使える形まで具体化する。houki 側は PDF…

[Read the thread](https://github.com/shuji-bonji/houki-nta-mcp/issues/36) · 2026-09-14 · closed · 1 comment

### 検索の snippet が、4 文字以上の語の途中で <b> を閉じて切れる

検索ツールの `snippet`（本文の抜粋）で、4 文字以上の語が抜粋の終わりにかかると、語の途中で `<b>` を閉じて抜粋が切れます。利用者（LLM）は、合った語が何だったのかを抜粋から読み取れません。

### いまの状態（v0.21.0）

`nta_search_bunshokaitou` に `keyword: "源泉徴収"` を渡し、本文が `相続財産から支払う報酬に対する源泉徴収の要否について回答する` の文書に当たったときの `results[0].snippet` は次のとおりです。

```text
相続財産から支払う報酬に対する<b>源泉徴</b> … 
```

SPEC-NTA-SEARCH-RULES-015（差分 `20260927-search-hit-responses`）は「合った語を `<b>` で囲む」（例: `<b>源泉徴収</b>の事務について …`）と書いているので、仕様と合いません。この差分の受入テスト `src/tools/spec-20260927-search-hit-responses.test.ts`（ブランチ…

[Read the thread](https://github.com/shuji-bonji/houki-nta-mcp/issues/97) · 2026-09-27 · closed · 0 comments

### 検索のヒットの要素に issuedAt が付くかどうかが種別によって違う

文書系の検索ツールで、ヒットした文書の `results` の要素に `issuedAt` が付くかどうかが種別によって違います。発出日で新しい文書を選びたい利用者（LLM）は、ツールごとに読み方を変える必要があります。

### いまの状態（v0.21.0、手元で呼んだ結果）

| ツール | `results[].issuedAt` |
|---|---|
| `nta_search_kaisei_tsutatsu` / `nta_search_jimu_unei` / `nta_search_bunshokaitou` | 付く。DB に発出日が無い文書では `null` |
| `nta_search_qa` | 付かない（質疑応答事例は DB に日付を持たない） |
| `nta_search_tax_answer` | 付かない。DB には記事の「法令時点」から読んだ日付が入っているが、応答に出さない |

取得ツールの側でも、`nta_get_*` の json の `document.issuedAt` は値が無ければフィールドごと付かず、検索の `null`…

[Read the thread](https://github.com/shuji-bonji/houki-nta-mcp/issues/82) · 2026-09-27 · open · 0 comments

### 英字の 2 文字の語と 3 文字以上の語を混ぜると、本文にその語があっても 0 件になる

英字の 2 文字の語（例: `DX`）と 3 文字以上の語を空白で区切って渡すと、本文にその英字がある文書でも 0 件になります。また `search_notes` には小文字にした語（`"dx"`）が表示されます。

### いまの状態（v0.21.0、手元で呼んだ結果）

本文に「DX 投資促進税制」を含む文書回答事例がある DB で、`nta_search_bunshokaitou` に `{ keyword: "DX 投資促進税制" }` を渡すと:

- `results: []` と「該当なし」の `hint`
- `search_notes` は `"dx" は 3 文字未満のため FTS5 (trigram) の索引に乗りません。3 文字以上の語で全文検索したうえで、本文に "dx" を含むものに絞り込みました`

キーワードは英字を小文字に寄せる（SPEC-NTA-SEARCH-RULES-008）一方、DB の本文は大文字のまま入り（SPEC-NTA-SEARCH-RULES-007）、2…

[Read the thread](https://github.com/shuji-bonji/houki-nta-mcp/issues/81) · 2026-09-27 · open · 0 comments

### 3 文字未満の略称（消法など）で略称そのものを含む文書が返らず、search_notes の説明とも合わない

3 文字未満の略称（例: `消法`）を `keyword` に渡すと、正式名（`消費税法`）を含む文書だけを探し、略称そのものを含む文書は返しません。一方で `search_notes` には「部分一致 (LIKE) で検索しました」と書かれ、実際の探し方と合いません。SPEC-NTA-SEARCH-RULES-009 は「元の語と正式名のどちらかを含むものを探す」と書いており、本文とも食い違います。

### いまの状態（v0.21.0、手元で呼んだ結果）

質疑応答事例 2 件（A: 本文に「消費税法」、B: 本文に「消法」だけ）の DB で `nta_search_qa` に `{ keyword: "消法" }` を渡すと:

- `results` は A だけ。`scoreReasons` に `abbreviation expanded: 消法 → 消費税法`
- B（本文に「消法」を含む）は返らない
- `search_notes` は `"消法" は 3 文字未満のため FTS5 (trigram) では検索できません。代わりに本文とタイトルの部分一致 (LIKE)…

[Read the thread](https://github.com/shuji-bonji/houki-nta-mcp/issues/80) · 2026-09-27 · open · 0 comments

### 引数に inputSchema の違反が 2 つ以上あると、detail.issues が 1 件にまとまり違反を取りこぼす

引数に inputSchema の違反が 2 つ以上あると、`INVALID_ARGUMENT` の `detail.issues` が 1 件にまとまり、2 つ目以降の引数名が分からなくなったり、違反そのものが応答から消えたりします。呼び出す側（LLM）は `detail.issues[].path` を見て引数を直すので、直すべき引数を取りこぼします。

### いまの状態（v0.21.0、tools/call の受け口を手元で呼んだ結果）

| 渡した引数 | `detail.issues` |
|---|---|
| `nta_search_kaisei_tsutatsu` に `{ keyword: 1, limit: "x" }` | `[{ path: "keyword", message: "must be string, data/limit must be number" }]`（`limit` の違反が `message` の中に `data/limit` の形で残る） |
| `nta_get_qa` に `{ topic: "zzz" }` | `[{…

[Read the thread](https://github.com/shuji-bonji/houki-nta-mcp/issues/79) · 2026-09-27 · open · 0 comments

### nta_search_qa の domain 引数の扱い

`nta_search_qa` の `domain` 引数は、`tax` 以外を渡すと必ず 0 件になります。引数として残す意味があるか、残すならその扱いを決めます。

### いまの状態

- `domain` はスキーマの列挙（houki-abbreviations の分野の一覧）で検証されるが、`tax` 以外はすべて DB を引かずに `results: []` と `hint` を返す（SPEC-NTA-SEARCH-QA-002）
- DB を開かないので、DB に事例が 1 件も無くても `DOC_NOT_FOUND` にならず、`freshness` も付かない
- 税目で絞るのは `topic` で、`domain` は絞り込みに使われない（SPEC-NTA-SEARCH-QA-003）

### 決めること

- `domain` を残すか、`topic` に一本化するか
- 残すなら、`tax` 以外のときにも DB の有無を確かめるか

### 完了条件

- `domain` の扱いが決まり、tools/list の説明と `specs/current/`…

[Read the thread](https://github.com/shuji-bonji/houki-nta-mcp/issues/72) · 2026-09-26 · open · 0 comments

## Most recent

### 同じ種類の応答でフィールドの有無や名前が揃っていない

同じ種類の応答なのに、フィールドの有無や名前がツールや状況によって違う箇所があります。呼び出す側が状況ごとに読み方を変える必要があるため、揃えるかどうかを決めます。

### いまの状態

| ツール | 違い |
|---|---|
| `nta_search_tsutatsu` | ヒットしたときは `count` が付くが、0 件のときは付かない（`hits: []` と `message`）。文書系の検索は `results` / `hint` で、名前も違う |
| `nta_get_tsutatsu` | `available_clauses` が、DB の経路（SPEC-NTA-GET-TSUTATSU-005）は最大 50 件、国税庁サイトの経路（010）は取得したページ内の全件 |
| `nta_get_jimu_unei` | markdown に「取得元」の行が無い（`nta_get_qa` にはある）。DB だけを引くツールなので不要とみなすか |
| `nta_inspect_pdf_meta` | `save: true` で絞った結果が 0…

[Read the thread](https://github.com/shuji-bonji/houki-nta-mcp/issues/71) · 2026-09-26 · open · 0 comments

### hint・next_actions・説明文の案内が実際の動きと合わない

エラーの `hint`・`next_actions`・ツールの説明文が、実際の動きや他のツールと合っていない箇所があります。LLM はこれらの文面を見て次の呼び出しを組み立てるため、案内の誤りはそのまま誤った呼び出しにつながります。

### いまの状態

| ツール | 食い違い |
|---|---|
| `nta_get_tax_answer` | 未対応の番号帯のエラーに「houki-nta-mcp v0.2.x では未対応」「Phase 2 で対応予定」と古い版が書かれている。`8xxx` 帯を対応する意図があるかも決まっていない |
| `nta_search_tsutatsu` | `TSUTATSU_NOT_FOUND`（SPEC-NTA-SEARCH-TSUTATSU-003）の `hint` と `next_actions` は `--bulk-download`（通達 1 つ）を案内するが、ツールの説明文と `freshness.warning` は `--bulk-download-all`（4 種）を案内する |
|…

[Read the thread](https://github.com/shuji-bonji/houki-nta-mcp/issues/70) · 2026-09-26 · open · 0 comments

### 空のキーワードをエラーにせず「該当なし」として返す

空のキーワード（や空の略称）を渡すと、多くのツールがエラーにせず「該当なし」を返します。実際には探していないのに「合う文書が無い」と読めるため、利用者が誤った結論を出すおそれがあります。

### いまの状態

| ツール | 入力 | 今の応答 |
|---|---|---|
| `nta_search_qa` | 空文字・空白だけ・FTS5 の記号（`"` `*` `:` `(` `)`）だけ | 検索して 0 件（SPEC-NTA-SEARCH-QA-007 の「該当なし」） |
| `nta_search_tax_answer` | 空文字・空白だけ・1 文字の語だけ | DB にタックスアンサーがあれば `results: []` と「該当なし」の `hint` |
| `nta_search_bunshokaitou` | `keyword: ""` | inputSchema の検証を通り、「「」に合う文書はありません」の `hint` |
| `nta_search_jimu_unei` | `""` や 1 文字だけ | 同じく「「」に合う文書はありません」 |
|…

[Read the thread](https://github.com/shuji-bonji/houki-nta-mcp/issues/69) · 2026-09-26 · open · 0 comments

### 検索系ツールで limit の範囲外の値を黙って丸める

検索系ツールの `limit` は、範囲外の値を渡してもエラーにも注記にもならず、黙って丸められます。利用者は、指定した件数で探されなかったことに気付けません。

### いまの状態

`nta_search_tsutatsu` / `nta_search_qa` / `nta_search_tax_answer` / `nta_search_bunshokaitou` / `nta_search_jimu_unei` / `nta_search_kaisei_tsutatsu` の 6 ツールとも、1 未満は 1 に、50 を超える値は 50 に丸めて検索します。

- tools/list の説明は「最大: 50」とだけ書いており、超えたときにどうなるかは書いていない
- inputSchema に上限・下限（`minimum` / `maximum`）が無い
- `nta_search_qa` は数値であることも確かめない
- どのツールにも、丸めを確かめるテストが無い

### 決めること

- 丸める動きを意図として認めるか、`INVALID_ARGUMENT`…

[Read the thread](https://github.com/shuji-bonji/houki-nta-mcp/issues/68) · 2026-09-26 · open · 0 comments

### 検索系ツールで taxonomy の値を検査しない

検索系ツールの `taxonomy`（税目）は、どんな文字列でも受け付けます。`nta_search_qa` の `topic` は列挙で検査しているため、同じ種類の引数で扱いが分かれています。

### いまの状態

| ツール | 今の動き |
|---|---|
| `nta_search_bunshokaitou` | 本庁の索引に無い値（`zzz` など）でも DB を引き、0 件の応答（SPEC-NTA-SEARCH-BUNSHOKAITOU-002、`available_taxonomies` 付き）を返す |
| `nta_search_jimu_unei` | inputSchema に列挙が無く、どの文字列も受け付けて DB を引く |
| `nta_search_kaisei_tsutatsu` | 引数の説明には `shohi` / `shotoku` / `hojin` / `sisan/sozoku` の 4 つを書いているが、検査はしない。DB に無い値は SPEC-NTA-SEARCH-KAISEI-TSUTATSU-002 の応答 |

DB…

[Read the thread](https://github.com/shuji-bonji/houki-nta-mcp/issues/67) · 2026-09-26 · open · 0 comments

### 取得系ツールで識別子の形と全角の表記の扱いが揃っていない

取得系ツールは、識別子の引数が「空でない文字列」かどうかしか確かめず、形の誤りや全角の表記をそのまま受け付けたり拒否したりします。ツールによって扱いが違い、同じ入力でも結果が読みにくくなっています。

### いまの状態

| ツール | 引数 | 今の動き |
|---|---|---|
| `nta_get_bunshokaitou` | `docId` | 空文字列や `税目/番号` の形でない値もそのまま DB を引き、`DOC_NOT_FOUND` になる |
| `nta_get_kaisei_tsutatsu` | `docId` | 新形式・旧形式のどちらでもない値もそのまま DB を引く |
| `nta_get_qa` | `category` / `id` | 数字であることを確かめず、`"abc"` や `/` を含む値もそのまま URL に入る（ホストは `www.nta.go.jp` に固定） |
| `nta_get_tax_answer` | `no` | 全角の `"６１０１"` は…

[Read the thread](https://github.com/shuji-bonji/houki-nta-mcp/issues/66) · 2026-09-26 · open · 0 comments

### 存在しない番号を指定すると、再試行を案内するエラー（SOURCE_API_ERROR）になる

国税庁サイトから取るツールで、存在しない番号を指定したときに「時間をおいて再試行する」よう案内するエラーが返ります。番号の誤りは再試行しても直らないため、利用者を誤った次の行動へ導きます。

### いまの状態

| ツール | 入力 | 今の応答 |
|---|---|---|
| `nta_get_qa` | 存在しない `topic` / `category` / `id` の組 | 国税庁サイトが 404 を返し、`SOURCE_API_ERROR`（`retryable: true`、`next_actions` は再試行の案内） |
| `nta_get_tax_answer` | 存在しない `no` | 同じく `SOURCE_API_ERROR`（`retryable: true`、`url`、`detail.status`） |

一方、`nta_get_bunshokaitou` などは番号の誤りを `DOC_NOT_FOUND` で返し、`nta_get_tsutatsu` は候補ページの 404…

[Read the thread](https://github.com/shuji-bonji/houki-nta-mcp/issues/65) · 2026-09-26 · open · 0 comments

### 取得系ツールと resolve_abbreviation の「見つからない」ときのエラー code を揃える

取得系ツールが「見つからない」ときに返すエラーの `code` が、ツールごとにばらばらで、README の記載とも合っていません。利用者（LLM を含む）が `code` だけでは状況を判別できないため、揃え方を決めます。

### いまの状態

| ツール | 状況 | 今の応答 |
|---|---|---|
| `nta_get_bunshokaitou` | DB に 1 件も無い / docId が無い | どちらも `DOC_NOT_FOUND`。`error` の文言・`available_doc_ids` の有無・`next_actions` でしか見分けられない。`nta_search_bunshokaitou` の 0 件応答とも同じ `code` |
| `nta_get_jimu_unei` | docId が無い | `TSUTATSU_NOT_FOUND`。README の「DB を先に引く」の表は `DOC_NOT_FOUND` と書いている |
| `nta_get_kaisei_tsutatsu` | docId が無い |…

[Read the thread](https://github.com/shuji-bonji/houki-nta-mcp/issues/64) · 2026-09-26 · open · 0 comments

### 文書回答事例（本庁系）の本文末尾にページ内リンクの文言が混ざる

# `nta_get_bunshokaitou` の `fullText` から「←上記照会の内容に対する回答はこちら」を除く

## 観察

`nta_get_bunshokaitou { docId: "shotoku/250416" }`（v0.19.0、2026-09-21、`source: "db"`、`fetchedAt: 2026-09-08T07:27:21.701Z`）の `fullText` の末尾:

```
…以上
←上記照会の内容に対する回答はこちら
```

houki-hub の呼び出し例（v0.10.4 実測）では `…以上` で終わっていた。国税局系の例（`tokyo/shohi/251017`）には出ない。本庁系の文書回答事例のページにある、照会文から回答へのページ内リンク（アンカーのテキスト）を本文として拾っている。

## 影響

- `fullText` を引用に使うと、国税庁の文言ではない案内文が末尾に付く
- 全文検索（FTS5）の索引にも入るので、「回答はこちら」で検索すると本庁系の全件が当たる可能性がある

## 直し方の候補

-…

[Read the thread](https://github.com/shuji-bonji/houki-nta-mcp/issues/45) · 2026-09-21 · closed · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/shuji-bonji/houki-nta-mcp/issues).
