Korean Assembly MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Korean Assembly MCP최근 발의된 법안 목록 보여줘"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
korean-assembly-mcp
국회 공개 데이터를 Claude 같은 MCP 클라이언트에서 바로 조회하는 stdio MCP 서버입니다. 의원·법안·표결·일정·회의록 발언·국정감사 보고서·소속기관 발간물을 찾고, 중계 중인 회의의 AI 자막을 녹화해 회의록이 나오기 전에도 발언을 정리할 수 있습니다.
도구 17개, 요약 프롬프트 3개
제22대 국회 기준
한 번 가져온 회의록·자막·보고서 본문은 로컬 SQLite 색인에 쌓여 날짜와 상관없이 다시 검색됩니다
데이터 원천
원천 | 쓰는 곳 |
열린국회정보 OpenAPI ( | 의원, 법안, 표결, 일정, 회의록 목록, 발언영상, 국감 보고서, 발간물 |
국회회의록 시스템 ( | 회의록 전문(의원별 발언 원문) |
의안정보시스템 ( | 의안 첨부 문서(검토보고서·심사보고서 등) |
국회 의사중계 ( | 중계 목록, AI 자막 WebSocket |
국회도서관 발언 데이터 ( | 가져온 적 없는 회의까지 찾는 원격 전문 검색 |
국회 사이트들은 curl 같은 비브라우저 요청에 400을 돌려줍니다. 그래서 이 서버는 시스템 Chrome을 헤드리스로 띄우고, 대상 사이트 페이지 안에서 fetch 해 응답을 받습니다. User-Agent는 바꾸지 않습니다.
Related MCP server: open-assembly-mcp
요구 사항
항목 | 용도 | 비고 |
Node.js | 서버 실행 | 내장 |
Google Chrome | 국회 사이트 호출 | 설치된 Chrome 을 OS별 기본 위치에서 찾아 씁니다(브라우저를 따로 받지 않음) |
pdftotext (poppler) | 검토보고서·국감 보고서 PDF 본문 추출 | 없어도 서버는 돌고, |
열린국회정보 인증키 | OpenAPI 호출 | 아래 "인증키" 참고 |
지원 OS
OS | 상태 |
macOS (Apple Silicon) | 테스트로 확인 |
macOS (Intel), Windows, Linux | 경로와 프로세스 처리는 OS별로 맞춰 두었지만 실제로 돌려 보지는 않았습니다 |
Chrome 은 다음 위치에서 찾습니다. 다른 곳에 있으면 ASSEMBLY_CHROME 에 실행 파일 경로를 넣습니다.
macOS:
/Applications/Google Chrome.appWindows:
%LOCALAPPDATA%,%ProgramFiles%,%ProgramFiles(x86)%아래Google\Chrome\Application\chrome.exeLinux:
/opt/google/chrome/chrome(Google 이 배포하는 패키지 기준. 배포판 저장소의 Chromium 은ASSEMBLY_CHROME으로 지정)
설치
git clone https://github.com/mhwan/korean-assembly-mcp.gitcd korean-assembly-mcpnpm cipdftotext
macOS:
brew install popplerUbuntu·Debian:
sudo apt install poppler-utilsWindows: Scoop 을 쓰면 아래 명령으로 pdftotext.exe 가 PATH 에 들어갑니다. Scoop 없이 하려면 poppler-windows 릴리스 zip 을 풀고 Library\bin 폴더를 PATH 에 넣거나, ASSEMBLY_PDFTOTEXT 에 pdftotext.exe 경로를 넣습니다.
scoop install popplerPATH 를 바꿨다면 MCP 클라이언트를 다시 시작해야 반영됩니다.
인증키
열린국회정보에 로그인한 뒤 "인증키 발급" 메뉴에서 받습니다. 키 없이도 응답은 오지만, 이 경우 받을 수 있는 행 수가 제한되는지는 확인하지 않았습니다.
키는 둘 중 한 곳에 둡니다. 환경 변수가 우선입니다.
환경 변수
ASSEMBLY_API_KEY파일
~/.config/assembly-data/credentials
mkdir -p ~/.config/assembly-dataprintf 'ASSEMBLY_API_KEY=발급받은키\n' > ~/.config/assembly-data/credentialschmod 600 ~/.config/assembly-data/credentialsWindows(PowerShell)에서는 같은 파일을 C:\Users\<이름>\.config\assembly-data\credentials 에 만듭니다.
New-Item -ItemType Directory -Force "$HOME\.config\assembly-data"Set-Content -Path "$HOME\.config\assembly-data\credentials" -Value "ASSEMBLY_API_KEY=발급받은키" -Encoding ascii> 나 Out-File 로 만들면 Windows PowerShell 5.1 에서는 UTF-16 으로 저장돼 키를 읽지 못하니 Set-Content 를 씁니다.
MCP 클라이언트에 등록
GUI 앱은 셸의 PATH 를 물려받지 않을 수 있으니 node 는 절대 경로로 적습니다. macOS·Linux 는 which node, Windows 는 where.exe node 로 확인합니다.
Claude Code
macOS·Linux(아래는 Homebrew 의 node 경로입니다. which node 결과로 바꿉니다):
claude mcp add --scope user assembly -- /opt/homebrew/bin/node /절대경로/korean-assembly-mcp/src/server.jsWindows:
claude mcp add --scope user assembly -- "C:\Program Files\nodejs\node.exe" C:\절대경로\korean-assembly-mcp\src\server.jsClaude Desktop
설정 파일 위치:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
macOS:
{
"mcpServers": {
"assembly": {
"command": "/opt/homebrew/bin/node",
"args": ["/절대경로/korean-assembly-mcp/src/server.js"]
}
}
}Windows(JSON 안에서는 \ 를 \\ 로 적습니다):
{
"mcpServers": {
"assembly": {
"command": "C:\\Program Files\\nodejs\\node.exe",
"args": ["C:\\절대경로\\korean-assembly-mcp\\src\\server.js"]
}
}
}인증키를 파일 대신 환경 변수로 넘기려면 "env": { "ASSEMBLY_API_KEY": "..." } 를 더합니다.
다른 MCP 클라이언트도 명령은 node, 인자는 server.js 의 절대 경로 하나로 등록하면 됩니다.
등록한 뒤 클라이언트를 다시 시작해야 도구가 보입니다.
도구
회의록·발언
도구 | 하는 일 | 주요 인자 |
| 기간 안의 위원회 회의록·국감 회의록 목록. 회의번호( |
|
| 회의록 전문을 의원별로 묶은 발언 원문. 정당·지역구 포함, 특정 의원을 고르면 장관·증인 답변도 붙습니다 |
|
| 의원 발언영상 목록. 누가 몇 번, 몇 분 질의했는지 줍니다. |
|
| 지금 의사중계 목록 |
|
| AI 자막 녹화 시작·상태 확인. 인자 없이 부르면 상태만 봅니다 |
|
| 녹화한 자막을 질의 의원 블록으로 묶어 줍니다(화자는 추정값) |
|
의원·법안·표결
도구 | 하는 일 | 주요 인자 |
| 의원 인적사항(정당·지역구·소속위원회·당선횟수·연락처). 조건 없으면 전원 |
|
| 법률안 검색, 제안일 최신순. 기본은 의원 발의안 |
|
| 단계별 일자·결과, 제안이유, 제안자, 위원회 심사 회의, 대안과 원안 관계 |
|
| 의안 첨부 문서 목록과 고른 문서의 본문(기본 검토보고서) |
|
| 본회의 표결: 찬반 집계, 정당별·의원별 표결 |
|
국감·발간물·일정
도구 | 하는 일 | 주요 인자 |
| 국정감사 결과보고서(2000~)와 정부 처리결과보고서(2001~2015년도분). 목록 또는 본문, 본문 안 검색 |
|
| 법제실·입법조사처·예산정책처·미래연구원·국회도서관 발간물 검색 |
|
| 본회의·위원회·국회행사·세미나 일정 |
|
검색·범용
도구 | 하는 일 | 주요 인자 |
| 로컬 색인 전문 검색. 로컬에 없으면 국회도서관 원격 검색 |
|
| 색인 상태 확인, 기간 회의록 일괄 색인, 자막 녹화 색인 |
|
| 열린국회정보 OpenAPI 범용 호출. 쓸 수 있는 서비스 ID와 요청 변수는 도구 설명에 나옵니다 |
|
검색어 규칙(assembly_search): 띄어쓰기는 무시하고(전세사기 = 전세 사기), 공백으로 나눈 낱말은 모두 들어 있어야 하며, "따옴표" 로 묶으면 한 낱말로 봅니다. 원격 검색은 형태소 검색이라 낱말이 나뉘어 걸린 결과가 섞일 수 있습니다.
프롬프트
프롬프트 | 하는 일 | 인자 |
| 회의 하나를 의원별 질의 요지·답변·해시태그로 정리 |
|
| 회의 하나를 개요·핵심 논의사항·안건 처리·주제 태그·참석자·분량으로 요약 |
|
| 녹화한 당일 자막을 질의 의원별 요지로 정리 |
|
사용 흐름
지난 회의를 의원별로 정리
assembly_committee_meetings로 날짜·위원회의confer_num을 찾습니다.summarize_committee_speeches나summarize_meeting프롬프트에 그 번호를 넣습니다.
오늘 회의를 회의록 공개 전에 정리
assembly_live로 중계 목록과xcode를 봅니다.회의가 끝나기 전에
assembly_live_captions_record로 녹화를 겁니다. 자막 서버는 접속한 뒤의 문장만 보내므로, 지난 구간은 다시 받을 수 없습니다.summarize_live_captions프롬프트나assembly_live_captions로 정리합니다.
법안 하나를 끝까지 따라가기
assembly_bills → assembly_bill_detail → assembly_bill_reports(검토보고서) → assembly_votes
대안반영폐기된 법안은 assembly_bill_detail 이 붙여 주는 대안의 bill_id 로 표결을 찾습니다.
데이터 공개 시점
데이터 | 언제 볼 수 있나 | 도구 |
AI 자막 | 중계 중에만. 녹화해 둔 것만 남습니다 |
|
발언영상 목록 | 회의 당일 저녁~다음 날 |
|
회의록 전문 | 회의 후 약 1주(국감은 목록만 먼저 뜨고 전문은 늦게 열림) |
|
국회도서관 발언 데이터 | 회의 후 약 2주 |
|
공개 시점은 2026년 10월에 관찰한 값이라 달라질 수 있습니다.
환경 변수와 로컬 저장 위치
변수 | 기본값 | 설명 |
|
| 열린국회정보 인증키 |
| OS별 기본 설치 위치("지원 OS" 참고) | Chrome 실행 파일 |
|
| pdftotext 실행 파일 |
|
| 받은 PDF와 추출 텍스트 캐시 |
|
| 자막 녹화 파일(날짜별 폴더), 녹화기 로그 |
|
| 로컬 검색 색인(SQLite FTS5) |
| (없음) |
|
~ 는 Windows 에서 사용자 폴더(C:\Users\<이름>)입니다. 캐시를 지우려면 ~/.cache/assembly-mcp 를 통째로 지우면 됩니다. 색인도 함께 사라집니다.
자막 녹화기를 따로 돌리기
assembly_live_captions_record 는 내부에서 녹화기를 별도 프로세스로 띄웁니다. 저장소 폴더에서 직접 돌릴 수도 있습니다.
node src/caption-recorder.js --allnode src/caption-recorder.js 63 25--all: 지금·앞으로 중계되는 자막 방송을 모두 녹화합니다. 중계가 모두 끝나고 30분 지나면 멈춥니다.xcode지정: 그 방송만 녹화하고, 끝나고 5분 뒤 멈춥니다.어느 쪽이든 최대 16시간 뒤에는 멈춥니다. 같은 대상으로 두 번 띄우면 뒤의 것은 바로 끝납니다.
로그:
~/.cache/assembly-mcp/captions/recorder.log녹화기가 강제 종료되거나 컴퓨터를 재시작한 뒤에 녹화기를 띄웠는데 "이미 녹화 중" 이 나오고 녹화가 되지 않으면, 남아 있는 잠금 파일
~/.cache/assembly-mcp/captions/recorder-*.json을 지우고 다시 띄웁니다. 잠금 파일에 적힌 PID 를 다른 프로세스가 이어받은 경우입니다.
테스트
두 테스트 모두 실제 국회 사이트에 접속하고, 캐시·색인은 임시 폴더를 씁니다. 저장소 폴더에서 실행합니다.
node test/smoke.js 2026-10-14 행정안전 2026-10-27도구를 실제로 불러 회의록 원문·OpenAPI 원본과 대조합니다. 인자는 회의일, 위원회, 발언영상 날짜이고, 빼면 위 값을 씁니다(npm run smoke 와 같음).
node test/index.js 2026-10-28로컬 색인과 통합 검색을 검증합니다(npm run test:index -- 2026-10-28 와 같음). 인자는 자막 녹화가 있는 날짜입니다. 그날 녹화가 없으면 자막 색인 항목은 FAIL 로 나옵니다.
개발용 스크립트
스크립트 | 하는 일 |
| 사용하는 OpenAPI 명세(서비스 ID·요청 변수·출력 필드)를 받아 |
| OpenAPI 한 서비스를 불러 건수와 앞쪽 행을 출력합니다 |
| URL 하나를 실브라우저로 받아 앞부분을 출력합니다(응답 구조 확인용) |
파일 구조
src/
server.js MCP 서버: 도구·프롬프트 등록
browser.js 헤드리스 Chrome 안에서 fetch
openapi.js 열린국회정보 OpenAPI 호출·페이지 처리
domains.js 법안·표결·일정·중계 목록
members.js 의원 인적사항
minutes.js 회의록 목록·전문 파싱, 발언영상
reports.js 의안 첨부 문서, 국감 보고서, 발간물, PDF 텍스트 추출
captions.js 자막 녹화 파일 관리, 화자 추정
caption-recorder.js 자막 녹화기(별도 프로세스)
search-index.js 로컬 SQLite FTS5 색인
nanet.js 국회도서관 원격 검색
search.js 로컬·원격 통합 검색
data/openapi-specs.json OpenAPI 명세 덤프(서버 시작 때 읽음)
scripts/ 개발용 스크립트
test/ 실사이트 대조 테스트한계와 주의
제22대 국회만 조회합니다. 대수는 코드에 22로 들어 있습니다.
테스트는 Apple Silicon Mac 에서만 돌렸습니다. 다른 OS 는 "지원 OS" 를 참고하세요.
OpenAPI 외에 회의록 HTML, 의안정보시스템 HTML, 국회도서관 HTML, 중계 자막 WebSocket을 직접 읽습니다. 이 경로들은 공개 API가 아니어서 사이트가 바뀌면 깨질 수 있습니다.
자막은 AI 음성인식이라 오인식이 있고, 화자는 위원장의 지명·자기소개 문장으로 추정한 값입니다. 공식 기록은 회의록입니다.
공공기관 사이트이니 짧은 시간에 많은 요청을 보내지 마세요.
국회와 관계없는 개인 프로젝트입니다. 데이터의 권리와 이용 조건은 각 제공 기관을 따릅니다.
라이선스
코드는 MIT 라이선스입니다. 이 서버로 받은 데이터에는 적용되지 않으며, 데이터는 각 제공 기관의 이용 조건을 따릅니다.
Available Tools
17 toolsassembly_audit_reportsA
국정감사 문서. kind=result 는 위원회별 국정감사 결과보고서(2000~, 감사 개요·기관별 질의 요지·시정 및 처리요구사항·증인 목록), kind=correction 은 시정 및 처리요구사항에 대한 정부 처리결과보고서(2001~2015년도 국감분만 있음). doc_id 없이 부르면 목록(최신순), doc_id 를 주면 PDF 본문 텍스트. section=corrections 는 결과보고서의 시정·처리요구 절부터 준다. find 는 띄어쓰기를 무시하고 본문에서 찾아 offset 과 앞뒤 문맥을 준다(의원 이름 찾기 등). 본문이 길면 next_offset 으로 이어 읽는다.
| Name | Required | Description | Default |
|---|---|---|---|
| find | No | 본문 검색어(최대 30건) | |
| kind | No | result(결과보고서, 기본) 또는 correction(처리결과보고서) | |
| year | No | 감사 연도 | |
| limit | No | 목록 개수, 기본 50 | |
| query | No | 목록 거르기: 위원회명·제목·소관기관 일부, 예: 행정안전, 해양수산부 | |
| doc_id | No | 목록의 doc_id(r-… 결과보고서, c-… 처리결과보고서) | |
| offset | No | 본문 시작 위치(next_offset 또는 find 결과의 offset) | |
| section | No | 결과보고서 본문 시작 위치, 기본 all | |
| max_chars | No | 본문 상한, 기본 30000 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does the heavy lifting: it discloses list ordering (최신순), that body calls return extracted PDF text, that long bodies must be continued via next_offset, that find returns offset plus surrounding context and ignores whitespace, and that one dataset is date-limited to 2001–2015. It does not cover permissions, failure behavior, or what list entries actually contain, so it is strong but not complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every clause carries new information and there is no filler; the parameter-driven behaviors are front-loaded in the first sentences. The prose is a dense run-on with several ideas packed into single sentences, which costs some scannability but not content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, no-annotation, no-output-schema tool, the description explains the two calling modes, both enums, the paging mechanism and the search helper, which is enough to call it correctly. It never describes what a list item returns (fields, IDs), leaving the agent to infer the r-/c- prefixes from the schema's doc_id note.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description genuinely adds meaning on top: kind's two values are explained with coverage and contents, doc_id's list-vs-body switch is stated, section=corrections is defined, and find/next_offset semantics are explained. Remaining parameters (year, query, limit, max_chars) are left entirely to the schema, so it falls short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (국정감사 문서) and immediately splits it into two concrete modes (kind=result vs kind=correction) with the contents of each spelled out. It does not name any sibling tool (assembly_search, assembly_bill_reports, assembly_publications), so an agent cannot tell from this text alone which sibling to prefer, which keeps it at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit mode-selection rules: call without doc_id to get a newest-first list, with doc_id to get PDF body text, use section=corrections to jump straight to the correction/action section, and use find to locate terms like member names. It also warns that correction reports only exist for 2001–2015 audits, a real usage precondition. What is missing is any comparison against alternative sibling tools for overlapping needs (e.g., general search).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assembly_bill_detailA
의안 상세: 단계별 일자·결과, 제안이유 및 주요내용, 제안자 목록(대표발의 먼저), 위원회 심사 회의. 위원장안(대안)이면 반영된 원안 목록(original_bills), 대안반영폐기된 의안이면 그 대안(alternative)을 붙인다. 표결은 대안의 bill_id 로 assembly_votes 를 부른다. 대안은 같은 위원회 위원장안 중 처리일이 같은 것에서 찾으므로 못 찾으면 alternative 가 안내 문장이다(그때는 assembly_bills proposer_kind=위원장 으로 찾는다).
| Name | Required | Description | Default |
|---|---|---|---|
| bill_id | No | 의안ID(PRC_…) | |
| bill_no | No | 의안번호 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden and does disclose a genuinely important edge case: when the alternative cannot be matched by committee and processing date, the 'alternative' field degrades to a guidance string rather than data, and the agent must switch strategies. It never states read-only/no-side-effect status or how a missing bill is signalled, which is the remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the returned content before the conditional edge cases, and no sentence is redundant. The alternative-matching sentence is dense with nested parentheticals and reads closer to implementation detail than agent guidance, but it does justify why a lookup can fail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description must describe the return shape, and it does so field by field while also handling the alternative-bill cases. The one real omission is that both parameters are optional in the schema yet the description never says at least one identifier is needed, leaving an agent able to call it with no arguments.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (bill_id as 의안ID/PRC_…, bill_no as 의안번호), so the schema already does the parameter work. The description only indirectly touches parameters, via the note that votes are keyed on the alternative's bill_id, and says nothing about when to prefer bill_id over bill_no or what happens if both are omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and enumerates its contents (stage-by-stage dates/results, proposal reason, proposer list ordered with the lead sponsor first, committee deliberation meetings), so an agent knows exactly what a successful call yields. It never explicitly contrasts itself with the sibling assembly_bills list tool, which is what keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete downstream routing: for a vote, call assembly_votes with the alternative bill's bill_id, and if the alternative lookup fails, fall back to assembly_bills with proposer_kind=위원장. What it doesn't state is the primary selection rule (fetch details for one bill here vs. list/search bills in assembly_bills).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assembly_bill_reportsA
의안 첨부 문서 목록(의안원문·검토보고서·심사보고서·체계자구검토보고서 등, PDF/HWP 링크)과 doc 으로 고른 문서의 본문 텍스트(PDF 추출). 검토보고서는 위원회 전문위원이 쓴 쟁점·찬반 분석이다. 본문이 길면 next_offset 으로 이어 읽는다. 대안(위원회안)은 검토·심사보고서가 원안들에 붙으므로 original_bills 의 의안번호로 다시 부른다.
| Name | Required | Description | Default |
|---|---|---|---|
| doc | No | 본문을 받을 문서, 기본 검토보고서. none 이면 목록만 | |
| offset | No | 본문 시작 위치(이전 응답의 next_offset) | |
| bill_id | No | 의안ID(PRC_…) | |
| bill_no | No | 의안번호 | |
| max_chars | No | 본문 상한, 기본 30000 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose useful traits: text is PDF-extracted, long bodies are chunked and continued via next_offset, and 검토보고서 is a 전문위원 issue/pro-con analysis (a substantive quality signal about the content). It does not state whether offset beyond the end is an error, whether metadata/links are returned alongside text, or how bill_id vs bill_no interact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, each carrying distinct information (what is listed, what 검토보고서 is, how to continue, how to handle 대안), with the core purpose front-loaded. No filler, though the verbless opening sentence costs a little immediate clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations mean the description must be self-sufficient, and it covers document types, PDF extraction, and pagination. It remains silent on how bill_id and bill_no are expected to combine (zero required params, so at least one is presumably needed), what the listing response looks like, and when the body is truncated. Adequate but with clear gaps for a five-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning: it explains what 검토보고서 actually contains, ties next_offset to the offset parameter for continuation, and warns that 대안 must be re-fetched via original_bills' 의안번호. The one blemish is naming the field 'next_offset' while the schema parameter is 'offset', which could momentarily confuse an agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact resource (의안 첨부 문서 목록 + 선택 문서 본문) and enumerates the document types returned (의안원문, 검토보고서, 심사보고서, 체계자구검토보고서) along with the format (PDF/HWP 링크, PDF 추출). It is specific enough to distinguish from generic bill tools, though it never names a sibling like assembly_bill_detail to draw the boundary. The first sentence lacks an explicit verb, which slightly blurs the 'what it does' framing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the reader infers this is the tool for reading a bill's attached documents, and the last sentence routes 대안(위원회안) lookups back through original_bills' bill number. There is no explicit 'use this instead of X when Y' statement versus assembly_bill_detail or assembly_bills. The doc/offset guidance is deferred to the schema rather than restated as when-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assembly_billsA
제22대 법률안 검색. 제안일 최신순. 기본은 의원 발의안만 찾는다. 위원장안(대안)·정부안은 proposer_kind 로 찾는다(proposer 가 "…위원장"이면 자동). total 은 기간(from·to)을 빼고 센 전체 건수다.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | 제안일 끝 | |
| from | No | 제안일 시작 | |
| name | No | 법률안명 검색어 | |
| limit | No | 기본 30 | |
| result | No | 본회의 심의결과, 예: 원안가결, 대안반영폐기 | |
| proposer | No | 제안자 검색어, 예: 홍길동의원, 국토교통위원장 | |
| committee | No | 소관위원회 검색어 | |
| proposer_kind | No | 제안자 구분. 주면 의원·위원장·정부안 전체 목록(TVBPMBILL11)에서 찾는다 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden, and it does disclose the two highest-risk behaviors: a silent default scope filter that hides chairman and government bills, and the fact that the 'total' figure ignores the from/to period. Remaining gaps are output shape and pagination semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short sentences, each front-loaded with a distinct fact: scope, sort order, default filter, escape hatch, and the total caveat. Nothing is repeated from the schema and no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 optional parameters, no annotations, and no output schema, the description covers search semantics and the main filtering trap well. The one real omission is return-value shape (what a bill record contains), which an agent cannot get from an absent output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, and the description earns above baseline by explaining proposer_kind's listing source and the automatic '…위원장' detection that links proposer to proposer_kind. It also clarifies that from/to do not affect total, which the schema does not say.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('제22대 법률안 검색') plus scope and ordering, so an agent immediately knows this is a search/list endpoint for 22nd-Assembly bills. It does not explicitly contrast itself with the sibling assembly_bill_detail, but the search-vs-detail split is inferable from naming and behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage rules: default returns only member-proposed bills, and chairman/government bills require proposal_kind (with an auto-detect fallback when proposer ends in '…위원장'). That is a clear when-to-use path, though no sibling alternative is named for drilling into a specific bill.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assembly_committee_meetingsA
위원회 회의록 목록(열린국회정보 위원회 회의록 + 국정감사 회의록). 날짜 범위의 회의를 회의번호(confer_num)별로 안건과 함께 돌려준다. 국감 회의록은 class 가 "국정감사 회의록"이고 안건이 비어 있다. 회의록은 회의 후 약 1주 뒤 공개되므로(국감은 목록만 먼저 뜨고 전문은 늦게 열린다) 최근 회의는 assembly_speech_clips 를 쓴다.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | 종료일(없으면 시작일 하루). 기간이 62일을 넘거나 시작일보다 앞이면 오류 | |
| from | Yes | 시작일 | |
| committee | No | 위원회명 일부, 예: 행정안전, 법제사법 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses the ~1-week publication lag, the audit-specific behavior (list appears first, full text later), and the data quirk that audit minutes have class '국정감사 회의록' with empty agenda fields. This is exactly the context an agent could not infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the resource and return shape, then the edge cases. Every sentence carries information, though the parenthetical about audit publication lag is dense enough to slow reading slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description must explain returns and it does (grouped by confer_num with agendas). Combined with a fully documented schema this is nearly complete; only the semantics of committee filtering are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents from, to and committee including the 62-day range error. The description only implies date-range filtering and adds no syntax or semantics for the committee filter, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (위원회 회의록 목록) and states exactly what is returned: meetings in a date range grouped by confer_num together with agendas. It also distinguishes itself from the sibling assembly_speech_clips, so an agent can route correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to assembly_speech_clips for recent meetings, with the reason (minutes are published ~1 week later, and for audits only the list appears first). It gives clear positive usage context but does not mention the other near sibling, assembly_meeting_speeches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assembly_indexA
로컬 검색 색인 관리. status: 출처별 문서·조각 수와 최근 색인 문서. meetings: 기간(최대 62일)·위원회의 공개된 회의록을 한꺼번에 색인(이미 있으면 건너뜀, force 면 다시). captions: 그날 자막 녹화를 색인. 회의록·자막·보고서 도구를 쓰면 자동으로도 색인된다.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | meetings: 종료일 | |
| date | No | captions: 녹화 날짜(기본 오늘) | |
| from | No | meetings: 시작일 | |
| force | No | meetings: 이미 색인된 회의도 다시 | |
| xcode | No | captions: 이 방송만 | |
| action | No | 기본 status | |
| committee | No | meetings: 위원회명 일부 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose key behaviors: already-indexed items are skipped (idempotent), force re-indexes, and the meetings range is capped at 62 days — the latter is not in the schema. It omits permissions/auth and any return details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the overall purpose, then packs each action into a compact clause with no wasted prose. Dense but well-organized around the action enum.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-param, multi-action tool with no annotations and no output schema, it explains each action and its scoping constraints (62-day cap, skip/force, default today). Slightly incomplete on what status returns in structured terms, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so a baseline 3 applies. The description reinforces which params map to which action (meetings dates, captions date/xcode, committee name), but adds little syntax or default meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (manage the local search index) and enumerates three distinct actions (status, meetings, captions) with what each does. It is clearly a management/indexing tool, distinguishable from read-oriented siblings like assembly_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Each action's role is explained and it notes that other tools (meeting minutes, captions, reports) already auto-index, which signals when manual indexing is/isn't needed. It stops short of explicitly contrasting with assembly_search or stating when to prefer manual over automatic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assembly_liveB
국회 의사중계 현재 중계 목록.
| Name | Required | Description | Default |
|---|---|---|---|
| only_live | No | 중계 중인 것만 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, but it only says this is a current live list. It does not disclose permissions, pagination, return shape, or what only_live defaults to.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler or repetition. Every word contributes to identifying the resource and listing behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and full schema coverage, the core purpose is adequately conveyed. However, without annotations or an output schema, more context about the result shape or behavior would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single optional parameter is already documented in the schema. The description adds no additional meaning about only_live, but with full schema coverage the baseline is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and output type: the current list of National Assembly live broadcasts. It is clear enough to identify a listing operation, though it does not explicitly differentiate itself from nearby live-caption tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the related assembly_live_captions tools, nor are there stated exclusions or prerequisites. The optional only_live parameter is documented only in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assembly_live_captionsA
녹화된 의사중계 AI 자막(STT)을 질의 의원 블록으로 묶어 준다. 블록마다 의원·정당·지역구와 transcript("[시각] (역할?) 문장")가 붙는다. 회의록이 나오기 전 당일 발언 원문용. 화자는 위원장 지명·자기소개 문장으로 추정한 값이고 자막에는 인식 오류가 있다. 위원장이 부른 이름이 의원 명단에 없으면(STT 오인식) member 는 null, heard 는 자막에 들린 이름이다.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | HH:MM 까지 | |
| date | No | 녹화 날짜(기본 오늘, KST) | |
| from | No | HH:MM 부터 | |
| xcode | No | ||
| member | No | 이 의원 블록만 | |
| committee | No | 중계명 일부, 예: 성평등가족위 | |
| max_chars | No | 전체 원문 상한, 기본 40000 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does it well: it discloses that speakers are inferred from the chair's designation or self-introduction, that captions contain recognition errors, and that member is null with heard populated when the chair's name is not in the roster. It omits operational traits such as auth requirements, rate limits, or truncation behavior for max_chars.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the core operation, then the block shape, then the use case, then the caveat. Dense but every sentence carries information; slight compression loss from the parenthetical notation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, no-output-schema tool, the description covers purpose, output shape, and accuracy caveats well, but leaves the xcode parameter completely unexplained and says nothing about default time ranges or what happens when the result exceeds max_chars. Those gaps matter for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 86%, so the schema already documents date/from/to/member/committee/max_chars, and the description adds no filtering syntax or format guidance. It does mention the member-block concept, giving indirect meaning to the member filter, but the undocumented xcode parameter is not explained anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (recorded live-caption STT) and a specific operation (grouping into per-member blocks), and clarifies that each block carries member/party/district plus timestamped transcript. It does not explicitly name the sibling tools it differs from (e.g., assembly_live, assembly_meeting_speeches), so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the intended window of use: 'before minutes are published, for same-day verbatim remarks'. That implies the alternative (assembly_meeting_speeches after minutes exist) but does not name it or state an explicit exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assembly_live_captions_recordA
의사중계 AI 자막 녹화 시작/상태. 자막 서버는 접속 이후 문장만 보내므로 회의 전체를 보려면 중계 중에 미리 녹화해야 한다. 녹화기는 이 서버와 별도 프로세스로 돌고, 중계가 끝나면 스스로 멈춘다. xcode 는 assembly_live 의 xcode, all=true 면 모든 자막 중계를 녹화한다. 인자 없이 부르면 상태만 본다.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | 지금·앞으로 중계되는 자막 방송 전부 | |
| xcode | No | 녹화할 방송 xcode 목록 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and does well: it discloses that the recorder runs as a separate process, that it stops itself when the relay ends, and that recording must precede the relay to be complete. It omits permission requirements, whether an in-progress recording can be stopped or duplicated, and what a status response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, and each following sentence supplies a distinct fact (why pre-record, process lifecycle, parameter sourcing, no-arg behavior). Slightly dense but no redundant restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a side-effecting tool with no annotations and no output schema, the description covers the critical surprises: a separate process is launched and self-terminates, and the no-arg call returns status. Whats missing is how to inspect or stop an active recording and any permission notes, but nothing essential to a correct first call is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds real value by telling the agent that xcode values come from assembly_live, and by clarifying that all=true covers both currently and future relayed broadcasts. That cross-tool sourcing hint is not in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource pair ('의사중계 AI 자막 녹화 시작/상태' – caption recording start/status) that is clearly distinct from the read-only sibling assembly_live_captions. The follow-up sentence explains the resource context (relayed captions) so the agent knows exactly what is being recorded.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use condition: the caption server only emits sentences after connection, so recording must be started before/while relaying to capture the full meeting. Also states the zero-argument behavior (status only) and the all=true breadth. It does not explicitly name a sibling alternative to use instead in any case, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assembly_meeting_speechesA
회의록 전문(record.assembly.go.kr)을 의원별로 묶어 발언 원문을 돌려준다. 의원마다 정당·지역구와 transcript(차례별 "[안건N] 발언" 단락, 답변은 "↳ 답변자: …")가 붙는다. 분량이 크면 의원별 max_chars_per_member 로 잘린다(truncated=true). 특정 의원을 members 로 고르면 장관·증인 답변(replies)도 함께 준다.
| Name | Required | Description | Default |
|---|---|---|---|
| members | No | 의원 이름 목록(없으면 전원) | |
| confer_num | Yes | assembly_committee_meetings 의 confer_num | |
| with_replies | No | 의원 발언 직후 비의원 답변 포함(members 지정 시 기본 true) | |
| include_chair | No | 위원장 진행 발언 포함, 기본 true | |
| max_chars_per_member | No | 의원별 원문 상한, 기본 3000(members 지정 시 20000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses unusually specific behavior: per-member grouping, transcript paragraph formatting ([안건N] 발언, ↳ 답변자), and truncation with a truncated=true signal tied to max_chars_per_member. It does not cover permissions, rate limits, or ordering guarantees, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the core action, then output shape, then the truncation caveat, then the members modifier. Every sentence carries information, though the middle two could be merged for tighter structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description must explain the return shape, and it does: party/district plus per-agenda transcript blocks, reply lines, and a truncated flag. What remains uncovered is modest, mainly ordering and whether non-member attendance data is included.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning beyond the schema: selecting members changes the default behavior of both with_replies and the truncation budget. It does not explain include_chair or the truncation boundary semantics, so it is above baseline but not exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: groups 회의록 전문 (record.assembly.go.kr) by 의원 and returns 발언 원문. This is clearly distinguishable from data-oriented siblings like assembly_bills or assembly_votes, though it never contrasts itself with the closest sibling, assembly_speech_clips.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the members behavior ("특정 의원을 members 로 고르면 장관·증인 답변(replies)도 함께 준다"), which tells the agent one useful invocation pattern. However, it never says when to use this instead of assembly_speech_clips or other speech-related siblings, and gives no prerequisites beyond the schema's confer_num reference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assembly_membersB
제22대 국회의원 인적사항 검색(정당·지역구·소속위원회·당선횟수·연락처). 조건 없이 부르면 전원.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| party | No | ||
| district | No | 선거구 일부, 예: 서울, 비례 | |
| committee | No | 소속위원회명 일부 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It discloses only the no-filter-returns-all behavior; nothing about result size, pagination, read-only nature, or response shape is stated. For a tool that can return an entire legislature's membership, that is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with zero waste; the resource and searchable facets come first, and the no-filter behavior follows. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is conceptually simple (a filtered list), and there is no output schema to explain. Still, an agent lacks guidance on whether filters combine as AND, how partial matching works for name/party, and whether '전원' results are paginated or truncated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: district and committee have inline descriptions (partial match, examples), while name and party are bare. The description's field list confirms party/district/committee as filterable, partially compensating, but it says nothing about name matching semantics or whether party accepts partial strings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: searching personal information of 22nd National Assembly members, and enumerates the searchable facets (party, district, committee, election count, contact). It is distinguishable from resource-specific siblings like assembly_bills or assembly_votes, though it does not address overlap with the generic assembly_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"조건 없이 부르면 전원" implies that calling with no filters returns the full roster, which is useful. However, it never says when to prefer this over assembly_search or the other assembly_* tools, and offers no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assembly_openapiC
열린국회정보 OpenAPI 범용 호출. 아래 서비스ID와 요청 변수(*는 필수)를 쓴다.
nwvrqwxyaytdsfvhu 국회의원 인적사항: HG_NM, POLY_NM, ORIG_NM, CMITS, SEX_GBN_NM, MONA_CD
ALLNAMEMBER 국회의원 정보 통합 API: NAAS_CD, NAAS_NM, PLPT_NM, BLNG_CMIT_NM
nktulghcadyhmiqxi 위원회 위원 명단: DEPT_CD, DEPT_NM, JOB_RES_NM, HG_NM, ORIG_NM, POLY_NM, ASSEM_TEL, ASSEM_EMAIL, MONA_CD
nxrvzonlafugpqjuh 위원회 현황 정보: CMT_DIV_NM, HR_DEPT_CD, COMMITTEE_NAME, HG_NM, HG_NM_LIST
nuvypcdgahexhvrjt 국회의원 상임위 활동: DAE_NUM*, SES_NUM, DEGREE_NUM, COMM_NAME, CONF_DATE, CLASS_NAME
nzmimeepazxkubdpn 국회의원 발의법률안: BILL_ID, BILL_NO, BILL_NAME, COMMITTEE, PROC_RESULT, AGE*, PROPOSER, COMMITTEE_ID
ALLBILLV2 의안정보 통합 API: ERACO*, BILL_ID, BILL_NO, BILL_KND, BILL_NM, PPSR_KND, PPSL_DT, JRCMIT_NM, RGS_CONF_RSLT
BILLINFODETAIL 의안 상세정보: BILL_ID*
BILLINFOPPSR 의안 제안자정보: BILL_ID*
BILLRCPV2 의안 접수목록: ERACO, BILL_ID*
BPMBILLSUMMARY 법률안 제안이유 및 주요내용: BILL_NO*
TVBPMBILL11 법률안 심사 및 처리(의안검색): BILL_ID, BILL_NO, AGE*, BILL_NAME, PROPOSER, PROPOSER_KIND, CURR_COMMITTEE_ID, CURR_COMMITTEE, PROC_DT, PROC_RESULT_CD, BILL_ID_REF
BILLJUDGECONF 의안 위원회심사 회의정보 조회: BILL_ID*
BILLJUDGE 의안 심사정보(예ㆍ결산 제외): ERACO
TVBPMCONFINFO 소위 심사정보(법률안): AGE*, BILL_NO, BILL_ID, ENROLL_TYPE
nojepdqqaweusdfbi 국회의원 본회의 표결정보: HG_NM, POLY_NM, MEMBER_NO, VOTE_DATE, BILL_NO, BILL_NAME, BILL_ID*, CURR_COMMITTEE, RESULT_VOTE_MOD, CURR_COMMITTEE_ID, MONA_CD, AGE*
ncocpgfiaoituanbr 의안별 표결현황: BILL_ID, BILL_NO, BILL_NAME, CURR_COMMITTEE, CURR_COMMITTEE_ID, PROC_RESULT_CD, BILL_KIND_CD, AGE*
ncwgseseafwbuheph 위원회 회의록: TITLE, CLASS_NAME, DAE_NUM*, COMM_NAME, CONF_DATE*, SUB_NAME, DEPT_CD
VCONFDETAIL 회의록별 상세정보: CONF_ID*
VCONFBLLLIST 회의별 안건목록: CONF_ID*
WEBCASTVCONF 영상회의록 목록: ERACO, CONF_DT
npeslxqbanwkimebr 국회의원 영상회의록(발언영상): CT1*, TAKING_DATE*, TITLE, ESSENTIAL_PERSON
ALLSCHEDULE 국회일정 통합 API: SCH_KIND, SCH_DT
nrsldhjpaemrmolla 위원회별 일정: MEETING_DATE, MEETING_TIME, SESS, DEGREE, TITLE, COMMITTEE_NAME, UNIT_CD*, HR_DEPT_CD
nttmdfdcaakvibdar 위원회별 전체회의 일정: MEETING_DATE, MEETING_TIME, SESS, DEGREE, TITLE, COMMITTEE_NAME, UNIT_CD*, HR_DEPT_CD
nrkqqbvfanfybishu 위원회별 소위원회 일정: MEETING_DATE, MEETING_TIME, SESS, DEGREE, TITLE, COMMITTEE_NAME, UNIT_CD*, HR_DEPT_CD
napvpafracrdkxmoq 위원회별 공청회 일정: MEETING_DATE, MEETING_TIME, SESS, DEGREE, TITLE, COMMITTEE_NAME, UNIT_CD*, HR_DEPT_CD
nekcaiymatialqlxr 본회의 일정: MEETINGSESSION, CHA, TITLE, MEETTING_DATE, UNIT_CD*
NAMEMBEREVENT 의원실 행사 정보:
nfcoioopazrwmjrgs 국회의원 세미나 일정: TITLE, DESCRIPTION, SDATE, NAME, LOCATION
nbqbmccpamsvwebkn 국회의원 정책 세미나 개최 현황: TITLE, HOST_DT*, HOST_INS_NAME, ATTENDANCE_NAME1, ATTENDANCE_NAME2
npbzvuwvasdqldskm 국회의원 기자회견: TAKING_DATE*, TITLE, PERSON
ALLNASPBLM 국회발간물 통합 API: MTR_DIV, MTR_TTL
ALLNARSPBLM 국회입법조사처 제공 자료 통합 API: MTR_DIV, MTR_TTL
ALLNABOPBLM 국회예산정책처 제공 자료 통합 API: MTR_DIV, MTR_TTL
ALLNAFIPBLM 국회미래연구원 제공 자료 통합 API: MTR_DIV, MTR_TTL
ALLNANETPBLM 국회도서관 제공 자료 통합 API: MTR_DIV, MTR_TTL
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| size | No | ||
| params | No | ||
| service | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, but it only states that this is a generic OpenAPI call and marks required request variables with an asterisk. It does not disclose pagination behavior, authentication requirements, rate limits, error handling, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is front-loaded and states the tool's role, but the body is a very long bullet list of service IDs and fields without grouping or formatting aids. The list appears necessary given the generic schema, yet it is dense and not optimally organized for quick scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a high-complexity generic API caller with no annotations, no output schema, and 0% schema description coverage, so the description needs to explain more than service IDs and request fields. It omits return format, pagination semantics, error behavior, and how the generic tool relates to its many specialized siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates substantially by listing accepted service IDs and the per-service request variables, including which variables are required. It still does not explain the page and size parameters or the expected types and formats for the nested params values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this is a generic OpenAPI caller for the Open Assembly Information service and lists concrete service IDs with their Korean resource names, so the agent can identify what each call retrieves. However, it never distinguishes this generic caller from the many dedicated sibling tools such as assembly_members, assembly_bills, and assembly_votes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to invoke the tool by passing a service ID and request variables, but gives no guidance on when to choose this generic tool over the dedicated sibling tools or when not to use it. There are no exclusions, prerequisites, or alternative-selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assembly_publicationsA
국회 소속기관 발간물 검색(법제실·입법조사처·예산정책처·미래연구원·국회도서관). 제목·구분은 부분일치, 결과는 작성일 최신순. 입법조사처 "이슈와 논점"·예산정책처 "NABO Focus"·도서관 "최신외국입법정보" 같은 구분명은 div 로 거른다.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | 작성일 끝 | |
| div | No | 발간물 구분 검색어, 예: 이슈와 논점, NABO Focus | |
| from | No | 작성일 시작 | |
| limit | No | 기본 30 | |
| query | No | 제목 검색어 | |
| source | No | 기관, 기본 all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose non-obvious behavior: title/div use partial matching and results are sorted by 작성일 descending. It does not mention pagination beyond the schema's limit, or whether date filters are inclusive, but the matching and ordering semantics are the important traits here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with what is searched and where, then matching/sorting behavior, then the div filtering tip. Dense but every clause carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-optional-parameter, no-annotation, no-output-schema read tool, the description covers scope, matching rules and result ordering, which is what an agent needs to call it correctly. Minor gaps (date inclusivity, page-vs-limit behavior) remain but are low-risk.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so baseline is 3, but the description adds real value: it clarifies that query (제목) and div (구분) are partial-match fields, and it names concrete div values (이슈와 논점, NABO Focus, 최신외국입법정보) that go beyond the schema's single example. Date range and source semantics are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (검색) and resource (국회 소속기관 발간물) and enumerates the five issuing institutions, so the agent knows exactly what corpus is searched. It doesn't explicitly contrast itself with siblings like assembly_bills or assembly_search, but the resource is distinctive enough to separate them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the description (search publications, filter by institution via source, by category via div), and the div examples give practical routing hints. There is no explicit when-to-use/when-not statement or comparison to assembly_search or assembly_bills, so the agent must infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assembly_scheduleC
국회 일정 통합(본회의·위원회·국회행사·세미나).
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | YYYY-MM-DD, YYYY-MM 또는 YYYY. 결과가 15만 자를 넘으면(연 단위 전체 등) 오류이니 달로 나누거나 kind·committee 로 좁힌다 | |
| kind | No | 일정종류, 예: 국회행사, 위원회 | |
| committee | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and it says nothing about read-only behavior, response shape, or failure modes. The only noted operational constraint (a ~150,000-character result limit forcing month-level splitting) lives in the schema, not the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with a clear head term (국회 일정 통합) front-loaded, followed by the scope enumeration. No filler, though the brevity borders on under-specification rather than economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no annotations and no output schema, the description omits error behavior, result limits, and how to combine date with kind/committee. An agent would need to open the schema to avoid the documented overflow error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, and the description adds no parameter meaning at all. The date parameter carries detailed format and size-limit guidance in the schema, but the committee parameter has no description anywhere and the interaction between date granularity and kind/committee narrowing is only hinted at in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (국회 일정) and enumerates the aggregated event types (본회의·위원회·국회행사·세미나), which signals an integrated calendar view. It implicitly distinguishes itself from narrower siblings like assembly_committee_meetings, but never names them, so the differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this aggregated schedule versus assembly_committee_meetings or assembly_live. Nothing states prerequisites, typical callers, or when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assembly_searchA
통합 전문 검색. (1) 로컬 색인: 이 MCP 로 한 번이라도 가져온 회의록 발언·자막 녹화·검토보고서·국감 결과보고서 본문을 날짜와 상관없이 찾는다. 띄어쓰기는 무시하고(전세사기=전세 사기), 낱말은 모두 들어 있어야 한다. "따옴표"로 묶으면 한 낱말. (2) remote: 국회도서관 회의록 전문 검색으로 가져온 적 없는 회의까지 찾는다(형태소 검색이라 낱말이 나뉘어 일치할 수 있음). 기본 auto 는 로컬이 0건일 때만 원격을 본다. 근거를 인용할 때는 hit 의 url·offset 으로 원문을 열어 확인한다.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ||
| from | No | 문서 날짜 시작(국감 보고서는 날짜가 없어 빠진다) | |
| limit | No | 기본 20 | |
| order | No | 기본 relevance | |
| query | Yes | 검색어. 공백으로 나눈 낱말 AND, "구절" | |
| offset | No | 로컬 결과 다음 쪽(next_offset) | |
| remote | No | 국회도서관 원격 검색, 기본 auto | |
| sources | No | minutes 회의록, caption 자막, bill_report 의안 보고서, audit_report 국감 보고서 | |
| speaker | No | 발언자 이름 일부(회의록·자막) | |
| committee | No | 위원회명 일부 | |
| remote_page | No | 원격 결과 쪽(10건씩) | |
| remote_detail | No | 일치 발언을 열어 볼 원격 회의 수, 기본 3 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does substantial work: it discloses that the local index is limited to previously fetched content, that remote matching is morphological so terms may split-match, that auto defers remote until local is empty, and that verification requires opening url/offset. Auth, rate limits, and result-size behavior are not covered, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first phrase, then two numbered mode blocks plus a default-behavior clause and a verification clause. Every sentence carries payload; density is high for a single paragraph but nothing is redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter hybrid local/remote search with no annotations and no output schema, the description supplies the mode-selection logic, matching semantics, fallback behavior, and citation-verification procedure via hit.url/offset and next_offset. What remains (per-field filtering, pagination sizes) is covered by the rich schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 92%, so the baseline is 3, but the description adds real meaning beyond the schema for the query tokenization (spaces ignored, AND of all terms, quoted phrases) and especially for remote=auto (remote consulted only on zero local hits), which the schema only labels '기본 auto'. Parameters like speaker, committee, and sources get no prose treatment and rely entirely on schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (통합 전문 검색) and explicitly enumerates what is searched: 이 MCP로 가져온 회의록 발언·자막·검토보고서·국감 보고서 본문 plus remote 국회도서관 회의록. The '이미 가져온 것만' scoping implicitly separates it from the fetch-oriented siblings, but no sibling is named, so an agent must infer the boundary with assembly_meeting_speeches or assembly_index.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for each mode: local for anything already fetched regardless of date, remote for meetings never fetched, and the default auto only falls back to remote when local returns 0 hits. It also tells the agent to open hit.url/offset to verify before citing. No explicit alternatives or 'do not use when' routing to sibling tools, which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assembly_speech_clipsA
국회의원 발언영상 목록(회의 당일 저녁~다음 날 공개). 회의별로 누가 몇 번, 몇 분 질의했는지 준다. 발언 원문은 없다. member 를 주면 그 의원의 영상 구간(답변자·길이·영상 링크)까지 준다. 국감 회의 제목엔 위원회명이 없고 피감기관만 있다.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | 회의일 | |
| title | No | 회의 제목 일부, 예: 국정감사, 행정안전위원회 | |
| member | No | 의원 이름 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses publication latency (evening of the meeting day through the next day), states what is absent (no transcripts), and describes how the response expands when member is supplied (답변자·길이·영상 링크). It omits pagination, result caps, and any auth/rate context, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short sentences, each adding a distinct fact (timing, payload, exclusion, member behavior, title caveat), with the core purpose front-loaded. The telegraphic style is dense but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter, annotation-free tool with no output schema, the description covers what comes back, when the data exists, what it excludes, and a title-filter pitfall. Only the absence of pagination/result-size information leaves a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema: it explains that member switches the output to per-segment video data (answerer, length, link) and warns that audit meeting titles contain only the audited institution, not the committee name. That is real guidance the schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (국회의원 발언영상 목록) plus the shape of the payload (per-meeting counts and minutes per speaker), and explicitly excludes transcripts ("발언 원문은 없다"), which implicitly separates it from assembly_meeting_speeches. It never names a sibling tool outright, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the data-availability window (회의 당일 저녁~다음 날 공개) and the no-transcript caveat, and the note that audit meeting titles carry only the audited institution is a real operational hint for the title filter. However, it never says when to prefer assembly_meeting_speeches or assembly_live_captions instead, leaving the routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assembly_votesC
본회의 표결: 의안별 찬반 집계와 정당별·의원별 표결.
| Name | Required | Description | Default |
|---|---|---|---|
| party | No | ||
| member | No | ||
| bill_id | Yes | 의안ID(PRC_…) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden but discloses almost nothing: not that it is a read-only lookup, not whether party/member act as filters or grouping dimensions, not whether results are paginated or capped, and not what happens when a bill has no recorded vote. Only the data facets are stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence naming the resource first, then the returned facets. Zero filler, though the compressed noun-phrase style makes the parameter roles harder to parse than a short clause would.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does substitute somewhat for the absent output schema by enumerating what comes back (tally plus party and member breakdowns). But for a 3-parameter read tool with no annotations and only one documented parameter, an agent is left guessing about filtering behavior and result shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 33% — only bill_id (의안ID, PRC_…) is documented. The description partially compensates by naming 정당별 and 의원별, which maps to the otherwise undocumented party and member parameters and implies they narrow or group results. It does not say whether they are filters or groupings, nor whether they can be combined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and scope: plenary vote results, with per-bill yes/no tallies plus party-level and member-level breakdowns. An agent can tell this is the vote-record endpoint rather than a member, bill-text, or speech endpoint. It lacks an explicit verb and does not name a sibling it differs from, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives, even though assembly_bill_detail plausibly also surfaces vote information for a bill. No prerequisites, no exclusions, no indication of whether bill_id is mandatory for all queries despite it being required in the schema.
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.
17 tool updates
v0.1.0- First observed
assembly_audit_reports - First observed
assembly_bill_detail - First observed
assembly_bill_reports - First observed
assembly_bills - First observed
assembly_committee_meetings - First observed
assembly_index - First observed
assembly_live - First observed
assembly_live_captions - First observed
assembly_live_captions_record - First observed
assembly_meeting_speeches - First observed
assembly_members - First observed
assembly_openapi - First observed
assembly_publications - First observed
assembly_schedule - First observed
assembly_search - First observed
assembly_speech_clips - First observed
assembly_votes
TDQS
Scored across 17 tools
Tools are mostly distinct: bills, bill detail, reports, votes, meetings, speeches, clips, and captions each target a different resource or stage of the legislative workflow. The main ambiguity comes from assembly_openapi, a generic catch-all that overlaps with many specialized tools, and from the dense clustering of assembly_committee_meetings / assembly_meeting_speeches / assembly_speech_clips / assembly_live_captions, where the boundaries require careful reading.
All tool names use a consistent assembly_ snake_case prefix with noun/action phrasing (assembly_bills, assembly_bill_detail, assembly_votes, assembly_schedule). Minor ordering differences like assembly_live_captions_record are still readable and fit the overall convention.
At 17 tools the set is slightly above the ideal 3-15 range, but the breadth of the Assembly domain (members, bills, meetings, votes, reports, schedule, publications, live captions, search) justifies most tools. Each appears to earn its place rather than duplicating another.
Coverage is strong: members, bill lifecycle, bill detail, attachments, votes, meeting minutes, speeches, live captions, audit reports, publications, schedule, and search/index are all represented. Remaining gaps (e.g., committee rosters or member-level activity outside the generic OpenAPI passthrough) are minor and mostly workable via assembly_openapi.
Maintenance
Related MCP Connectors
Korean Assembly bills tracked hourly in English, plus Korean Acts and decrees article by article.
Korean law: statutes, precedents, ordinances, treaties and citation verification (법제처 API).
Search speech in podcasts, government meetings, and your own audio: speakers, entities, timestamps.
- GavelinOAuthai.gavelin
Search bills and speaker-attributed hearing transcripts across all 50 US state legislatures.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to access real-time legislative data from the Korean National Assembly including members, bills, votes, and schedules through 276 Open APIs. Supports dual transport modes (stdio/HTTP), configurable Lite/Full tool profiles, and in-memory caching for efficient querying.21 npm94MIT
- AlicenseAqualityBmaintenanceMCP server for the Korean National Assembly Open API, enabling querying of bills, members, votes, committees, and more via natural language.2054 PyPIApache 2.0
- AlicenseBqualityDmaintenanceEnables LLM clients to search and analyze bills, members, committees, meetings, votes, and reports from the South Korean National Assembly OpenAPI through MCP tools.26MIT
- AlicenseCqualityCmaintenanceEnables search and retrieval of speech turns from Korea's National Assembly records using Korean or English natural-language queries, with citation-ready context and tools for exploring committees and meetings.51Apache 2.0