Skip to main content
Glama
Sora-bluesky

building-standards-act-mcp

by Sora-bluesky

告示取得

get_kokuji
Read-onlyIdempotent

Retrieves full text of Japanese Building Standards Act delegated notifications (kokuji) by name or number from MLIT PDF database, falling back to e-Gov API.

Instructions

告示名または告示番号(例: 平成28年国土交通省告示第696号、平28国交告696)から、建築基準法が技術基準を委任している告示の全文を取得する。国土交通省の告示データベース(PDF)から取得し、告示名で見つからない場合はe-Gov APIで検索を試みる。番号が国交省 DB にない場合は、その旨を返す。

Input Schema

NameRequiredDescriptionDefault
offsetNo取得開始位置(0から始まる文字位置)。続きの取得時は案内された offset を指定。
max_charsNo1回に取得する本文の最大文字数(1,000〜48,000)。省略時は30,000文字。本文を content と structuredContent.text の両方に含めるため、改正欄と構造化情報も合わせた応答全体が約50,000文字に収まるよう本文ページを減らす。
kokuji_nameYes告示名または告示番号(例: 耐火構造の構造方法を定める件、平成28年国土交通省告示第696号、平28国交告696)。番号が国交省 DB にない場合は、その旨を返す。

Output Schema

NameRequiredDescriptionDefault
textYes
foundYes
titleYes
offsetYes
sourceYes
db_noticeYes
amendmentsYes
next_offsetYes
total_charsYes
current_titleYes
kokuji_numberYes
housing_bureauYes
document_numberYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv1.11.2
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedInput schema / properties / kokuji_name / description
      Previous value: -"告示名(例: 耐火構造の構造方法を定める件、不燃材料を定める件)"New value: +"告示名または告示番号(例: 耐火構造の構造方法を定める件、平成28年国土交通省告示第696号、平28国交告696)。番号が国交省 DB にない場合は、その旨を返す。"
    • addedInput schema / properties / max_chars
      Added value: +{
      +  "default": 30000,
      +  "description": "1回に取得する本文の最大文字数(1,000〜48,000)。省略時は30,000文字。本文を content と structuredContent.text の両方に含めるため、改正欄と構造化情報も合わせた応答全体が約50,000文字に収まるよう本文ページを減らす。",
      +  "maximum": 48000,
      +  "minimum": 1000,
      +  "type": "integer"
      +}
    • addedInput schema / properties / offset
      Added value: +{
      +  "default": 0,
      +  "description": "取得開始位置(0から始まる文字位置)。続きの取得時は案内された offset を指定。",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "amendments": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "coverage": {
      +              "type": "string"
      +            },
      +            "items": {
      +              "items": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "documents": {
      +                    "items": {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "label": {
      +                          "type": "string"
      +                        },
      +                        "url": {
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "label",
      +                        "url"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "effective_note": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  },
      +                  "effective_on": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  },
      +                  "matched_by": {
      +                    "enum": [
      +                      "pdf",
      +                      "page",
      +                      "title"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "number": {
      +                    "type": "string"
      +                  },
      +                  "promulgated_on": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  },
      +                  "title": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "number",
      +                  "title",
      +                  "promulgated_on",
      +                  "effective_on",
      +                  "effective_note",
      +                  "documents",
      +                  "matched_by"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "omitted_count": {
      +              "maximum": 9007199254740991,
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "source_url": {
      +              "type": "string"
      +            },
      +            "status": {
      +              "enum": [
      +                "ok",
      +                "unavailable"
      +              ],
      +              "type": "string"
      +            },
      +            "unresolved_count": {
      +              "maximum": 9007199254740991,
      +              "minimum": 0,
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "status",
      +            "source_url",
      +            "coverage",
      +            "items",
      +            "omitted_count",
      +            "unresolved_count"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "current_title": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "db_notice": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "document_number": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "found": {
      +      "type": "boolean"
      +    },
      +    "housing_bureau": {
      +      "type": "boolean"
      +    },
      +    "kokuji_number": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "next_offset": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "offset": {
      +      "type": "number"
      +    },
      +    "source": {
      +      "enum": [
      +        "mlit_db",
      +        "mlit_pdf",
      +        "egov",
      +        "not_found"
      +      ],
      +      "type": "string"
      +    },
      +    "text": {
      +      "type": "string"
      +    },
      +    "title": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "total_chars": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "text",
      +    "found",
      +    "title",
      +    "current_title",
      +    "document_number",
      +    "kokuji_number",
      +    "source",
      +    "housing_bureau",
      +    "db_notice",
      +    "amendments",
      +    "offset",
      +    "next_offset",
      +    "total_chars"
      +  ],
      +  "type": "object"
      +}
  2. First observedv1.7.0

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld/non-destructive, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the primary data source (MLIT PDF database), the e-Gov fallback, and the explicit not-found message when a number is absent from the MLIT DB.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose and input format, then source and fallback. Slightly redundant in restating the not-found behavior that the kokuji_name schema field already carries, but otherwise tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value explanation is unnecessary, and the description covers source, fallback, and error case adequately. Pagination via offset/max_chars is left to the schema, which is acceptable given full coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents offset, max_chars and kokuji_name with the same examples used in the description. The description adds no new parameter meaning (syntax, formatting, constraints) beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (全文を取得) and resource (建築基準法が技術基準を委任している告示), and names the input forms precisely. It is clearly distinguishable from siblings like get_law, get_full_law and search_law, which operate on laws rather than delegated technical notifications.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear context for use (retrieving full text of delegated technical standards) plus accepted input formats and a documented fallback path (e-Gov API when not found by name). It does not explicitly state when to prefer get_law or search_law over this tool, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.