streamable-httpMITupdated 12d ago
KBV is a hosted MCP server that verifies Korean businesses in real time β free during its pilot phase. Give it a 10-digit Korean business registration number (μ¬μ μλ±λ‘λ²νΈ) and it returns the registration status (active / suspended / closed), tax type, and β optionally β whether the number matches a representative name and opening date. Data comes live from the Korea National Tax Service (NTS) and is returned as clean, English-normalized JSON.
What can you do with Korea Business Verify (KBV)?
Korea Business Verify (KBV) β MCP Server
KBV is a hosted MCP server that verifies Korean businesses in real time β free during its pilot phase. Give it a 10-digit Korean business registration number (μ¬μ μλ±λ‘λ²νΈ) and it returns the registration status (active / suspended / closed), tax type, and β optionally β whether the number matches a representative name and opening date. Data comes live from the Korea National Tax Service (NTS) and is returned as clean, English-normalized JSON.
No account, no API key, no installation β connect any MCP-capable agent to one URL:
https://kbv-server-f7vfitmlkq-du.a.run.app/mcp
Built for AI agents and developers doing KYB / due-diligence on Korean companies: procurement, contracting, payments, marketplace onboarding.
Quick facts
| MCP endpoint | https://kbv-server-f7vfitmlkq-du.a.run.app/mcp |
| Transport | MCP Streamable HTTP (POST) |
| Health check | GET https://kbv-server-f7vfitmlkq-du.a.run.app/health β {"ok":true} |
| Authentication | None required |
| Price | Free (pilot) β pay-per-call planned, see Pricing |
| Tools | check_korean_business_status, check_korean_business_batch, verify_korean_business |
| REST API | GET /v1/business/{number}/status Β· POST /v1/business/verify Β· POST /v1/business/batch β see REST API |
| Data source | Korea National Tax Service (κ΅μΈμ²), official open-data API β queried live per request |
| Data license | Korean government open data, no usage restrictions (μ΄μ©νλ½λ²μ μ ν μμ) |
| Privacy | Query contents are never logged β see Privacy |
| Region | Google Cloud Run, Seoul (asia-northeast3) |
Connect your agent
Claude (claude.ai)
- Settings β Connectors β Add custom connector
- URL:
https://kbv-server-f7vfitmlkq-du.a.run.app/mcp - Enable the connector in a chat and ask: "Check the status of Korean business 124-81-00998."
Claude Code (CLI)
claude mcp add --transport http kbv https://kbv-server-f7vfitmlkq-du.a.run.app/mcp
ChatGPT
- Settings β Connectors (requires a plan with connector / developer-mode support)
- Add a custom MCP connector with URL
https://kbv-server-f7vfitmlkq-du.a.run.app/mcp - Enable it in a conversation and ask about a Korean business number.
Cursor
Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"korea-business-verify": {
"url": "https://kbv-server-f7vfitmlkq-du.a.run.app/mcp"
}
}
}
Any other MCP client
Use transport Streamable HTTP with the endpoint above. Clients must send Accept: application/json, text/event-stream (standard MCP clients do this automatically). Opening /mcp in a browser returns Method not allowed by design β browsers send GET, MCP uses POST. Use /health for a visual liveness check.
Tools
check_korean_business_status
Check the registration status of a Korean business by its 10-digit business registration number.
Input β hyphens/spaces allowed; normalized internally:
{ "business_number": "124-81-00998" }
Output (real example β Samsung Electronics):
{
"business_number": "1248100998",
"status": "active",
"status_code_raw": "01",
"tax_type": "general",
"closed_date": null,
"checked_at": "2026-08-24T10:08:20.082Z",
"source": "Korea National Tax Service (NTS)",
"cache": false
}
Field reference:
status:active|suspended|closed|not_registeredtax_type:general|simplified|exempt|non_profit|unknownclosed_date: ISO date ("2023-01-31"), only for closed businesses, otherwisenullchecked_at: ISO 8601 UTC timestamp of the NTS querycache:trueonly when the NTS API was temporarily unavailable and a cached result (max 24 h old) was served;checked_atthen reflects the original fetch time
A number that is well-formed but not registered with the NTS returns "status": "not_registered" (not an error).
check_korean_business_batch
Check up to 100 businesses in a single call β for screening supplier or customer lists without 100 round-trips.
Input:
{ "business_numbers": ["124-81-00998", "220-81-62517"] }
Output β one entry per input number (order preserved, same schema as above) plus a summary:
{
"results": [
{ "business_number": "1248100998", "status": "active", "...": "..." },
{ "business_number": "2208162517", "status": "active", "...": "..." }
],
"summary": { "total": 2, "active": 2, "suspended": 0, "closed": 0, "not_registered": 0 }
}
- The whole batch is answered with one upstream NTS query.
- Numbers checked within the last 24 hours may be served from cache (marked
"cache": truewith their originalchecked_at) and are excluded from the upstream query. - More than 100 numbers, or any malformed number, is rejected before anything is queried.
verify_korean_business
Verify that a business registration number matches the provided representative name and opening date (KYB identity check), and get the current status in the same call.
Input:
{
"business_number": "124-81-00998",
"representative_name": "νκΈΈλ",
"opening_date": "1969-01-13",
"address": "κ²½κΈ°λ μμμ"
}
representative_nameandopening_date(YYYY-MM-DD) are required.addressis optional and improves match precision.- Names and addresses should be given as registered with the NTS (Korean script).
Output β same schema as above plus identity_match:
{
"business_number": "1248100998",
"status": "active",
"status_code_raw": "01",
"tax_type": "general",
"closed_date": null,
"checked_at": "2026-08-24T10:08:23.483Z",
"source": "Korea National Tax Service (NTS)",
"cache": false,
"identity_match": false
}
identity_match is true only when the NTS confirms that the number, representative name, and opening date all match its records.
REST API
The same three operations are available as plain HTTP endpoints β same JSON schemas as the MCP tools, no auth:
# Registration status (hyphens in the number are fine)
curl https://kbv-server-f7vfitmlkq-du.a.run.app/v1/business/124-81-00998/status
# KYB identity check
curl -X POST https://kbv-server-f7vfitmlkq-du.a.run.app/v1/business/verify \
-H "Content-Type: application/json" \
-d '{"business_number":"124-81-00998","representative_name":"νκΈΈλ","opening_date":"1969-01-13"}'
# Batch status check (up to 100 numbers)
curl -X POST https://kbv-server-f7vfitmlkq-du.a.run.app/v1/business/batch \
-H "Content-Type: application/json" \
-d '{"business_numbers":["124-81-00998","220-81-62517"]}'
HTTP status codes: 200 success (including cache-served results), 400 invalid input, 503 NTS temporarily unavailable with no cached result.
Errors
Errors are returned as MCP tool errors (or REST 4xx/5xx responses) with a machine-readable JSON body:
error |
Meaning |
|---|---|
invalid_business_number |
Input is not a 10-digit number, or the date is not YYYY-MM-DD. Nothing was queried. |
batch_limit_exceeded |
More than 100 numbers in one batch call. Nothing was queried. |
invalid_request |
(REST only) The request body does not match the expected shape. |
upstream_unavailable |
The NTS API is down or over quota and no cached result exists. Retry later. |
Data source and license
- All data comes from the Korea National Tax Service (κ΅μΈμ²) via the official Korean government open-data API (data.go.kr: μ¬μ μλ±λ‘μ 보 μ§μνμΈ λ° μνμ‘°ν μλΉμ€), queried live on every request β KBV stores no business database.
- The underlying dataset is published under the Korean government open-data policy with no usage restrictions (μ΄μ©νλ½λ²μ: μ ν μμ), so responses may be used commercially and cited freely.
- KBV normalizes the Korean-language, code-based NTS responses into the stable English JSON schema documented above; raw NTS payloads are never passed through.
- Freshness: queries hit the NTS registry directly. Newly registered businesses may take 1β2 business days to appear in the NTS system itself.
Privacy
- Query contents are never logged. Business numbers, representative names, and addresses appear in no server logs and are sent nowhere except the official NTS API that answers the query.
- Server logs contain only request counts, outcomes, and latency metrics.
- A short-lived in-memory cache (24 h max, hashed keys) exists solely so the service can answer during NTS outages; it is never shared or exported.
Pricing
- Currently free while KBV is in its pilot phase. No account or key is needed.
- Pay-per-call pricing (in the ~$0.02β$0.05 per call range, agent-payable via x402) is planned for a later phase; the free tier for light usage is expected to remain.
- Fair use: the upstream NTS quota is shared. Heavy automated traffic may be rate-limited before paid tiers launch.
FAQ
What is a Korean business registration number? A 10-digit identifier (μ¬μ
μλ±λ‘λ²νΈ, often written 123-45-67890) issued by the Korea National Tax Service to every registered business in South Korea.
Can I check whether a Korean company is still operating? Yes β call check_korean_business_status; "status": "active" means the business is currently registered and operating, "closed" includes the closure date.
Can I verify a Korean company's identity before a transaction (KYB)? Yes β call verify_korean_business with the number, representative name, and opening date; identity_match: true means the NTS confirms all three match.
Can I screen a whole supplier list at once? Yes β check_korean_business_batch (or POST /v1/business/batch) takes up to 100 numbers per call and returns per-number results plus a summary.
Do I need an API key? No. Connect to the MCP URL and call the tools, or call the REST endpoints directly.
Self-hosting / development
The server is open for local development (Node.js β₯ 22, TypeScript, Express + official MCP SDK):
cp .env.example .env # put your own data.go.kr DECODING key in NTS_SERVICE_KEY
npm install
npm run dev # β http://localhost:8080 (MCP at /mcp)
npm test # vitest, upstream fully mocked β no network
Deployment guide (Google Cloud Run): see DEPLOY.md. Architecture and design spec: DESIGN.md.
Install
Add Korea Business Verify (KBV) to your client. Pick the one you use.
claude mcp add --transport http korea-business-verify-kbv https://kbv-server-f7vfitmlkq-du.a.run.app/mcpcodex mcp add korea-business-verify-kbv --url https://kbv-server-f7vfitmlkq-du.a.run.app/mcp{
"mcpServers": {
"korea-business-verify-kbv": {
"url": "https://kbv-server-f7vfitmlkq-du.a.run.app/mcp"
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"servers": {
"korea-business-verify-kbv": {
"type": "http",
"url": "https://kbv-server-f7vfitmlkq-du.a.run.app/mcp"
}
}
}Add to `.vscode/mcp.json` in your workspace.
{
"mcpServers": {
"korea-business-verify-kbv": {
"url": "https://kbv-server-f7vfitmlkq-du.a.run.app/mcp"
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"korea-business-verify-kbv": {
"serverUrl": "https://kbv-server-f7vfitmlkq-du.a.run.app/mcp"
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
Score
39 / 100
Incomplete
- Documentation25/25
- Maintenance19/25
- Trust13/20
- Capability0/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 5 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 6 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint β no local install
Version history
| Versions | Published |
|---|---|
| 0.2.0Latest | Aug 27, 2026 |
| 0.1.0 | Aug 24, 2026 |