Skip to main content
Glama

Search Speeches

search_speeches
Read-onlyIdempotent

Full-text search of Japanese National Diet (parliament) speeches back to 1947, via the National Diet Library's kokkai.ndl.go.jp API. Requires "query" and/or "speaker". Returns speaker, party (speaker_group), house, meeting, date, session, and a permalink for each hit — the actual speech text is a short preview here; fetch the full text with get_speech(speech_id). Queries are Japanese-first: kokkai.ndl.go.jp indexes speeches in Japanese, so Japanese keywords match; English keywords (e.g. "semiconductors" instead of "半導体") will under-match or return zero even when Japanese-language debate on the topic exists. PAGINATION: the API caps results at 100 per request (default 30) — check "next_start_record" in the response; if it is not null, more speeches exist beyond this page and were NOT returned. Never treat a page as the complete result set without checking it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fromNoEarliest speech date, inclusive, YYYY-MM-DD.
houseNoChamber: "衆議院" (House of Representatives), "参議院" (House of Councillors), "両院" (joint), or "両院協議会" (joint committee).
queryNoJapanese keyword(s), space-separated for AND search, partial match. E.g. "半導体" (semiconductors), "少子化 対策" (declining birthrate AND countermeasures). English keywords under-match — prefer Japanese.
untilNoLatest speech date, inclusive, YYYY-MM-DD.
speakerNoSpeaker name in Japanese, partial match, e.g. "岸田文雄". OR-matched if it has multiple readings.
max_recordsNoResults per request, 1-100 (default 30). The API rejects values outside this range.
start_recordNo1-based offset for pagination (default 1). Use the previous response's "next_start_record" to fetch the next page.
speaker_groupNoPolitical party / parliamentary group (会派) in Japanese, partial match, e.g. "立憲民主党".

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, and the description adds substantial behavioral detail beyond that: pagination caps at 100, the need to check 'next_start_record', the preview-only nature of returned text, and the under-matching of English queries. These are critical runtime behaviors not covered by annotations. No contradiction exists.

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?

The description is longer than average but every section earns its place: purpose, language guidance, pagination warning, and pointer to get_speech. It is front-loaded with the main action and scope. Minor redundancy exists with the schema's parameter descriptions, but overall it is well-structured and not padded.

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?

For an 8-parameter, 0-required search tool with no output schema, the description covers the essential return fields (speaker, party, house, etc.), pagination mechanics, and language constraints. It does not enumerate every edge case (e.g., exact date formats) but provides enough for an agent to call it correctly. The absence of an output schema is partially mitigated by the description's listing of returned attributes.

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 coverage is 100% and the schema itself contains rich descriptions for every parameter (e.g., query explains AND semantics and English under-match, start_record explains pagination). The tool description adds little beyond the schema for parameters; it repeats some points (Japanese-first) but does not provide new semantic meaning. A baseline of 3 is appropriate.

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?

The description states a specific verb ('full-text search'), a resource ('Japanese National Diet speeches'), and a scope ('back to 1947'), and explicitly contrasts with get_speech by noting the preview vs. full-text distinction. It clearly distinguishes the tool from its siblings, such as search_meetings and search_within, by focusing on speeches and the NDL API.

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?

The description provides clear context on when to use the tool (searching speeches) and explicitly routes the agent to get_speech for full text. It also advises on language use (Japanese-first) and pagination handling. However, it does not explicitly exclude use cases or mention alternatives like search_meetings or search_within, so it stops short of a full when-not list.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.