Skip to main content
Glama

Korea Invoices (POPBiLL 전자세금계산서 issue, query & NTS transmit)

Server Details

Korea POPBiLL e-tax-invoice: AI agents issue, query & transmit e-invoices, stateless BYO.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.4/5 across 3 of 3 tools scored. Lowest: 3.9/5.

Server CoherenceA
Disambiguation5/5

Each tool has a uniquely defined purpose: creating an invoice, querying an existing one, and forcing NTS transmission. No overlap in functionality.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case: create_invoice, query_invoice, send_to_nts.

Tool Count4/5

With only 3 tools, the set is minimal but well-scoped for the core tasks of issuing, querying, and transmitting invoices. It feels slightly thin but reasonable for a focused server.

Completeness2/5

Missing critical operations like canceling an invoice and searching or listing invoices. The domain lifecycle is incomplete, as agents cannot handle cancellations or look up invoices without a known key.

Available Tools

3 tools
create_invoiceAInspect

Issue a Korean 전자세금계산서 (electronic tax invoice) in ONE step (registIssue = 즉시발행) through POPBiLL, and register it. The invoice is issued to the buyer immediately; POPBiLL transmits it to 국세청 (NTS / National Tax Service) automatically the NEXT day (익일전송) unless you call send_to_nts to force it now. The invoicer (seller) 사업자번호, name and CEO come from you; the buyer (invoicee) and the line items come in the arguments. 부가세 (VAT) is computed for you server-side: taxType 과세 = 10% (per-line tax = floor(supplyCost x 0.1), 원 단위 절사), 영세/면세 = 0. A unique 문서관리번호 (mgt_key) is generated automatically if you do not pass one (rule: "K" + base36 timestamp + random, uppercased, <=24 chars, unique per business). Returns the mgt_key and the assigned ntsConfirmNum (국세청 승인번호). Required credential headers (set once in your MCP client, per-request, never stored): x-popbill-linkid + x-popbill-secretkey (your OWN Linkhub keys, free from linkhub.co.kr 파트너 신청) + x-popbill-corpnum (your 10-digit 사업자번호, the invoicer/seller — the invoice is issued FROM this business). Optional header x-popbill-mode: test (default = POPBILL_TEST, no fiscal effect) | prod (production, real fiscal effect, live 국세청 transmission). Optional owner-policy headers x-agentpay-max-amount / x-agentpay-approval-above / x-agentpay-allowed-tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
memoNoOptional internal memo (not transmitted to NTS).
itemsYesLine items. Each: item_name, qty (positive integer, default 1), unit_cost (KRW, whole won integer, NET / 공급가액 per unit). supplyCost and tax are computed for you.
mgt_keyNoYour 문서관리번호 (unique per your business, 1-24 chars, [A-Z0-9_-]). Auto-generated if omitted.
tax_typeNo과세 (standard, VAT 10%, default) | 영세 (zero-rated export, 0%) | 면세 (exempt, 0%).
write_dateNoInvoice date 작성일자 as YYYYMMDD (or YYYY-MM-DD). Defaults to today in KST.
purpose_typeNo영수 (receipt — already paid, default) | 청구 (charge — payment due).
invoicee_typeNoBuyer type: 사업자 (business, default) | 개인 (individual) | 외국인 (foreigner).
invoicee_emailNoBuyer email for the issue notification (optional but recommended).
invoicee_ceo_nameNoBuyer representative / CEO name (권장 for a 사업자 buyer).
invoicee_corp_numNoBuyer (invoicee) 10-digit 사업자번호 (business registration number, digits only) for a business buyer. Required when invoicee_type is 사업자.
invoicer_ceo_nameYesInvoicer (seller) representative / CEO name (대표자 성명). Required by NTS.
invoicee_corp_nameYesBuyer (invoicee) legal name.
invoicer_corp_nameYesInvoicer (seller) legal business name — your company. The seller 사업자번호 comes from the x-popbill-corpnum header, not here.
Behavior5/5

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

The description extensively discloses behavioral traits beyond annotations: VAT computation details, auto-generation of mgt_key with format rules, transmission timing (next day unless forced), required/optional headers with source instructions, and return values. Annotations only provide flags; the description adds rich operational context.

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

Conciseness4/5

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

The description is dense and informative, with each sentence adding value. It is not front-loaded, as it begins with the action and then delves into details, but given the complexity of the tool, it is appropriately sized. Slight improvements could be made with bullet points for readability.

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

Completeness5/5

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

The description covers the entire workflow: issue, VAT computation, auto-key, transmission, required headers, optional parameters, and return values. It explains behavior with no output schema. Given the tool's complexity and high parameter count, the description is remarkably complete and actionable.

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

Parameters5/5

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

With 100% schema coverage, baseline is 3. The description adds significant meaning beyond the schema: it explains that supplyCost and tax are computed server-side, mgt_key auto-generation rule, write_date default to KST today, and that items are line items with per-unit pricing. This additional context greatly aids correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool issues a Korean electronic tax invoice in one step and registers it via POPBiLL. The verb 'issue' and resource 'invoice' are specific, and the mention of 'registIssue = 즉시발행' and automatic NTS transmission distinguishes the tool's behavior from siblings like send_to_nts, though not explicitly.

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

Usage Guidelines3/5

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

The description explains the overall workflow and mentions send_to_nts for forced transmission, providing some context for when to use alternatives. However, it does not explicitly state when to use this tool versus query_invoice or give clear when-not conditions. The guidance is implied but not directive.

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

query_invoiceA
Read-onlyIdempotent
Inspect

Look up a single 전자세금계산서 by its 문서관리번호 (mgt_key) — GET /Taxinvoice/{MgtKeyType}/{MgtKey}. MgtKeyType selects whose box: SELL (you issued it as the seller — default), BUY (you received it as the buyer), TRUSTEE (you issued it as an entrusted agent / 수탁). Returns the document stateCode and a readable state: 200 발행완료 (issued), 300 국세청 전송대기 (queued for NTS — next-day auto-send unless send_to_nts is called), 320 국세청 전송완료 (NTS transmission succeeded — terminal success), 330 국세청 전송실패 (failed), 400 발행취소 (cancelled), plus the ntsConfirmNum, issue/NTS-send timestamps and totals. Required credential headers (set once in your MCP client, per-request, never stored): x-popbill-linkid + x-popbill-secretkey (your OWN Linkhub keys, free from linkhub.co.kr 파트너 신청) + x-popbill-corpnum (your 10-digit 사업자번호, the invoicer/seller — the invoice is issued FROM this business). Optional header x-popbill-mode: test (default = POPBILL_TEST, no fiscal effect) | prod (production, real fiscal effect, live 국세청 transmission). Optional owner-policy headers x-agentpay-max-amount / x-agentpay-approval-above / x-agentpay-allowed-tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
mgt_keyYesThe 문서관리번호 (mgt_key) returned by create_invoice.
mgt_key_typeNoWhose document box: SELL (default, you are the seller) | BUY (you are the buyer) | TRUSTEE (수탁 agent).
Behavior5/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds significant context: it explains the GET request nature, state code meanings, NTS transmission process, credential headers (required, per-request, never stored), and optional headers. No contradiction with annotations.

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

Conciseness4/5

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

The description is front-loaded with the core purpose and API endpoint. It contains multiple sentences covering state codes, headers, and options. While informative, it could be slightly more concise, but each sentence adds necessary detail for correct usage.

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

Completeness4/5

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

Given the absence of an output schema, the description compensates well by detailing return state codes and timestamps. It also covers credential setup and optional headers. However, it lacks information on error handling or what happens when the invoice is not found.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The tool description adds some nuance (e.g., 'default' for SELL, '수탁' for TRUSTEE) but does not significantly expand beyond the schema descriptions. Thus, a 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool queries a Korean electronic tax invoice by its document management number (mgt_key) via a GET endpoint. The verb 'Look up' and resource 'single 전자세금계산서' make the purpose unambiguous, and it distinguishes itself from create_invoice and send_to_nts by focusing on retrieval.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus siblings. It mentions send_to_nts in the state code explanation but does not provide direct usage context or exclusions. The agent must infer usage from the tool's read-only nature.

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

send_to_ntsA
Idempotent
Inspect

FORCE immediate 국세청 (NTS) transmission of an already-issued 전자세금계산서 — POST /Taxinvoice/{MgtKeyType}/{MgtKey} (override NTS). Normally POPBiLL transmits an issued invoice to NTS automatically the NEXT DAY (익일전송); call this only when you need it sent to the tax authority right now instead of waiting for the next-day batch. It does NOT issue the invoice (create_invoice already did that) and does NOT change the invoice content. Returns whether NTS transmission was accepted; poll query_invoice for stateCode 320 (전송완료). Required credential headers (set once in your MCP client, per-request, never stored): x-popbill-linkid + x-popbill-secretkey (your OWN Linkhub keys, free from linkhub.co.kr 파트너 신청) + x-popbill-corpnum (your 10-digit 사업자번호, the invoicer/seller — the invoice is issued FROM this business). Optional header x-popbill-mode: test (default = POPBILL_TEST, no fiscal effect) | prod (production, real fiscal effect, live 국세청 transmission). Optional owner-policy headers x-agentpay-max-amount / x-agentpay-approval-above / x-agentpay-allowed-tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
mgt_keyYesThe 문서관리번호 (mgt_key) of the issued invoice to transmit now.
mgt_key_typeNoWhose document box: SELL (default) | BUY | TRUSTEE.
Behavior5/5

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

Discloses behavioral traits beyond annotations: force immediate transmission, no change to invoice content, returns acceptance status, polling needed for stateCode 320. Details required and optional headers for authentication and mode. OpenWorldHint=true is reasonable given side effects; description does not contradict annotations.

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

Conciseness5/5

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

Well-structured: action first, usage rationale, limitations, return info, then headers. Every sentence adds value. Efficient despite length due to complexity. No fluff.

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

Completeness5/5

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

Complete coverage for a transmission tool: action, usage, what it doesn't do, return value, polling follow-up, authentication setup (headers), mode selection (test/prod), and optional owner-policy headers. Given no output schema, description adequately explains expected outcome.

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

Parameters4/5

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

Schema coverage is 100%, providing baseline 3. Description adds meaning by explaining mgt_key as '문서관리번호' of the issued invoice and mgt_key_type as 'Whose document box: SELL (default) | BUY | TRUSTEE.' Also describes optional headers not in schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'FORCE immediate 국세청 (NTS) transmission of an already-issued 전자세금계산서'. It specifies the HTTP endpoint and distinguishes from sibling tools create_invoice and query_invoice by explaining what it does not do (issue or change invoice).

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

Usage Guidelines5/5

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

Explicit guidance: 'call this only when you need it sent to the tax authority right now instead of waiting for the next-day batch.' Also clarifies when not to use: 'It does NOT issue the invoice' and references query_invoice for polling completion. Provides alternative (wait for next-day batch) and preconditions (invoice already issued).

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

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources