Korea Business Verify (KBV)
Server Details
Find and verify Korean businesses by name or number. 10 free calls/day, then pay-per-call (x402).
- Status
- Healthy
- Uptime
- 100.0% over 32 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- Wonderfulian/kbv-server
- GitHub Stars
- 1
- Server Listing
- Korea Business Verify (KBV)
TDQS
Scored across 4 tools
find_korean_business resolves names to registration numbers; check_korean_business_status and check_korean_business_batch both return status and tax type, but batch is explicitly for lists up to 100 and adds debarment; verify_korean_business is a KYB identity match against representative name and opening date. The single-vs-batch overlap is mitigated by descriptions, but an agent might still hesitate when only one number needs debarment data.
All four tools use snake_case with a predictable verb_korean_business pattern: check_korean_business_batch, check_korean_business_status, find_korean_business, verify_korean_business. No camelCase or mixed verb styles appear.
Four tools map cleanly to lookup by name, single-number status, batch screening, and identity verification. Each tool earns its place, and the count is well-scoped for a focused KYB verification server.
The surface covers finding a registration number, checking status, batch screening with debarment, and KYB identity matching. A minor gap is that public-procurement debarment is only exposed through the batch tool, though a single number can be passed there as a workaround.
Available Tools
4 toolscheck_korean_business_batchBatch check Korean business statusARead-onlyIdempotentInspect
Screen a list of up to 100 Korean businesses in a single call by their 10-digit business registration numbers (사업자등록번호). Returns one entry per input number (order preserved) with registration status, tax type, and any public-procurement debarment ("부정당업자 제재") on record — a company can be perfectly active and still barred from public contracts. The summary counts how many are currently debarred. Use this for supplier, vendor or customer list screening instead of repeated single checks. Recently checked numbers may be answered from a cache up to 24 hours old (marked "cache": true). Sources: Korea National Tax Service, Public Procurement Service.
| Name | Required | Description | Default |
|---|---|---|---|
| business_numbers | Yes | 1-100 Korean business registration numbers; hyphens/spaces allowed |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | |
| summary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations (readOnly/idempotent/openWorld) by disclosing that results may come from a cache up to 24 hours old and are marked with "cache": true, that response order matches input order, and that the summary counts currently debarred companies. It also names the upstream sources (National Tax Service, Public Procurement Service) and the crucial nuance that an active company can still be procurement-debarred.
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 action, the limit and the identifier before any detail, and each subsequent clause carries information (return shape, debarment caveat, cache, sources). It runs slightly long with parenthetical Korean terms and multiple asides in a single sentence, but nothing 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?
Covers input constraints, output shape, ordering, caching staleness, summary semantics and data provenance — more than enough for an agent to call this confidently, even though an output schema also exists. The debarment-vs-active distinction in particular prevents a plausible misinterpretation of results.
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% and the schema already documents hyphen/space tolerance, so the baseline would be 3. The description adds real value the schema lacks: the '10-digit' format expectation and the 100-item cap (the schema only sets minItems: 1, with no maxItems). It does not explain ordering of the input array or what happens on partial failures.
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+scale ('Screen a list of up to 100 Korean businesses in a single call') and immediately identifies the input identifier (10-digit 사업자등록번호). The phrase 'instead of repeated single checks' implicitly separates it from the singular sibling check_korean_business_status, so an agent can route without opening any 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?
Gives an explicit use case ('supplier, vendor or customer list screening') and an explicit alternative to avoid ('repeated single checks'). It does not name the sibling tools directly nor mention when a single lookup or find/verify would be preferable, so it stops short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_korean_business_statusCheck Korean business statusARead-onlyIdempotentInspect
Check the registration status of a Korean business by its 10-digit business registration number (사업자등록번호). Returns whether the business is active, suspended, or closed, plus tax type. Data source: Korea National Tax Service, real-time. The number 1248100998 (Samsung Electronics) is exempt from the daily free tier, so you can exercise this tool while building without spending your allowance.
| Name | Required | Description | Default |
|---|---|---|---|
| business_number | Yes | 10-digit Korean business registration number; hyphens/spaces allowed, e.g. "123-45-67890" |
Output Schema
| Name | Required | Description |
|---|---|---|
| cache | Yes | |
| source | Yes | |
| status | Yes | |
| tax_type | Yes | |
| checked_at | Yes | |
| closed_date | Yes | |
| business_number | Yes | |
| status_code_raw | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so safety is covered. The description adds valuable context beyond annotations: the data source (Korea National Tax Service, real-time), the return values (active/suspended/closed + tax type), and the daily free-tier limit. It doesn't detail error behavior or rate-limit thresholds beyond the tier note.
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 focused sentences front-loaded with the core purpose, followed by return values and a practical tip about the free tier. The free-tier example is slightly parenthetical but earns its place by aiding development.
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?
An output schema exists, so return values needn't be explained in depth, yet the description summarizes them anyway for agent convenience. Covers input, behavior, and data source. Missing explicit prerequisites (e.g., API key) and sibling differentiation, but otherwise complete for a single-param lookup 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 description coverage is 100% and the schema already specifies the 10-digit format, hyphen/space allowance, and an example. The description restates the parameter but adds no syntax or format details beyond the schema, 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?
States a specific verb (check), resource (Korean business registration status), and the exact input (10-digit business registration number). Distinguishes from siblings like check_korean_business_batch (plural) and find_korean_business (search) by implying single-record lookup.
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 (look up a specific business's status) but there are no explicit when-to-use/when-not statements or references to the sibling tools. An agent must infer that batch is for multiple numbers and find is for name-based lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_korean_businessFind a Korean business by nameARead-onlyIdempotentInspect
Find a Korean company by name (English or Korean) when you do not know its 10-digit business registration number — the number every other tool here needs. Returns ranked candidates with a confidence score and discriminating evidence (registration status, tax type, region), because a name can match several distinct companies: "Samsung Electronics" matches four. Sources: DART (disclosure filers, English names) and the Public Procurement Service registry (small businesses).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Company name in English or Korean, e.g. "Samsung Electronics" or "삼성전자" | |
| limit | No | Maximum candidates to return (default 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds genuinely new behavioral context: results are ranked with a confidence score, ambiguity is expected ('Samsung Electronics' matches four), and the data comes from two named registries (DART, Public Procurement Service) — which explains coverage limits an agent would otherwise not anticipate.
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 core purpose, then the usage condition, then the return shape and sources. The Samsung example is the one apparent indulgence but it concretely demonstrates the ambiguity the tool exists to resolve, so it earns its place. 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?
With no output schema, the description carries the burden of describing return values and does so (ranked candidates, confidence score, discriminating evidence such as registration status, tax type, region). It also discloses data provenance, which is the remaining thing an agent needs to judge result trustworthiness.
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 both parameters are already documented, including the English/Korean name forms that the description repeats. The description's note that a name can match several distinct companies implicitly justifies the `limit` parameter, but it never discusses `limit` or its default directly, so the added meaning is indirect.
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 (find a Korean company by name) and immediately scopes it against the rest of the toolset by noting it applies when the 10-digit registration number is unknown — 'the number every other tool here needs.' An agent can distinguish it from verify_korean_business and check_korean_business_status without opening any 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?
Gives an explicit selection condition (you do not know the registration number) plus the implied inverse: the sibling tools are the ones that need the number. It also sets expectations for the ambiguous case and names the upstream sources, so the agent knows when this is the right entry point.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_korean_businessVerify Korean business identityARead-onlyIdempotentInspect
Verify that a Korean business registration number matches the provided representative name and opening date. Use for KYB / due-diligence before transacting with a Korean company. Returns match result plus current status.
| Name | Required | Description | Default |
|---|---|---|---|
| address | No | Optional business address to include in the match (maps to NTS b_adr) | |
| opening_date | Yes | Business opening date in YYYY-MM-DD format, e.g. "2015-03-02" | |
| business_number | Yes | 10-digit Korean business registration number; hyphens/spaces allowed | |
| representative_name | Yes | Representative (CEO) name as registered, e.g. "홍길동" |
Output Schema
| Name | Required | Description |
|---|---|---|
| cache | Yes | |
| source | Yes | |
| status | Yes | |
| tax_type | Yes | |
| checked_at | Yes | |
| closed_date | Yes | |
| identity_match | Yes | |
| business_number | Yes | |
| status_code_raw | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the behavioral detail that it checks a match against the registration number and returns 'match result plus current status.' However, it does not elaborate on edge cases, data-source behavior, or status semantics, and with an output schema present the return-value mention adds limited extra value.
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 three short sentences: purpose, use case, and return summary. Every sentence contributes distinct information, and the core verification behavior is front-loaded. 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?
For a single-record verification tool with full schema coverage, read-only/idempotent annotations, and an output schema, the description is largely complete. It states what is verified, when to use it, and what kind of result to expect. The only notable gap is lack of explicit differentiation from sibling tools, but that does not prevent 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 100%, so the baseline is 3. The description reinforces that representative_name and opening_date are used as match criteria, but it does not add meaning beyond the schema for business_number, address, or format details. The schema already documents formats and the optional address mapping.
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 resource: 'Verify that a Korean business registration number matches the provided representative name and opening date.' This clearly states the tool's core function. It does not explicitly distinguish itself from siblings like check_korean_business_status, but the 'match' framing and single-record verification make the purpose reasonably clear.
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 a clear usage context: 'Use for KYB / due-diligence before transacting with a Korean company.' This tells an agent when the tool is appropriate. It does not explicitly contrast with batch or status-only siblings, so exclusions and when-not-to-use guidance are missing, but the stated context is sufficient for most selection decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
check_korean_business_batch2 fields changed- added
Output schema / properties / results / items / properties / sanctionsAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "active": { + "type": "boolean" + }, + "begins_on": { + "type": "string" + }, + "ends_on": { + "type": "string" + }, + "institution": { + "type": "string" + }, + "law": { + "type": "string" + }, + "status": { + "type": "string" + } + }, + "required": [ + "active" + ], + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / summary / properties / sanctionedAdded value: +{ + "type": "number" +}
1 tool update
- Added
find_korean_business
3 tool updates
- First observed
check_korean_business_batch - First observed
check_korean_business_status - First observed
verify_korean_business
Related MCP Connectors
Verify Korean companies by BRN/사업자등록번호: official NTS status, VAT type, English profile, financials
AI calls to South Korean numbers (+82), results and transcripts. 한국 번호 전용. Account & OAuth required.
Verify a Chinese supplier before you pay: company identity, status, risk signals. x402 per call.
Check if a Korean online seller has an active mail-order registration (통신판매업) by business number
1
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables MCP clients to validate Korean business registration numbers and check their current registration status through public API lookups. It supports single and batch verification queries.3Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to look up Korean businesses nationwide by region and industry, retrieve public-procurement vendor cards with contract records, and find open public bids from KONEPS, Defense e-Procurement, LH, K-water and Nuri-jangteo. It is read-only and requires no authentication, returning up to five results per tool call on the free tier.MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to verify Korean ground-truth data through MCP and REST, including business registration, addresses, corporations, apartment trade prices, and statutes, metered with prepaid credits.-

io.github.opendataofficial
AlicenseAqualityAmaintenanceEnables querying Korean procurement corporate profiles and qualifications using business registration numbers through natural language, leveraging the public data API from data.go.kr.239 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.