DAPA MCP
DAPA MCP
DAPA MCP ist ein schreibgeschützter Model Context Protocol-Server, der die Aufgaben der südkoreanischen Verteidigungsbeschaffung unterstützt. Anstelle des LLM-Gedächtnisses ruft er die Open API zur gemeinsamen Nutzung nationaler Rechtsinformationen des Ministeriums für Gesetzgebung und das quellenversehene DAPA_info ab. Das Kernprinzip ist Search → Retrieve → Verify → Compare → Cite → Explain.
v0.1.0 implementiert Core und die erste Stufe der Rechtsinformations-MCP-Parität. Es bietet lokales stdio und 17 Tools, den offiziellen DAPA-Katalog für Gesetze und Verwaltungsvorschriften, strukturierte Gesetzesdetails, Abfrage der Änderungshistorie und Stichtagssuche. Streamable HTTP, Patente, Fachartikel, Nachrichten, öffentliche Daten und der Vergleich alter und neuer Paragraphen sind noch nicht implementiert und in ROADMAP.md aufgeführt.
Warum MCP?
Offizielle Quellen werden bevorzugt, um geltende Gesetze nicht mit früheren oder aufgehobenen Vorschriften zu verwechseln.
Zitierte Gesetzesnamen, Paragraphen und Aktenzeichen werden erneut abgerufen und verifiziert.
NOT_FOUND(normales Nullergebnis) wird vonSOURCE_UNAVAILABLE(Timeout, 429, 5xx, beschädigte Antworten) unterschieden.Auch Organisations- und Aufgabenwissen wird mit Quelle, Prüfdatum und Verifizierungsstatus versehen.
Related MCP server: Korean Law MCP Server
Architektur
Claude / Gemini / Codex / MCP Client
│ stdio
▼
DAPA MCP Tool Registry
├── LawProvider ── 국가법령정보 Open API
├── DapaCatalogProvider ── DAPA 공식 목록 스냅샷
└── DapaInfoProvider ── DAPA_infoAusführliche Informationen zu Entwurf und Benchmarks finden Sie in docs/ARCHITECTURE.md.
Installation und Ausführung
Voraussetzung ist Node.js 20.19 oder höher.
npm install
cp .env.example .env
npm run build
npm test
npm run startnpm run start ist ein stdio-JSON-RPC-Server; es ist daher normal, dass er im Terminal wartet. Allgemeine Protokolle werden nicht auf stdout geschrieben.
Führen Sie den folgenden Befehl aus, um die offizielle Liste der DAPA-Gesetze und Verwaltungsvorschriften zu aktualisieren.
npm run sync:dapa-catalogUm jeden Eintrag des Katalogs mit den aktuellen Suchergebnissen der Open API zur gemeinsamen Nutzung nationaler Rechtsinformationen abzugleichen und eine Liste der nicht übereinstimmenden Einträge zu erstellen, führen Sie den folgenden Befehl aus. Dem Entwicklungsskript wird der öffentliche Standard-Authentifizierungswert explizit übergeben.
LAW_API_OC=dusgh4847 npm run audit:dapa-catalogFühren Sie es in PowerShell wie folgt aus:
$env:LAW_API_OC = "dusgh4847"
npm run audit:dapa-catalog
Remove-Item Env:LAW_API_OCDas Ergebnis wird unter DAPA_info/legal/coverage-report.json gespeichert. missing bedeutet, dass der Titel in der offiziellen DAPA-Liste nicht identisch in der API für nationale Rechtsinformationen gefunden wurde; eine rechtliche Nichtexistenz wird damit nicht behauptet. Einträge mit Aufhebungs- oder Erlasshistorie, abweichender Titelschreibweise oder nur als Datei vorliegendem Originaltext müssen gesondert geprüft werden. title_variant bedeutet, dass der DAPA-Anzeigetitel vom kanonischen Titel der API abweicht, aber ein entsprechendes Dokument bestätigt wurde. metadata_mismatch bedeutet, dass der Titel übereinstimmt, aber Erlassnummer oder Erlassdatum der Verwaltungsvorschrift abweichen; external_only bezeichnet Gesetze, für die DAPA nur einen externen Link zum Originaltext außerhalb der nationalen Rechtsinformationen bereitstellt.
Dieser Bericht hängt vom Katalog-Snapshot ab. Wenn der Katalog erneut synchronisiert wird, muss auch das Audit erneut ausgeführt werden. Die Anzahl von missing bedeutet keine rechtliche Nichtexistenz, sondern Kandidaten, die noch nicht mit API-Dokumenten verknüpft sind. Daher wird nicht davon ausgegangen, dass der gesamte Katalog vollständig durch die Inhalte der nationalen Rechtsinformationen abgedeckt ist.
Um das Menü 업무·정책 und die Inhalte der Unterregisterkarten jeder Seite in DAPA_info/policy/catalog.json zu aktualisieren, führen Sie den folgenden Befehl aus. Es werden nur DAPA-interne Seiten gesammelt; Duplikate werden anhand von menuSeq und der endgültigen Seiten-ID entfernt. Bei gleichzeitigem Ausführen wird die Sperrdatei erkannt und die zweite Synchronisierung beendet.
npm run sync:dapa-policyFühren Sie den folgenden Befehl aus, um die offiziellen 14 Kategorien und 40 Detail-APIs nacheinander auf dem aktuellen Produktionsserver aufzurufen und die Verknüpfung von Liste und Inhalt sowie Fehler zu prüfen. Die benutzerdefinierten Standard-Beispielcodes verwenden die L/A/O-Codes aus dem offiziellen Leitfaden und können über Umgebungsvariablen ersetzt werden.
LAW_API_OC=dusgh4847 npm run backtest:law-apiUmgebungsvariablen
Name | Erforderlich | Standardwert | Beschreibung |
| Nein |
| Öffentlicher Standard-Authentifizierungswert für die gemeinsame Nutzung nationaler Rechtsinformationen; kann mit einem eigenen Wert überschrieben werden |
| Nein |
| Anfrage-Timeout |
| Nein |
| Obergrenze für 429/5xx-Wiederholungen |
| Nein |
| TTL des API-Suchcaches (Millisekunden); |
| Nein |
| Maximale Bytezahl für JSON/HTML-API-Antworten |
| Nein |
| Maximale Bytezahl für Anhang- und Formulardateien |
| Nein |
| Maximale Zeichenzahl der JSON-Ausgabe der MCP-Tools für die Gesetzes-API |
| Nein |
| Wurzelverzeichnis des öffentlichen Wissens |
Der Standard-Authentifizierungswert dusgh4847 wird in Code und Dokumentation offengelegt, damit jeder ihn sofort verwenden kann. Wenn Sie einen eigenen Wert verwenden möchten, überschreiben Sie ihn mit LAW_API_OC. .env ist von Git ausgeschlossen.
Einstellungen für die API der nationalen Rechtsinformationen
Die Gesetzes-API kann ohne separates Authentifizierungsverfahren mit dem Standard-Authentifizierungswert verwendet werden. Wenn Sie einen eigenen Authentifizierungswert haben, übergibt der MCP-Client ihn beim Start des Servers als Umgebungsvariable LAW_API_OC; in source_health wird law: healthy angezeigt.
MCP-Tools
Tool | Rolle |
| Suche nach Gesetzen, Verwaltungsvorschriften, Rechtsprechung, Verfassungsgerichtsentscheidungen, Auslegungsfällen und Verwaltungsbeschwerden |
| Ruft die Kandidatenliste der API für nationale Rechtsinformationen ab und anschließend den Detailtext und die Paragraphen der einzelnen Dokumente |
| Detailabfrage einer Suchergebnis- |
| Abfrage der Änderungshistorie von Gesetzen (Erlass, Änderung, Aufhebung) |
| Katalogabfrage der 14 Kategorien und 40 Listen-/Inhalts-APIs der DAPA-bezogenen nationalen Rechtsinformationen |
| On-Demand-Abfrage offizieller Listen und Inhalte über die Katalog- |
| Automatische Verknüpfung der Inhalts-API über Listen- |
| Verifiziert Gesetzesparagraphen und Aktenzeichen |
| Suche im öffentlichen Wissen über Organisation, Begriffe und Aufgaben |
| Detailabfrage von Organisationsnamen und Aliasen |
| Suche in den Inhalten des Menüs Arbeit·Politik und der Unterregisterkarten |
| Abruf des vollständigen Texts von Arbeit·Politik über die Suchergebnis-ID |
| Suche in der offiziellen Liste der DAPA-Gesetze und Verwaltungsvorschriften |
| Detailabfrage eines Eintrags der offiziellen DAPA-Liste |
| Abruf von DAPA-Einträgen in Verbindung mit den Texten der nationalen Rechtsinformationen |
| Synchronisierungsstatus der offiziellen DAPA-Liste |
| Prüfung der Provider-Konfiguration und des Status |
committee_decision bietet nur einen Eingabevertrag an; der eigentliche Provider ist noch nicht eingerichtet. asOfDate wird über die Stichtagssuche eflaw des Ministeriums für Gesetzgebung verarbeitet; wenn für diesen Stichtag keine Daten vorhanden sind, wird NOT_FOUND zurückgegeben. currentOnly hat den Standardwert true und schließt auch bei Verwaltungsvorschriften ausdrückliche Verlaufs- und Aufhebungsstatus aus. Für historische Daten verwenden Sie currentOnly: false; wenn die API erneut mit dem aktuellen Stand abgefragt werden muss, verwenden Sie forceRefresh: true. Die Standard-Cache-TTL für erfolgreiche Suchergebnisse beträgt 5 Minuten.
Umfang der API der nationalen Rechtsinformationen
list_legal_apis gibt nur die API-Metadaten der folgenden 14 Kategorien zurück. Die tatsächlichen Antwortinhalte werden nicht in den MCP-Kontext oder in DAPA_info geladen, da query_legal_api die Listen zum Zeitpunkt der Anfrage vom Ministerium für Gesetzgebung abruft und get_legal_api_body den Inhalt über den Identifikator oder den Anhang-Link des Listenergebnisses abruft. Für jede API in list_legal_apis werden ein ausführbares bodyTool und, falls eine separate Inhalts-API vorhanden ist, auch bodyApiId zurückgegeben.
Kategorie | Verarbeitung von Liste/Inhalt |
Vorabberatungsstellungnahmen | Liste/Inhalt der |
Erstauslegung der Zentralbehörden | Liste/Inhalt der DAPA- |
Wissensbasis Rechtsinformationen | 9 Arten: Begriffe, Paragraphen, zugehörige Gesetze, intelligente Suche |
Benutzerdefiniert | 6 Arten von Listen und Paragraphen für Gesetze, Verwaltungsvorschriften und kommunale Satzungen; |
Rechtsbegriffe | Liste/Inhalt von |
Anhänge und Formulare | Listen für Gesetze, Verwaltungsvorschriften und kommunale Satzungen sowie Textextraktion aus HWP/HWPX/PDF/XLSX/DOCX-Originalen |
Verträge | Liste/Inhalt von |
Verfassungsgerichtsentscheidungen | Liste/Inhalt von |
Gesetzesauslegungsfälle | Liste/Inhalt von |
Verwaltungsbeschwerdefälle | Liste/Inhalt von |
Gesetze | Liste/Inhalt von |
Verwaltungsvorschriften | Liste/Inhalt von |
Kommunale Satzungen | Liste/Inhalt von |
Rechtsprechung | Liste/Inhalt von |
Da es im offiziellen Leitfaden keine eigenständige Inhalts-API für Anhänge und Formulare gibt, werden 별표서식파일링크 oder 별표서식PDF파일링크 aus der Listenantwort an die attachmentUrl von get_legal_api_body übergeben. Der Server lädt nur offizielle Links des Ministeriums für Gesetzgebung herunter und wandelt die Dateien in Markdown-Inhalte um. Benutzerdefinierte Listen werden über die verknüpfte allgemeine Gesetzesinhalts-API aufgelöst, benutzerdefinierte Paragraphen-APIs über ihre eigenen Antworten.
Der DAPA-Katalog bewahrt die Metadaten zu Umfang, Klassifikation und Erlass der offiziellen Website; die tatsächlichen Paragraphen und rechtlichen Texte werden über die API zur gemeinsamen Nutzung nationaler Rechtsinformationen in search_legal und get_legal_detail abgerufen.
MCP-Client-Verbindung
Ersetzen Sie in allen Beispielen /absolute/path/to/DAPA MCP durch den tatsächlichen absoluten Pfad und bauen Sie zuerst.
Codex CLI
Der aktuelle Befehl zum Registrieren von lokalem stdio in der Codex CLI hat folgende Form.
codex mcp add dapa-mcp -- node "/absolute/path/to/DAPA MCP/dist/index.js"
codex mcp listClaude Code
Verwenden Sie das stdio-Format aus der offiziellen Claude-Code-MCP-Dokumentation.
claude mcp add --transport stdio dapa-mcp -- \
node "/absolute/path/to/DAPA MCP/dist/index.js"
claude mcp listClaude Desktop empfiehlt derzeit, den lokalen Server als Desktop-Erweiterung bereitzustellen. Da v0.1.0 kein .mcpb-Paket bereitstellt, verwenden Sie während der Entwicklung die Claude-Code-stdio-Verbindung.
Gemini CLI
Fügen Sie es gemäß der offiziellen Gemini-CLI-MCP-Dokumentation zu mcpServers in ~/.gemini/settings.json hinzu.
{
"mcpServers": {
"dapa-mcp": {
"command": "node",
"args": ["/absolute/path/to/DAPA MCP/dist/index.js"],
"timeout": 30000,
"trust": false
}
}
}ChatGPT und OpenAI API
Die MCP-Tools des ChatGPT-Custom-Connectors und der OpenAI Responses API verwenden die Remote-MCP-server_url. Da v0.1.0 nur lokales stdio unterstützt, wird keine Unterstützung für direkte Verbindungen angegeben. Nach Phase 2, in der Streamable HTTP und Authentifizierung hinzugefügt werden, erfolgt die Verbindung gemäß der offiziellen OpenAI-Dokumentation für Remote MCP.
Hinzufügen von DAPA_info
Strukturierte Einträge werden als JSON mit einem items-Array erstellt. Die Pflichtfelder sind id, name, category, description, source, sourceUrl, lastVerifiedAt, verified. Nicht verifizierte Informationen werden mit verified: false gespeichert und nicht als offizielle Tatsache dargestellt. Beschreibendes Material bleibt im Markdown-Format, stellt jedoch klar, dass es keine Rechtsgrundlage ersetzt.
{
"items": [
{
"id": "term-example",
"name": "예시 용어",
"aliases": [],
"category": "terminology",
"description": "쉬운 설명",
"source": "공식 문서명",
"sourceUrl": "https://example.go.kr/source",
"lastVerifiedAt": "2026-08-27",
"verified": false
}
]
}Entwicklung und Verifizierung
npm run lint
npm run typecheck
npm test
npm run buildDie Tests umfassen Normalisierung, lokale Wissenssuche, einen offiziellen API-Wirefake, 429/5xx- und beschädigte Antworten, Zitatverifizierung sowie tatsächliche stdio-MCP-Listen und -Aufrufe.
Sicherheits- und Rechtshinweise
Speichern Sie nur veröffentlichbare Informationen. Personenbezogene Daten, nichtöffentliche Geschäftsinformationen, Militärgeheimnisse und interne Netzwerkadressen sind verboten.
MCP-Ergebnisse ersetzen weder Rechtsberatung noch politische Entscheidungen.
verified: truebedeutet, dass die betreffenden Daten aus einer offiziellen Quelle abgerufen wurden, nicht, dass eine rechtliche Bewertung garantiert wird.Nachrichten werden auch dann nicht als Rechtsgrundlage verwendet, wenn sie in Zukunft hinzugefügt werden.
Datenquellen und Lizenz
Benchmark: korean-law-mcp, MIT
Der Quellcode wird unter der MIT-Lizenz verteilt. Rechte und Nutzungsbedingungen der bereitgestellten Daten richten sich nach den Richtlinien der jeweiligen Ursprungsorganisation. Weitere Hinweise finden Sie in NOTICE.
Available Tools
17 toolsdapa_catalog_statusBRead-onlyIdempotent
DAPA 공식 법령·행정규칙 카탈로그의 동기화 상태를 반환합니다.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety is well covered. The description adds that the returned value is about catalog synchronization, but it does not describe response freshness, format, possible failure modes, or any operational behavior beyond the annotated read-only nature.
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 concise sentence that states the resource and the returned information without filler or redundant phrasing. It is appropriately minimal for a zero-parameter status tool.
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 parameterless, read-only status tool, the description is mostly adequate, and the annotations cover side-effect safety. However, there is no output schema, and the description does not explain what 'synchronization status' means or what possible values an agent should expect, leaving some ambiguity about how to interpret the response.
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?
The input schema has no properties, so there are no parameters to document. With 0 parameters, the baseline of 4 applies, and the description justifiably contains no parameter-level detail.
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 a specific action and resource: it returns the synchronization status of the DAPA official laws and administrative rules catalog. However, it does not explicitly differentiate itself from siblings such as source_health, which may also relate to status-like queries.
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 about when to use this tool versus alternatives, and no exclusions or preferred conditions. The only implied usage is 'when you need the catalog sync status,' but the description does not discuss sibling tools or decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dapa_legal_catalog_itemARead-onlyIdempotent
DAPA 공식 법령·행정규칙 카탈로그 항목을 ID로 조회합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds the domain scope but does not describe return shape, not-found behavior, or input errors; still, no contradiction exists and the annotations carry most of the burden.
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 with no filler. It immediately names the domain and operation, and is appropriately sized for a simple one-parameter lookup tool.
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 get-by-ID operation with rich annotations and a single required parameter, the description is mostly sufficient. It lacks an explicit statement of what is returned or how to obtain the ID, but the level of complexity is low and the basic retrieval contract is clear.
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?
The only parameter, id, is documented in the schema as a non-empty string, and the description adds only that the lookup is 'by ID'—which the tool name already conveys. With 0% schema description coverage, the description needed to compensate by explaining what kind of ID this is or how it relates to the catalog, but it does not.
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 action (retrieve), a precise resource (DAPA official statutes/administrative rules catalog item), and the lookup method (by ID). This clearly distinguishes it from sibling search/list tools even though no sibling is named.
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 'by ID' phrasing implies this tool is for known catalog-item IDs rather than searching, but the description never explicitly says when to use it versus sibling tools such as search_dapa_legal_catalog or get_dapa_legal_content. Usage context is present only by implication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dapa_legal_contentBRead-onlyIdempotent
DAPA 카탈로그 ID를 국가법령정보 문서와 연결해 실제 본문을 조회합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds the mapping behavior from DAPA catalog ID to national legal document, but it does not disclose error behavior, availability limits, or output characteristics beyond 'actual body text.'
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 Korean sentence states the input, the linking action, and the return object with no filler. Every phrase earns its place.
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 one-parameter, read-only, idempotent tool, the core call semantics are present: supply a DAPA catalog ID and receive the legal body text. However, the lack of sibling-differentiation guidance and any note on output format or errors leaves a moderate gap for an agent choosing among many similar legal-content tools.
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?
The schema only defines 'id' as a required string with no description, so the tool description carries the burden; it usefully identifies the parameter as a DAPA catalog ID and explains its role in resolving the legal document. It stops short of providing a format, example, or accepted identifier pattern, which would add more value.
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 uses a specific verb ('조회합니다') and identifies the resource: it connects a DAPA catalog ID to a national legal information document and retrieves the actual body text. '실제 본문' signals that this is a content-fetching tool rather than a catalog or search tool, though it does not explicitly differentiate from siblings.
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 a use case (you have a DAPA catalog ID and need the legal body text) but provides no explicit when-to-use or when-not-to-use guidance. With siblings such as get_legal_api_body, search_legal_content, and get_dapa_legal_catalog_item, the agent is not given criteria for selecting this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dapa_organizationARead-onlyIdempotent
방위사업청 조직명 또는 별칭으로 조직 상세를 조회합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | 조직명 또는 별칭 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the method of lookup (by name or alias) but does not go beyond that; no contradictions exist.
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, tightly written Korean sentence that conveys the resource, the lookup key, and the operation. Every word earns its place; there is no redundancy or 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 simple, read-only lookup tool with one well-documented parameter and rich safety annotations, the description is complete enough for an agent to select and invoke it correctly. No output schema exists, but the phrase '조직 상세' sufficiently indicates the return is organization detail information.
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%: the single required parameter 'query' is already documented as '조직명 또는 별칭' (organization name or alias). The description essentially restates this same meaning without adding format, examples, or disambiguation guidance, so it adds no new semantic value 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?
The description uses a specific verb ('조회합니다' - retrieves) with a clear resource ('방위사업청 조직 상세' - DAPA organization details) and a clear lookup method (by organization name or alias). It is unambiguous and distinct from the legal/policy-focused sibling tools, though it does not explicitly contrast itself with any sibling.
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 provides no guidance on when to use this tool versus alternatives, no exclusions, and no context about when this lookup is appropriate. The sibling names imply it is organization-related rather than legal/policy-related, but that inference is left entirely to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dapa_policy_pageARead-onlyIdempotent
search_dapa_policy에서 받은 ID로 업무·정책 페이지 전체 본문을 조회합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds that the tool returns the entire page body, which is useful, but it doesn't disclose return format, error behavior, or any additional constraints. This is adequate but not rich.
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 with no filler. It efficiently communicates the action, resource, and parameter source in one compact statement.
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 simple: one parameter, no output schema, and rich safety annotations. The description covers what the tool returns (full body text) and the prerequisite ID source. It is complete enough for the low complexity, though a bit more detail about response format would be ideal.
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 by explaining that the single 'id' parameter is the ID received from search_dapa_policy. This gives the parameter semantic meaning beyond the raw schema, though it does not specify the ID format or how to extract it from search results.
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 the action ('retrieves the full body text') and the resource ('work/policy page'), and specifies that the ID comes from search_dapa_policy. This distinguishes it from sibling tools like get_dapa_legal_content and search_dapa_policy itself.
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 provides a clear usage context: call this after search_dapa_policy to fetch the full page body for a returned ID. It does not explicitly list exclusions or alternatives, but the ID-source constraint makes the intended workflow obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_legal_api_bodyARead-onlyIdempotent
목록 apiId와 결과 식별자로 대응 본문 API를 자동 호출합니다. 별표·서식은 목록의 공식 파일 링크를 내려받아 HWP/HWPX/PDF/XLSX/DOCX 본문을 텍스트로 추출합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| apiId | Yes | ||
| limit | No | ||
| query | No | ||
| customCode | No | 맞춤형서비스 vcode | |
| documentId | No | ||
| forceRefresh | No | 캐시를 사용하지 않고 API에서 다시 조회합니다. | |
| articleNumber | No | 조번호 4자리와 가지번호 2자리 | |
| attachmentUrl | No | 별표·서식 목록 응답의 공식 파일/PDF 링크 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal read-only, open-world, idempotent, non-destructive behavior. The description usefully adds implementation behavior beyond that: multiple underlying body APIs may be auto-invoked, and attachment/form bodies are obtained by downloading and text-extracting specific file formats. It does not cover failure/error or rate-limit behavior, but that is a minor gap for a read-only convenience wrapper.
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 front-loaded sentences accomplish the entire description: the primary behavior first, then the special attachment/form extraction path. There is no redundant or filler 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?
The description is complete enough for recognizing the tool's role, and the annotations cover safety. But with nine parameters, a large apiId enum, and no output schema, it does not specify return structure or which parameters are required for particular apiId categories, and it does not route the agent away from sibling body/detail tools.
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 only 44%, and the description partially compensates by explaining that apiId refers to a list API and attachmentUrl is the official file/PDF link used for file extraction. However, it leaves page/limit/query/documentId mapping implicit, referring only to a vague 'result identifier', so it does not fully make up for the missing parameter 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?
The description clearly states the operation: automatically call the corresponding body API using a list apiId and a result identifier, and for attachment/form results download the official file link and extract text from HWP/HWPX/PDF/XLSX/DOCX. It does not explicitly name a sibling tool or contrast itself with query_legal_api/get_legal_detail, so it stops short of full 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?
The intended context is implied: use it when you already have a list apiId and a result identifier and need the full body, or when you need attachment/form text from an official file link. It gives no explicit when-not-to-use guidance or alternatives, so an agent must infer the boundary against sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_legal_detailARead-onlyIdempotent
search_legal에서 받은 documentId로 공식 문서 상세를 조회합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | Yes | 검색 결과의 documentId | |
| sourceType | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, and non-destructive behavior. The description adds that this is a detail retrieval for official documents but does not explain error handling, missing-document behavior, or whether sourceType must match the search result. With annotations covering the safety profile, this is adequate but not rich.
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 the key precondition front-loaded and no filler. It is appropriately minimal while still conveying the core behavior and input origin.
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 simple and annotations cover safety, but the required sourceType parameter is effectively unexplained in both schema and description, and no output shape is described. An agent could likely attempt the call, but the description leaves enough inferential gaps that correct invocation is not fully guaranteed.
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?
The description adds useful meaning to documentId by tying it to search_legal's result, though this largely echoes the schema's '검색 결과의 documentId'. sourceType has only enum values and no described semantics or relation to documentId, and with 50% schema coverage the description does not fully compensate for that gap.
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 the verb ('조회합니다' – retrieves), the resource ('공식 문서 상세' – official document detail), and the input source ('search_legal에서 받은 documentId'). This makes it distinguishable from sibling content/list tools by anchoring it to search_legal's output.
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 provides a clear precondition: the documentId must come from search_legal, which tells the agent the appropriate calling sequence. However, it does not explicitly mention alternative tools or when not to use this tool, so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_legal_historyARead-onlyIdempotent
공식 국가법령정보에서 법령의 제정·개정·폐지 연혁을 조회합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| lawName | Yes | 정확한 법령명 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive behavior, so the description carries a lower burden. It adds scoping context for the kind of legal history returned, but says nothing about pagination, limit behavior, or response shape.
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?
One compact sentence with no filler. It front-loads the source, resource, and action, making the core meaning immediately accessible.
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?
Adequate for a simple read-only lookup: purpose is clear and annotations cover safety semantics. However, no output schema exists and there is no clarification of what the history response contains or how limit applies, leaving minor but real gaps for an agent.
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 only 50%: lawName has a brief description while limit has none. The tool description does not compensate by clarifying limit semantics or adding detail about how lawName should be formatted. With moderate-to-low coverage, this is a notable gap.
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 action (조회) and a precise resource: the enactment/amendment/repeal history of statutes from official national legal information. The word '연혁' clearly differentiates this from sibling detail/content/search 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?
No explicit alternatives or when-not-to-use guidance, despite many overlapping siblings such as get_legal_detail and search_legal. The scope of history retrieval implies usage, but explicit routing would be more helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_legal_apisBRead-onlyIdempotent
국가법령정보 공동활용의 DAPA 관련 14개 범주와 목록·본문 API target을 조회합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, and the description's '조회합니다' is consistent with that. The description adds useful scope about the 14 categories and API targets, but does not disclose return format, pagination, or error behavior; this is acceptable but not rich.
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 short sentence with no filler, and the key domain scope is front-loaded. Every word contributes to identifying what the tool operates on.
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 explanation of return values, DAPA, or 'API target', the description leaves important context implicit. It also does not clarify how the optional category parameter affects the returned results, which is essential for a tool meant to list or filter API targets.
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 0%, so the description needed to explain the category parameter's meaning and behavior. It only mentions '14개 범주' without saying whether category is optional, what each enum value maps to, or how omitting it changes the result. The enum values themselves are left fully undocumented.
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 specifies a concrete retrieval action ('조회합니다') and a defined resource: 14 DAPA-related categories and the list/body API targets of the national legal information joint-use service. It is more specific than a mere restatement of the tool name, though 'API target' remains somewhat jargon-heavy.
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 tool versus the many siblings like get_legal_detail, search_dapa_legal_catalog, or get_legal_api_body. An agent would have to infer its discovery/list role from context rather than from explicit instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_legal_apiARead-onlyIdempotent
list_legal_apis의 apiId로 공식 목록·본문을 온디맨드 조회합니다. 콘텐츠를 MCP에 사전 적재하지 않습니다.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| apiId | Yes | ||
| limit | No | ||
| query | No | ||
| customCode | No | 맞춤형서비스 vcode | |
| documentId | No | ||
| forceRefresh | No | 캐시를 사용하지 않고 API에서 다시 조회합니다. | |
| articleNumber | No | 조번호 4자리와 가지번호 2자리 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as read-only, idempotent, and non-destructive. The description adds meaningful behavioral context by stating that content is not preloaded into MCP and that retrieval happens on demand. This goes beyond the annotations, though it does not detail caching, rate limits, or response behavior.
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 one concise sentence that front-loads the core action and includes only the most important distinguishing behavior. Every word earns its place, and there is no redundant restatement of the tool name or 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?
The tool has 8 parameters, a large apiId enum, and no output schema, yet the description is very short. It does not clarify which parameters apply to which apiId variants, what the response looks like, or how pagination works. For such a flexible and potentially complex tool, the description is not sufficiently complete.
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 8 parameters and only 38% schema description coverage, the description should compensate for undocumented parameters. It only explains the provenance of apiId and says nothing about page, limit, query, documentId, or how they interact with different apiId values. This leaves a significant parameter understanding gap.
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 a specific action (on-demand retrieval of official lists and full texts) and a specific resource (content identified by the apiId from list_legal_apis). It also distinguishes itself from list_legal_apis by noting that it does not preload content into MCP, which helps separate the listing and querying responsibilities.
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 clear context: use this tool with an apiId obtained from list_legal_apis for on-demand retrieval. It does not explicitly list exclusions or alternative tools, but the reference to list_legal_apis provides a practical usage path. This is clear context without full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_dapa_infoBRead-onlyIdempotent
공개 출처 기반 DAPA_info에서 조직·용어·업무 지식을 검색합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| categories | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that the search is based on public sources, which is useful context, but it does not disclose other behavioral details such as result ordering, filtering behavior, pagination, or any limitations. It is consistent with the annotations, so no contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single succinct Korean sentence with no filler or redundancy. It front-loads the key information—public-source basis, resource name, and subject scope—and every phrase earns its place. This is an appropriately sized description for a straightforward search tool.
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 three parameters, no output schema, and a large set of sibling tools, the description is too minimal to be contextually complete. It does not explain return values, how queries should be structured, what categories control, or how this tool relates to similar search tools. The read-only annotations cover safety but not operational completeness.
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 0%, so the description carries the full burden of explaining parameters like query, limit, and categories. It completely fails to do so, mentioning only the broad knowledge types that loosely correspond to category values without explaining their meaning, format, or defaults. The description adds no value beyond the schema's structural definitions.
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 verb (검색합니다, 'searches'), a clear resource (DAPA_info), and a scoped set of subjects (조직·용어·업무 지식, 'organization, terminology, and work knowledge'). This makes the tool's function clear at a glance, but it does not explicitly differentiate it from sibling tools such as search_legal or search_dapa_policy, relying on the resource and subject scope to imply the distinction.
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 when to use the tool: when searching DAPA_info for organizational, terminology, or work knowledge. However, it provides no explicit guidance about when not to use it, nor does it mention alternatives among the many sibling search tools. The usage context is present but not fully developed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_dapa_legal_catalogCRead-onlyIdempotent
방위사업청 공식 홈페이지의 법령·행정규칙 카탈로그를 검색합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| limit | No | ||
| query | Yes | ||
| category | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, and the search description is fully consistent with those. The description adds only the source/scope (official DAPA catalog of laws and admin rules) but does not disclose any additional behavioral details such as result pagination or data freshness.
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 entire description is one short sentence with no filler, and the key verb and resource appear immediately. It is efficiently front-loaded and has no redundant 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 four-parameter tool with no output schema and several closely related sibling tools, this description is too thin. It fails to clarify parameter semantics, return shape, or how to choose among the sibling search tools, leaving important call decisions underspecified.
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 0% and the description provides no parameter semantics. Parameters like query, kind, limit, and especially category are left unexplained, so the description does not compensate for the schema's lack of field documentation.
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 verb ('searches') and a concrete resource: the DAPA official website catalog of laws and administrative rules. It is clear and tied to the tool name, but it does not explicitly differentiate itself from sibling search tools such as search_legal or search_legal_content.
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?
No usage guidance is given. The description never states when to choose this catalog search over sibling tools, nor does it name any conditions or exclusions, so the agent is left to infer selection criteria from names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_dapa_policyBRead-onlyIdempotent
방위사업청 업무·정책 메뉴와 하위 탭에서 동기화한 공개 본문을 검색합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| section | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, open-world, idempotent, and non-destructive behavior. The description adds useful context that the content is public and synchronized from specific menus, but it does not disclose pagination, ranking, or synchronization freshness.
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 tight sentence with no filler. It front-loads the action and object, making it easy to scan.
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 read-only search with one required parameter, this is minimally viable: an agent can invoke it with just a query. However, the optional section parameter is unexplained, there is no output schema, and the definition does not differentiate it among 15 sibling tools.
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 0%, and the description does not explain query syntax, the meaning of limit, or valid section values. The mention of 'menu and sub-tabs' hints at the section parameter's conceptual scope, but it does not actually map to the parameter.
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: it searches public body text synchronized from the DAPA work/policy menu and its sub-tabs. This makes the tool's scope reasonably distinct from legal-search and general-info siblings, though it does not name an alternative.
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 explicit when-to-use or when-not-to-use guidance. An agent must infer the appropriate context from the name and the phrase 'searches', leaving ambiguity against close siblings like search_dapa_info and search_legal_content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_legalCRead-onlyIdempotent
공식 국가법령정보 API에서 법령·행정규칙·판례·해석례를 검색합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | 법령·판례·해석례 검색어 | |
| types | No | ||
| asOfDate | No | 특정 시점 YYYY-MM-DD; 미지원 시 명시적 오류 반환 | |
| currentOnly | No | ||
| forceRefresh | No | 캐시를 사용하지 않고 API에서 다시 조회합니다. | |
| organization | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, and the description is consistent with them. It adds some source context ('공식 국가법령정보 API') but does not disclose behavioral traits such as result shape, pagination, or API limitations.
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 Korean sentence with no filler; every phrase earns its place. It is concise but is arguably too thin for the tool's complexity, which is more a completeness issue than a conciseness one.
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 7 parameters, 43% schema coverage, no output schema, and many sibling tools, one sentence is insufficient for an agent to invoke the tool correctly and predict its response. Missing details include valid type categories in practice, default behavior of currentOnly, handling of asOfDate, return/response structure, and when to select this over sibling search tools.
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 only 43%; query, asOfDate, and forceRefresh have schema docs, but limit, types, currentOnly, and organization do not. The description's list of categories roughly maps to types but adds no detail on how parameters work, defaults, or unsupported values, so it fails to compensate for the coverage gap.
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 uses a specific verb '검색합니다' and names the resource '공식 국가법령정보 API', enumerating the covered categories (법령, 행정규칙, 판례, 해석례). It makes the tool's scope clear but does not explicitly position it against siblings like search_legal_content or query_legal_api, 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?
No guidance is given on when to prefer this tool over the many siblings such as search_legal_content, query_legal_api, or search_dapa_legal_catalog. The description states only what the tool searches; it gives no exclusions, preconditions, or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_legal_contentCRead-onlyIdempotent
국가법령정보 API에서 후보 문서를 검색하고 각 문서의 최신 상세 본문과 조문을 함께 조회합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | 본문에서 찾을 법률·업무 내용 또는 법령명 | |
| types | No | ||
| asOfDate | No | ||
| currentOnly | No | ||
| forceRefresh | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so the description does not need to cover those. It adds useful context that the tool returns the latest detailed body and provisions together, but it does not explain how the combined operation handles pagination, missing versions, or API failures.
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. It is concise and easy to parse, though it could be slightly better structured by separating the search step from the detail-retrieval 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?
With six parameters, no output schema, and many sibling tools, the description is too thin to be complete. It does not describe the return shape, which documents are considered 'candidates', how the latest version is selected, or what happens when a document has no matching provision.
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 only 17%, so the description carries the burden of explaining parameters, but it does not. The mention of 'latest' vaguely connects to asOfDate and currentOnly, but limit, types, and forceRefresh remain unexplained and uncompensated.
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 operation: searching candidate documents in the 국가법령정보 API and retrieving the latest full text and provisions for each. This goes beyond a generic verb and resource, though it does not explicitly differentiate itself from the many sibling search/detail 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 explicit guidance about when to use this tool versus alternatives like search_legal, get_legal_detail, or query_legal_api. The phrase 'search and retrieve together' implies a combined workflow, but no exclusions or comparison are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_healthARead-onlyIdempotent
각 데이터 Provider의 설정 및 가용 상태를 반환합니다.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the return content (configuration and availability), but it does not disclose behavior such as freshness, failure modes, or how availability is determined.
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 concise sentence that front-loads the action ('returns') and the resource ('configuration and availability status of each data provider'). There is no redundancy or 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 no-parameter read-only status tool, the description is mostly complete and the annotations cover safety. However, there is no output schema and the description only vaguely names 'configuration and availability status' without specifying the exact response shape or fields.
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?
The tool has zero parameters, so the description is not expected to explain parameter semantics. The schema and description are consistent, with 100% coverage of an empty parameter set.
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 the tool returns the configuration and availability status of each data provider, giving a specific verb and resource. It is distinct from the legal-focused sibling tools, though it does not explicitly contrast itself with 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?
The description implies a health/status-check use case but provides no explicit guidance on when to use this tool versus alternatives or any exclusions. An agent would need to infer applicability from the tool name and general context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_citationsARead-onlyIdempotent
법령 조문 또는 사건번호가 공식 출처에 실제 존재하는지 검증합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| citations | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false. The description adds useful context about checking against official sources rather than local data, but it does not disclose what the tool returns or how it behaves when a citation does not exist.
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, focused sentence with no filler. It front-loads the key resource ('statutory provisions or case numbers') and the action ('verify existence'), earning its place entirely.
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 has one simple parameter and strong annotations, which help. However, there is no output schema and the description does not state the return format or per-citation behavior, leaving an important gap for an agent that needs to interpret the verification result.
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 0%, and the description adds some meaning by clarifying that the 'citations' strings are statutory provisions or case numbers. However, it does not provide format examples or further detail about accepted citation syntax, so the parameter semantics are only partially compensated.
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 action ('verifies'), a clear resource ('statutory provisions or case numbers'), and the scope ('actual existence in official sources'). This clearly distinguishes it from the many search/get sibling tools by focusing on existence verification rather than retrieval.
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 the tool should be used when one needs to confirm whether legal citations actually exist, but it provides no explicit guidance about when to use this tool versus alternatives such as search_legal, search_legal_content, or get_legal_detail. No exclusions or conditions are mentioned.
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. Dates show when Glama detected each change.
17 tool updates
v0.1.0- First observed
dapa_catalog_status - First observed
get_dapa_legal_catalog_item - First observed
get_dapa_legal_content - First observed
get_dapa_organization - First observed
get_dapa_policy_page - First observed
get_legal_api_body - First observed
get_legal_detail - First observed
get_legal_history - First observed
list_legal_apis - First observed
query_legal_api - First observed
search_dapa_info - First observed
search_dapa_legal_catalog - First observed
search_dapa_policy - First observed
search_legal - First observed
search_legal_content - First observed
source_health - First observed
verify_citations
TDQS
The set is separated by source and action, but get_legal_detail, get_legal_api_body, get_dapa_legal_content, and search_legal_content all concern retrieving legal document text or detail, creating real selection risk. The five search_* tools are more distinct because their source targets are clearer.
Most tools follow a predictable verb_noun snake_case pattern such as search_*, get_*, and list_*. A few exceptions like source_health and dapa_catalog_status are noun-phrase status checks, and the placement of 'dapa' varies across names.
With 17 tools, this is on the heavier side but each covers a distinct area: official legal APIs, DAPA catalog, policy pages, organization lookup, citation verification, and provider health. The count is slightly above a lean toolkit but not bloated.
The read-only domain is broadly covered with search, detail retrieval, legal history, citation verification, catalog status, policy pages, and organization lookup. Minor gaps remain for enumerated browsing such as listing all policy pages or the full organization tree, but agents can work around them.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Korean public procurement law: rule-engine rulings, statutes search, live court precedents
Korean public procurement law: rule-engine rulings, statutes search, live court precedents
Full-text search over K-IFRS/K-GAAP standards and KASB accounting Q&A for Korean accountants
Resolve, search and verify legal citations against the official sources, with provenance.
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceEnables searching and retrieving Korean legal information including laws, court precedents, legal interpretations, and local ordinances from the Korean National Law Information Center API with intelligent search ranking.-
- FlicenseNot gradedqualityDmaintenanceEnables real-time search and analysis of Korean laws, legal precedents, and administrative rules through the National Law Information Center Open API, allowing AI agents to access official legal information for contract review, compliance, and legal research.73-
- AlicenseNot gradedqualityAmaintenanceEnables exploration of Korean National Assembly data by connecting bills, committee reviews, and official records. Allows users to ask natural language questions and receive structured answers with citations to original documents.26Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI programs to search and retrieve approved public regulations with citations, supporting PDF, HWP, HWPX, and DOCX formats.43MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ai-studying-man/DAPA-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server