KlinikMCP
KlinikMCP is a comprehensive drug and clinical information server for Turkish healthcare professionals, aggregating data from TİTCK, SGK EK-4/A, openFDA, NLM RxClass, and PubMed.
Drug Label & Safety: Retrieve FDA labels (indications, dosage, warnings, interactions, adverse reactions), check pairwise drug interaction severity (Major/Moderate/Minor), identify frequently reported adverse events (FAERS), and monitor Turkish drug safety status (additional monitoring, license cancellation).
Drug Discovery & Classification: Perform reverse indication lookup to find drugs for a condition, list therapeutic, ATC, and mechanism-of-action classes, and search PubMed for medical literature.
Clinical Calculations: Calculate creatinine clearance (Cockcroft–Gault), body surface area (Mosteller), and weight-based pediatric doses.
Turkish Drug Registry (TİTCK SKRS): Search licensed drugs by name or barcode, retrieve detailed registry info (ATC, company, prescription type), access official KÜB/KT leaflets, find drugs sharing the same active ingredient/ATC, and check foreign supply status.
SGK Reimbursement & Equivalents: Find SGK bioequivalent drugs and check reimbursement status from the EK-4/A list.
Allows searching medical literature from PubMed, providing access to biomedical citations and abstracts.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@KlinikMCPparol muadili nedir?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
title: Klinik MCP emoji: 💊 colorFrom: blue colorTo: green sdk: docker app_port: 8080 pinned: false
⚠️ Disclaimer: Everything this server returns is for educational purposes only and is not medical advice. Always consult a qualified healthcare professional for medical decisions.
Related MCP server: OpenFDA MCP Server
💬 Example questions
Ask your assistant things like:
"What is Parol's SGK equivalent (muadil) and reimbursement status?" →
find_drug_equivalents"Is Glioscan under additional monitoring, or has its licence been cancelled?" →
get_drug_safety_status"What warnings are on metformin's FDA label?" →
get_drug_label"70 years old, 60 kg, creatinine 1.4, female — what is the creatinine clearance?" →
creatinine_clearance"TİTCK record for amoxicillin: ATC, company, prescription type?" →
get_turkish_drug_info"What is Parol's official patient leaflet (KÜB/KT)?" →
get_drug_leaflet"Can amifampridine be supplied from abroad?" →
find_foreign_supply"Can warfarin and aspirin be taken together?" →
check_drug_interactions
Answers come from official sources (TİTCK, SGK, openFDA, NLM, PubMed), not from the model's training data. Replies are written in Turkish.
One-click workflows (MCP Prompts): your client (Claude, Cursor and friends) shows these as ready-made commands:
ilac_bilgisi— TİTCK record + safety status + SGK equivalents in one summary.muadil_ve_geri_odeme— SGK reimbursement + equivalent (muadil) group.renal_doz_kontrol— creatinine clearance plus a renal-dosing reminder.
👥 Who is it for?
User | Start with | Why |
Physician |
| Indication/dose/warning + renal dosing + safety flags |
Pharmacist |
| Equivalents + reimbursement + safety status |
Researcher |
| PubMed + drug classes + reverse indication lookup |
This server is not a clinical decision tool. Confirming against the official source and applying clinical judgement is mandatory.
Tools
Tool | Description | Source |
| Indications, dosage, warnings, contraindications, interactions, adverse reactions | openFDA |
| The drug-interactions section of one label | openFDA |
| Pairwise interaction severity (Major/Moderate/Minor) | DDInter |
| Most frequently reported adverse events (FAERS) | openFDA |
| Drugs indicated for a condition (reverse lookup) | openFDA |
| Therapeutic / ATC / mechanism-of-action classes | RxClass |
| Medical literature search on PubMed | PubMed |
| Creatinine clearance (Cockcroft–Gault) | Formula |
| Body surface area (Mosteller) | Formula |
| Weight-based pediatric dose arithmetic | Formula |
| Equivalent (muadil) group | SGK EK-4/A |
| Reimbursement status (is it on the list) | SGK EK-4/A |
| Search the Turkish drug registry by name | TİTCK SKRS |
| Drug info: ATC, company, prescription type | TİTCK SKRS |
| Official KÜB/KT leaflet links (clinician + patient) | TİTCK |
| Drugs sharing the same ATC (active substance) | TİTCK SKRS |
| Active substances suppliable from abroad | TİTCK |
| Additional monitoring (▼) + licence cancellation | TİTCK |
🚀 Connecting (no installation required)
The server is live (HuggingFace Spaces + Smithery), so most people need no setup at all. Pick your client:
ChatGPT
In ChatGPT, enable Settings → Connectors → Advanced → Developer mode.
Choose Add connector and enter the MCP URL:
https://onatozmenn-klinik-mcp.hf.space/mcpSave. You can now ask things like "Can warfarin and aspirin be taken together?"
Note: custom MCP tools only show up on accounts with Developer mode on.
Claude Desktop
Add this to claude_desktop_config.json (Windows:
%APPDATA%\Claude\claude_desktop_config.json · macOS:
~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"klinik": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://onatozmenn-klinik-mcp.hf.space/mcp"]
}
}
}Restart Claude Desktop and the tools appear in the 🔨 menu.
Claude.ai (web)
Remote MCP connects directly on Pro / Max plans (and Free, one connector):
Customize → Connectors → "+" → Add custom connector.
Enter the MCP URL (leave the OAuth fields empty, the server needs no key):
https://onatozmenn-klinik-mcp.hf.space/mcpClick Add, then enable Klinik MCP from "+" → Connectors in the chat.
Smithery (one command)
npx -y @smithery/cli install onatozmen44/klinik-mcp --client claudeIf you want to run it locally or contribute:
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e .
# stdio (for a local Claude Desktop):
.\.venv\Scripts\python.exe -m health_mcp
# HTTP (for ChatGPT / remote clients):
.\.venv\Scripts\python.exe -m health_mcp --transport http --port 8000Optional: copy .env.example to .env and set OPENFDA_API_KEY /
NCBI_API_KEY to raise the upstream rate limits (not required).
To point Claude at your local stdio server, set command to your own
.venv\Scripts\python.exe path and args to ["-m", "health_mcp"].
Run the tests:
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"
.\.venv\Scripts\python.exe -m pytest -qTry the tools in a browser (MCP Inspector):
npx @modelcontextprotocol/inspector .\.venv\Scripts\python.exe -m health_mcpData sources
openFDA — https://open.fda.gov/apis/ (drug labels, adverse events, recalls)
NLM RxNorm / RxNav / RxClass — https://rxnav.nlm.nih.gov/ (drug terminology and classes)
PubMed (NCBI E-utilities) — https://www.ncbi.nlm.nih.gov/books/NBK25500/ (medical literature)
DDInter 2.0 — https://ddinter.scbdd.com/ (pairwise drug-drug interactions; CC BY-NC-SA 4.0, non-commercial use only)
🇹🇷 Turkish data (SGK EK-4/A, full list)
find_drug_equivalents and get_reimbursement_status read SGK's complete
reimbursement list, "Bedeli Ödenecek İlaçlar Listesi (EK-4/A)" (~8,000 drugs:
equivalent group, barcode, public number, list-entry date, reimbursement)
(src/health_mcp/data/sgk_ek4a.json).
The full list is published publicly inside SGK's consolidated "İşlenmiş Güncel
SUT" zip (EK-4 LİSTELERİ/EK-4A BEDELİ ÖDENECEK İLAÇLAR LİSTESİ.xlsx).
scripts/update_data.py finds, downloads and processes it automatically.
Note on retail prices: EK-4/A carries barcodes, equivalents and reimbursement, but not the net retail price in TRY (the price columns are discount rates). TİTCK does not publish barcode-level retail prices either (
dinamikmodul/100is EUR reference pricing, without barcodes). A commercial drug database is needed for real TRY prices.
Manual update (with an EK-4/A file you extracted from the zip):
.\.venv\Scripts\python.exe scripts/build_sgk_snapshot.py "C:\path\EK-4A.xlsx" --version "2026"🇹🇷 Full drug registry (TİTCK SKRS)
search_turkish_drugs, get_turkish_drug_info and
find_drugs_by_active_ingredient read every active product in the TİTCK
SKRS e-prescription list (~7,900 drugs: name, barcode, ATC, company,
prescription type, essential-medicines flag)
(src/health_mcp/data/titck_drugs.json).
To refresh it:
Download the latest
.xlsx: titck.gov.tr → dinamikmodul/43 "SKRS E-Reçete İlaç ve Diğer Farmasötik Ürünler Listesi".Build the snapshot:
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"
.\.venv\Scripts\python.exe scripts/build_titck_snapshot.py "C:\path\skrs.xlsx" --version 2026-06-23🛡️ TİTCK safety status (additional monitoring + licence cancellation)
get_drug_safety_status, and the warning lines inside get_turkish_drug_info,
read two official TİTCK lists
(src/health_mcp/data/titck_safety.json):
Drugs under additional monitoring (▼ black triangle) — TİTCK
dinamikmodul/57Licence cancellation list — TİTCK
dinamikmodul/76
Matching is by drug name / active substance (the barcode is empty in most
cancellation records), so product and presentation differences must be confirmed
against the official list. To refresh, download the latest .xlsx files and run:
.\.venv\Scripts\python.exe scripts/build_titck_safety_snapshot.py `
--monitoring "C:\path\ekizleme.xlsx" --cancellations "C:\path\ruhsatiptal.xlsx" `
--monitoring-version 2025-12-19 --cancellations-version 2026-06-19or let scripts/update_data.py below fetch them for you.
🔄 Automatic updates
TİTCK republishes its lists regularly. Pull the latest data with one command:
.\.venv\Scripts\python.exe scripts/update_data.pyThe script locates and downloads the TİTCK SKRS list (titck_drugs.json),
the full SGK EK-4/A (sgk_ek4a.json, from the consolidated SUT zip) and the
TİTCK safety lists (titck_safety.json: additional monitoring + licence
cancellations), then rebuilds the snapshots.
To schedule it weekly (adjust the paths):
schtasks /Create /SC WEEKLY /D MON /ST 03:00 /TN "health-mcp-update" /TR "C:\path\.venv\Scripts\python.exe C:\path\scripts\update_data.py"⚠️ Sorumluluk reddi: Bu sunucunun sağladığı bilgiler yalnızca eğitim amaçlıdır ve tıbbi tavsiye değildir. Tıbbi kararlar için mutlaka bir sağlık profesyoneline danışın.
💬 Örnek sorular
Asistanına şöyle sor:
“Parol'un SGK eşdeğeri (muadil) ve geri ödeme durumu nedir?” →
find_drug_equivalents“Glioscan ek izlemede mi, ruhsatı iptal mi?” →
get_drug_safety_status“Metformin'in FDA etiketinde uyarılar neler?” →
get_drug_label“70 yaş, 60 kg, kreatinin 1.4, kadın — kreatinin klerensi kaç?” →
creatinine_clearance“Amoksisilin için TİTCK kaydı: ATC, firma, reçete türü?” →
get_turkish_drug_info“Parol'un resmi prospektüsü (KÜB/KT) nedir?” →
get_drug_leaflet“Amifampridine yurt dışından temin edilebilir mi?” →
find_foreign_supply“Warfarin ile aspirin birlikte verilebilir mi?” →
check_drug_interactions
Yanıtlar resmî kaynaklardan (TİTCK, SGK, openFDA, NLM, PubMed) gelir — eğitimden tahmin değil.
Tek tıkla iş akışları (MCP Prompts): istemcin (Claude / Cursor vb.) bunları hazır komut olarak gösterir:
ilac_bilgisi— TİTCK kaydı + güvenlik durumu + SGK eşdeğer, tek özette.muadil_ve_geri_odeme— SGK geri ödeme + eşdeğer (muadil) grubu.renal_doz_kontrol— kreatinin klerensi hesabı + böbrek dozu hatırlatması.
👥 Kimler için?
Kullanıcı | Başla | Neden |
Hekim |
| Endikasyon/doz/uyarı + böbrek dozu + güvenlik bayrakları |
Eczacı |
| Muadil + geri ödeme + güvenlik durumu |
Araştırmacı |
| PubMed + ilaç sınıfları + endikasyon ters arama |
Bu sunucu bir klinik karar aracı değildir; resmî kaynak teyidi ve hekim/eczacı muhakemesi şarttır.
Araçlar (Tools)
Araç | Açıklama | Kaynak |
| Endikasyon, doz, uyarı, kontrendikasyon, etkileşim, yan etki | openFDA |
| Etiketteki ilaç etkileşimleri bölümü | openFDA |
| İki ilaç arası etkileşim şiddeti (Major/Moderate/Minor) | DDInter |
| En sık bildirilen yan etkiler (FAERS) | openFDA |
| Hastalığa göre ilaç bulma (ters arama) | openFDA |
| Terapötik / ATC / etki mekanizması sınıfları | RxClass |
| PubMed'de tıbbi literatür araması | PubMed |
| Kreatinin klerensi (Cockcroft–Gault) | Formül |
| Vücut yüzey alanı (Mosteller) | Formül |
| Kilo bazlı pediatrik doz hesabı | Formül |
| Eşdeğer (muadil) grup | SGK EK-4/A |
| Geri ödeme durumu (listede mi) | SGK EK-4/A |
| Türk ilaç kaydı arama (ad) | TİTCK SKRS |
| İlaç bilgisi: ATC, firma, reçete türü | TİTCK SKRS |
| Resmi KÜB/KT prospektüs linkleri (hekim+hasta) | TİTCK |
| Aynı ATC (etkin madde) ilaçlar | TİTCK SKRS |
| Yurt dışından temin edilebilen etkin maddeler | TİTCK |
| Ek izleme (▼) + ruhsat iptali | TİTCK |
🚀 Bağlama (kurulum gerekmez)
Sunucu yayında (HuggingFace Spaces + Smithery) — çoğu kullanıcı için hiçbir kurulum gerekmez. İstemcini seç:
ChatGPT
ChatGPT → Settings → Connectors → Advanced → Developer mode'u aç.
Add connector de ve MCP URL'sini gir:
https://onatozmenn-klinik-mcp.hf.space/mcpKaydet. Artık sohbette “Warfarin ile aspirin birlikte verilebilir mi?” gibi sorabilirsin.
Not: Özel MCP araçları yalnızca Developer mode açık hesaplarda görünür.
Claude Desktop
claude_desktop_config.json dosyasına ekle (Windows:
%APPDATA%\Claude\claude_desktop_config.json · macOS:
~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"klinik": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://onatozmenn-klinik-mcp.hf.space/mcp"]
}
}
}Claude Desktop'ı kapat-aç; araçlar 🔨 menüsünde görünür.
Claude.ai (web)
Pro / Max (ve Free — tek connector) planlarında uzak MCP doğrudan bağlanır:
Customize → Connectors → “+” → Add custom connector.
MCP URL'sini gir (OAuth alanları boş — sunucu anahtarsız):
https://onatozmenn-klinik-mcp.hf.space/mcpAdd de; sohbette sol alttaki “+” → Connectors'tan Klinik MCP'yi aç.
Smithery (tek komut)
npx -y @smithery/cli install onatozmen44/klinik-mcp --client claudeKendi makinende çalıştırmak veya katkıda bulunmak istersen:
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e .
# stdio (yerel Claude Desktop için):
.\.venv\Scripts\python.exe -m health_mcp
# HTTP (ChatGPT / uzak istemciler için):
.\.venv\Scripts\python.exe -m health_mcp --transport http --port 8000İsteğe bağlı: .env.example'ı .env'e kopyalayıp OPENFDA_API_KEY / NCBI_API_KEY
girerek API hız limitlerini yükseltebilirsin (gerekli değil).
Yereldeki stdio'yu Claude'a bağlamak istersen config'de command'i kendi
.venv\Scripts\python.exe yoluna, args'ı ["-m", "health_mcp"]'e ayarla.
Testleri çalıştır:
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"
.\.venv\Scripts\python.exe -m pytest -qAraçları tarayıcıda denemek (MCP Inspector):
npx @modelcontextprotocol/inspector .\.venv\Scripts\python.exe -m health_mcpVeri kaynakları
openFDA — https://open.fda.gov/apis/ (ilaç etiketleri, yan etkiler, geri çağırmalar)
NLM RxNorm / RxNav / RxClass — https://rxnav.nlm.nih.gov/ (ilaç terminolojisi ve sınıfları)
PubMed (NCBI E-utilities) — https://www.ncbi.nlm.nih.gov/books/NBK25500/ (tıbbi literatür)
DDInter 2.0 — https://ddinter.scbdd.com/ (ikili ilaç-ilaç etkileşim; CC BY-NC-SA 4.0, yalnızca ticari olmayan kullanım)
🇹🇷 Türkiye verisi (SGK EK-4/A — tam liste)
find_drug_equivalents ve get_reimbursement_status araçları, SGK'nın tam
"Bedeli Ödenecek İlaçlar Listesi (EK-4/A)"sını okur (~8.000 ilaç: eşdeğer grup,
barkod, kamu no, listeye giriş tarihi, geri ödeme)
(src/health_mcp/data/sgk_ek4a.json).
Tam liste, SGK'nın konsolide "İşlenmiş Güncel SUT" zip'i içinde public olarak
yayımlanır (EK-4 LİSTELERİ/EK-4A BEDELİ ÖDENECEK İLAÇLAR LİSTESİ.xlsx).
scripts/update_data.py bunu otomatik bulur, indirir ve işler.
TL fiyatı notu: EK-4/A barkod + eşdeğer + geri ödeme içerir ama net TL perakende fiyatı içermez (fiyat sütunları iskonto oranıdır). TİTCK de barkod bazlı retail TL fiyatını public yayımlamaz (
dinamikmodul/100yalnızca EUR referans, barkodsuz). Gerçek TL fiyatı için ticari bir ilaç DB'si gerekir.
Manuel güncelleme (zip'ten çıkardığın EK-4/A ile):
.\.venv\Scripts\python.exe scripts/build_sgk_snapshot.py "C:\yol\EK-4A.xlsx" --version "2026"🇹🇷 Tam ilaç kaydı (TİTCK SKRS)
search_turkish_drugs, get_turkish_drug_info ve
find_drugs_by_active_ingredient araçları, TITCK SKRS E-Reçete listesinin tüm
aktif ürünlerini (~7.900 ilaç: ad, barkod, ATC, firma, reçete türü, temel ilaç
listesi) okur
(src/health_mcp/data/titck_drugs.json).
Listeyi güncellemek için:
En güncel
.xlsx'i indir: titck.gov.tr → dinamikmodul/43 "SKRS E-Reçete İlaç ve Diğer Farmasötik Ürünler Listesi".Snapshot'ı üret:
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"
.\.venv\Scripts\python.exe scripts/build_titck_snapshot.py "C:\yol\skrs.xlsx" --version 2026-06-23🛡️ TİTCK güvenlik durumu (ek izleme + ruhsat iptali)
get_drug_safety_status aracı ve get_turkish_drug_info içindeki uyarı
satırları, iki resmî TİTCK listesini okur
(src/health_mcp/data/titck_safety.json):
Ek İzlemeye Tabi İlaçlar (▼ kara üçgen) — TİTCK
dinamikmodul/57Ruhsat İptal Listesi — TİTCK
dinamikmodul/76
Eşleşme ilaç adı/etkin madde bazlıdır (ruhsat iptalinde barkod çoğu kayıtta
boştur), bu yüzden ürün/sunum farkları için resmî listeden teyit edilmelidir.
Listeyi güncellemek için en güncel .xlsx'leri indirip:
.\.venv\Scripts\python.exe scripts/build_titck_safety_snapshot.py `
--monitoring "C:\yol\ekizleme.xlsx" --cancellations "C:\yol\ruhsatiptal.xlsx" `
--monitoring-version 2025-12-19 --cancellations-version 2026-06-19veya tek komutla otomatik (aşağıdaki scripts/update_data.py bunu da çeker).
🔄 Otomatik güncelleme
TİTCK listesi düzenli güncellenir. En güncel veriyi tek komutla çek:
.\.venv\Scripts\python.exe scripts/update_data.pyScript TİTCK SKRS listesini (titck_drugs.json), SGK tam EK-4/A'yı
(sgk_ek4a.json, konsolide SUT zip'inden) ve TİTCK güvenlik listelerini
(titck_safety.json: ek izleme + ruhsat iptali) kendi bulup indirir ve yeniden
üretir.
Haftalık zamanlamak için (yolları kendine göre düzenle):
schtasks /Create /SC WEEKLY /D MON /ST 03:00 /TN "health-mcp-update" /TR "C:\yol\.venv\Scripts\python.exe C:\yol\scripts\update_data.py"Available Tools
18 toolsbody_surface_areaARead-onlyIdempotent
Body surface area (Mosteller formula) for BSA-based dosing.
| Name | Required | Description | Default |
|---|---|---|---|
| height_cm | Yes | Height in centimeters. | |
| weight_kg | Yes | Body weight in kilograms. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true. The description adds that it uses the Mosteller formula and its purpose, but does not disclose behavioral details beyond what annotations provide. 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?
Single, concise sentence with all essential information. No extraneous 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 the presence of an output schema and annotations, the description covers the formula and purpose. However, it does not specify the output unit (e.g., m^2) or any input constraints. Minor gap.
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 adequate parameter descriptions. The tool description adds no further meaning to height_cm or weight_kg beyond the schema. 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?
The description clearly states the tool computes body surface area using the Mosteller formula for BSA-based dosing. It names the specific formula and use case, distinguishing it from siblings like creatinine_clearance or pediatric_dose.
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 implies usage when BSA-based dosing is needed but does not specify when to use this over alternatives like pediatric_dose or creatinine_clearance. No explicit when-not-to-use or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_drug_interactionsARead-onlyIdempotent
Check whether TWO specific drugs interact, with severity (DDInter 2.0).
USE THIS for questions like "can X and Y be taken together?", "does X
interact with Y?", or any two-drug combination/co-administration check.
Provide the two drug names (Turkish brand/active substance or English INN);
returns the pairwise severity — Major / Moderate / Minor — from DDInter,
bridging Turkish names through TİTCK. For ONE drug's full label interaction
text, use get_drug_interactions instead. A missing pair does NOT prove the
combination is safe.
| Name | Required | Description | Default |
|---|---|---|---|
| drug1 | Yes | First drug — brand, active substance, or INN (Turkish or English). | |
| drug2 | Yes | Second drug — brand, active substance, or INN (Turkish or English). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true. The description adds that severity comes from DDInter, bridges Turkish names through TİTCK, and includes the important caveat about missing pairs not implying safety.
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 front-loading the core function, usage examples, and a caution. Every sentence adds value with 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?
For a two-parameter tool with likely simple output (severity level), the description is complete enough. It covers what to input, what to expect, and a limitation. An output schema exists to fill any gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameters are self-explanatory. The description reiterates the parameter types (brand, active substance, INN) but adds no significant 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 clearly states the tool checks pairwise drug interactions with severity, using DDInter 2.0. It distinguishes from the sibling tool get_drug_interactions, which is for a single drug's full label.
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 THIS for' examples and a direct when-not-to-use instruction pointing to the alternative get_drug_interactions. Also warns that a missing pair does not prove safety.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
creatinine_clearanceARead-onlyIdempotent
Estimate creatinine clearance (Cockcroft–Gault) for renal drug dosing.
sex: "kadın"/"female"/"f" or "erkek"/"male"/"m". serum_creatinine_mg_dl: serum creatinine in mg/dL.
| Name | Required | Description | Default |
|---|---|---|---|
| age | Yes | Patient age in years. | |
| sex | Yes | Sex: 'kadın'/'female'/'f' or 'erkek'/'male'/'m'. | |
| weight_kg | Yes | Body weight in kilograms. | |
| serum_creatinine_mg_dl | Yes | Serum creatinine in mg/dL. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint and idempotentHint. The description reinforces this with 'Estimate' and adds details like sex parameter language variants, which go beyond annotations without contradicting them.
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?
Two concise sentences: first states purpose, second clarifies parameter specifics. No redundant information, well front-loaded.
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 is a simple calculator with a known formula, output schema present, and all parameters fully described, the description is complete. It names the formula and purpose, sufficient for an agent to 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 description coverage is 100%, so parameters are well-documented. The description repeats the sex allowed values and serum creatinine unit, adding no new information beyond the schema. 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?
The description clearly states it estimates creatinine clearance using the Cockcroft-Gault formula for renal drug dosing, which is a specific, unambiguous purpose that distinguishes it from sibling tools like body_surface_area or check_drug_interactions.
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 purpose is stated but no explicit guidance on when to use this tool versus alternatives (e.g., other GFR estimation formulas). The context of renal drug dosing is implied but not elaborated with usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_drug_equivalentsARead-onlyIdempotent
Find SGK eşdeğer (bioequivalent) drugs for a drug name or barcode.
| Name | Required | Description | Default |
|---|---|---|---|
| drug | Yes | Drug name or barcode. | |
| max_results | No | Maximum number of equivalent drugs to list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true, so the description's minimal behavioral disclosure (only the operation) adds no conflict. However, it does not elaborate on data source limits or potential failures beyond what annotations cover.
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, efficient sentence that states purpose upfront with no extraneous words. Every word serves a clear function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not detail return values. The two parameters are fully covered by schema. However, additional context about the SGK database scope or limitations could enhance 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 description coverage is 100%, so the schema already documents both parameters. The description adds no extra meaning or format guidance beyond 'drug name or barcode'.
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 verb ('Find'), resource ('SGK eşdeğer (bioequivalent) drugs'), and input ('drug name or barcode'). It is specific and distinguishes from siblings like 'find_drugs_by_active_ingredient' by focusing on bioequivalence.
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 implies usage for finding bioequivalent drugs but does not explicitly guide when to use this tool over alternatives (e.g., find_drugs_by_active_ingredient). No exclusion or when-not guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_drugs_by_active_ingredientARead-onlyIdempotent
Find Turkish drugs sharing the same ATC code (same active substance/class).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Drug name or barcode; its ATC code is used to find matches. | |
| max_results | No | Maximum number of drugs to list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. Description adds that it uses the query's ATC code to find matches, which is useful but not extensive. 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?
Single sentence, front-loaded with key information, no unnecessary 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?
Given the existence of an output schema and the tool's simplicity, the description adequately covers the purpose and behavior. It doesn't explain return values but that is covered by the 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% with param descriptions. The description adds value by explaining that the query can be a drug name or barcode and that the ATC code is extracted to find matches, clarifying the mechanism beyond 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 clearly states the verb 'Find', resource 'Turkish drugs', and the criterion 'sharing the same ATC code (same active substance/class)'. This differentiates from siblings like search_turkish_drugs or find_drug_equivalents.
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?
Description implies usage for finding drugs by ATC code but does not explicitly state when to use this tool versus alternatives or when not to use it. No direct comparison with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_drugs_for_conditionARead-onlyIdempotent
Find drugs whose FDA labels list a given condition as an indication.
Reverse lookup: given a condition (e.g. "hypertension", "migraine"), returns the generic drugs most frequently indicated for it.
| Name | Required | Description | Default |
|---|---|---|---|
| condition | Yes | Condition/indication, e.g. 'hypertension' or 'migraine'. | |
| max_results | No | Maximum number of drugs to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and idempotentHint. The description adds behavioral context by stating that results are sorted by frequency ('most frequently indicated'), which is not captured by annotations. No contradiction detected.
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 two sentences long, front-loaded with the primary action, and contains zero filler or redundancy. 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 the simple nature of the tool and the presence of annotations (readOnlyHint, openWorldHint, idempotentHint) and a complete schema, the description is complete. An output schema exists but its content is not needed for basic usage.
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?
Input schema has 100% coverage with clear descriptions for both parameters ('condition' and 'max_results'). The description does not add any additional meaning beyond what is already in the schema, so a baseline score of 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's purpose: 'Find drugs whose FDA labels list a given condition as an indication.' It specifies the verb 'find', resource 'drugs', and mentions a unique aspect ('generic drugs most frequently indicated'), which distinguishes it from siblings like 'find_drugs_by_active_ingredient'.
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 implies usage for condition-based drug lookup but does not explicitly state when to use this tool versus alternatives or provide exclusions. The context is clear, but no direct guidance on selection among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_foreign_supplyARead-onlyIdempotent
TİTCK Yurt Dışı Etkin Madde Listesi: bir etkin maddenin yurt dışından temin edilebilirliği.
Checks whether an active substance can be supplied from abroad (via TEB), with ATC, pharmaceutical form, prescription type and whether import needs TİTCK's written approval.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Active substance, drug name, or ATC code to check against TİTCK's foreign-supply list. | |
| max_results | No | Maximum number of substances to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds value by detailing the specific information returned (ATC, form, prescription type, import approval) and the source (TİTCK list via TEB).
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 mostly concise with two sentences, but includes a Turkish header that may not be universally understood. Otherwise 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?
Given the output schema existence, the description is complete enough for a simple query tool. It covers the core functionality and expected results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add new parameter semantics beyond the schema; query and max_results are already well-described 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 the tool checks foreign supply of an active substance via TEB, with specific fields (ATC, form, prescription type, import approval). It is distinct from siblings like find_drug_equivalents.
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 implies usage when checking foreign supply availability, but does not provide explicit when-to-use or when-not-to-use guidance relative to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_drug_adverse_eventsARead-onlyIdempotent
Get the most frequently reported adverse events for a drug (FAERS).
Data comes from the openFDA adverse-event reporting system. Counts reflect spontaneous reports and do not imply causation.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of adverse-event terms to return. | |
| drug_name | Yes | Drug name (brand, generic, or active substance). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds useful context beyond annotations: data source (openFDA) and a caveat about spontaneous reports not implying causation. Annotations already cover read-only and idempotent nature.
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?
Two concise sentences: the first states the core purpose, the second adds data source and a critical caveat. No superfluous 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?
Adequate for a read-only tool with output schema and good annotations. Mentions data source and limit of interpretation (no causation). Could mention ordering by frequency but 'most frequently' implies it.
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 clear descriptions for both parameters. The tool description does not add any new parameter details beyond what the schema already provides.
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 it gets the most frequently reported adverse events for a drug using FAERS data. Distinct from sibling tools like check_drug_interactions or get_drug_safety_status.
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?
Implied usage: when adverse event information is needed. No explicit guidance on when to use this versus other tools, no exclusions or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_drug_classesARead-onlyIdempotent
List the therapeutic / ATC / mechanism classes a drug belongs to (RxClass).
| Name | Required | Description | Default |
|---|---|---|---|
| drug_name | Yes | Drug name to look up therapeutic/ATC/mechanism classes for. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, indicating a safe read operation. The description adds specific context by naming the types of classes (therapeutic, ATC, mechanism) and the RxClass source, which is useful 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 a single concise sentence, front-loaded with the verb 'List'. Every word is necessary, and there is no redundancy or fluff.
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 presence of an output schema (not shown) and the simple one-parameter input, the description is largely complete. However, it could mention possible empty results or error cases, but the annotations (readOnlyHint, openWorldHint) mitigate this. The description sufficiently covers the tool's function for an 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 input schema has 100% coverage with a single parameter 'drug_name' that is fully described in the schema. The tool description does not add new semantic information beyond restating the purpose. Baseline 3 is appropriate given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' and clearly identifies the resource: therapeutic, ATC, and mechanism classes a drug belongs to. It also mentions 'RxClass' which distinguishes it from sibling tools like 'find_drugs_for_condition' or 'get_drug_adverse_events'.
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 does not explicitly state when to use this tool versus alternatives like 'find_drugs_by_active_ingredient' or 'get_drug_label'. Usage is implied as a straightforward lookup, but no exclusions or alternative guidance are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_drug_interactionsARead-onlyIdempotent
Get the interactions section of ONE drug's openFDA label (free text).
Returns the single-drug interaction narrative from the US label. To check
whether TWO specific drugs interact (with a severity rating), use
check_drug_interactions instead.
| Name | Required | Description | Default |
|---|---|---|---|
| drug_name | Yes | Drug name (brand, generic, or active substance). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, idempotentHint. Description adds context about returning free text from a US label, which is consistent with annotations and slightly extends understanding. 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?
Two sentences with no waste. First sentence states purpose, second provides alternative. Front-loaded 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?
Given the tool's simplicity (single parameter, existing output schema), the description adequately explains what it returns (interactions section free text). No further detail is necessary.
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 parameter description 'Drug name (brand, generic, or active substance).' Description does not add further meaning beyond the schema, so baseline score of 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 'Get the interactions section of ONE drug's openFDA label (free text)' with a specific verb and resource. It distinguishes from the sibling tool `check_drug_interactions` by noting that this tool is for a single drug's free-text narrative, not checking interaction between two 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?
Explicitly tells when to use this tool vs the sibling: 'To check whether TWO specific drugs interact (with a severity rating), use check_drug_interactions instead.' This provides clear guidance on alternative usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_drug_labelARead-onlyIdempotent
Get the official openFDA label for a drug.
Includes indications, dosage & administration, warnings, contraindications, drug interactions and adverse reactions.
| Name | Required | Description | Default |
|---|---|---|---|
| drug_name | Yes | Drug name (brand, generic, or active substance). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds minimal behavioral context beyond listing label sections; it does not discuss data freshness, error handling, or what happens if the drug is not found.
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?
Two sentences: first states the core action, second lists key content. No redundancy, immediately informative, and 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?
Combined with annotations (read-only, open-world, idempotent) and output schema, the description is sufficient. It tells exactly what the tool returns, which is the official label with typical sections. For a simple tool with one parameter, this is 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?
Single parameter 'drug_name' is fully covered in the schema (100%). The description does not elaborate on expected formats, accepted names, or validation rules, so it adds no semantic 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 it retrieves the 'official openFDA label for a drug', listing key contents like indications, dosage, warnings, etc. The verb 'Get' and specific resource distinguish it from general search tools, though sibling 'get_drug_leaflet' is not contrasted.
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?
No guidance on when to use this tool versus alternatives like get_drug_leaflet or search_medical_literature. The description does not specify prerequisites, exclusions, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_drug_leafletARead-onlyIdempotent
Resmi TİTCK KÜB (Kısa Ürün Bilgisi — hekim) ve KT (Kullanma Talimatı — hasta) prospektüs bağlantıları.
Looks up a Turkish drug in TİTCK's official KÜB/KT registry and returns the official SmPC (KÜB, for clinicians) and patient-leaflet (KT) PDF links.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Turkish drug name to find its official KÜB/KT leaflet for. | |
| max_results | No | Maximum number of matching products to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, so safety is covered. Description adds that it returns PDF links, which is useful. However, it does not mention behavior when drug not found or any rate limits, but does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and 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?
Output schema exists (not shown) but description mentions return of PDF links. With good annotations and schema, description covers essential context. Could mention that search is limited to Turkish drugs, which it does implicitly.
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 clear descriptions for both parameters. The tool description adds context about the registry but no additional parameter details beyond the schema. Baseline score of 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 uses specific verbs 'looks up' and 'returns' for the resource 'Turkish drug official KÜB/KT leaflet'. It clearly distinguishes from siblings by specifying TİTCK registry and PDF links for SmPC and patient leaflet.
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?
No explicit guidance on when to use this tool vs alternatives like get_turkish_drug_info or search_turkish_drugs. Context is implied but no exclusions or when-not-to-use are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_drug_safety_statusARead-onlyIdempotent
TİTCK güvenlik durumu: ek izleme (▼) ve ruhsat iptali. Ad veya barkod.
Reports whether a Turkish drug is on TİTCK's additional-monitoring list and whether any authorization-cancellation record matches its name/barcode.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Drug name or barcode. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=true, idempotentHint=true) are consistent with the description. The description adds specific details: it reports two types of status (additional monitoring and cancellation). No destructive behavior mentioned, and it aligns 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 short but includes both Turkish and English versions. The first sentence is in Turkish, then an English clarification. It is concise but the dual language might confuse; however, it remains 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?
For a single-parameter tool with an output schema (as indicated by context signals), the description adequately covers the tool's functionality: reporting two specific safety statuses. It does not need to explain return values due to output schema presence.
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 schema covers the parameter 'query' with 100% description coverage. The description adds 'Ad veya barkod' (name or barcode) which is redundant with the schema. However, it also provides the context of what the query is used for in the overall tool purpose.
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 explicitly states it reports TİTCK safety status for Turkish drugs, specifically additional monitoring and authorization cancellation. It clearly distinguishes from sibling tools like get_turkish_drug_info by focusing on safety-related status.
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 clear context (TİTCK safety status) and input type (name or barcode). It implies use when checking drug safety or authorization status but does not explicitly state when not to use or mention alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reimbursement_statusARead-onlyIdempotent
Check whether a drug is on the SGK reimbursement list (EK-4/A).
| Name | Required | Description | Default |
|---|---|---|---|
| drug | Yes | Drug name or barcode. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true, so the description does not need to repeat those. It adds context about the specific list (SGK, EK-4/A) but does not disclose any further behavioral traits beyond what annotations provide. This is acceptable given the annotations, but no additional transparency is offered.
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?
A single sentence that efficiently conveys the tool's purpose with no wasted words. It is front-loaded and easy 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?
With one required parameter, full schema coverage, and an output schema present, the description is nearly complete. It could be slightly improved by hinting at the output format (e.g., 'returns true/false'), but the existing output schema mitigates this gap.
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% (the 'drug' parameter has a description 'Drug name or barcode.'). The description adds no extra meaning beyond the schema, so the baseline score of 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's purpose with a specific verb ('check') and resource ('whether a drug is on the SGK reimbursement list (EK-4/A)'). It distinguishes from sibling tools like check_drug_interactions or get_drug_adverse_events by focusing on reimbursement status.
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?
No guidance is provided on when to use this tool versus alternatives. While the purpose is clear, there is no explicit mention of when not to use it or what distinguishes it from similar drug lookup tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_turkish_drug_infoARead-onlyIdempotent
Get full TİTCK registry info for a Turkish drug by name or barcode.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Drug name or barcode. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, indicating safe, read-only behavior. The description adds meaningful context by specifying the source (TİTCK registry) and that it returns 'full' info, which supplements the annotations without 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 a single, well-structured sentence that immediately conveys the tool's purpose and input method. Every word is necessary and there is no redundant or extraneous 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 that an output schema exists (not provided here), the description does not need to explain return values. The description adequately states what the tool does and how to use it, though it could optionally clarify that it is for exact lookups as opposed to searches.
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 a clear description of the 'query' parameter as 'Drug name or barcode.' The tool description essentially restates this, adding no new semantic detail beyond what the schema provides, so a baseline score of 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 it retrieves 'full TİTCK registry info' for a Turkish drug by name or barcode. It identifies the specific resource and input method, but does not explicitly differentiate from sibling tools like 'search_turkish_drugs' which may return multiple results.
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?
No guidance is provided on when to use this tool versus alternatives such as 'search_turkish_drugs' or 'get_drug_label'. The description lacks usage context and does not mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pediatric_doseARead-onlyIdempotent
Weight-based pediatric dose calculator.
Computes total daily and per-dose amounts from a mg/kg/day rate that YOU supply from a trusted reference; this tool only does the arithmetic (optionally capping at a maximum daily dose). It does not recommend doses.
| Name | Required | Description | Default |
|---|---|---|---|
| weight_kg | Yes | Child body weight in kilograms. | |
| doses_per_day | No | Number of divided doses per day. | |
| max_mg_per_day | No | Optional maximum total daily dose (mg) to cap at. | |
| mg_per_kg_per_day | Yes | Dose rate in mg per kg per day, from a trusted reference. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and idempotentHint=true, which align with the arithmetic-only description. The description adds context: it only performs safe, idempotent calculations and optionally caps daily dose. 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 extremely concise: one line as title, one sentence explaining functionality. Every word 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?
Given the output schema exists, return values need not be described. The description covers all critical behavioral aspects (arithmetic-only, capping, user-supplied rate) and is sufficient for an agent to use 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%, so baseline is 3. The description adds semantic value by explaining the 'mg_per_kg_per_day' parameter must come from a trusted reference and mentioning the optional cap ('max_mg_per_day'). This goes beyond the schema descriptions.
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 is a 'Weight-based pediatric dose calculator' that computes total daily and per-dose amounts. It distinguishes from siblings like 'body_surface_area' by specifying it only does arithmetic from a user-supplied rate. No ambiguity.
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 instructs the user to supply the dose rate from a trusted reference and clarifies the tool does not recommend doses. This tells when to use (when you have a rate) and when not to (for dose recommendations). Could be improved by naming alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_medical_literatureARead-onlyIdempotent
Search PubMed for medical literature on a drug, condition or topic.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Topic to search — drug, condition, or keyword. | |
| max_results | No | Maximum number of articles to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds the PubMed source context but does not disclose additional behavioral traits like result format, pagination, or API limitations. The added value is modest.
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, front-loaded sentence that efficiently conveys the core function. Every word serves a purpose with 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?
For a simple search tool with two parameters and an output schema, the description adequately covers the primary use case. It could optionally mention advanced search syntax, but overall it is sufficient for an agent to select and 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?
With 100% schema description coverage, the schema already documents both parameters. The description restates that the query is a topic but adds no further semantics about query syntax or parameter constraints 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's purpose: searching PubMed for medical literature on a drug, condition, or topic. It uses a specific verb ('search') and resource ('PubMed'), and distinguishes from sibling tools that focus on specific drug-related queries.
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 states the input domains (drug, condition, topic) but provides no guidance on when to prefer this tool over siblings like 'find_drug_adverse_events' or 'get_drug_label'. No usage exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_turkish_drugsBRead-onlyIdempotent
Search Turkey's licensed drug registry (TİTCK SKRS) by drug name.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Drug name to search in the TİTCK registry. | |
| max_results | No | Maximum number of results to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only and idempotent, which covers basic behavior. The description adds the specific registry (TİTCK SKRS) but does not disclose any additional behavioral traits beyond the annotations, making it adequate but not exceptional.
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, concise sentence with no wasted words. It is front-loaded with the action and target resource, and every word 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 the presence of an output schema (which will document return values), the description is sufficient for a simple search tool. It names the specific registry, which provides useful context, though it could mention that results are limited by max_results (but that is in the 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 description coverage is 100%, so the schema already documents both parameters well. The description adds no extra meaning beyond what is in the schema, but it does not need to since the schema is complete.
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 Turkey's licensed drug registry by drug name, which is a specific action on a specific resource. However, it does not explicitly differentiate from sibling tools like 'get_turkish_drug_info' or 'find_drug_equivalents', which could cause confusion.
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 no guidance on when to use this tool versus alternatives. It does not mention when to search by name versus by active ingredient or other criteria, and lacks any exclusions or context about optimal usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes, though 'check_drug_interactions' and 'get_drug_interactions' could be confused without careful reading of descriptions. Overall, tools are well-differentiated.
Names mix verb-noun patterns (e.g., check_drug_interactions, find_drug_equivalents) with noun-only names (e.g., body_surface_area, creatinine_clearance), lacking a uniform convention.
18 tools cover a broad range of pharmaceutical and clinical functionalities without being excessive, appropriate for the domain's complexity.
The set covers core areas (calculations, interactions, labels, safety, search) but lacks some specialized features like allergy checks or multi-drug interaction checks, though not essential for the primary use case.
Maintenance
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Hosted MCP server exposing US hospital procedure cost data to AI assistants
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Auditable MCP server for PubMed, Europe PMC, ClinicalTrials.gov, and bioRxiv/medRxiv queries
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for clinical and pharmaceutical data, enabling search of ClinicalTrials.gov, PubMed, FDA, and ICH guidelines without API keys.45MIT
- AlicenseAqualityBmaintenanceAn MCP server that enables AI assistants to query U.S. FDA public datasets, including drug adverse events, labeling, recalls, approvals, shortages, NDC directory, and medical device regulatory information.10MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides comprehensive medical information by querying authoritative APIs including FDA, WHO, PubMed, RxNorm, and Australia's PBS, enabling drug searches, health statistics, medical literature, drug nomenclature, and PBS subsidy queries.71MIT
- AlicenseNot gradedqualityBmaintenanceAn MCP server that gives LLMs live access to clinical trials, FDA drug recalls, adverse-event reports, drug labels, and drug-name normalization via six validated tools.MIT
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/onatozmenn/klinik-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server