Skip to main content
Glama
UpstageAI

korean-tax-calc-mcp

extract_relations

Extracts relation tables (people, family, stakes, officers) from PDFs like shareholder lists and family registries. Returns draft data for human review before tax audit or kinship analysis.

Instructions

주주명부·가족관계·임원명단 PDF에서 관계표(people/family/stakes/officers)를 추출한다. 언제: 세무조사·의료법인 친족확인 등에서 PDF 문서에 있는 관계표를 도구 입력으로 정리할 때. 입력: PDF 파일 경로 → pdf_path. 결과: people·family·stakes·오 officers 추출 결과(초안) + AI 생성 표시(필요 시). related_judge에 넣기 전에 사람이 확인한다. UPSTAGE_API_KEY 없이도 pypdf 로컬 추출 후 정리 가능(기본), 키 설정 시 Document Parse + Solar Pro 4로 더 정교한 표 추출. 주주명부·가족관계·임원명단 PDF에서 관계표를 뽑는다.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pdf_pathYesPDF 파일 경로

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.9.1

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it discloses that results are a draft (초안) marked as AI-generated, that human verification is required before related_judge, and it explains the dual execution path — local pypdf extraction by default vs. UPSTAGE_API_KEY enabling Document Parse + Solar Pro 4 for higher fidelity. It does not state failure modes or limits on malformed/complex PDFs, which keeps it short of a 5.

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

Conciseness3/5

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

The labeled structure (언제 / 입력 / 결과) is helpful and front-loaded, but the closing sentence restates the opening purpose verbatim, and '오 officers' contains a typo. The duplication costs real space in an otherwise tight definition.

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?

No output schema exists, and the description compensates by naming the returned sections (people/family/stakes/officers), the draft status, and the AI-generated marker. Combined with the stated dependency on UPSTAGE_API_KEY and the human-review requirement, an agent has what it needs to call this correctly.

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?

One parameter with 100% schema description coverage, so the schema already documents pdf_path. The description restates 'PDF 파일 경로 → pdf_path' without adding format, path-style, or constraint details beyond the 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?

States a specific verb (추출한다) and resource (관계표: people/family/stakes/officers) plus the source document types (주주명부·가족관계·임원명단 PDF). This clearly separates it from related_judge and kinship_check, which operate on already-structured input rather than raw PDFs.

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?

The '언제' clause names concrete triggering scenarios (세무조사, 의료법인 친족확인) and the exact situation (when a relationship table exists in a PDF and must be converted to tool input). It also names the downstream handoff to related_judge and states a human must verify before that step, which is explicit sequencing guidance.

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