opdstar-nhi-mcp
This MCP server provides read-only tools to query Taiwan's National Health Insurance (NHI) public data, enabling AI assistants to look up audit rules, procedures, drugs, and official guidelines in real time.
Look up NHI rejection codes (
lookup_rejection_code): Retrieve details about a 5-character rejection code (e.g.0317A), including severity, category, and official description.List rejection codes by category (
get_rejection_code_category): Discover all rejection codes within a specific category (e.g.04for 手術處置).Find applicable procedure codes (
get_procedures_for_icd): Given an ICD-10 code and specialty (20 supported), retrieve relevant NHI procedure codes with payment points and audit notes.Query NHI audit indicators (
get_indicator): Get details on specific indicators (e.g.008,014,P043), including thresholds, applicable drugs/diagnoses, and linked rejection codes.Search the official NHI Wiki (
search_nhi_wiki): Semantic + full-text search across 8,232 indexed chunks from the 健保署 wiki, covering 9 categories (audit, drugs, fees, plans, services, insurance, forms, records, admin), in Traditional Chinese or English.Look up drug payment rules (
get_drug_rules): Retrieve drug payment regulations by specialty, rejection code, or drug category.Look up drugs in the NHI formulary (
lookup_drug): Search the active NHI drug catalog by generic name, brand name, alias, or NHI code.Look up NHI fee codes (
lookup_fee_code): Search the fee schedule by code, Chinese/English name, or category prefix, with payment points and audit notes.Search audit guidelines (
search_audit_guidelines): Free-text search over 審查注意事項 to find rule reasons and suggestions.Preview NHI-safe phrases (
get_safe_phrases): Get example safe clinical phrasing for high-risk prescribing scenarios in specific specialties.
Who is this for?
Taiwan healthcare professionals using AI assistants (Claude Desktop, Cursor, ChatGPT Desktop) who want to:
🩺 Check NHI rejection risk before submitting a claim, without leaving their AI chat
📋 Look up procedure codes applicable to a diagnosis in seconds
📖 Ask questions in Chinese about NHI rules and get grounded answers with source URLs
🏥 Integrate NHI data into their own clinic software / HIS without building from scratch
Developers building Taiwan-specific healthcare AI tools — hook into one well-curated data source instead of scraping 健保署 manually.
Related MCP server: autoicd-mcp
Real-world examples
👩⚕️ Scenario 1 — Audit risk pre-check
You're writing a chart in Claude Desktop:
You: 我給 L30.9 慢性濕疹病人開了 prednisolone 30mg QD 5 天會不會被核刪?
Claude (auto-calls
lookup_rejection_code+get_indicator):依健保審查 008 指標,口服類固醇 + 濕疹類診斷若 PE 描述不足,會觸發核刪代碼 0320A。建議:PE 補充病灶面積 ≥ 30% 全身,或加入更嚴重的 ICD-10 佐證。
資料來源:OPDSTAR
🔍 Scenario 2 — Procedure lookup
You: 中耳炎 H66.9 耳鼻喉科能申報哪些處置?
Claude (auto-calls
get_procedures_for_icd):
27002C耳鏡檢查(25 點)
27018C耳膜穿刺(120 點)
36005C鼓室通氣管置入Full list: NHI procedures across major specialties.
📚 Scenario 3 — Wiki Q&A
You: 慢性病連續處方箋最長可以開多久?
Claude (auto-calls
search_nhi_wiki):依健保署規定,慢性病連續處方箋每次調劑之藥品使用期間最長 3 個月。原文:nhi.gov.tw/ch/cp-XXX.html
What is this?
@opdstar/nhi-mcp lets any Model Context Protocol client — Claude Desktop, Cursor, ChatGPT Desktop, custom agents — directly query Taiwan's National Health Insurance dataset curated and maintained by OPDSTAR.
Ask your AI in natural language:
"慢性濕疹 L30.9 開 prednisolone 30mg 5 天會不會被核刪?"
It auto-calls the right tools and pulls real NHI data:
NHI rejection codes (e.g.
0317A,0338A) with severity + categoryNHI procedure codes across major specialties, mapped to ICD-10
NHI audit indicators (008 / 014 / 027 / P043) with thresholds
Semantic + full-text search over the 健保署 official wiki
All served through the opdstar.com edge layer — zero configuration, cached globally, under 100ms response.
Install
# Claude Desktop — one-line, no install
npx @opdstar/nhi-mcp
# Or persist as a dependency
npm install -g @opdstar/nhi-mcpRequires Node.js 18+.
Claude Desktop config
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (Mac) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"opdstar-nhi": {
"command": "npx",
"args": ["-y", "@opdstar/nhi-mcp"]
}
}
}Restart Claude Desktop. You should see 10 new tools appear in the tools menu.
Cursor config
Add to .cursor/mcp.json in your project root (or global ~/.cursor/mcp.json):
{
"mcpServers": {
"opdstar-nhi": {
"command": "npx",
"args": ["-y", "@opdstar/nhi-mcp"]
}
}
}Tools
1. lookup_rejection_code
Look up a Taiwan NHI rejection code (5-character, e.g. 0317A).
Arguments: { code: string }
Example:
> Claude, what does rejection code 0317A mean?
→ [tool call: lookup_rejection_code(code="0317A")]
→ {
"code": "0317A",
"description": "處方含抗生素,診斷碼未見感染性疾病",
"severity": "critical",
"category": "03",
"category_name": "藥品特材",
"opdstar_relevant": true,
"source_url": "https://opdstar.com/faq?q=核刪代碼 0317A"
}2. get_procedures_for_icd
Given an ICD-10 code and specialty, return the NHI procedure codes applicable.
Arguments: { icd10: string, specialty: string, limit?: number }
Example:
> What NHI procedures apply to L30.9 in dermatology?
→ [tool call: get_procedures_for_icd(icd10="L30.9", specialty="dermatology", limit=5)]
→ {
"count": 4,
"results": [
{
"code": "48010C",
"name_zh": "傷口處置",
"nhi_points": 125,
"audit_notes": "需記錄傷口大小、深度、分泌物",
"source_url": "https://opdstar.com/faq?q=處置碼 48010C"
},
...
]
}3. get_indicator
Look up a Taiwan NHI audit indicator — threshold, applicable drugs/diagnoses.
Arguments: { code: string }
Example:
> What's indicator 008 about?
→ [tool call: get_indicator(code="008")]
→ {
"code": "008",
"name": "急性上呼吸道感染抗生素使用率",
"threshold_pct": 10,
"applicable_drugs": ["antibiotic"],
"applicable_icd_patterns": ["J00","J06","J11","J02","J03","J04"],
"severity": "critical",
"rejection_codes": ["0311A", "0349A"]
}4. search_nhi_wiki
Semantic + full-text search over Taiwan's official NHI wiki (9 categories).
Arguments: { query: string, category?: "audit"|"drugs"|..., limit?: number }
Example:
> Search NHI wiki for chronic prescription rules
→ [tool call: search_nhi_wiki(query="慢性病連續處方箋天數上限", category="drugs")]
→ {
"count": 3,
"results": [
{
"title": "慢性病連續處方箋使用規定",
"content": "慢性病連續處方箋每次調劑之藥品使用期間,最長以 3 個月為限...",
"similarity": 0.87,
"source_url_nhi": "https://www.nhi.gov.tw/ch/cp-XXX.html",
"source_url_opdstar": "https://opdstar.com/ask?q=..."
}
]
}5. get_drug_rules v0.2
Taiwan NHI 藥品給付規定 lookup. At least one filter required (to avoid unbounded returns).
Arguments: { specialty?: string, rejection_code?: string, drug_category_query?: string }
Example:
> 兒科開抗生素有哪些給付規定?
→ [tool call: get_drug_rules(specialty="pediatrics", drug_category_query="antibiotic")]
→ {
"count": 3,
"results": [
{
"specialty": "all",
"drug_category": "抗生素 (Antibiotics)",
"diagnosis_pattern": "J00,J02,J03,J04,J05,J06,J11,J20,J21,J22,J40",
"rejection_code": "0311A",
"rule_description": "診斷為一般感冒/上呼吸道感染,不應使用抗生素。健保指標 008...",
"severity": "critical"
}
]
}6. get_safe_phrases v0.2 (preview only)
Discover which SOAP scenarios have known NHI-safe phrasing for a specialty. Preview only — returns scenario + high-risk wording + first sentence of safe example + link to opdstar.com for full library. Full ready-to-copy phrase library is part of the paid OPDSTAR product.
Arguments: { specialty: string, scenario_query?: string }
Example:
> 皮膚科開抗生素有哪些安全寫法?
→ [tool call: get_safe_phrases(specialty="dermatology", scenario_query="抗生素")]
→ {
"count": 1,
"note": "這是精簡版。完整安全句型庫(含 ready_phrases 可直接複製貼上)為 OPDSTAR 付費功能...",
"results": [
{
"scenario": "開立抗生素",
"high_risk": "皮膚感染,開抗生素 7 天。",
"safe_example_preview": "左小腿紅腫熱痛 2 天,查 erythematous plaque 約 8x6 cm… [… 完整範例請至 opdstar.com]",
"key_difference": "關鍵不是寫「感染」,而是要寫出細菌性感染的臨床佐證…",
"full_content_url": "https://opdstar.com/pricing"
}
]
}7. search_audit_guidelines v0.2
Free-text search over 審查注意事項 rules. Returns reason + suggestion summaries for matched rules.
Arguments: { query: string (2+ chars), specialty?: string }
Example:
> 中醫開藥有什麼注意事項?
→ [tool call: search_audit_guidelines(query="藥品", specialty="tcm")]
→ {
"count": 4,
"results": [
{
"rule_code": "TCM_DAILY_DRUG_COST",
"specialty": "tcm",
"severity": "warning",
"related_rejection_codes": ["0302C"],
"reason_zh": "中醫科每日藥費上限 38 點。一般 7 日約 266 點...",
"suggestion_zh": "若需使用較高價藥材,於病歷詳述辨證配伍理由與必要性..."
}
]
}8. get_rejection_code_category v0.2
List all NHI rejection codes in a given category (00-09). Useful for discovery — "show me all 手術處置 rejection codes".
Arguments: { category: "00"|"01"|...|"09", opdstar_relevant_only?: boolean }
10 categories: 00 診療品質 · 01 病歷紀錄 · 02 基本診療 · 03 藥品特材 · 04 手術處置 · 05 檢查檢驗 · 06 論病例計酬 · 07 復健精神 · 08 其他 · 09 法令
Example:
> 列出所有手術處置類的核刪代碼
→ [tool call: get_rejection_code_category(category="04")]
→ {
"category": "04",
"category_name": "手術處置",
"count": 32,
"results": [
{ "code": "0401A", "description": "...", "severity": "critical", "opdstar_relevant": true },
...
]
}9. lookup_drug v0.3
Look up the Taiwan NHI drug catalog (active formulary). Search by generic name, brand name, alias, or NHI 9-char code. For 給付規定 limitations on a drug, use get_drug_rules separately.
Arguments: { q: string (≥2 chars), specialty?, dosage_form?, route? }
Example:
> What drugs match 'augmentin'?
→ [tool call: lookup_drug(q="augmentin")]
→ {
"query": "augmentin",
"count": 4,
"results": [
{ "generic_name": "amoxicillin/clavulanate", "brand_names": ["Augmentin", ...], "strength": "875/125 mg", "dosage_form": "tablet", "nhi_drug_code": "BC25551100", "atc_code": "J01CR02", ... },
...
]
}10. lookup_fee_code v0.4
Look up the Taiwan NHI fee schedule (全民健康保險醫療服務給付項目及支付標準, current effective edition). Search by exact code, Chinese name, or English name; filter by category prefix (00/P1/N2/...).
Arguments: { q: string (≥2 chars), category?, icd? }
Example:
> 一般門診診察費的點數是多少?
→ [tool call: lookup_fee_code(q="00101B")]
→ {
"query": "00101B",
"count": 1,
"results": [
{
"code": "00101B",
"category_prefix": "00",
"section": "第二部 西醫",
"name_zh": "一般門診診察費-醫院門診診察費(不含牙科門診)...",
"points": 286,
"effective_start": "2021-03-01",
"audit_notes": "1.處方交付特約藥局調劑或未開處方者,不得申報藥事服務費...",
"audit_notes_full_length": 148
}
]
}Note:
applicable_icd_patternis OPDSTAR-curated and sparse — original NHI data has no ICD-10 mapping. Theicdfilter only matches codes already enriched.
How it works
┌────────────────────┐
│ Claude Desktop │
│ Cursor / ChatGPT │ (any MCP client)
└──────────┬─────────┘
│ MCP (stdio)
▼
┌────────────────────┐
│ @opdstar/nhi-mcp │ (this package, ~9KB single-file bundle)
│ 10 read-only tools │
└──────────┬─────────┘
│ HTTPS
▼
┌────────────────────┐
│ opdstar.com │ Edge proxy, globally cached
│ /api/mcp/* │
└──────────┬─────────┘
│
▼
┌────────────────────┐
│ OPDSTAR backend │ curated NHI knowledge base
└────────────────────┘Why proxy through opdstar.com?
Single source of truth — data updates roll out instantly without republishing npm
Rate-limited & cached — edge proxy absorbs traffic spikes
Zero config for you — no API keys, no secrets, no setup
Staging override: set OPDSTAR_API_BASE=https://staging.opdstar.com/api/mcp in your MCP client env to point at a staging endpoint (for plugin authors / OPDSTAR team).
Positioning & Disclaimer
@opdstar/nhi-mcp is a reference / translation tool. It:
✅ Looks up Taiwan NHI public data and official wiki content
✅ Returns structured JSON for AI reasoning
❌ Does NOT make diagnostic or prescribing recommendations
❌ Does NOT constitute clinical decision support (SaMD)
Final clinical judgment remains with the treating physician. For end-to-end audit with OPDSTAR's 5-engine risk prediction, use the full app at opdstar.com.
Data sourced from 健保署全球資訊網 (public) and curated by the OPDSTAR team.
Frequently Asked Questions
What is Model Context Protocol (MCP)?
MCP is an open standard released by Anthropic in November 2024 that lets AI assistants call external tools through a standardized protocol. Think of it as "USB-C for AI agents" — write a server once, and any MCP-compatible client (Claude Desktop, Cursor, ChatGPT Desktop, Continue, Zed, custom agents) can talk to it without custom integration code. Official spec: modelcontextprotocol.io.
What is Taiwan's National Health Insurance (NHI)?
Taiwan's 全民健康保險 (National Health Insurance) is a single-payer universal healthcare system covering 99.9% of Taiwan's population since 1995. It maintains an extensive set of audit rules for claim submissions — doctors who submit non-compliant claims face rejection (核刪) and lose real income. This MCP server exposes the rules, codes, and wiki content doctors need to navigate those rules.
Who should install this?
Three audiences:
Taiwanese doctors using AI assistants (Claude Desktop, Cursor) who want real-time NHI code lookup and audit risk insight while writing charts
HIS / clinic software vendors integrating AI features — zero-cost access to a curated NHI dataset instead of scraping 健保署 manually
Researchers studying Taiwan's healthcare system who need structured, queryable access to rejection codes, procedures, and audit indicators
Do I need an OPDSTAR account or API key?
No. The MCP is fully public and free under MIT license. No account, no API key, no registration. The proxy layer at opdstar.com applies rate limiting based on IP, not identity.
Is this an official NHI product?
No. It is independently developed by the OPDSTAR team. All data is sourced from publicly available 健保署 publications and websites. We are not affiliated with, endorsed by, or officially representing Taiwan's National Health Insurance Administration. For authoritative guidance, always consult official NHI publications.
Is my patient data sent anywhere?
No patient data is ever transmitted. The tools are pure lookups over public NHI data (codes, procedures, wiki excerpts). When you ask "does 0317A apply to L30.9?", the MCP sends only the code and diagnosis name — never patient names, IDs, or clinical notes. The proxy at opdstar.com does not log query content (only aggregate counters for rate limiting).
How often is the data updated?
Monthly. The OPDSTAR team syncs structured tables and wiki chunks when 健保署 publishes new rules or amendments. Follow @opdstar on GitHub or watch CHANGELOG.md for changes.
Can I use this commercially?
Yes. MIT license permits unrestricted commercial use. You may embed @opdstar/nhi-mcp in paid products without royalties. We only ask that powered_by attribution remains in tool responses (it's built in and should not be stripped).
What about languages? Does it work in English?
Tool arguments and responses support both Traditional Chinese (繁體中文) and English. The underlying NHI data is primarily 繁中 — Chinese keys like name_zh are always populated; name_en is populated where 健保署 provides English translations. AI assistants handle the language switching seamlessly.
Can this replace the full OPDSTAR SaaS product?
No — different scope. This MCP offers read-only lookups. The full OPDSTAR product provides AI-powered chart translation, real-time audit risk detection with a 5-engine rule system, safe-phrase suggestion, and personalized prescription tracking — all requiring proprietary prompt engineering and clinical knowledge that remains closed-source.
How do I report wrong data or propose new tools?
File a GitHub issue using our templates:
🐛 Bug report — data is wrong, tool crashes
💡 New tool proposal — you want a tool we don't have yet
💬 Discussions — general questions, show-and-tell
For sensitive issues: support@opdstar.com.
Trusted data sources
All data is curated from publicly available Taiwan NHI resources:
健保署全球資訊網 — official NHI website
專業審查注意事項 (audit guidelines)
不予支付理由代碼 (rejection codes)
藥品給付規定 (drug payment rules)
健保醫療費用申報與審查電腦作業手冊 (claims submission manual)
全民健康保險醫療服務給付項目及支付標準 (fee schedule)
Data is kept in sync with the latest official publications.
Used by
OPDSTAR — Chart translation + audit-risk prevention SaaS for Taiwanese outpatient doctors. In production use since 2026-04.
Your organization here — send a PR to add to this list!
What's open vs. what's closed
Open (this package): pure lookup tools over already-public NHI data.
Closed (OPDSTAR's moat): the OPDSTAR clinical product (chart workflow, audit risk prevention, personalization features) is closed-source and exclusive to opdstar.com.
Roadmap
v0.2 (planned)
get_drug_rules— 藥品給付規定 lookupget_safe_phrases— safe-phrase library (subset)API key tier for higher rate limits
v0.3 (aspirational)
compare_rejection_rates— anonymized system-wide rejection statsget_latest_amendments— recent NHI policy changes feedEnglish / Japanese wiki translation layer
Development
git clone https://github.com/tatsuju/opdstar-nhi-mcp.git
cd opdstar-nhi-mcp
npm install
npm test # vitest, 8 offline unit tests
npm run build # tsup → dist/index.jsPoint at your local dev server:
OPDSTAR_API_BASE=http://localhost:3000/api/mcp node dist/index.jsContributing — Pull Requests welcome 🙌
This is an open-source, community-driven project under MIT license. Anyone can contribute:
🐛 Bug reports — file an issue with our bug template
💡 New tool proposals — start a discussion with the tool proposal template; we'll review for fit before you invest in a PR
🌐 Translation / docs — improve English/繁中 clarity
📦 MCP client configs — add examples for Continue.dev, Zed, custom agents
🧪 More tests — edge cases, negative paths, integration harnesses
How to send a PR
Fork
tatsuju/opdstar-nhi-mcpCreate a feature branch:
git checkout -b add-somethingMake your change, run
npm test+npm run typecheck+npm run buildCommit with a conventional message:
feat(tool): add get_drug_rulesPush + open PR — GitHub's PR template will guide you through the checklist
What we will NOT accept
Per CONTRIBUTING.md:
Tools that generate clinical diagnoses or recommendations (SaMD boundary)
Tools that expose OPDSTAR's private audit engine or prompt templates
Removal of
powered_by/source_urlattribution
Everything else — we're genuinely happy to hear from you. 📬 Sensitive stuff: support@opdstar.com.
Related projects
mcp-taiwan-legal-db — Taiwan legal data MCP
OPDSTAR — the full app this MCP links back to
License
MIT © OPDSTAR Team
Available Tools
24 toolscheck_icd_for_major_illness_eligibilityARead-onlyIdempotent
Reverse-lookup: given a single ICD-10 code, return the Taiwan NHI 重大傷病 (major illness) categories the diagnosis may qualify for, including category name, the ICD pattern that matched, and copayment-exemption flag. Use when an agent has a diagnosis and needs to flag major-illness applicability before claim submission. Don't use to browse all categories — call lookup_major_illness instead (also use it for the category → applicable ICDs direction). Reference only — confirmed eligibility still requires a formal application with supporting documentation per the official 重大傷病範圍及項目. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| icd_code | Yes | Required ICD-10 code (e.g. 'C50.9' breast cancer, 'N18.6' end-stage renal disease, 'F20.9' schizophrenia). Case-insensitive. Prefix-matches against the official ICD-10 ranges defined per category. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a safe, read-only, idempotent operation. The description adds important behavioral context: the tool is 'Reference only' and confirmed eligibility requires a formal application with supporting documentation. No contradictions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each with clear purpose: first states what it does, second gives usage guidelines with bold cues, third adds a reference caveat and attribution. Front-loaded, no filler, well-structured for agent scanning.
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 tool with one parameter and no output schema, the description fully covers purpose, return content, usage boundaries, and important disclaimers. Sibling differentiations are clear, and the note about formal application adds necessary context for proper use.
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 already provides a thorough description for `icd_code` (required, case-insensitive, prefix-matching, examples). Schema coverage is 100%, so baseline is 3. The description adds minimal new detail beyond the schema, only restating 'single ICD-10 code'.
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's function as a reverse-lookup from ICD-10 code to Taiwan NHI major illness categories, listing specific return fields. It explicitly distinguishes from the sibling tool `lookup_major_illness` which performs the opposite direction.
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 explicit use cases ('when an agent has a diagnosis... before claim submission'), explicit non-use cases ('Don't use to browse all categories'), and a direct alternative (`lookup_major_illness` instead). It also specifies the opposite direction usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
count_appeal_precedents_for_rejection_codeARead-onlyIdempotent
Aggregate signal-only summary of how disputes involving a given Taiwan NHI rejection code (e.g. '0312A', '0114A') or procedure code (e.g. '86008C') historically resolve — returns rough volume bucket (none / few / several / many), claimant win-rate signal (rare / occasional / moderate / common), and which review stages have on-record outcomes. Use when an agent is helping triage whether contesting a specific code is worth pursuing. Don't use to fetch individual case details (none are exposed) — for the broader landscape across categories, call lookup_appeal_statistics_by_category instead. Reference only — historical signal does not predict future outcomes; final review decisions rest with the responsible authority. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| rejection_code | No | Optional 5-char NHI rejection code (e.g. '0312A', '0114A'). At least one of rejection_code or procedure_code must be provided. | |
| procedure_code | No | Optional 5-8 char NHI procedure code (e.g. '86008C', '97608C'). At least one of rejection_code or procedure_code must be provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds valuable context: it is a 'signal-only' summary, 'reference only', and historical signal does not predict future outcomes. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: main functionality first, then usage guidance, then caveats and attribution. While slightly long, every sentence serves a purpose and the core message is front-loaded. Could be marginally more concise but remains effective.
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?
Given no output schema, the description adequately explains the output components (volume bucket, win-rate, review stages) and the reference nature. It also covers the tool's purpose and limitations. Missing exact output keys or types, but sufficient for an agent to understand what to expect.
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% with descriptions for both parameters. The description reinforces the requirement that at least one must be provided, gives character length examples (e.g., '0312A', '86008C'), and clarifies the optional nature. This adds moderate 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 clearly states the tool aggregates a summary of dispute resolutions for a given NHI rejection code or procedure code, specifying the output (volume bucket, win-rate signal, review stages). It also distinguishes from the sibling tool lookup_appeal_statistics_by_category, which provides broader landscape data.
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?
Explicitly provides 'Use when' (triaging contesting a specific code) and 'Don't use' (fetching individual case details) guidance, and directs to an alternative (lookup_appeal_statistics_by_category) for broader analysis. This leaves no ambiguity about when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_drug_rulesARead-onlyIdempotent
Look up Taiwan NHI drug payment rules (藥品給付規定) — when a drug class is / isn't reimbursable, with severity and source citation. Filter by specialty, rejection_code, or drug_category_query (at least one required). Use when an agent is checking whether a drug choice will trigger a rejection before submission, or wants to read the rule behind a known rejection code. Don't use to identify a specific drug (brand / generic / strength) — call lookup_drug instead; for the underlying audit clauses, use lookup_audit_clauses_for_procedure or lookup_audit_clauses_for_specialty. Reference only — official 健保藥品給付規定 is authoritative; curated subset, not exhaustive. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| specialty | No | Specialty filter (e.g. 'all', 'pediatrics', 'dermatology', 'family'). 'all' rules apply to every specialty. | |
| rejection_code | No | Filter rules that trigger a specific rejection code, e.g. '0311A' | |
| drug_category_query | No | Free-text filter on drug_category (ILIKE match), e.g. 'antibiotic', 'PPI', '類固醇' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and the description adds that the tool is a curated subset, not exhaustive, and the official source is authoritative. This provides useful context beyond annotations, though no additional detail on rate limits or pagination is given.
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 four sentences, front-loaded with the core purpose, then listing filters, usage guidance, and a disclaimer. Every sentence adds value, and there is no redundancy or wasted words.
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 read-only listing tool with three parameters and no output schema, the description covers the purpose, required filters, use cases, alternatives, and the curated nature of the data. An agent has sufficient information to decide when and how to invoke the 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%, so baseline is 3. The description adds the important constraint that at least one of the three filters must be provided, which is not captured in the schema's required list. This adds value, though it mildly contradicts the schema indicating no required parameters.
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 starts with 'Look up Taiwan NHI drug payment rules' providing a specific verb and resource. It further clarifies the tool returns reimbursement status with severity and citation, and explicitly distinguishes from sibling tools like lookup_drug for identifying specific drugs.
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 clearly states when to use: 'when an agent is checking whether a drug choice will trigger a rejection before submission, or wants to read the rule behind a known rejection code.' It also explicitly says when not to use and names alternative tools (lookup_drug, lookup_audit_clauses_for_procedure, lookup_audit_clauses_for_specialty).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_indicatorARead-onlyIdempotent
Look up a single Taiwan NHI prescribing-pattern indicator. These are 1-4 character codes that encode common over-prescribing patterns: 3-digit numeric codes (e.g. '008' antibiotic-on-URI, '014' multi-PPI co-prescribing, '027' duration limit) or 'P'-prefixed codes (e.g. 'P043' chronic-prescription duration cap). Returns the indicator name, the threshold (e.g. '7-day URI episode'), applicable drugs / diagnoses, and the compliance meaning. Returns a not-found message (not an error) if the code does not exist. Use when an agent needs the human-readable explanation for a specific indicator code referenced during a SOAP review or audit response — e.g. an audit notice cites indicator 008 and the agent needs to surface what 008 monitors and why a prescription tripped it. Typical follow-up: call get_drug_rules({rejection_code}) with the indicator's downstream rejection code to read the formal payment rule, or search_audit_guidelines({query}) to read related audit-clause text. Don't use for the official 分析審查不予支付指標 (percentage-cap audit) list — that's a different system — call lookup_audit_indicator instead. Reference only — thresholds and applicable lists reflect published guidance and may change with each NHI release; agents should re-read the indicator each session rather than caching values across sessions. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Required. The exact prescribing-pattern indicator code. Format: 1-3 digits (e.g. '008', '014', '027') OR 'P' + 1-3 digits (e.g. 'P043', 'P018'). Whitespace is trimmed. Numeric codes are NOT zero-padded automatically — pass '008' not '8'. Lowercase 'p' is accepted but normalized to uppercase. Examples: '008' (抗生素開立於 URI), '014' (multi-PPI co-prescribing), '027' (用藥日數上限), 'P043' (慢性處方箋日數上限). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it returns a not-found message (not an error), that thresholds may change per NHI release, and that agents should re-read each session rather than cache. Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, which this description complements with behavioral nuance.
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 thorough but slightly long; however, it is well-structured with clear sections (code format, usage, follow-up, caveat) and front-loaded with the core purpose. Every sentence adds value, and the length is justified by the complexity of the domain.
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?
Given the simple input schema (one parameter) and no output schema, the description fully covers expected behavior: return value (indicator name, threshold, drugs/diagnoses, compliance meaning), not-found handling, typical follow-ups, and versioning caveat. It leaves no ambiguity for the 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?
The single parameter `code` is fully described in the schema (100% coverage). The description adds value by specifying exact format (e.g., '008' not '8'), whitespace trimming, and case normalization, providing practical usage details 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 clearly states 'Look up a single Taiwan NHI prescribing-pattern indicator,' specifies the code format (1-4 characters, numeric or P-prefixed), and distinguishes itself from the sibling tool `lookup_audit_indicator` by explicitly noting it is for a different system.
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 explicit guidance: 'Use when' an agent needs human-readable explanation for a specific indicator code, and 'Don't use' for the percentage-cap audit list (calling `lookup_audit_indicator` instead). It also lists typical follow-ups like `get_drug_rules` and `search_audit_guidelines`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_procedures_for_icdARead-onlyIdempotent
Given a Taiwan ICD-10 code and a medical specialty, return the NHI procedure codes plausibly applicable to that diagnosis within that specialty. Each result includes the procedure code, Chinese name, English name, nhi_points (payment points), and audit_notes (specialty-specific review caveats and risk hints). Results are ordered by curated relevance (most commonly applied codes first), capped at limit (default 10, max 20). Returns an empty list (not an error) when no curated mapping exists for the given (icd10, specialty) pair — this is common because the mapping is intentionally conservative. Use when an agent is drafting SOAP and needs a starting set of procedure codes for the diagnosis within the clinician's specialty context — e.g. dermatologist with L30.9 (chronic eczema) needs candidate procedure codes. Typical follow-up: for each candidate code, call lookup_fee_code({q: <code>}) to confirm current points and effective dates, and lookup_audit_clauses_for_procedure({procedure_code}) to surface any audit-clause caveats. Don't use as a billing source of truth — the original NHI fee schedule has no ICD field, this is a curated, intentionally conservative mapping that prefers false negatives over false positives; for the canonical fee-schedule entry of a known code, call lookup_fee_code. Reference only — final code selection remains the clinician's responsibility. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| icd10 | Yes | Required. ICD-10-CM code in standard `LNN.N` format (letter + 2 digits + optional decimal + 1-4 sub-digits). Whitespace is trimmed; case is preserved (ICD-10 letters are uppercase by convention). Match is exact-prefix (passing 'L30' may match 'L30.0' / 'L30.9' depending on curation granularity). Examples: 'L30.9' (chronic eczema, dermatology) / 'J06.9' (acute URI, family / ent / pediatrics) / 'H66.9' (otitis media, ent / pediatrics) / 'M25.5' (joint pain, orthopedics / pmr). | |
| specialty | Yes | Required. The clinician's specialty (lowercase ID). Curated mappings differ by specialty because procedure relevance is specialty-specific (e.g. L30.9 in dermatology surfaces topical-treatment codes; in family medicine surfaces general-care codes). Pass the closest match — e.g. 'internal' for internal medicine, 'obgyn' for OB/GYN, 'general_surgery' for general surgery, 'gastroenterology' for GI, 'infectious_disease' for ID, 'tcm' for traditional Chinese medicine. | |
| limit | No | Optional. Maximum number of procedure-code candidates to return, ordered by curated relevance. Range 1-20. Default 10. Lower limits (3-5) work well when the agent only needs the top candidates; higher limits help when the diagnosis is broad and many codes may apply. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint annotation, the description adds significant behavioral context: results ordered by curated relevance, capped at limit, returns empty list for missing mappings (intentionally conservative), and clarifies it is not a billing source of truth. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise (7 sentences) and well-structured: what it does, ordering/limits, empty edge case, use case, follow-up, don't use, curational source. Every sentence adds value; no redundancy.
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?
Despite no output schema, the description fully covers return structure (procedure code, names, points, audit_notes), ordering, limits, and empty-list behavior. It also explains input format and specialty matching, making the tool's behavior predictable.
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%, so baseline is 3. The main description provides functional context (e.g., curational nature) but does not add meaning beyond what the input schema already describes for each parameter (format, examples, defaults, enum).
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 'return' and specific resource 'NHI procedure codes' for a given ICD-10 code and specialty. It distinguishes from sibling tools like lookup_fee_code and lookup_audit_clauses_for_procedure by noting typical follow-ups and cautioning against using it as a billing source of truth.
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?
Explicitly states when to use (drafting SOAP, starting set of procedure codes) with an example (dermatologist with L30.9). Provides when-not-to-use (as billing source of truth) and directly names alternatives (lookup_fee_code for canonical entry). Also outlines typical follow-up steps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rejection_code_categoryARead-onlyIdempotent
Browse Taiwan NHI rejection codes by category (00-09) for discovery — returns code, severity, and short description, up to 50 per call. Categories: 00 診療品質 · 01 病歷紀錄 · 02 基本診療 · 03 藥品特材 · 04 手術處置 · 05 檢查檢驗 · 06 論病例計酬 · 07 復健精神 · 08 其他 · 09 法令. Use when an agent needs to enumerate all rejection codes within a workflow domain (e.g. all surgery-handling codes). Don't use to look up a known specific code — call lookup_rejection_code instead. Reference only — official 健保署 不予支付理由代碼 is authoritative. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Two-digit category code, '00' through '09' | |
| opdstar_relevant_only | No | When true, filter to codes flagged as outpatient-relevant by OPDSTAR. Default false (return all). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare safe read-only, idempotent behavior. Description adds useful context: returns up to 50 results, categories listed, reference to authoritative source, and curation by OPDSTAR. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence serves a purpose. Usage guidelines are front-loaded with bold markers. Categories listed compactly. No redundancy or filler. Excellent structure.
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?
Despite no output schema, description specifies return fields (code, severity, short description) and limit (50 per call). Covers categories, usage context, and authority. Complete for a browsing 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 covers both parameters fully (100% coverage). Description lists category codes inline, which duplicates enum but adds no new semantic value beyond what schema provides. Baseline 3 is appropriate.
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?
Clear verb 'browse' with specific resource 'Taiwan NHI rejection codes' and scope 'by category (00-09)'. Distinguishes from sibling 'lookup_rejection_code' by explicitly contrasting discovery vs. known code 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?
Explicitly states when to use (enumerate within workflow domain) and when not to (look up known code), with named alternative 'lookup_rejection_code'. Bold markers clearly demarcate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_safe_phrasesARead-onlyIdempotent
Preview which documentation scenarios have OPDSTAR-curated NHI-safe phrasing patterns for a given specialty (e.g. dermatology + 抗生素) — returns scenario name, high-risk wording to avoid, the key difference, and the first sentence of the safe-phrasing example. Up to 5 scenarios per call. Use when an agent is helping draft SOAP wording and needs to flag risky phrasing before submission. Don't use to retrieve full ready-to-copy templates (full library is part of the paid OPDSTAR product — link the user to opdstar.com); for the underlying audit rule that motivates a safe phrase, call search_audit_guidelines. Reference only — phrasing patterns reflect curated review experience, not formal NHI directives. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| specialty | Yes | Required specialty, e.g. 'dermatology', 'internal', 'pediatrics', 'family', 'tcm'. | |
| scenario_query | No | Optional free-text filter on scenario (ILIKE match), e.g. '抗生素', '類固醇', '慢性處方' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds context that the tool is a 'Reference only — phrasing patterns reflect curated review experience, not formal NHI directives' and that it returns up to 5 scenarios per call. No contradictions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear first sentence summarizing purpose, followed by use/don't use guidelines and additional context. It is slightly long but every sentence adds value, making it efficient overall.
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?
Given no output schema, the description adequately explains what the tool returns (scenario name, high-risk wording, key difference, first sentence) and its limitations (up to 5 scenarios, preview only, not official directives). It also directs to the full product and alternative tool, providing complete context for the 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 description coverage is 100%, so baseline is 3. Description adds value by giving concrete examples (e.g., 'dermatology + 抗生素') and stating that scenario_query is an ILIKE match, which helps the agent understand usage 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 clearly states that the tool previews OPDSTAR-curated NHI-safe phrasing patterns for a given specialty, returning scenario name, high-risk wording, key difference, and first safe-phrasing example. It distinguishes itself from sibling tool 'search_audit_guidelines' by explicitly stating the different use case.
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 explicitly tells when to use ('helping draft SOAP wording and needs to flag risky phrasing before submission'), when not to use ('Don't use to retrieve full ready-to-copy templates'), and directs to an alternative tool ('call search_audit_guidelines'). This provides clear guidance for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_appeal_statistics_by_categoryARead-onlyIdempotent
Aggregate dispute-resolution statistics for Taiwan NHI claim disputes, broken down by category and (optionally) review stage — returns category counts and rough win-rate signals only, never individual case details, case numbers, or arguments. Use when an agent is helping a clinician understand the general dispute landscape (e.g. 'how often do fee-calculation disputes resolve in the claimant's favor at the first court tier?'). Don't use for code-specific signals — call count_appeal_precedents_for_rejection_code instead. Reference only — historical signal does not predict future outcomes; final decisions rest with the responsible review body. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| dispute_category | Yes | Category of dispute. medication = drug/payment rules; procedure = treatment/handling codes; fee_calculation = fee scheduling/calculation; qualification = contract qualification (停約/終止特約 etc.); special_material = implants/IOL/stents; admission = inpatient billing; other = miscellaneous. | |
| stage_tier | No | Optional resolution-stage filter. stage_1_initial_review = first-tier administrative review; stage_2_first_court = first-instance administrative court; stage_3_appeals_court = highest administrative court. Omit to aggregate across all stages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds key behavioral details: never returns individual case details or arguments, and that it is reference only (historical signal does not predict future outcomes). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph but efficiently conveys purpose, constraints, use cases, and limitations. It is front-loaded with key information and is not overly verbose. Could be structured with bullet points but remains concise.
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?
Given the simple parameter set (2 enums, 1 required), rich annotations, and no output schema, the description covers all necessary context: what the tool does, when to use it, limitations, and source curation. An agent can fully understand its role and constraints.
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 baseline is 3. The schema already provides detailed descriptions for both parameters, including enum meanings. The description adds minimal additional parameter-specific semantics beyond what is in 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 clearly states it aggregates dispute-resolution statistics for Taiwan NHI claim disputes by category and optionally review stage. It specifies what it returns (category counts, rough win-rate signals) and what it does not (individual case details). It also distinguishes from the sibling tool 'count_appeal_precedents_for_rejection_code' by stating it is not for code-specific signals.
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 explicitly provides use cases ('Use when an agent is helping a clinician understand the general dispute landscape') and counter-indications ('Don't use for code-specific signals'), naming the alternative tool. It also includes a caution about reference only and not predicting future outcomes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_audit_clauses_for_procedureARead-onlyIdempotent
Find Taiwan NHI 審查注意事項 clauses that reference a specific procedure code (e.g. '00101B', '51017C') — each result indicates whether the clause carries an amount limit, frequency rule, or indication restriction (critical signals for rejection-risk assessment). Returns clause summary, specialty, and risk flags. Use when an agent has a candidate procedure code and needs to surface the audit context attached to it. Don't use for the procedure's fee-schedule entry (points / effective dates) — call lookup_fee_code; for browsing all clauses within a specialty, call lookup_audit_clauses_for_specialty. Reference only — clause summaries are first-sentence previews; official 健保署 審查注意事項 is the source of truth. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| procedure_code | Yes | Required NHI procedure code (5-8 alphanumeric chars). Examples: '00101B', '51017C', 'P15001'. Case-insensitive. | |
| specialty | No | Optional specialty filter (e.g. 'dermatology', 'internal_medicine', 'tcm'). Narrows the result to one specialty section. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds a 'Reference only' caveat clarifying that summaries are first-sentence previews and the official source is authoritative, which provides useful context beyond the annotations.
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?
Description is only four sentences, each earning its place: purpose, usage, exclusions, and reference caveat. Highly efficient and well-structured.
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?
Given no output schema, the description explains return values (clause summary, specialty, risk flags) and the meaning of risk flags. It also credits the source and warns about data freshness, making it self-contained.
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% with detailed parameter descriptions. The description reinforces with code format hints and example values but does not add significant new meaning 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 has a specific verb+resource 'Find Taiwan NHI 審查注意事項 clauses' and clearly distinguishes from siblings by naming alternatives like lookup_fee_code and lookup_audit_clauses_for_specialty.
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?
Explicit 'Use when' and 'Don't use' sections with alternative tool names (lookup_fee_code, lookup_audit_clauses_for_specialty) provide clear guidance on when to invoke this tool versus others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_audit_clauses_for_specialtyARead-onlyIdempotent
Browse Taiwan NHI 審查注意事項 clauses for a specific medical specialty (dermatology, ophthalmology, ENT, TCM, dentistry, family medicine, etc.) — returns clause headlines with risk flags (amount_limit / frequency_rule / indication) and a short preview of the procedures each clause governs. Use when an agent needs section-wide audit context before assisting with claim coding for a specialty. Don't use for clauses tied to a known specific procedure code — call lookup_audit_clauses_for_procedure instead. Reference only — official 健保署 審查注意事項 (current edition) is authoritative; clause summaries are previews. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| specialty | Yes | Required specialty id. Common values: 'dermatology', 'internal_medicine', 'family_medicine', 'pediatrics', 'ophthalmology', 'ent', 'orthopedics', 'surgery', 'obstetrics_gynecology', 'urology', 'psychiatry', 'neurology', 'neurosurgery', 'pulmonology', 'rehabilitation', 'anesthesiology', 'radiology', 'pathology', 'tcm', 'dentistry', 'general_principles_clinic', 'appendix_clinic'. | |
| keyword | No | Optional keyword (Chinese or English) to narrow within the specialty. Matches against clause text. | |
| risk_flag | No | Optional filter to return only clauses tagged with a specific risk flag. 'any' returns clauses that have at least one of the three flags set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds value by stating 'Reference only — official 健保署 審查注意事項 (current edition) is authoritative; clause summaries are previews.' This informs the agent about the limitations of the data. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise (5 sentences) with clear structure: purpose, use case, alternative, and reference note. Bolded key phrases aid readability. No unnecessary information.
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?
Given no output schema, description adequately explains what is returned (clause headlines, risk flags, preview). It covers usage context and limitations. Could mention result format or pagination, but still strong overall.
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% with detailed parameter descriptions. The description does not add significant new semantics beyond what the schema already provides. It lists example specialties and risk flags, but these are already covered in the schema. Baseline 3 is appropriate.
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?
Description clearly states 'Browse Taiwan NHI 審查注意事項 clauses for a specific medical specialty' with specific verb and resource. It distinguishes from sibling tool `lookup_audit_clauses_for_procedure` by explicitly stating when not to use this tool and naming the 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?
Explicit usage guidance: 'Use when an agent needs section-wide audit context before assisting with claim coding for a specialty.' It also clearly says 'Don't use for clauses tied to a known specific procedure code' and provides the exact alternative tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_audit_indicatorARead-onlyIdempotent
Look up Taiwan NHI 分析審查不予支付指標 (official threshold-based audit rules where claims exceeding a percentage are denied) — returns indicator code, category, threshold, applicable specialty, monitored procedure codes, and official action description. Use when an agent needs to know whether a procedure code is under a percentage-cap audit (e.g. '23401C' is monitored by indicator 001 眼科局部處置申報率, 30% threshold). Omit indicator_code to browse by category / specialty / procedure. Don't use for prescribing-pattern indicators (008 / 014 / 027 / P043 etc.) — those live in get_indicator. Reference only — thresholds change with each official release. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| indicator_code | No | Optional 1-4 char indicator code (e.g. '001', '008', '027', '043'). If omitted, returns indicators filtered by other params. | |
| category | No | Optional category filter. Same indicator code may appear under multiple categories with different thresholds. | |
| specialty | No | Optional applicable_specialty filter (e.g. 'ophthalmology', 'obstetrics_gynecology', 'ent', 'tcm', 'dentistry'). | |
| procedure_code | No | Optional 5-8 char NHI procedure code (e.g. '23401C', '55009C'). Returns indicators that monitor this code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds nuance: 'Reference only — thresholds change with each official release,' and describes what the tool returns, which is consistent with a safe, read-only operation. No contradictions.
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 concise (under 150 words) and well-structured: first sentence defines the resource, then usage guidance, then parameter omission behavior, then exclusions, then limitations and credit. Bolded cues enhance readability.
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?
Given the tool's moderate complexity (4 optional params, no output schema), the description covers purpose, parameter behavior, usage boundaries, return fields, and update frequency. It is sufficient for an agent to correctly select and invoke the tool, even in a rich sibling context.
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%, with each parameter described. The description adds value by explaining how to browse by omitting indicator_code ('Omit indicator_code to browse by category / specialty / procedure') and provides an example that ties parameters together. However, since the schema already covers parameter definitions well, the added semantics are modest but meaningful.
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 specifies the resource (Taiwan NHI threshold-based audit rules) and the verb (look up). It also distinguishes from the sibling tool 'get_indicator' by explicitly noting that prescribing-pattern indicators are handled elsewhere.
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 explicitly states when to use ('Use when an agent needs to know whether a procedure code is under a percentage-cap audit') and when not to use ('Don't use for prescribing-pattern indicators... those live in get_indicator'), with a concrete example. This provides clear decision guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_chronic_prescription_ruleARead-onlyIdempotent
Look up Taiwan NHI chronic-disease continuous-prescription (慢性病連續處方箋) rules. Given an ICD-10 code or a disease name, returns whether the condition falls within the official chronic-disease scope and its dispensing limits — maximum days per dispense, maximum total medication days, and prescription validity. Use when an agent needs to know if a diagnosis qualifies for a continuous prescription and the applicable day limits. Reference only — the issuing physician must confirm the patient's condition is stable and that the same long-term medication applies, per the official 全民健康保險醫療辦法 慢性病範圍. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| icd_code | No | Optional ICD-10 code (e.g. 'I10', 'E11.9'). Prefix-matched against each chronic disease's ICD-10 range. | |
| disease | No | Optional Chinese disease name keyword (e.g. '高血壓', '糖尿病', '氣喘'). | |
| category | No | Optional disease category (e.g. 'cardiovascular', 'endocrine_metabolic', 'respiratory', 'psychiatric'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds behavioral context by emphasizing the tool is a 'Reference only' and mentions the need for physician confirmation, which goes beyond annotations. No contradiction.
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 moderately concise (about 100 words) and front-loads the main purpose. It uses formatting (bold) to highlight usage guidance. Every sentence adds value, though some details could be streamlined.
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?
Despite no output schema, the description fully explains what the tool returns: whether the condition qualifies and the specific dispensing limits. It also mentions the data source and official regulation, making it complete for a lookup tool with good annotations.
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 repeats some parameter information (e.g., 'Given an ICD-10 code or a disease name') but does not add significant value beyond what the schema already provides for each 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?
The description clearly states it looks up Taiwan NHI chronic-disease continuous-prescription rules, specifying inputs (ICD-10 code or disease name) and outputs (qualification and dispensing limits). It distinguishes this tool from sibling tools like lookup_major_illness by focusing on chronic prescription specifically.
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 includes an explicit 'Use when' clause indicating the exact scenario for using this tool. It also provides a caution that it is for reference only and requires physician confirmation. However, it does not explicitly mention when not to use or suggest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_drugARead-onlyIdempotent
Look up the active Taiwan NHI drug catalog by generic name, brand name, NHI drug code, or alias — returns up to 10 matches with strength, dosage form, route, ATC code, therapeutic class, and brand list. Use when an agent needs to identify or disambiguate a drug before recommending dosage / formulation in a SOAP draft. Don't use to look up payment / reimbursement rules for the drug — call get_drug_rules instead; for an audit clause referencing the drug, call search_audit_guidelines. Reference only — official 健保署 藥品給付項目及支付標準 is authoritative; the catalog is a working snapshot. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Required ≥2 chars. Search across generic_name, brand_names, aliases, normalized_key. Also accepts NHI 9-10 char drug code (e.g. 'A02229715'). Examples: 'augmentin', 'amoxicillin', 'A02229715', '阿司匹林', 'lamisil'. | |
| specialty | No | Optional specialty filter (e.g. 'dermatology', 'internal', 'pediatrics'). Only returns drugs tagged with this specialty. | |
| dosage_form | No | Optional dosage form filter: 'tablet', 'capsule', 'cream', 'ointment', 'syrup', 'solution', 'suspension', 'inj', 'supp', 'eye drops', 'ear drops', 'nasal spray', 'inhalation', 'patch', 'powder', 'gel', 'lotion', 'vaginal tablet'. | |
| route | No | Optional route filter: 'oral', 'topical', 'injection', 'ophthalmic', 'otic', 'nasal', 'inhalation', 'rectal'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint true and idempotentHint true. Description adds that results are limited to 10 matches and that the catalog is a working snapshot, noting the official source is authoritative. No contradiction.
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?
Very concise, front-loaded with purpose, uses bold markers for use/don't use. Every sentence adds value.
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?
Despite no output schema, the description enumerates return fields and states limitations (10 matches, working snapshot, authoritative source). Comprehensive for a search 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 coverage is 100% with detailed descriptions including examples and constraints. Tool description does not add meaningfully 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?
Description clearly states the tool looks up the Taiwan NHI drug catalog by multiple identifiers, returns up to 10 matches with specific fields. It distinguishes itself from siblings like search_taiwan_drug and get_drug_rules.
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?
Explicitly tells when to use (identify/disambiguate drug for SOAP draft) and when not to use (payment rules, audit clauses), with direct sibling tool names (get_drug_rules, search_audit_guidelines).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_fee_codeARead-onlyIdempotent
Look up the Taiwan NHI fee schedule (全民健康保險醫療服務給付項目及支付標準, current effective edition). Search by exact code (e.g. '00101B', 'P15001') or by Chinese / English name (e.g. '門診診察', 'ICU') — returns code, points, effective dates, and audit notes (truncated to 600 chars). Use category prefix to scope ('00' 基本診療, '06' 手術, 'P1' 病例計酬, 'N2' 護理). Use when an agent needs the canonical fee entry for a known procedure code, or wants to discover codes by name. Don't use for drugs (call lookup_drug) or for ICD-10 → procedure suggestions (call get_procedures_for_icd). The optional icd filter applies an OPDSTAR-curated mapping that is intentionally sparse (the original NHI data has no ICD field) — most codes will return no result with icd active. Reference only — official 健保署 支付標準 is authoritative. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Required ≥2 chars. Exact code match for 2-8 char alphanumerics (e.g. '00101B', 'OT1', 'P15001'); otherwise ILIKE search across name_zh + name_en. Examples: '00101B', '門診診察費', 'ICU', '麻醉', 'physical therapy'. | |
| category | No | Optional 1-2 char category prefix filter. Examples: '00' 基本診療, '01' 麻醉, '06' 手術, '08' 檢驗, 'P1'/'P4' 病例計酬, 'N2' 護理, 'A0'-'D9' 牙醫. | |
| icd | No | Optional ICD-10 code to filter by OPDSTAR-curated applicable_icd_pattern. NOTE: this mapping is sparse — original NHI data has no ICD field; OPDSTAR enriches incrementally. Most codes will return no result with icd filter active. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, idempotent. Description adds that audit notes are truncated to 600 chars, icd filter is sparse, and tool is reference only. No contradictions.
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?
Description is a single paragraph but well-organized, each sentence adds value. Could be slightly more structured but remains clear and efficient.
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 purpose, parameters, return fields (code, points, dates, audit notes truncated), caveats (sparse icd, reference only), and examples. Adequate given 3 params and no output schema.
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%. Description adds context: how q matches (exact vs ILIKE), examples, category prefix meanings, and icd sparsity. This meaningfully extends 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?
Description specifies verb 'Look up' and resource 'Taiwan NHI fee schedule', details search by code or name, and explicitly distinguishes from siblings by stating not to use for drugs or ICD-10 procedure suggestions.
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?
Provides clear 'Use when' and 'Don't use' guidance, explains category prefix usage, mentions sparse icd filter, and references alternative tools (lookup_drug, get_procedures_for_icd).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_icd10_cmARead-onlyIdempotent
Look up ICD-10-CM diagnosis codes with English / Traditional Chinese descriptions, category, and the OPDSTAR specialties each code is keyed against. Use when the agent encounters an ICD-10 code in a note, claim, or rejection notice and needs the canonical name, or wants to free-text search by EN / 中文 keyword to find candidate codes. Typical follow-up: chain into get_procedures_for_icd({icd10, specialty}) to find the procedures commonly paired with the code, or check_icd_for_major_illness_eligibility({icd10}) to check 重大傷病 coverage. Scope note: Currently backed by OPDSTAR's specialty-keyed Taiwan-relevant subset (~3,000 codes covering the diagnoses doctors actually code on outpatient claims); the full CMS public-domain ICD-10-CM 2025 set (~70K codes) will be merged in a later release. Out of scope: SNOMED CT cross-mapping, international procedure codes (ICD-10-PCS), drug interactions. Reference only — clinical coding decisions require physician judgment. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ICD-10-CM code, with or without dot. Examples: 'L20.9', 'L209', 'l20.9'. Auto-normalized (uppercased; tries dotted + undotted forms). | |
| keyword | No | Free-text search across English description, Chinese description, and code prefix. Examples: 'eczema', '皮膚炎', 'L20'. | |
| lang | No | Which description language(s) to include in the result. Default 'both'. | both |
| limit | No | Max results (1..50). Default 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as readOnly, non-destructive, and idempotent. The description adds key behavioral context: it is 'Reference only', requires physician judgment for clinical coding, and discloses data limitations (currently a ~3,000 code subset from OPDSTAR, with full set planned). This fully informs the agent of constraints and reliability.
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 moderately long but well-structured with bold headers, bullet points, and clear sections. Every sentence adds value, covering purpose, usage, scope, limitations, and follow-ups. Minor redundancy could be trimmed, but overall efficient for the information conveyed.
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?
Given the tool's simplicity and rich annotations/schema, the description is complete: it covers purpose, usage, behavioral constraints, parameter behavior, and scope. No output schema exists, but the description implies return of code, descriptions, category, and specialties. A brief note on result format would improve completeness slightly.
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%, so baseline is 3. The description adds value by explaining auto-normalization for the code parameter (uppercased, dotted/undotted forms), and clarifies that keyword searches across English, Chinese, and code prefix. This enhances understanding 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 clearly identifies the tool as a lookup for ICD-10-CM diagnosis codes with English/Chinese descriptions, category, and OPDSTAR specialties. It distinguishes itself from sibling tools by explicitly stating typical follow-up chains (get_procedures_for_icd, check_icd_for_major_illness_eligibility) and scope limitations (subset vs full set).
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 explicitly states when to use ('when the agent encounters an ICD-10 code...needs canonical name, or wants to free-text search') and provides specific scenarios (note, claim, rejection notice). It also lists out-of-scope items (SNOMED CT, ICD-10-PCS) and directs to alternative tools for follow-ups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_major_illnessARead-onlyIdempotent
Browse Taiwan NHI 重大傷病 (major illness) categories — official categories that grant copayment exemption and a more lenient claim-review process. Returns category name, ICD-10 code coverage, application requirement, and validity period. Use when an agent needs to enumerate or filter major-illness categories (e.g. 'all cancer categories', 'categories that don't require an application'). Don't use if you already have an ICD-10 code and want to know which categories it qualifies for — call check_icd_for_major_illness_eligibility instead. Reference only — final eligibility requires a formal application with supporting documentation per the official 重大傷病範圍及項目. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| category_code | No | Optional 1-3 char category code (e.g. '001' = 癌症, '005' = 慢性腎衰竭). If omitted, returns the full official list. | |
| keyword | No | Optional Chinese keyword (e.g. '癌症', '透析', '罕見') to filter category names. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, idempotent behavior. The description adds context about return fields and emphasizes that final eligibility requires formal application, which is important beyond the annotations.
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 concise, front-loads the purpose, and uses clear structure. It could be slightly trimmed but is well-organized for an agent to parse.
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?
Given no output schema, the description explains return fields and references a sibling tool for alternative use. It also notes reference nature and source. For a lookup tool with no required parameters, this is 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?
Schema coverage is 100% with descriptions for both parameters. The description mentions `category_code` and `keyword` but does not add significant new meaning beyond what the schema provides, so baseline 3 is appropriate.
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 browses Taiwan NHI major illness categories and lists the return fields, distinguishing it from the sibling tool `check_icd_for_major_illness_eligibility` which handles a different use case.
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?
Explicitly states when to use ('enumerate or filter major-illness categories') and when not to use ('if you already have an ICD-10 code... call check_icd... instead'), providing clear decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_point_valueARead-onlyIdempotent
Look up Taiwan NHI floating point values (浮動點值) — the settled per-point payment amount by region and total-budget sector. Taiwan NHI reimburses on a points system under a global budget, so one claimed point is usually worth less than NT$1; this tool returns the actual settled rate. With no year, returns the latest settled value for each region × sector; with a year (and optional quarter), returns the quarterly time series. Use when an agent needs to estimate actual reimbursement — claimed points × point value ≈ amount paid. Reference only — official figures are published quarterly by 衛生福利部中央健康保險署. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | Optional NHI region: 'taipei', 'northern', 'central', 'southern', 'kaoping', 'eastern', or 'national'. | |
| sector | No | Optional budget sector: 'hospital', 'primary_clinic', 'dental', 'tcm', or 'dialysis'. | |
| year | No | Optional Gregorian year (e.g. 2025). If omitted, returns the latest settled value per region × sector. | |
| quarter | No | Optional quarter 1-4 (only used together with year). | |
| metric | No | Optional metric: 'floating' (一般服務浮動點值, default) or 'average' (平均點值, weighted across payment types). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond the annotations: it explains the behavior with no year (returns latest settled value per region × sector) and with year/quarter (returns quarterly time series). It also clarifies that values are typically less than NT$1. No contradiction with annotations, which already mark it as readOnly and idempotent.
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 well-structured: starts with the core function, explains the context, then parameter behavior, and ends with usage guidance and attribution. It is slightly verbose but each sentence serves a purpose. Could be trimmed slightly without losing meaning.
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?
Given the complexity of the NHI point value system, the description provides enough context for an agent to understand what the tool does and when to use it. It mentions the output (settled rates, quarterly time series) but not the exact format. Since there's no output schema, a bit more detail on the return structure would improve completeness, but it is adequate.
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?
All parameters have descriptions in the schema (100% coverage), so the description doesn't need to repeat them. However, it adds domain-specific context (e.g., 'floating' vs 'average' metric) and explains the interaction between year and quarter. This adds 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 clearly states the tool's purpose: looking up Taiwan NHI floating point values, the settled per-point payment amount by region and sector. It explains the context of the global budget system and distinguishes the tool from sibling tools by focusing on a specific domain (point values) rather than other NHI lookups.
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 explicitly tells when to use the tool: 'Use when an agent needs to estimate actual reimbursement.' It also notes the official source for reference. While it doesn't explicitly state when not to use it or compare with alternatives, the use case is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_preventive_serviceARead-onlyIdempotent
Browse Taiwan NHI preventive-care and screening services — adult health checks, the major cancer screenings (breast, cervical, colorectal, oral, lung LDCT), prenatal care, child preventive health, and child dental fluoride / pit-and-fissure sealant programs. Returns each service's target population, age / sex eligibility, subsidy frequency, and screening tool. Use when an agent needs to know who is eligible for a preventive service and how often it is subsidised (e.g. 'who can get a mammogram and how often', 'child fluoride coverage'). Reference only — eligibility and subsidy follow the official 衛生福利部 announcements; the screening provider confirms eligibility at the point of service. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional service category: 'adult_health_check', 'cancer_screening', 'prenatal_care', 'child_preventive', 'dental_preventive', or 'integrated_screening'. If omitted, returns all services. | |
| keyword | No | Optional Chinese keyword (e.g. '乳房', '子宮頸', '塗氟', '產檢') to filter by service name, screening tool, or target population. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds that the data is curated by OPDSTAR and eligibility must be confirmed by the provider, providing useful context without contradicting annotations.
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 front-loaded with the main purpose and provides detailed examples and usage notes. While concise, it could be slightly shorter, but every sentence adds value.
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?
Given no output schema, the description explains what is returned (target population, eligibility, frequency, screening tool). It also notes the source and limitations. For a lookup tool with two optional parameters, this is complete and informative.
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% with descriptions for both parameters. The description adds Chinese keyword examples (e.g., '乳房', '塗氟') and clarifies the purpose of each parameter, providing marginal added 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 clearly states the tool browses Taiwan NHI preventive-care and screening services, listing specific examples like adult health checks, cancer screenings, and child dental programs. This distinguishes it from sibling tools which focus on drugs, ICD codes, and audit guidelines.
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 includes explicit 'Use when' guidance for eligibility and subsidy lookups, and states 'Reference only' to indicate it's informational. However, it lacks explicit exclusions or alternatives, though siblings are distinctly different.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_rejection_codeARead-onlyIdempotent
Look up a single Taiwan NHI rejection code (5-character format NNNNL — 4 digits + 1 uppercase letter A/B/C/..., e.g. '0317A', '0338A', '0114A'). Returns severity (low / medium / high), category (00 診療品質 · 01 病歷紀錄 · 02 基本診療 · 03 藥品特材 · 04 手術處置 · 05 檢查檢驗 · 06 論病例計酬 · 07 復健精神 · 08 其他 · 09 法令 — first two digits encode the category), and the official Chinese description from 健保署 專業審查不予支付理由代碼. Returns a not-found message (not an error) if the code does not exist. Use when an agent encounters a known rejection code in a notice or claim response and needs the human-readable explanation, or when triaging which category a code belongs to. Typical follow-up: call get_drug_rules({rejection_code}) if the code is in category 03 (藥品特材) to surface the drug rule behind the rejection; call search_audit_guidelines({query: <code>}) for codes in 04 / 05 to read the underlying audit-clause text; call count_appeal_precedents_for_rejection_code({rejection_code}) to gauge whether disputes for this code are commonly successful. Don't use to enumerate codes by category — call get_rejection_code_category({category}) instead. Reference only — the official 健保署 code list is authoritative. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Required. The exact 5-character NHI rejection code in `NNNNL` format (4 digits followed by 1 uppercase letter). Lowercase letters are auto-uppercased; whitespace is trimmed. Examples: '0317A' (病歷紀錄不全) / '0338A' (藥品特材) / '0114A' (病歷紀錄). The first two digits identify the category (00-09). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. Description adds that a not-found message (not an error) is returned for non-existent codes, and mentions the data source. No contradictions. Adds useful behavioral context beyond annotations.
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?
Description is fairly long but every sentence adds value. Front-loaded with purpose and format, then use guidelines. Could be slightly more concise but well-organized and efficient.
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?
No output schema, but description explicitly explains return values (severity, category, Chinese description) and error handling (not-found message). Also mentions follow-up tools. 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?
The single parameter 'code' has full schema coverage with pattern and description. Description adds auto-uppercasing and whitespace trimming details not in schema, providing extra guidance for agents.
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?
Clearly states the tool looks up a single Taiwan NHI rejection code, specifies the 5-character format, and describes returned fields (severity, category, Chinese description). Distinguishes itself from siblings like get_rejection_code_category and count_appeal_precedents_for_rejection_code.
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?
Explicitly states when to use (encountering a known rejection code) and when not to use (enumeration by category) with a sibling alternative. Also suggests typical follow-up calls for different categories, providing clear action paths.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recent_nhi_amendmentsARead-onlyIdempotent
List recent amendments to Taiwan NHI rules and audit guidelines (健保署「醫療費用審查注意事項」近一年修正公告). Returns the publication / effective dates, the amendment title and type ('primary' = main regulation update, 'comparison' = side-by-side diff document), and direct links to the official DOCX / ODT / PDF announcement files plus the 健保署 listing page. Use when an agent needs to answer 'what NHI rule changes are coming?', 'when does the new 審查注意事項 take effect?', or wants to check whether a specific rule has been recently amended before quoting it. Typical follow-up: call search_audit_guidelines({query}) to pull the post-amendment clause text, or lookup_rejection_code({code}) to see how it ties into existing rejection codes. Reference only — official 健保署 announcements are authoritative. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| since_days | No | Limit to amendments effective within N days from today (1..3650). Default 365 (近一年). | |
| type | No | 'primary' = main regulation update (affects nhi_audit_clauses content); 'comparison' = side-by-side diff document. 'all' returns both. Default 'all'. | all |
| limit | No | Max results (1..50). Default 20. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds that the tool is for 'Reference only' and that official 健保署 announcements are authoritative, disclosing behavioral boundaries beyond annotations.
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?
Description is roughly 5 sentences, front-loaded with purpose and return details, followed by usage guidance, then a note on authority. Every sentence serves a distinct purpose without redundancy.
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?
No output schema exists, but the description fully enumerates return fields (dates, title, type, links). Combined with clear parameter semantics and annotations, it provides complete context for agent decision-making.
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 has 100% coverage with parameter descriptions. The description adds value by clarifying the type enum values with parenthetical explanations (e.g., 'primary = main regulation update') and explicitly stating defaults in Chinese, but the schema already handles the basics well.
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?
Description explicitly states the tool lists recent amendments to Taiwan NHI rules and audit guidelines, specifying return fields (dates, title, type, links). It distinguishes from siblings by suggesting typical follow-ups like search_audit_guidelines and lookup_rejection_code.
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 includes explicit 'Use when' scenarios (e.g., 'what NHI rule changes are coming?') and advises on alternatives via 'Typical follow-up' calls to sibling tools, providing clear contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_audit_guidelinesARead-onlyIdempotent
Free-text search over Taiwan NHI 審查注意事項 rules — returns reason + suggestion summaries (first sentence only) for up to 10 rules matching a keyword (Traditional Chinese or English). Use when an agent is exploring whether any audit rule covers a topic (e.g. '抗生素', '檢查頻率', '慢性病處方') without knowing a specific code. Don't use for clauses tied to a known procedure code — call lookup_audit_clauses_for_procedure instead. Full SOAP example templates and detailed reasoning are part of the paid OPDSTAR product. Reference only — official 健保署 審查注意事項 is authoritative; results are previews. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Free-text query (2+ chars), Traditional Chinese or English. Examples: '抗生素', '檢查頻率', '慢性病處方'. | |
| specialty | No | Optional specialty filter (e.g. 'tcm', 'dermatology'). Omit to search all specialties. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, description discloses result limitations (first sentence only, up to 10 results), preview nature, and authoritative source, adding significant context.
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?
Description is concise with front-loaded main action, followed by usage and disclaimers, no unnecessary text.
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?
Given no output schema, description effectively explains return value structure (reason+suggestion, first sentence, max 10) and provides context about tool purpose and limitations.
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%, so baseline is 3. Description provides examples matching schema but does not add new semantic details about parameters.
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?
Description clearly states the tool performs free-text search over Taiwan NHI audit rules and returns summaries, differentiating from siblings like lookup_audit_clauses_for_procedure.
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?
Explicitly provides 'Use when' and 'Don't use' guidance with examples, and names the alternative tool for specific procedure codes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_nhi_interpretationsARead-onlyIdempotent
Search Taiwan's official NHI administrative interpretations (健保署行政函釋 / 函令) — the binding 公告 and 解釋函 issued by the National Health Insurance Administration that clarify how payment rules, drug-formulary provisions, special-material coverage, and review policy apply in practice. Each result returns the official document number (字號), issue date, 主旨 (subject), a content excerpt, and the source URL on the government law portal. Returns up to 10 ranked excerpts (most relevant first); returns an empty list (not an error) when nothing matches. Use when a question turns on an official ruling rather than a code definition — e.g. '函釋怎麼說人工水晶體的給付規定' / 'is there an interpretation on continuous-prescription day limits' — or when the user cites a 函釋 文號 directly (e.g. 健保審字第 1090017813 號). Don't use when you already have a specific rejection code, fee code, or drug name — those have dedicated lookup tools (lookup_rejection_code, lookup_fee_code, lookup_drug). Reference only — the official 健保署 / 衛福部 publication is authoritative; an excerpt may lag the latest revision and is not the full document, so open the source URL for the binding text. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Required. Natural-language query in Traditional Chinese or English, OR a 函釋 document number. Multi-word phrases work best (concept + qualifier). Examples: "人工水晶體 給付規定" / "continuous prescription day limit interpretation" / "健保審字第1090017813號". Single characters or 1-letter strings are unlikely to return useful matches. | |
| limit | No | Optional. Maximum number of ranked excerpts to return. Range 1-10. Default 5. Increase to 10 when surveying a topic; keep at 5 for a targeted look-up to save context. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds that it is a reference only, the official publication is authoritative, excerpts may lag, and to open the source URL for binding text. No contradiction.
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?
Well-structured with purpose first, then output details, usage guidance, and caveats. Every sentence adds value but could be slightly more concise (e.g., 'excerpt may lag the latest revision and is not the full document' could be shortened).
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 search tool, description covers ranking (top 10), error behavior (empty list not error), return format, and important caveats (reference only, authoritative source, open URL for binding text). No output schema needed.
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% with descriptions for both parameters. Description adds practical guidance: query can be natural language or document number, multi-word phrases best, single characters unlikely to work; limit usage advice (increase for survey, keep low for targeted lookup).
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 it searches Taiwan's NHI administrative interpretations, specifies the returned fields (document number, issue date, subject, excerpt, URL), and distinguishes from sibling tools by listing when not to use it (rejection code, fee code, drug name).
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?
Explicitly states 'Use when' and 'Don't use' with concrete examples (e.g., '函釋怎麼說人工水晶體的給付規定', '健保審字第1090017813號'), and names alternative sibling tools like lookup_rejection_code.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_nhi_wikiARead-onlyIdempotent
Search across Taiwan's official NHI knowledge base (健保署全球資訊網) for natural-language background questions. Covers 9 categories: audit (審查 — review rules / rejection grounds), drugs (藥品特材 — formulary, payment limits), fees (費用 — copay, premiums, contribution), plans (醫療計畫 — disease-management programs), services (醫療服務 — covered benefits), insurance (投保 — enrollment), forms (表單 — applications), records (紀錄 — documentation rules), admin (行政 — contracting, accreditation). Returns up to 10 ranked excerpts (most relevant first); each result includes title, content snippet, source URL, and category tag. Returns an empty list (not an error) when the query has no matches. Use when an agent needs broad NHI policy background not tied to a specific code — e.g. '慢性病連續處方箋天數上限' / 'how does balance billing work for orthodontics' / 'what are the rules for telemedicine reimbursement'. Typical follow-up: when an excerpt mentions a specific code (e.g. '0317A', '00101B'), call the appropriate code-specific tool (lookup_rejection_code, lookup_fee_code) for the canonical entry. Don't use when you already know a specific rejection code, procedure code, drug name, or audit-clause topic — those have dedicated tools that return structured fields rather than excerpts. Reference only — official 健保署 publications are authoritative; ranked excerpts may lag the latest revision and the snippet is not the full document. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Required. Natural-language query in Traditional Chinese or English. Multi-word phrases work best (concept + qualifier). Examples: "慢性病連續處方箋天數上限" / "急診轉診費用" / "telemedicine reimbursement rules" / "orthodontic balance billing". Single Chinese characters or 1-letter strings are unlikely to return useful matches. | |
| category | No | Optional. Narrows the search to one category. Use `audit` for review/rejection rules, `drugs` for formulary/payment limits, `fees` for copay/premiums, `plans` for disease-management programs, `services` for covered benefits, `insurance` for enrollment, `forms` for applications, `records` for documentation rules, `admin` for contracting/accreditation. Omit to search all categories (recommended when the topic is unclear). | |
| limit | No | Optional. Maximum number of ranked excerpts to return. Range 1-10. Default 5. Increase to 10 when surveying a topic; keep at 5 for targeted look-ups to save context. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly, non-destructive, idempotent. Description adds that results are up to 10 ranked excerpts, returns empty list for no matches, may lag latest revision, and snippet is not full document. No contradictions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with a clear one-liner, category list, return format, and usage guidance. Slightly lengthy but every sentence adds value. Could be tightened slightly.
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?
No output schema but description explains return structure (excerpts with fields). Annotations provide safety context. Sibling tools differentiation is thorough. Complete for an agent to select and invoke correctly.
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%. Description adds usage examples for 'query', explains enum values for 'category', and provides default and range advice for 'limit'. Adds meaning beyond the raw 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 clearly states it searches Taiwan's NHI knowledge base for natural-language background questions, lists 9 categories, and specifies it returns ranked excerpts. It distinguishes from siblings by stating not to use when a specific code/tool is known.
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?
Explicitly states when to use (broad NHI policy background) and when not to use (when a specific code/tool applies). Provides typical follow-up actions and references dedicated tools. Offers clear exclusion criteria and alternative tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_taiwan_drugARead-onlyIdempotent
Search Taiwan drugs across NHI and TFDA registries with unified cross-reference. Returns generic name (EN + 中文學名), all brand names + aliases, NHI 9碼 billing code, ATC code, dosage form, strength, route, therapeutic class, applicable specialties, compound-flag, and effective date. The query auto-detects four input shapes: (1) NHI drug code 9碼 (e.g. 'AC4537911', 'A04403412' — 1-2 letter prefix + 6-9 digits) → direct match; (2) ATC code prefix (e.g. 'J01CR02' or 'J01' for the antibacterials class) → class match; (3) Generic name EN or 中文 → ILIKE; (4) Brand name / alias → secondary fallback. Use when an agent has any drug identifier and needs the canonical record for billing / SOAP / appeal context. Typical follow-up: call get_drug_rules({drug_category_query}) for NHI payment rules / prior-authorization on this drug, lookup_icd10_cm for the diagnosis side, or count_appeal_precedents_for_rejection_code if a rejection code is involved. Out of scope: drug-drug interactions, severity scoring, indication-specific dosing. Reference only — TFDA license / 健保 給付規定 are authoritative. Curated by OPDSTAR (https://opdstar.com).
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search term: generic name (EN or 中文), brand name, alias, NHI 9碼, or ATC code. Minimum 2 chars (unless atc_prefix is provided). | |
| atc_prefix | No | Optional ATC code prefix to filter / browse by therapeutic class (e.g. 'J01' = systemic antibacterials, 'C09' = renin-angiotensin agents). Can be used alone to enumerate a class. | |
| form | No | Optional dosage_form filter (e.g. 'tablet', 'capsule', 'cream', 'ointment', 'inj', 'syrup'). Partial match. | |
| limit | No | Max results (1..30). Default 15. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnly and idempotent hints. The description adds valuable context about auto-detection of four input shapes, dynamic behavior, and return fields, enhancing transparency beyond annotations.
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?
Description is moderately long but well-structured with clear sections and bullet points. Every sentence adds value, though could be slightly more concise.
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?
Given no output schema, the description thoroughly explains return fields, input shapes, usage context, typical follow-ups, and out-of-scope items, making it highly complete for a complex 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 coverage is 100% with descriptions for each parameter. The description reinforces parameter usage but adds no new semantic details beyond what is in 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 clearly states it searches Taiwan drugs across NHI and TFDA registries and lists return fields. It distinguishes from many siblings but does not explicitly differentiate from the similarly named 'lookup_drug' sibling tool.
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?
Explicitly states when to use: when an agent has any drug identifier for billing/SOAP/appeal. Lists typical follow-ups and out-of-scope items, providing clear guidance on alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Every tool has a distinct, well-defined purpose. Descriptions explicitly state when to use and when not to use each tool, preventing ambiguity. For instance, `get_indicator` and `lookup_audit_indicator` target different indicator systems, and the guidance clearly delineates their use.
Most tools follow a verb_noun pattern (e.g., `lookup_fee_code`, `search_audit_guidelines`). Minor deviations include `recent_nhi_amendments` (no verb) and `check_icd_for_major_illness_eligibility` (long phrase). However, the naming is overall predictable and clear.
With 24 tools, the count is on the higher end but justified by the complexity of the NHI domain, covering drugs, procedures, audits, appeals, and more. Each tool serves a specific, non-redundant purpose, making the set appropriately scoped.
The tool set comprehensively covers the NHI domain: ICD-10, procedures, drugs, payment rules, rejection codes, audit clauses, appeal statistics, major illness, preventive services, chronic prescriptions, amendments, and official interpretations. No significant gaps are apparent for the server's stated purpose.
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
Hosted MCP for denial, prior auth, reimbursement, workflow validation, batch scoring, and feedback.
MCP server for US nursing facility search and ownership lookup (NursingHomeDatabase).
Taiwan Stock Exchange (TWSE) open data as MCP tools: stock quotes, ETF data, 140+ public datasets.
Taiwan legal research MCP: 判決書、全國法規、釋字/憲判與立法歷程查詢,12 個工具,回應均附官方出處 URL。
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceIntegrates Taiwan-specific medical data including ICD-10 codes, FDA drug databases, and nutrition information into the Model Context Protocol. It enables AI models to query clinical guidelines, verify medical codes, and convert health data into FHIR R4 standardized formats.MIT
- AlicenseAqualityDmaintenanceMCP server for automated ICD-10 medical coding. Code clinical text to ICD-10-CM diagnoses, search 74,000+ codes, and de-identify PHI via the AutoICD API.653MIT
- AlicenseNot gradedqualityAmaintenanceIntegrates Taiwan health data and international medical standards, providing 28 MCP tools for diagnostics, drugs, lab tests, and clinical guidelines via FHIR R4.163MIT
- AlicenseNot gradedqualityDmaintenanceAn open-source MCP server that aggregates Taiwan public data sources (data.gov.tw, TWSE, MOEA, CWA, etc.) and exposes them through the Model Context Protocol, enabling AI agents to query Taiwan data with a single configuration line.1Apache 2.0
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/tatsuju/opdstar-nhi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server