Skip to main content
Glama
r-huijts

OpenTK Model Context Protocol Server

by r-huijts

OpenTK 모델 컨텍스트 프로토콜 서버

중요 저작자 표시 : 이 MCP 서버는 Bert Hubert 가 개발한 뛰어난 OpenTK 프로젝트를 기반으로 제작되었습니다. OpenTK 프로젝트는 사용자 친화적인 인터페이스를 통해 네덜란드 의회 데이터에 대한 전례 없는 접근성을 제공합니다. Bert의 글 " Welkom bij OpenTK" 에서 이 프로젝트에 대한 자세한 내용을 확인하세요. 데이터 접근 및 처리에 대한 모든 공로는 Bert Hubert와 그의 정부 오픈 데이터 개발에 대한 공헌에 있습니다.

표준화된 인터페이스를 통해 대규모 언어 모델(LLM)과 네덜란드 의회 데이터를 연결합니다. 이 MCP 서버는 네덜란드 의회 문서, 토론, 그리고 의회 의원 정보(Tweede Kamer)에 대한 접근을 제공합니다.

실제 자연어 상호 작용의 예

Related MCP server: Riksdag & Regering MCP

예시 1: AI 정책에 대한 정당 입장 비교

사용자 질의: "네덜란드 하원에서 야당인 PvdA, GroenLinks, Volt와 여당인 BBB의 AI 분야 활동을 비교할 때, 지난 1년간 보여준 입장과 견해에 부합하는 단기적인 협력 방안은 무엇일까요? OpenTK의 자료를 참고해 주세요."

예시 2: 기후 정책에 대한 의회 논의 조사

사용자 질의: "네덜란드의 기후 정책과 배출량 감축 목표에 대한 최근 의회 토론을 분석하고 싶습니다. 지난 6개월 동안 주요 논의 내용과 각 정당의 주요 입장을 파악하는 데 도움을 주시겠습니까?"

예 3: 특정 의원의 투표 기록에 대한 정보

사용자 질의: "피터 옴치히트 의원의 의료 개혁 법안에 대한 투표 기록은 어떠하며, 그의 입장은 다른 무소속 의원들과 어떻게 다릅니까? 이 주제에 대해 발의한 안건이 있습니까?"

예제 4: 최근 주택 관련 법률 개발 사항 찾기

사용자 질의: "지난 한 해 동안 저렴 주택 관련 법률에 관한 가장 중요한 의회 문서와 논의는 무엇입니까? 저는 특히 임대 시장 위기를 해결하는 제안에 관심이 있습니다."

예제 5: 특정 위원회 위원을 보유한 국회의원 찾기

사용자 질의: "현재 재무위원회와 경제위원회에서 활동하는 국회의원은 누구입니까? 이들은 어떤 정당을 대표하며, 최근 공동 이니셔티브를 제출했습니까?"

예시 6: 디지털 보안에 관한 향후 의회 활동 식별

사용자 질의: "다음 달 사이버 보안 및 디지털 인프라 관련 위원회 회의나 토론이 예정되어 있습니까? 어떤 장관들이 참석하며 구체적으로 어떤 주제를 다룰 예정입니까?"

프로젝트 개념

OpenTK 프로젝트는 표준화된 인터페이스를 통해 네덜란드 의회 데이터에 접근할 수 있도록 하는 모델 컨텍스트 프로토콜(MCP) 서버입니다. 대규모 언어 모델(LLM)과 네덜란드 의회 정보 시스템을 연결하는 다리 역할을 하며, AI 비서가 의회 문서, 토론, 의원 정보를 검색, 조회 및 분석할 수 있도록 지원합니다.

이 서버는 @modelcontextprotocol/sdk 사용하여 AI 모델과 외부 데이터 소스 간의 구조화된 통신을 지원하는 MCP 사양을 구현합니다. OpenTK는 잘 정의된 도구와 엔드포인트를 통해 의회 데이터를 노출함으로써 AI 비서가 다음과 같은 작업을 수행할 수 있도록 지원합니다.

  1. 복잡한 쿼리를 사용하여 의회 문서 검색

  2. 국회의원에 대한 정보에 접근하세요

  3. 다양한 형식의 공식 문서를 검색하고 문서의 전체 내용을 읽어보세요.

  4. 의회 활동 및 절차 분석

  5. 입법 사례 및 정부 공약 추적

이 프로젝트는 Bert Hubert의 tkconv 서비스를 기본 데이터 소스로 활용하는데, 이는 네덜란드 의회의 공식 API보다 접근성이 높은 API를 제공합니다.

설치

1. NPM 패키지와 함께 Claude Desktop 사용

Claude 구성 파일을 업데이트하세요(~/Library/Application Support/Claude/claude_desktop_config.json):

지엑스피1

2. 출처로부터

복제 저장소:

git clone https://github.com/r-huijts/opentk-mcp.git
cd opentk-mcp

종속성 설치:

npm install

프로젝트 빌드:

npm run build

서버를 시작합니다:

npm start

2. Claude Desktop 구성

Claude 구성 파일을 업데이트하세요.

{
  "mcpServers": {
    "opentk-mcp-local": {
      "command": "node",
      "args": [
        "/absolute/path/to/your/opentk-mcp/dist/index.js"
      ]
    }
  }
}

/absolute/path/to/your/opentk-mcp/ 실제 설치 경로로 바꿔야 합니다.

검색 기능

검색 기능은 특히 정교하며 다음을 지원합니다.

  • 간단한 키워드 검색: kunstmatige intelligentie

  • 정확한 구문 검색: "kunstmatige intelligentie"

  • 제외 검색: Hubert NOT Bruls

  • 부울 연산자: OR , NEAR()

구현은 다양한 예외 사례를 처리합니다.

  • 검색 쿼리에서 따옴표를 유지합니다.

  • 적절한 콘텐츠 유형 헤더를 사용합니다.

  • API 오류에 대한 대체 메커니즘을 구현합니다.

  • 의미 있는 오류 메시지를 제공합니다

오류 처리

API 서비스에는 강력한 오류 처리 기능이 포함되어 있습니다.

  • API 오류(4xx, 5xx)의 우아한 처리

  • 복잡한 쿼리가 실패하면 단순화된 쿼리로 대체

  • 디버깅을 위한 자세한 오류 메시지

  • stderr에 대한 적절한 로깅(stdout이 아닌, stdio 전송을 중단시킴)

구성

이 서버는 Bert Hubert의 tkconv 서비스를 주요 데이터 소스로 사용하여 연결하며, 이 서비스는 공식 네덜란드 의회 API보다 접근성이 뛰어난 API를 제공합니다. Bert Hubert가 개발한 이 서비스는 네덜란드 의회 데이터를 개발자 친화적인 형식으로 수집, 정리 및 제공하는 중요한 작업을 수행합니다. 저희 MCP 서버는 이러한 기반을 바탕으로 AI 비서가 이 귀중한 데이터와 상호 작용할 수 있는 표준화된 인터페이스를 구축합니다.

특허

MIT

결론

OpenTK MCP 서버는 네덜란드 의회 데이터에 대한 강력하고 체계적인 인터페이스를 제공하여 모델 컨텍스트 프로토콜(Model Context Protocol)을 통해 AI 지원자가 데이터에 접근할 수 있도록 지원합니다. 모듈식 설계, 포괄적인 API, 그리고 철저한 테스트를 통해 AI 지원 연구, 분석 및 정보 검색을 위한 의회 정보에 대한 안정적인 접근을 보장합니다.

구성이 완료되면 Claude는 OpenTK MCP 서버를 통해 네덜란드 의회 데이터에 접근할 수 있습니다. 이 서버는 위 "사용법" 섹션에 설명된 모든 도구를 제공합니다.

Available Tools

14 tools
birthdays_todayA

Lists all Members of Parliament celebrating their birthday today, including their names, political parties, and birth dates. The response is a JSON array where each entry contains the MP's ID, name, party affiliation, and other details. Use this tool when a user specifically asks about birthdays, wants to know which MPs are celebrating today, or needs to create 'on this day' content. This tool takes no parameters as it always returns today's birthdays. For a more general overview that includes birthdays along with other parliamentary information, use the 'get_overview' tool instead. If you need to display an MP's photo alongside their birthday information, you can use the 'get_photo' tool with the MP's ID from this response.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly describes the tool's behavior: it returns today's birthdays only (not historical or future dates), outputs a JSON array with specific fields (ID, name, party, etc.), and has no parameters. However, it doesn't mention potential limitations like rate limits, authentication needs, or error conditions.

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

Conciseness5/5

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

The description is well-structured and front-loaded with the core purpose, followed by usage guidelines and alternatives. Every sentence adds value: the first explains what the tool does, the second describes the output format, the third provides usage scenarios, the fourth explains the lack of parameters, and the last two offer sibling tool alternatives.

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?

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is largely complete. It covers purpose, output format, usage guidelines, and alternatives. However, without annotations or output schema, it could benefit from more detail on behavioral aspects like error handling or data freshness.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so the baseline is 4. The description adds value by explicitly stating 'This tool takes no parameters as it always returns today's birthdays,' which clarifies why there are no parameters and reinforces the tool's fixed scope.

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 clearly states the specific action ('Lists all Members of Parliament celebrating their birthday today') and the resource ('Members of Parliament'), distinguishing it from siblings like 'get_overview' or 'list_persons' by focusing exclusively on today's birthdays. It provides concrete details about what information is included (names, political parties, birth dates).

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('when a user specifically asks about birthdays, wants to know which MPs are celebrating today, or needs to create 'on this day' content') and provides clear alternatives ('use the 'get_overview' tool instead' for general overview, and 'use the 'get_photo' tool' for photos). It effectively guides the agent on tool selection.

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

get_committee_detailsA

Retrieves detailed information about a specific parliamentary committee, including its members, recent activities, and description. This provides deeper insight into the committee's composition, leadership roles, and recent work. Use this when you need comprehensive information about a particular committee's structure and activities.

ParametersJSON Schema
NameRequiredDescriptionDefault
committeeIdYesCommittee ID - the unique identifier for the parliamentary committee you want information about

TDQS

A4.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool retrieves information (implying read-only, non-destructive behavior) and specifies the scope of data returned. However, it lacks details on error handling, rate limits, or authentication needs, leaving behavioral gaps for a tool with no annotation coverage.

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

Conciseness5/5

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

Two sentences that are front-loaded with the core purpose, followed by usage guidance. Every phrase adds value without redundancy, making it efficiently structured and appropriately sized for the tool's complexity.

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?

Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is mostly complete—it covers purpose, usage, and data scope. However, without annotations or output schema, it could benefit from more behavioral details (e.g., response format), slightly reducing completeness.

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

Parameters4/5

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

Schema description coverage is 100%, with the parameter 'committeeId' well-documented in the schema. The description adds context by implying this ID is for a 'specific parliamentary committee,' reinforcing its purpose without repeating schema details. With only one parameter, this minimal addition is sufficient for a high score.

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 clearly states the verb ('Retrieves') and resource ('detailed information about a specific parliamentary committee'), specifying what information is included (members, recent activities, description, composition, leadership roles, recent work). It distinguishes from sibling tools like 'get_committees' by focusing on details for a specific committee rather than listing committees.

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

Usage Guidelines5/5

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

Explicitly states 'Use this when you need comprehensive information about a particular committee's structure and activities,' providing clear context for when to use this tool. It implies alternatives like 'get_committees' for broader lists, though not explicitly named, the specificity suffices for high guidance.

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

get_committeesA

Retrieves a list of all parliamentary committees with their IDs, names, and URLs. The response is a JSON array where each entry represents a committee with its unique identifier and name. Use this tool when a user asks about parliamentary committees, wants to know which committees exist, or needs to find committees related to specific policy areas. Committees are specialized groups of MPs that focus on specific domains like defense, healthcare, or finance. After getting the list of committees, you can use the 'get_committee_details' tool with a specific committee ID to retrieve more detailed information about that committee, including its members and recent activities. This tool takes no parameters as it returns all active committees.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full burden and does well: it discloses the response format (JSON array), scope (all active committees), and that it takes no parameters. However, it lacks details on potential limitations like pagination, rate limits, or error handling, which would be useful for a read operation.

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?

Front-loaded with the core purpose, followed by usage guidelines and workflow. Sentences are efficient, but it could be slightly more concise by integrating some details (e.g., merging policy area examples into one phrase). Overall, well-structured with minimal waste.

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?

Given 0 parameters, no annotations, and no output schema, the description is largely complete: it explains purpose, usage, response format, and sibling relationship. However, it doesn't specify if the list is filtered (e.g., only active committees) or mention any authentication needs, leaving minor gaps for a read tool.

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

Parameters4/5

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

The schema has 0 parameters with 100% coverage, so the baseline is 4. The description adds value by explicitly stating 'takes no parameters as it returns all active committees,' clarifying the absence of inputs and reinforcing the tool's behavior, which compensates for any minimal gaps.

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 clearly states the verb ('retrieves') and resource ('parliamentary committees'), specifying what data is returned (IDs, names, URLs) and the format (JSON array). It distinguishes from sibling 'get_committee_details' by emphasizing this lists all committees without filtering, making the purpose specific and differentiated.

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

Usage Guidelines5/5

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

Explicitly states when to use: when users ask about committees, want to know which exist, or need committees by policy areas. It provides a clear alternative ('get_committee_details' for detailed info) and explains the workflow (use this first, then details tool), offering comprehensive guidance on usage versus siblings.

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

get_document_contentA

Downloads a parliamentary document and extracts its text content for use in the conversation. This tool retrieves the actual content of a document based on its ID, making it available for analysis, summarization, or direct reference in the conversation. The text is extracted from PDF or Word (DOCX) documents using professional libraries and returned in a readable format.

IMPORTANT: For longer documents, the content may be truncated. The response includes pagination information to help you retrieve the complete document:

  • isTruncated: Indicates whether there is more content available

  • totalLength: The total length of the document content

  • currentOffset: The starting position of the current content chunk

  • nextOffset: The starting position for the next content chunk (use this as the 'offset' parameter in your next call)

  • remainingLength: The amount of content remaining after the current chunk

To retrieve the complete document, you can make multiple calls to this tool, incrementing the offset each time:

Example usage:

  1. First call: get_document_content({docId: '2025D18220'})

  2. If the response shows isTruncated=true, call again with the nextOffset value: get_document_content({docId: '2025D18220', offset: 8000})

  3. Continue until isTruncated=false or you've retrieved all the content you need.

This pagination approach allows you to analyze even very long documents within the conversation context.

Use this tool when you need to analyze or discuss the specific content of a document rather than just its metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
docIdYesDocument ID (e.g., '2024D39058') - the unique identifier for the parliamentary document you want to download and extract text from
offsetNoOptional starting position for text extraction (default: 0). Use this to retrieve additional content from a truncated document by setting it to the 'nextOffset' value from a previous response.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: content extraction from PDF/DOCX, potential truncation for long documents, pagination mechanism with detailed response fields, and the iterative calling pattern needed for complete retrieval. It doesn't mention rate limits or authentication needs, but covers the core operational behavior well.

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 appropriately sized and front-loaded with the core purpose. Every sentence adds value: the first states the purpose, the second explains content extraction, the third warns about truncation, and the rest provide essential pagination details and usage guidelines. While somewhat detailed, all information is necessary for this complex tool.

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?

Given the tool's complexity (pagination, content extraction) and lack of both annotations and output schema, the description does an excellent job of completeness. It explains the truncation behavior, describes the response structure (isTruncated, totalLength, etc.), provides a step-by-step usage example, and clarifies when to use the tool. The main gap is no explicit mention of error conditions or rate limits.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds significant value beyond the schema by explaining the pagination workflow: it clarifies how the 'offset' parameter interacts with the response fields (nextOffset), provides a concrete usage example with multiple calls, and explains the default behavior (offset=0). This contextual information helps the agent understand parameter usage in practice.

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 clearly states the tool's purpose with specific verbs ('downloads', 'extracts text content') and identifies the resource ('parliamentary document'). It distinguishes itself from sibling tools like 'get_document_details' (which likely provides metadata) by emphasizing content extraction for analysis rather than just metadata.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('when you need to analyze or discuss the specific content of a document rather than just its metadata') and provides a clear alternative (implied metadata tools like 'get_document_details'). It also includes detailed pagination guidance for handling long documents.

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

get_document_detailsA

Retrieves metadata about a parliamentary document in a structured JSON format, without downloading the actual document content. Returns information including title, type, document number, dates, version number, and clickable links to both the PDF version and the official Tweede Kamer webpage. This tool is ideal for getting quick information about a document and obtaining the relevant links for further access. To actually download the document content, use the 'download_document' tool instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
nummerYesDocument number (e.g., '2024D39058') - the unique identifier for the parliamentary document you want information about

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes what the tool returns (metadata without content, specific fields like title/type/number/dates/version/links) and clarifies the read-only nature (retrieves, not downloads). It could mention potential limitations like rate limits or authentication needs, but covers core behavior well.

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

Conciseness5/5

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

The description is efficiently structured with three sentences: the first states purpose and output, the second details returned information, and the third provides usage guidance. Every sentence adds value without redundancy, making it easy to parse and front-loaded with key information.

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 a single-parameter read operation with no output schema, the description provides comprehensive context: what it does, what it returns, when to use it, and alternatives. It could benefit from mentioning the response structure more explicitly since there's no output schema, but it covers the essential information well given the tool's complexity.

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?

The schema description coverage is 100%, with the single parameter 'nummer' well-documented in the schema as 'Document number (e.g., '2024D39058') - the unique identifier'. The description doesn't add parameter-specific information beyond what's in the schema, so it meets the baseline for high schema coverage.

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 clearly states the specific action ('retrieves metadata'), resource ('parliamentary document'), and output format ('structured JSON format'). It explicitly distinguishes this tool from its sibling 'download_document' by specifying it does not download actual content, making the purpose unambiguous and well-differentiated.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('ideal for getting quick information about a document and obtaining the relevant links') and when not to use it ('To actually download the document content, use the 'download_document' tool instead'). This clear alternative recommendation helps the agent choose correctly between similar tools.

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

get_overviewA

Provides a comprehensive overview of recent parliamentary activities, including the most recent documents and MPs celebrating birthdays today. This is the ideal starting point for any parliamentary data exploration. The response contains structured data with two main sections: 'recentDocuments' (listing the latest parliamentary documents with their IDs, titles, types, dates, and URLs) and 'birthdays' (listing MPs celebrating birthdays today). The results are paginated with 10 documents per page, and you can navigate through pages using the 'page' parameter. The tool can be used iteratively to retrieve subsequent pages of results - first call with page=1, then check the pagination.hasMoreDocuments field in the response, and if true, call again with page=2, and so on. This allows you to 'scroll' through all available documents when needed. The response includes pagination information showing the current page, whether more documents are available, and the total number of documents retrieved. Use this tool first when a user asks for general information about recent parliamentary activities or needs a starting point for research. After getting this overview, you can use other tools like 'get_document_details' to retrieve more information about specific documents, 'search_tk' to find documents on specific topics, or 'get_photo' to retrieve photos of MPs mentioned in the birthdays section.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for paginated results (default: 1). Each page contains 10 documents.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior: pagination mechanics (10 documents per page, hasMoreDocuments field), response structure (two main sections), and the iterative usage pattern. It doesn't mention rate limits or authentication requirements, but covers the core operational behavior well.

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

Conciseness3/5

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

The description is comprehensive but somewhat verbose. While all information is relevant, it could be more front-loaded with the core purpose. The explanation of pagination mechanics and sibling tool relationships, while valuable, extends the description length. Every sentence earns its place, but the structure could be tighter.

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?

Given the tool's complexity (pagination, multiple data sections, iterative usage) and lack of annotations/output schema, the description does an excellent job of providing context. It explains the response structure, pagination behavior, and workflow. The main gap is the absence of output schema details, but the description compensates well by describing the response format and fields.

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

Parameters4/5

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

The schema description coverage is 100%, so the baseline is 3. The description adds significant value by explaining the pagination context ('first call with page=1, then check...'), the relationship between the page parameter and document retrieval, and the iterative scrolling workflow. This provides practical usage semantics beyond the schema's basic parameter documentation.

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 clearly states the tool provides a comprehensive overview of recent parliamentary activities with two specific sections (recent documents and MP birthdays). It distinguishes itself from siblings by being the 'ideal starting point' and explicitly mentions alternative tools like get_document_details and search_tk for follow-up actions.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('first when a user asks for general information about recent parliamentary activities or needs a starting point for research') and when to use alternatives ('After getting this overview, you can use other tools like...'). It also explains the iterative pagination workflow for scrolling through documents.

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

get_photoA

Retrieves the official portrait photograph of a Member of Parliament. Returns the image as a binary resource that can be displayed or saved. Use this when you need to include a visual representation of an MP in reports, presentations, or profiles.

ParametersJSON Schema
NameRequiredDescriptionDefault
personIdYesMP's numeric ID - the unique identifier for the Member of Parliament whose photo you want to retrieve

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool returns a binary resource for display or saving, which is useful behavioral context. However, it lacks details on potential errors (e.g., if no photo exists), rate limits, or authentication needs, leaving gaps for a read operation.

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

Conciseness5/5

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

The description is front-loaded with the core purpose in the first sentence, followed by usage guidance. Every sentence earns its place by adding value—no redundant or vague language. It's efficiently structured and appropriately sized for the tool's complexity.

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?

Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is mostly complete. It covers purpose, usage, and output format. However, without annotations or output schema, it could benefit from more behavioral details (e.g., error handling), but it's adequate for a simple retrieval tool.

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%, with the parameter 'personId' fully documented in the schema as 'MP's numeric ID - the unique identifier for the Member of Parliament whose photo you want to retrieve.' The description adds no additional parameter information beyond this, so it meets the baseline for high schema coverage without compensating further.

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 clearly states the specific action ('Retrieves'), resource ('official portrait photograph of a Member of Parliament'), and output format ('binary resource'). It distinguishes this tool from siblings like 'list_persons' (which lists MPs) or 'get_document_content' (which retrieves documents), making the purpose unambiguous.

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

Usage Guidelines5/5

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

It explicitly states when to use this tool: 'when you need to include a visual representation of an MP in reports, presentations, or profiles.' This provides clear context for usage, helping the agent choose this over alternatives like textual data tools. No exclusions are mentioned, but the guidance is sufficient for decision-making.

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

get_upcoming_activitiesA

Retrieves a list of upcoming parliamentary activities including debates, committee meetings, and other events. The response contains a structured JSON object with both a chronological list of activities and activities grouped by date. Each activity includes details like date, time, location, committee, type, and a URL for more information. Use this tool when a user asks about the parliamentary agenda, wants to know what events are coming up, or needs information about specific types of parliamentary activities. The results are sorted by date with the most imminent activities first. You can limit the number of results using the optional 'limit' parameter. This tool is particularly useful for helping users plan which parliamentary sessions to follow or for providing an overview of the upcoming parliamentary schedule.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of activities to return (default: 20, max: 100)

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: the response format (structured JSON with chronological and grouped lists), sorting (by date, most imminent first), and an optional parameter for limiting results. However, it lacks details on error handling, rate limits, or authentication needs, which are important for a tool with no annotations.

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 appropriately sized and front-loaded, starting with the core purpose and response details. Every sentence adds value, such as usage guidelines and sorting behavior, but it could be slightly more concise by integrating some details more tightly without losing clarity.

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

Completeness3/5

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

Given no annotations and no output schema, the description does a decent job covering purpose, usage, and basic behavior. However, it lacks information on error cases, pagination, or the exact structure of the JSON response, which would be helpful for an agent to handle the tool effectively in more complex scenarios.

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?

The input schema has 100% description coverage, with the 'limit' parameter documented as 'Maximum number of activities to return (default: 20, max: 100)'. The description adds value by explaining the purpose of limiting results ('You can limit the number of results using the optional 'limit' parameter') and implying its optionality, but doesn't provide additional semantics beyond what the schema already covers.

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 clearly states the verb ('Retrieves') and resource ('list of upcoming parliamentary activities'), specifying the types (debates, committee meetings, other events) and distinguishing it from siblings like get_committee_details or get_voting_results by focusing on upcoming activities rather than details of specific entities.

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

Usage Guidelines5/5

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

It explicitly states when to use this tool: 'when a user asks about the parliamentary agenda, wants to know what events are coming up, or needs information about specific types of parliamentary activities.' It also provides context on usefulness for planning or overview, though it doesn't explicitly name alternatives, the guidance is clear and actionable.

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

get_voting_resultsA

Retrieves recent voting results on parliamentary motions and bills. The response contains a structured JSON object with voting results sorted by date (newest first). Each result includes detailed information such as the title of the motion/bill, the date of the vote, the submitter, whether it was accepted or rejected, the vote counts (for/against), and which political parties voted for or against. Use this tool when a user asks about recent parliamentary votes, wants to know how parties voted on specific issues, or needs to analyze voting patterns. You can control the number of results with the 'limit' parameter and choose between 'full' or 'summary' format. The 'summary' format provides a more structured representation with renamed fields, while both formats include complete party voting information. This tool is particularly valuable for tracking political alignments, understanding coalition dynamics, and analyzing how different parties position themselves on important issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoFormat of the results: 'full' for complete data or 'summary' for a more structured version with renamed fields (default: 'full'). Both formats include party information.
limitNoMaximum number of voting results to return (default: 20, max: 100)

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the response is a structured JSON object sorted by date and includes detailed information like vote counts and party alignments, but it lacks details on permissions, rate limits, or error handling. For a read operation with no annotations, this is adequate but not comprehensive.

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

Conciseness3/5

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

The description is front-loaded with purpose and usage, but it includes verbose sentences like 'This tool is particularly valuable for tracking political alignments...' that add minimal operational value. It could be more concise by focusing on essential details without the explanatory fluff.

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?

Given no annotations, 100% schema coverage, and no output schema, the description adequately covers purpose, usage, and basic behavioral traits. However, it lacks details on response structure (e.g., JSON fields) and error cases, which would improve completeness for a tool with no output schema.

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%, so the schema already documents both parameters (format and limit) thoroughly. The description adds minor context by explaining that 'summary' format provides a more structured representation with renamed fields, but this largely repeats schema information. Baseline 3 is appropriate when schema does the heavy lifting.

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 clearly states the verb 'retrieves' and the resource 'recent voting results on parliamentary motions and bills,' distinguishing it from siblings like get_committee_details or list_persons by focusing on voting outcomes rather than committees, documents, or persons.

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

Usage Guidelines5/5

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

It explicitly states when to use this tool: 'when a user asks about recent parliamentary votes, wants to know how parties voted on specific issues, or needs to analyze voting patterns.' This provides clear context and distinguishes it from alternatives like search_tk or get_overview.

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

list_personsA

Provides a complete directory of current Members of Parliament with their IDs, names, titles, party affiliations, and faction memberships. The response is a JSON array where each entry contains an MP's full details. Use this tool when a user needs comprehensive information about all MPs, wants to analyze the composition of parliament by party, or needs to find specific MPs by name or party. This tool is particularly useful for creating reports about parliamentary representation or for finding the IDs of MPs that can be used with other tools like 'get_photo'. This tool takes no parameters as it returns all current MPs. For a more targeted approach when looking for specific MPs, consider using the 'search_tk' tool with the MP's name.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: the tool returns a complete directory (implying no pagination or limits), specifies the output format ('JSON array'), and mentions use cases like creating reports or finding IDs for other tools. However, it doesn't address potential rate limits, authentication needs, or data freshness, leaving some gaps for a tool with no annotations.

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

Conciseness5/5

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

The description is well-structured and front-loaded: the first sentence states the core purpose, followed by usage guidelines and alternatives. Every sentence adds value—explaining output format, use cases, parameter absence, and sibling tool differentiation—with no redundant information. It efficiently covers all necessary aspects in a compact form.

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?

Given the tool's complexity (0 parameters, no output schema, no annotations), the description is mostly complete: it covers purpose, usage, output format, and parameter semantics. However, without annotations or an output schema, it could benefit from more detail on behavioral aspects like error handling or data updates. It adequately compensates for the lack of structured data but has minor gaps.

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

Parameters4/5

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

The tool has 0 parameters, and schema description coverage is 100% (empty schema). The description adds value by explicitly stating 'This tool takes no parameters as it returns all current MPs,' which clarifies the absence of inputs beyond what the schema indicates. Since there are no parameters, a baseline of 4 is appropriate, and the description reinforces this clearly.

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 clearly states the tool's purpose: 'Provides a complete directory of current Members of Parliament with their IDs, names, titles, party affiliations, and faction memberships.' It specifies the verb ('Provides'), resource ('directory of current Members of Parliament'), and output format ('JSON array'), and distinguishes it from sibling tools like 'search_tk' by emphasizing it returns all MPs without filtering.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool: 'when a user needs comprehensive information about all MPs, wants to analyze the composition of parliament by party, or needs to find specific MPs by name or party.' It also provides clear alternatives: 'For a more targeted approach when looking for specific MPs, consider using the 'search_tk' tool with the MP's name.' This includes both usage scenarios and exclusions.

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

search_by_categoryA

Performs a search specifically for documents of a certain category, such as questions, motions, or letters. The response contains a structured JSON object with paginated results and metadata. Use this tool when a user wants to find documents of a specific type that match certain keywords or when they need more targeted search results than the general search provides. The 'category' parameter lets you filter by document type: 'vragen' for parliamentary questions, 'moties' for motions, or 'alles' for all document types. The search syntax supports advanced queries: 'Joe Biden' finds documents with both terms anywhere, '"Joe Biden"' (with quotes) finds exact phrases, 'Hubert NOT Bruls' finds documents with 'Hubert' but not 'Bruls' (capital NOT is required), and you can use 'OR' for alternatives. Results are sorted by date with the most recent documents first. This tool is particularly useful for finding specific types of parliamentary documents on a given topic.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesDocument category: 'vragen' for questions, 'moties' for motions, 'alles' for all document types
limitNoMaximum number of results to return per page (default: 20, max: 100)
pageNoPage number for paginated results (default: 1)
queryYesSearch term - any keyword, name, policy area, or quote you want to find in parliamentary records

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: the response format ('structured JSON object with paginated results and metadata'), sorting behavior ('sorted by date with the most recent documents first'), and search syntax details. It doesn't mention rate limits or authentication requirements, but covers most operational aspects well.

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 appropriately sized and front-loaded with the core purpose in the first sentence. Each subsequent sentence adds valuable information about usage, parameters, search syntax, and sorting. While comprehensive, it maintains good flow without unnecessary repetition, though it could be slightly more concise in the syntax explanation section.

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?

Given the tool's complexity (search with advanced syntax, pagination, filtering) and no output schema, the description provides substantial context: response format, sorting behavior, parameter usage, and search syntax. With no annotations, it adequately covers operational aspects, though it doesn't specify error conditions or exact response structure details that an output schema would provide.

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%, so the schema already documents all parameters thoroughly. The description adds some value by explaining the 'category' parameter options with examples and detailing the 'query' parameter's advanced syntax, but doesn't add significant meaning beyond what the schema provides. The baseline of 3 is appropriate given the comprehensive schema documentation.

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 clearly states the tool's purpose: 'Performs a search specifically for documents of a certain category' with specific examples (questions, motions, letters). It distinguishes from siblings by mentioning 'more targeted search results than the general search provides' and lists sibling tools like 'search_tk' and 'search_tk_filtered' that likely provide broader searches.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool: 'when a user wants to find documents of a specific type that match certain keywords' and 'when they need more targeted search results than the general search provides.' It distinguishes from alternatives by contrasting with 'general search' and the sibling tools suggest broader search capabilities.

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

search_tkA

Performs a comprehensive search across all parliamentary data including documents, activities, and cases. Returns results matching the provided keyword or phrase. Use this for general searches when you need information on any topic discussed in parliament, regardless of document type or context. Search syntax: Searching for 'Joe Biden' finds documents containing both 'Joe' and 'Biden' anywhere in the text. Searching for "Joe Biden" (with quotes) finds only documents where these words appear next to each other. Searching for 'Hubert NOT Bruls' finds documents containing 'Hubert' but not 'Bruls'. The capital letters in 'NOT' are important. You can also use 'OR' and 'NEAR()' operators.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoFormat of the results: 'full' for complete data or 'summary' for a condensed version (default: 'summary')
limitNoMaximum number of results to return per page (default: 20, max: 100)
pageNoPage number for paginated results (default: 1)
queryYesSearch keyword or phrase - can be any term, name, policy area, or exact quote you want to find in parliamentary records. Use quotes for exact phrases, 'NOT' to exclude terms, 'OR' for alternatives, and 'NEAR()' for proximity searches.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by explaining search syntax behavior (AND semantics by default, exact phrases with quotes, NOT/OR/NEAR operators), but doesn't mention pagination behavior, rate limits, authentication requirements, or what happens with empty results. It provides good operational context but misses some important behavioral aspects.

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 appropriately sized and front-loaded with the core purpose. The first sentence establishes what the tool does, followed by usage guidance, then detailed syntax examples. While comprehensive, some syntax details could be more concise, but overall structure is logical and efficient.

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 a search tool with 4 parameters, 100% schema coverage, but no annotations or output schema, the description provides good context. It explains the tool's scope, when to use it, and detailed search syntax. However, without an output schema, it doesn't describe what results look like or their structure, leaving some gaps in completeness.

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%, so the schema already documents all parameters thoroughly. The description adds some value by explaining query syntax examples and operators, but doesn't provide additional meaning for format, limit, or page parameters beyond what the schema already states. Baseline 3 is appropriate when the schema does the heavy lifting.

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 clearly states the tool performs a 'comprehensive search across all parliamentary data including documents, activities, and cases' with specific resources listed. It distinguishes from sibling tools by mentioning 'general searches' and 'regardless of document type or context', differentiating it from more specific tools like search_by_category or search_tk_filtered.

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

Usage Guidelines5/5

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

The description explicitly provides usage guidance: 'Use this for general searches when you need information on any topic discussed in parliament, regardless of document type or context.' This clearly indicates when to use this tool versus more specialized alternatives, providing excellent context for tool selection.

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

search_tk_filteredA

Performs a targeted search within a specific category of parliamentary data. Unlike the general search, this tool allows you to limit results to only documents, activities, or cases. Use this when you need more focused search results within a particular content type. Search syntax: Searching for 'Joe Biden' finds documents containing both 'Joe' and 'Biden' anywhere in the text. Searching for "Joe Biden" (with quotes) finds only documents where these words appear next to each other. Searching for 'Hubert NOT Bruls' finds documents containing 'Hubert' but not 'Bruls'. The capital letters in 'NOT' are important. You can also use 'OR' and 'NEAR()' operators.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoFormat of the results: 'full' for complete data or 'summary' for a condensed version (default: 'summary')
limitNoMaximum number of results to return per page (default: 20, max: 100)
pageNoPage number for paginated results (default: 1)
queryYesSearch term - any keyword, name, policy area, or quote you want to find in parliamentary records. Use quotes for exact phrases, 'NOT' to exclude terms, 'OR' for alternatives, and 'NEAR()' for proximity searches.
typeYesCategory filter: 'Document' for official papers, reports and letters; 'Activiteit' for debates and committee meetings; 'Zaak' for legislative cases and motions

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes search syntax rules (quotes, NOT, OR, NEAR operators), which are critical behavioral traits not covered by the schema. However, it doesn't mention pagination behavior, rate limits, or authentication requirements, leaving some gaps.

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 well-structured and appropriately sized. It front-loads the purpose and usage guidelines, then provides detailed search syntax. While comprehensive, some syntax examples could be more concise, but overall it earns its place with valuable information.

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 a search tool with no annotations and no output schema, the description provides good context about behavior and usage. It covers search syntax thoroughly and distinguishes from siblings. The main gap is lack of information about return format or result structure, which would be helpful given no output schema exists.

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%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema - it mentions 'category filter' for the 'type' parameter but doesn't provide additional semantic context. The baseline of 3 is appropriate when the schema does the heavy lifting.

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 clearly states the tool 'performs a targeted search within a specific category of parliamentary data' and distinguishes it from the general search by allowing limitation to documents, activities, or cases. It explicitly mentions the sibling tool 'search_tk' (general search) in the first sentence, providing clear differentiation.

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

Usage Guidelines5/5

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

The description provides explicit guidance: 'Use this when you need more focused search results within a particular content type.' It contrasts with the general search tool and specifies the appropriate context for usage, making it clear when to choose this over alternatives.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 14 tool updatesv1.0.0
    • First observedbirthdays_today
    • First observedget_committee_details
    • First observedget_committees
    • First observedget_document_content
    • First observedget_document_details
    • First observedget_document_links
    • First observedget_overview
    • First observedget_photo
    • First observedget_upcoming_activities
    • First observedget_voting_results
    • First observedlist_persons
    • First observedsearch_by_category
    • First observedsearch_tk
    • First observedsearch_tk_filtered

TDQS

A4.1/5.0

Scored across 14 tools

Disambiguation3/5

Most tools have distinct purposes, but there is notable overlap between search_tk, search_tk_filtered, and search_by_category, which could confuse agents about which to use for document searches. Additionally, get_document_details and get_document_content serve different functions but might be misselected due to similar naming and domain overlap. The descriptions help clarify, but the boundaries are not perfectly clear.

Naming Consistency4/5

The naming follows a consistent verb_noun pattern (e.g., get_overview, list_persons, search_tk) with minor deviations like birthdays_today (noun_verb) and get_document_links (which could be named more consistently as get_document_links or similar). Overall, the pattern is readable and mostly predictable, with only a few inconsistencies.

Tool Count5/5

With 14 tools, the count is well-scoped for a parliamentary data server, covering MPs, committees, documents, activities, and searches. Each tool appears to serve a specific purpose without redundancy, fitting within the typical 3-15 range for such a domain.

Completeness4/5

The tool set provides comprehensive coverage for parliamentary data, including CRUD-like operations for documents (get, search), MPs (list, get photo), committees (list, get details), and activities (get overview, get upcoming). Minor gaps include no explicit update or delete tools, but this is reasonable for a read-only data source, and agents can work around this with the available search and retrieval tools.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides programmatic access to official German Bundestag parliamentary data, enabling LLMs to answer questions about legislation, voting records, and members.
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables LLMs to query and retrieve real-time open data, documents, protocols, and records from the Swedish Parliament (Riksdag) and Government Offices through 32 specialized MCP tools.
    31
    -
  • A
    license
    A
    quality
    F
    maintenance
    Enables querying over 3,200 Dutch statutes (AVG, Wetboek van Strafrecht, Burgerlijk Wetboek, etc.) with verbatim, citation-grounded text from official sources, directly from MCP-compatible AI assistants.
    18
    51 npm
    14
    Apache 2.0