Mevzuat MCP
The Mevzuat MCP server provides programmatic access to Turkey's Ministry of Justice Legislation Information System (mevzuat.gov.tr), enabling comprehensive search and retrieval of Turkish legislation content in clean Markdown format.
Advanced Search Capabilities - Search using full-text phrases, legislation numbers, Official Gazette issue numbers, legislation types, with support for Boolean operators, exact phrases, wildcards, fuzzy search, regex patterns, and proximity search
Retrieve Legislation Structure - Get hierarchical table of contents showing chapters, sections, and articles for specific legislation
Access Full Article Content - Retrieve complete text of individual articles in Markdown format, or entire content for non-hierarchical documents
Flexible Filtering & Pagination - Sort by Official Gazette date, registration date, or legislation number with configurable page sizes
MCP Integration - Works seamlessly with Claude Desktop, 5ire, and other MCP-compatible clients for LLM applications
Automatic Format Conversion - Converts HTML legislation content to Markdown for optimal LLM processing
Click on "Deploy 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., "@Mevzuat MCPsearch for laws about data protection and privacy"
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.
Mevzuat MCP: Adalet Bakanlığı Mevzuat Bilgi Sistemi için MCP Sunucusu
Bu proje, Adalet Bakanlığı'na ait Mevzuat Bilgi Sistemi'ne (mevzuat.gov.tr) erişimi kolaylaştıran bir FastMCP sunucusu oluşturur. Bu sayede, Mevzuat Bilgi Sistemi'nden mevzuat arama ve tüm mevzuat içeriklerini Markdown formatında alma işlemleri, Model Context Protocol (MCP) destekleyen LLM (Büyük Dil Modeli) uygulamaları (örneğin Claude Desktop veya 5ire) ve diğer istemciler tarafından araç (tool) olarak kullanılabilir hale gelir.

🎯 Temel Özellikler
Adalet Bakanlığı Mevzuat Bilgi Sistemi'ne programatik erişim için standart bir MCP arayüzü.
26 farklı tool ile kapsamlı mevzuat erişimi (iki farklı veri kaynağı):
mevzuat.gov.tr üzerinden 21 araç (türe özel arama ve içerik)
bedesten.adalet.gov.tr üzerinden 5 araç (birleşik arama, gerekçe, içindekiler)
Desteklenen 12 mevzuat türü:
Kanun - Türkiye Cumhuriyeti kanunları
KHK - Kanun Hükmünde Kararnameler
Tüzük - Tüzükler
Kurum Yönetmeliği - Kurum ve kuruluş yönetmelikleri
Üniversite Yönetmeliği - Üniversite yönetmelikleri
Cumhurbaşkanlığı Kararnamesi - Cumhurbaşkanlığı kararnameleri
Cumhurbaşkanı Kararı - Cumhurbaşkanı kararları
CB Yönetmeliği - Cumhurbaşkanlığı ve Bakanlar Kurulu yönetmelikleri
CB Genelgesi - Cumhurbaşkanlığı genelgeleri
Bakanlar Kurulu Yönetmeliği - Bakanlar Kurulu yönetmelikleri
Tebliğ - Tebliğler
Mülga Mevzuat - Yürürlükten kaldırılmış mevzuat
mevzuat.gov.tr araçları (21 tool): Her mevzuat türü için çift tool yapısı:
Arama tool'u: Başlık ve içerikte arama, Boolean operatörler (AND, OR, NOT), tarih filtreleme
İçinde arama tool'u: Madde bazında arama (keyword + semantik), alakalılık skoru ile sıralama
bedesten.adalet.gov.tr araçları (5 tool): Tüm mevzuat türlerini tek araçla kapsar:
search_mevzuat: 12 türde birleşik arama (başlık, içerik, numara, RG tarihi/sayısı filtreleme)get_mevzuat_content: Tam metin getirmesearch_within_mevzuat: Madde bazında anahtar kelime aramasıget_mevzuat_gerekce: Kanun gerekçesi (amaç, komisyon raporları, madde gerekçeleri)get_mevzuat_madde_tree: İçindekiler / madde ağacı (bölüm-madde hiyerarşisi)
Semantik Arama: Tüm 9
search_within_*aracındasemantic=Trueparametresi ile doğal dilde anlam tabanlı arama. OpenRouter API üzerinden embedding modelleri kullanır.Gelişmiş özellikler:
PDF'leri Mistral OCR ile metin çıkarma (CB Kararı ve CB Genelgesi için)
HTML'den Markdown'a otomatik dönüştürme
In-memory caching (1 saat TTL) ile hızlı erişim
Boolean arama operatörleri (AND, OR, NOT)
Tam cümle araması (exact phrase)
Tarih aralığı filtreleme
Claude Desktop ve 5ire gibi MCP istemcileri ile kolay entegrasyon
🌐 En Kolay Yol: Ücretsiz Remote MCP (Claude Desktop için)
Hiçbir kurulum gerektirmeyen, doğrudan kullanıma hazır MCP sunucusu:
Claude Desktop'ı açın
Settings > Connectors > Add custom connector
Açılan pencerede:
Name:
Mevzuat MCPURL:
https://mevzuat.surucu.dev/mcp
Save butonuna basın
Hepsi bu kadar! Artık Mevzuat MCP ile konuşabilirsiniz.
Not: Bu ücretsiz sunucu topluluk için sağlanmaktadır. Yoğun kullanım için kendi sunucunuzu kurmanız önerilir.
🪐 Google Antigravity ile Kullanım
Agent session açın ve editörün yan panelindeki "…" dropdown menüsüne tıklayın
MCP Servers seçeneğini seçin - MCP Store açılacak
Üstteki Manage MCP Servers butonuna tıklayın
View raw config seçeneğine tıklayın
mcp_config.jsondosyasına aşağıdaki yapılandırmayı ekleyin:
{
"mcpServers": {
"mevzuat-mcp": {
"serverUrl": "https://mevzuat.surucu.dev/mcp/",
"headers": {
"Content-Type": "application/json"
}
}
}
}💡 İpucu: Remote MCP sayesinde Python, uv veya herhangi bir kurulum yapmadan doğrudan Google Antigravity üzerinden Mevzuat Bilgi Sistemi'ne erişebilirsiniz!
Lokal uv Kurulumu — Kopyala-Yapıştır
Ön Gereksinimler: Bilgisayarınızda Python,
uv(kurulum) ve Node.js (indir) kurulu olmalı. (Node.js yalnızca aşağıdaki kurulum komutunu çalıştırmak için gerekir; MCP'yiuvxçalıştırır.)
Aşağıdaki bloğun tamamını terminale yapıştırın. Komut, Antigravity'nin okuduğu ~/.gemini/config/mcp_config.json dosyasını sizin yerinize oluşturur/günceller (varsa diğer sunucularınız korunur):
macOS / Linux (Terminal):
node - <<'MEVZUAT'
const fs=require("fs"),os=require("os"),path=require("path");
const dir=path.join(os.homedir(),".gemini","config"),file=path.join(dir,"mcp_config.json");
fs.mkdirSync(dir,{recursive:true});
let cfg={};try{cfg=JSON.parse(fs.readFileSync(file,"utf8"))}catch{}
if(typeof cfg!=="object"||cfg===null||Array.isArray(cfg))cfg={};
if(typeof cfg.mcpServers!=="object"||cfg.mcpServers===null)cfg.mcpServers={};
cfg.mcpServers["mevzuat-mcp"]={command:"uvx",args:["--from","git+https://github.com/saidsurucu/mevzuat-mcp","mevzuat-mcp"]};
fs.writeFileSync(file,JSON.stringify(cfg,null,2)+"\n");
console.log("mevzuat-mcp eklendi -> "+file);
MEVZUATWindows (PowerShell):
@'
const fs=require("fs"),os=require("os"),path=require("path");
const dir=path.join(os.homedir(),".gemini","config"),file=path.join(dir,"mcp_config.json");
fs.mkdirSync(dir,{recursive:true});
let cfg={};try{cfg=JSON.parse(fs.readFileSync(file,"utf8"))}catch{}
if(typeof cfg!=="object"||cfg===null||Array.isArray(cfg))cfg={};
if(typeof cfg.mcpServers!=="object"||cfg.mcpServers===null)cfg.mcpServers={};
cfg.mcpServers["mevzuat-mcp"]={command:"uvx",args:["--from","git+https://github.com/saidsurucu/mevzuat-mcp","mevzuat-mcp"]};
fs.writeFileSync(file,JSON.stringify(cfg,null,2)+"\n");
console.log("mevzuat-mcp eklendi -> "+file);
'@ | node -Komut mevzuat-mcp eklendi -> ... çıktısını verdiğinde kurulum tamamlanmıştır. Antigravity'yi (açıksa kapatıp) yeniden başlatın; mevzuat-mcp araçları otomatik yüklenir.
💡 İpucu: Lokal kurulumda mevzuat kaynaklarına erişim doğrudan bilgisayarınızda
uvxile çalışır; uzaktan sunucuya ihtiyaç duymaz.
🚀 Claude Haricindeki Modellerle Kullanmak İçin Çok Kolay Kurulum (Örnek: 5ire için)
Bu bölüm, Mevzuat MCP aracını 5ire gibi Claude Desktop dışındaki MCP istemcileriyle kullanmak isteyenler içindir.
Python Kurulumu: Sisteminizde Python 3.11 veya üzeri kurulu olmalıdır. Kurulum sırasında "Add Python to PATH" (Python'ı PATH'e ekle) seçeneğini işaretlemeyi unutmayın. Buradan indirebilirsiniz.
Git Kurulumu (Windows): Bilgisayarınıza git yazılımını indirip kurun. "Git for Windows/x64 Setup" seçeneğini indirmelisiniz.
uvKurulumu:Windows Kullanıcıları (PowerShell): Bir CMD ekranı açın ve bu kodu çalıştırın:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Mac/Linux Kullanıcıları (Terminal): Bir Terminal ekranı açın ve bu kodu çalıştırın:
curl -LsSf https://astral.sh/uv/install.sh | sh
Microsoft Visual C++ Redistributable (Windows): Bazı Python paketlerinin doğru çalışması için gereklidir. Buradan indirip kurun.
İşletim sisteminize uygun 5ire MCP istemcisini indirip kurun.
5ire'ı açın. Workspace -> Providers menüsünden kullanmak istediğiniz LLM servisinin API anahtarını girin.
Tools menüsüne girin. +Local veya New yazan butona basın.
Tool Key:
mevzuatmcpName:
Mevzuat MCPCommand:
uvx --from git+https://github.com/saidsurucu/mevzuat-mcp mevzuat-mcpSave butonuna basarak kaydedin.

Şimdi Tools altında Mevzuat MCP'yi görüyor olmalısınız. Üstüne geldiğinizde sağda çıkan butona tıklayıp etkinleştirin (yeşil ışık yanmalı).
Artık Mevzuat MCP ile konuşabilirsiniz.
⚙️ Claude Desktop Manuel Kurulumu
Ön Gereksinimler: Python,
uv, (Windows için) Microsoft Visual C++ Redistributable'ın sisteminizde kurulu olduğundan emin olun. Detaylı bilgi için yukarıdaki "5ire için Kurulum" bölümündeki ilgili adımlara bakabilirsiniz.Claude Desktop Settings -> Developer -> Edit Config.
Açılan
claude_desktop_config.jsondosyasınamcpServersaltına ekleyin:{ "mcpServers": { // ... (varsa diğer sunucularınız) ... "Mevzuat MCP": { "command": "uvx", "args": [ "--from", "git+https://github.com/saidsurucu/mevzuat-mcp", "mevzuat-mcp" ] } } }Claude Desktop'ı kapatıp yeniden başlatın.
🔑 API Anahtarları (Opsiyonel)
Semantik Arama - OpenRouter API
Tüm search_within_* araçlarında semantic=True ile doğal dilde arama yapabilmek için:
OpenRouter üzerinden API anahtarı alın
Environment variable olarak ayarlayın:
OPENROUTER_API_KEY=your_api_key_hereVarsayılan model:
google/gemini-embedding-001(3072 boyut). Alternatif olarak:EMBEDDING_MODEL=intfloat/multilingual-e5-large # 1024 boyutAPI anahtarı olmadan da tüm araçlar çalışır, sadece
semantic=Truekullanılamaz
Mistral OCR
CB Kararı ve CB Genelgesi gibi PDF tabanlı mevzuatlar için Mistral OCR kullanılır:
Mistral AI Console üzerinden API anahtarı alın
Environment variable olarak ayarlayın:
MISTRAL_API_KEY=your_api_key_hereAPI anahtarı olmadan da sistem çalışır, ancak PDF'ler markitdown ile işlenir (daha düşük kalite)
🛠️ Kullanılabilir Araçlar (MCP Tools)
Bu FastMCP sunucusu LLM modelleri için 26 araç sunar (iki farklı veri kaynağı).
A. mevzuat.gov.tr Araçları (21 araç)
Türe özel arama ve içerik araçları. Her mevzuat türü için ayrı tool'lar.
Kanun (Laws)
search_kanun: Kanun başlık ve içeriklerinde arama yaparsearch_within_kanun: Kanun maddelerinde anahtar kelime veya semantik arama yapar
KHK (Decree Laws)
search_khk: KHK başlık ve içeriklerinde arama yaparsearch_within_khk: KHK maddelerinde anahtar kelime veya semantik arama yapar
Tüzük (Statutes)
search_tuzuk: Tüzük başlık ve içeriklerinde arama yaparsearch_within_tuzuk: Tüzük maddelerinde anahtar kelime veya semantik arama yapar
Kurum Yönetmeliği (Institutional Regulations)
search_kurum_yonetmelik: Kurum yönetmeliği başlık ve içeriklerinde arama yaparsearch_within_kurum_yonetmelik: Kurum yönetmeliği maddelerinde anahtar kelime veya semantik arama yapar
Cumhurbaşkanlığı Kararnamesi (Presidential Decrees)
search_cbk: CB Kararnamesi başlık ve içeriklerinde arama yaparsearch_within_cbk: CB Kararnamesi maddelerinde anahtar kelime veya semantik arama yapar
Cumhurbaşkanı Kararı (Presidential Decisions)
search_cbbaskankarar: CB Kararı başlık ve içeriklerinde arama yaparget_cbbaskankarar_content: CB Kararı tam içeriğini getirir (PDF - OCR destekli)search_within_cbbaskankarar: CB Kararı içeriğinde anahtar kelime veya semantik arama yapar
CB Yönetmeliği (Presidential Regulations)
search_cbyonetmelik: CB Yönetmeliği başlık ve içeriklerinde arama yaparsearch_within_cbyonetmelik: CB Yönetmeliği maddelerinde anahtar kelime veya semantik arama yapar
CB Genelgesi (Presidential Circulars)
search_cbgenelge: CB Genelgesi başlıklarında arama yaparget_cbgenelge_content: CB Genelgesi tam içeriğini getirir (PDF - OCR destekli)search_within_cbgenelge: CB Genelgesi içeriğinde anahtar kelime veya semantik arama yapar
Tebliğ (Communiqués)
search_teblig: Tebliğ başlık ve içeriklerinde arama yaparget_teblig_content: Tebliğ tam içeriğini getirirsearch_within_teblig: Tebliğ maddelerinde anahtar kelime veya semantik arama yapar
mevzuat.gov.tr Ortak Parametreler
Arama Tool'ları için:
aranacak_ifade: Aranacak kelime veya kelime grupları (AND, OR, NOT operatörleri desteklenir)tam_cumle: Tam cümle eşleşmesi (exact phrase)baslangic_tarihi/bitis_tarihi: Tarih aralığı filtrelemepage_number,page_size: Sayfalama
İçinde Arama Tool'ları için:
mevzuat_no: Mevzuat numarası (arama sonucundan alınır)keyword: Aranacak anahtar kelime veya doğal dilde sorgusemantic:Trueise semantik arama,Falseise anahtar kelime araması (varsayılan:False)case_sensitive: Büyük/küçük harf duyarlılığı (sadece keyword modunda)max_results: Maksimum sonuç sayısı
B. bedesten.adalet.gov.tr Araçları (5 araç)
Tüm mevzuat türlerini tek araçla kapsayan birleşik araçlar. Gerekçe ve içindekiler gibi ek özellikler sunar.
search_mevzuat - Birleşik Mevzuat Arama
Tüm 12 mevzuat türünde başlık ve içerik araması yapar.
phrase: İçerikte tam metin arama (Solr sözdizimi)mevzuat_adi: Mevzuat adı/başlığında aramamevzuat_no: Mevzuat numarası filtresimevzuat_tur: Mevzuat türü filtresi (KANUN, KHK, TUZUK, YONETMELIK, CB_KARARNAME, CB_KARAR, CB_YONETMELIK, CB_GENELGE, KKY, UY, TEBLIGLER, MULGA)basliktaAra: Sadece başlıkta ara (varsayılan: true)tamCumle: Tam cümle eşleşmesi (varsayılan: false)resmi_gazete_tarihi: Resmi Gazete tarihi filtresi (GG/AA/YYYY)resmi_gazete_sayisi: Resmi Gazete sayısı filtresipage,page_size: Sayfalama
get_mevzuat_content - Tam Metin Getirme
Bir mevzuatın tam metnini Markdown formatında getirir.
mevzuat_id: Mevzuat ID'si (search_mevzuatsonucundan alınır, mevzuat numarası değildir)
search_within_mevzuat - Madde Bazında Arama
Bir mevzuatın maddeleri içinde anahtar kelime araması yapar.
mevzuat_id: Mevzuat ID'si (search_mevzuatsonucundan alınır)keyword: Aranacak kelime veya Boolean ifade (AND, OR, NOT)case_sensitive: Büyük/küçük harf duyarlılığı (varsayılan: false)max_results: Maksimum sonuç sayısı (varsayılan: 25)
get_mevzuat_gerekce - Kanun Gerekçesi
Bir kanunun gerekçesini getirir (amaç, komisyon raporları, madde gerekçeleri).
gerekce_id: Gerekçe ID'si (search_mevzuatsonucundan alınır)
get_mevzuat_madde_tree - İçindekiler / Madde Ağacı
Bir mevzuatın bölüm-madde hiyerarşisini getirir.
mevzuat_id: Mevzuat ID'si (search_mevzuatsonucundan alınır)
Arama Modları
Keyword Modu (semantic=False, varsayılan):
keyword: "yatırımcı AND tazmin"Boolean operatörler (AND, OR, NOT) ile kesin kelime eşleşmesi. Operatörler BÜYÜK HARF olmalıdır.
Semantik Mod (semantic=True, sadece mevzuat.gov.tr araçları):
keyword: "yatırımcının zararının tazmini"Doğal dilde anlam tabanlı arama. Kelime eşleşmesi aramaz, kavramsal benzerlik ile sonuç döner. OPENROUTER_API_KEY gerektirir.
📜 Lisans
Bu proje MIT Lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakınız.
Available Tools
26 toolsget_cbbaskankarar_contentA
Retrieve the full content of a Turkish Presidential Decision (Cumhurbaşkanı Kararı) in Markdown format.
This tool fetches the PDF document and converts it to Markdown. Presidential Decisions are available only as PDF files. Use 'search_cbbaskankarar' first to find the decision number and series.
Returns:
Full decision content formatted as Markdown (converted from PDF)
Ready for analysis, summarization, or question answering
Example usage:
Search for decisions: search_cbbaskankarar(baslangic_tarihi="2023", bitis_tarihi="2024")
Get full content: get_cbbaskankarar_content(mevzuat_no="10452", mevzuat_tertip="5")
| Name | Required | Description | Default |
|---|---|---|---|
| mevzuat_no | Yes | The Presidential Decision number from search results (e.g., '10452') | |
| mevzuat_tertip | No | Decision series from search results (e.g., '5') | 5 |
Output Schema
| Name | Required | Description |
|---|---|---|
| madde_id | Yes | |
| mevzuat_id | Yes | |
| markdown_content | Yes | |
| error_message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool 'fetches the PDF document and converts it to Markdown' and notes that decisions are only available as PDF. This adds useful behavioral context beyond the schema, though it omits potential error conditions or conversion limitations.
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, well-structured with a purpose sentence, follow-up details, bullet points for returns, and an explicit example. Every sentence contributes value 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?
Given the presence of an output schema, the description adequately covers the return format (Markdown), prerequisite workflow (search first), and provides a usage example. No significant gaps for this straightforward retrieval 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, baseline is 3. The description repeats the parameter purposes from the schema ('number from search results', 'series from search results') without adding new semantic value. No additional formatting or constraints are described.
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 ('Retrieve') and resource ('full content of a Turkish Presidential Decision') and specifies the output format (Markdown). It distinguishes itself from sibling search tools like search_cbbaskankarar and other content tools via the document type.
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 advises to 'Use search_cbbaskankarar first to find the decision number and series', providing a clear prerequisite. It implicitly defines the tool's role as a retrieval step after search, but does not list when to avoid using it or compare to other content tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cbgenelge_contentA
Retrieve the full content of a Turkish Presidential Circular (Cumhurbaşkanlığı Genelgesi) in Markdown format.
This tool fetches the PDF document and converts it to Markdown. Presidential Circulars are available only as PDF files. Use 'search_cbgenelge' first to find the circular number and Official Gazette date.
IMPORTANT: You must provide the 'resmi_gazete_tarihi' (Official Gazette date) from the search results. This is required to construct the correct PDF URL.
Returns:
Full circular content formatted as Markdown (converted from PDF)
Ready for analysis, summarization, or question answering
Example usage:
Search for circulars: search_cbgenelge(baslangic_tarihi="2025")
Get full content: get_cbgenelge_content(mevzuat_no="16", resmi_gazete_tarihi="20/09/2025", mevzuat_tertip="5")
| Name | Required | Description | Default |
|---|---|---|---|
| mevzuat_no | Yes | The Presidential Circular number from search results (e.g., '16', '15') | |
| resmi_gazete_tarihi | Yes | Official Gazette date from search results in DD/MM/YYYY format (e.g., '20/09/2025') | |
| mevzuat_tertip | No | Circular series from search results (e.g., '5') | 5 |
Output Schema
| Name | Required | Description |
|---|---|---|
| madde_id | Yes | |
| mevzuat_id | Yes | |
| markdown_content | Yes | |
| error_message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses the PDF-to-Markdown conversion and that circulars are only available as PDF. However, it does not mention potential errors if PDF is inaccessible or any rate limits.
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 sections and an example, but slightly verbose. Every sentence contributes meaning 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?
Given the tool's complexity, the description fully explains the workflow, parameter sources, and output format. The presence of an output schema lowers the burden, and the description covers all necessary details.
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 description adds significant value by explaining how to derive parameters from search results, with an example and explicit format requirements for the date 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 the tool retrieves full content of a Turkish Presidential Circular in Markdown format from PDF. It distinguishes from sibling tools by specifying it's for circulars and directing to use search_cbgenelge first.
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 to use 'search_cbgenelge' first to obtain the circular number and Official Gazette date, and provides a complete example workflow. The importance of the date parameter is emphasized.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mevzuat_contentA
Retrieve the full content of a Turkish legislation document from bedesten.adalet.gov.tr.
Returns the complete text in plain format (HTML tags stripped). Use mevzuatId from search_mevzuat results (not the law number).
WARNING: Large legislation (e.g., TCK 5237, TTK 6102) can be 100K+ characters. For large documents, prefer search_within_mevzuat to find specific articles instead of loading the entire text.
Workflow: search_mevzuat → get mevzuatId → get_mevzuat_content
| Name | Required | Description | Default |
|---|---|---|---|
| mevzuat_id | Yes | Legislation ID from search_mevzuat results (mevzuatId field). This is a string ID (e.g., '345097'), NOT the law number. First call search_mevzuat to get the mevzuatId. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description discloses return format (plain text, stripped HTML), warns about large documents, and outlines correct ID usage. Could mention network dependency but is overall transparent.
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 earns its place: purpose, format, warning, workflow, and instructions. Well-structured 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?
Covers all key aspects: input, output format, warnings, workflow, and alternative tool usage. Complete for a tool with 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%, and description adds value by specifying ID format, giving an example, and clarifying it is not a law number. Exceeds baseline for high 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?
Clearly states it retrieves full content of Turkish legislation, specifies source and output format, and distinguishes from siblings by referencing mevzuatId from search_mevzuat and warning about large documents.
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 explicit workflow, warns when to use search_within_mevzuat instead for large documents, and clarifies that mevzuatId comes from search_mevzuat, not law numbers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mevzuat_gerekceA
Retrieve the law rationale (gerekçe / kanun gerekçesi) from bedesten.adalet.gov.tr.
The gerekçe contains:
Purpose and reasoning behind the law (kanunun amacı ve gerekçesi)
Parliamentary committee reports (komisyon raporları)
Article-by-article justifications (madde gerekçeleri)
Only available for KANUN type legislation that has a published rationale. Not all laws have a gerekçe — check if gerekceId is present in search_mevzuat results.
Workflow: search_mevzuat → check gerekceId in results → get_mevzuat_gerekce(gerekceId)
| Name | Required | Description | Default |
|---|---|---|---|
| gerekce_id | Yes | Gerekçe ID from search_mevzuat results (gerekceId field, e.g., '2049'). Only available for laws (KANUN) that have a published rationale. Check if gerekceId exists in search_mevzuat results before calling. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses the data source (bedesten.adalet.gov.tr), the content structure, and the condition that not all laws have a gerekçe. However, it does not mention network dependency, authentication needs, or read-only nature. Still, the provided information is useful and honest.
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 and well-structured: a clear action line, bullet points for content, and two lines for constraints. It front-loads the core purpose and uses efficient formatting without waste.
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 single parameter and the presence of an output schema, the description covers all necessary context: what the tool does, what content it returns, prerequisite conditions, and the workflow. It is fully adequate 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?
The input schema already has 100% coverage with a detailed description for gerekce_id. The tool description reiterates the prerequisite but does not add new semantic information 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 retrieves law rationale (gerekçe) and lists specific content types (purpose, committee reports, article justifications). It distinguishes from siblings by limiting to KANUN type legislation and referencing search_mevzuat as a prerequisite.
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 the tool is only for KANUN laws with published rationale, advises checking gerekceId in search_mevzuat results, and provides a clear workflow: search → check → call. This gives excellent when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mevzuat_madde_treeA
Get the article tree (table of contents / içindekiler) of a Turkish legislation from bedesten.adalet.gov.tr.
Returns a hierarchical structure showing:
Bölüm/Kısım (chapters/parts) as parent nodes
Madde (articles) as leaf nodes with maddeId, number, and title
Each node may have a gerekceId for article-level rationale
Works well with: KANUN, CB_KARARNAME, KHK, TUZUK, MULGA. May return empty for: CB_KARAR, CB_GENELGE, TEBLIGLER (these often lack structured articles).
Use this to understand the structure of a large law before diving into specific articles with search_within_mevzuat or get_mevzuat_content.
Workflow: search_mevzuat → get mevzuatId → get_mevzuat_madde_tree(mevzuatId)
| Name | Required | Description | Default |
|---|---|---|---|
| mevzuat_id | Yes | Legislation ID from search_mevzuat results (mevzuatId field). This is a string ID (e.g., '345097'), NOT the law number. First call search_mevzuat to get the mevzuatId. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description fully explains the hierarchical return structure and mentions the source domain. It does not disclose any potential side effects or rate limits, but for a read operation with no destructive actions, this is adequate.
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 bullet points and a clear workflow. Every sentence adds value—no fluff. It is front-loaded with the main purpose and efficiently conveys all necessary 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 the complexity of Turkish legislation and the number of sibling tools, this description is complete. It explains the return structure (with output schema present), provides compatibility notes, and offers a workflow. No gaps remain for an AI agent to understand how and when to use this 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 mevzuat_id is fully documented in the input schema, and the description adds critical workflow context: that it must come from search_mevzuat results, is a string ID not a law number, and provides an example. This goes beyond what the schema alone 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?
The description clearly states the tool retrieves the article tree (table of contents) of Turkish legislation from a specific source. It distinguishes itself from siblings by listing compatible legislation types and noting tools that return empty, providing clear differentiation.
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 guidance on when to use (with specific legislation types like KANUN, CB_KARARNAME) and when not to (CB_KARAR, CB_GENELGE, TEBLIGLER). Provides a workflow: search_mevzuat → get mevzuatId → use this tool, and suggests it as a precursor to other tools like search_within_mevzuat or get_mevzuat_content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_teblig_contentA
Retrieve the full content of a Turkish communiqué (Tebliğ) in Markdown format.
This tool fetches the complete text of a communiqué identified by its number. Use 'search_teblig' first to find the communiqué number and series.
Returns:
Full communiqué content formatted as Markdown
Ready for analysis, summarization, or question answering
Example usage:
Search for communiqués: search_teblig(aranacak_ifade="katma değer vergisi")
Get full content: get_teblig_content(mevzuat_no="42331", mevzuat_tertip="5")
| Name | Required | Description | Default |
|---|---|---|---|
| mevzuat_no | Yes | The communiqué number from search results (e.g., '42331') | |
| mevzuat_tertip | No | Communiqué series from search results (e.g., '5') | 5 |
Output Schema
| Name | Required | Description |
|---|---|---|
| madde_id | Yes | |
| mevzuat_id | Yes | |
| markdown_content | Yes | |
| error_message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool returns Markdown content and is ready for analysis, implying read-only behavior, but does not explicitly mention no side effects or any authentication/rate limits. A simple fetch tool, but could be more explicit.
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 (3 sentences plus example) and front-loaded with the purpose. Every sentence adds value, and the example usage clarifies the workflow. 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?
The tool has an output schema (though not detailed), so the description need not explain return format. It mentions Markdown and readiness for analysis. Given the simple retrieval nature and sibling context, it is fairly complete, though error handling or availability info is missing.
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's parameter guidance ('The communiqué number from search results (e.g., '42331')') mirrors the schema descriptions exactly, adding no new semantic value 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?
The description clearly states the tool retrieves full content of a Turkish communiqué in Markdown format, with a specific verb ('Retrieve') and resource ('Turkish communiqué (Tebliğ)'). It distinguishes itself from sibling tools that handle other document types (e.g., get_cbgenelge_content, get_mevzuat_content) or search functions.
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 advises to use 'search_teblig' first to find the communiqué number and series, providing a clear usage workflow (search then get content). It does not list exclusions or when not to use, but the context is clear given siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_cbbaskankararA
Search for Turkish Presidential Decisions (Cumhurbaşkanı Kararı) in both titles and content.
IMPORTANT: Search is keyword-based, NOT by decision number. Use descriptive Turkish terms. Presidential Decisions are executive decisions (different from Presidential Decrees/Kararnamesi). Note: Bakanlar Kurulu Kararı (BKK) is NOT a separate type - older BKKs may appear here or in Kanun.
Query Syntax: Simple keyword, AND, OR, NOT, +required, (grouping), "exact phrase"
Example queries:
"atama" - Find decisions about appointments
"ihracat AND rejim" - Export regime decisions
"vergi" or "gümrük" - Tax or customs decisions
Leave empty with dates to list all decisions from a period
Returns: Decision number, title, publication date, Official Gazette info. PDF format only.
| Name | Required | Description | Default |
|---|---|---|---|
| aranacak_ifade | No | Search query with optional Boolean operators: simple word (organize), AND (organize AND suç), OR (suç OR ceza), NOT (organize NOT terör), + for required (+term), grouping with (), exact phrase with quotes ("organize suç"). Leave empty to list all decrees. | |
| tam_cumle | No | Exact phrase match (true) or any word match (false, default). Set to true when searching for exact phrases. | |
| baslangic_tarihi | No | Start year for filtering results (format: YYYY, e.g., '2018') | |
| bitis_tarihi | No | End year for filtering results (format: YYYY, e.g., '2024') | |
| page_number | No | Page number for pagination (starts at 1) | |
| aranacak_yer | No | Where to search: 1=Title only, 2=Content only, 3=Both title and content (default) | |
| page_size | No | Number of results per page (1-100) |
Output Schema
| Name | Required | Description |
|---|---|---|
| documents | Yes | |
| total_results | Yes | |
| current_page | Yes | |
| page_size | Yes | |
| total_pages | Yes | |
| query_used | Yes | |
| error_message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It describes return fields (decision number, title, publication date, Official Gazette info), PDF format, and search behavior. It lacks details on rate limits or authentication but is transparent about results.
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 sections for important notes, query syntax, examples, and returns. Every sentence adds value 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?
Given multiple sibling search tools, this description fully covers how to use the tool, what it returns, and how it differs from others. Output schema exists but is supplemented by clear return description.
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 value by providing example queries and syntax, reinforcing parameter usage beyond schema definitions.
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 searches for Turkish Presidential Decisions in titles and content, differentiating from other sibling tools like search_cbgenelge and explicitly contrasting with Presidential Decrees and BKKs.
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 crucial guidelines: keyword-based search (not by decision number), use of descriptive Turkish terms, clarification of decision types, and query syntax examples. While it doesn't explicitly list when to avoid this tool, the context of sibling tools makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_cbgenelgeA
Search for Turkish Presidential Circulars (Cumhurbaşkanlığı Genelgesi / CB Genelgesi) in titles and content.
IMPORTANT: Search is keyword-based, NOT by circular number. Use descriptive Turkish terms. Use 'get_cbgenelge_content' with mevzuat_no and resmi_gazete_tarihi to retrieve full PDF content.
Query Syntax: Simple keyword, AND, OR, NOT, +required, (grouping), "exact phrase"
Example queries:
"koordinasyon" - Coordination circulars
Leave empty with dates to list all circulars from a period
Returns: Circular number, title, publication date, Official Gazette info. PDF format only.
| Name | Required | Description | Default |
|---|---|---|---|
| aranacak_ifade | No | Search query with optional Boolean operators: simple word (organize), AND (organize AND suç), OR (suç OR ceza), NOT (organize NOT terör), + for required (+term), grouping with (), exact phrase with quotes ("organize suç"). Leave empty to list all circulars. | |
| tam_cumle | No | Exact phrase match (true) or any word match (false, default). Set to true when searching for exact phrases. | |
| baslangic_tarihi | No | Start year for filtering results (format: YYYY, e.g., '2018') | |
| bitis_tarihi | No | End year for filtering results (format: YYYY, e.g., '2024') | |
| page_number | No | Page number (1-indexed) | |
| aranacak_yer | No | Where to search: 1=Title only, 2=Content only, 3=Both title and content (default) | |
| page_size | No | Number of results per page (max 100) |
Output Schema
| Name | Required | Description |
|---|---|---|
| documents | Yes | |
| total_results | Yes | |
| current_page | Yes | |
| page_size | Yes | |
| total_pages | Yes | |
| query_used | Yes | |
| error_message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses search is keyword-based and returns specific fields, but does not explicitly state it is a read-only operation, any limitations, authentication needs, or rate limits. Behavioral transparency is inadequate given no 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 and front-loaded with key purpose, followed by important notes, query syntax, examples, and return info. Every sentence adds value. Could be slightly more structured, but overall 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 7 parameters, no required, 100% schema coverage, and output schema, the description covers purpose, usage, query syntax, and return fields. Does not explain pagination details or error conditions, but is reasonably complete 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 description coverage is 100%, so baseline is 3. The description adds value by explaining overall purpose and providing example queries, but parameter details are already well-covered in the schema. Does not significantly enhance parameter 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 identifies the tool's purpose: searching for Turkish Presidential Circulars (CB Genelgesi) by keyword in titles and content. It distinguishes itself from siblings by explicitly naming the document type and contrasting with 'search_cbgenelge' for full text retrieval.
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 explicit usage guidelines: search is keyword-based, not by circular number; recommends using 'get_cbgenelge_content' for full PDF; explains query syntax and suggests leaving empty to list all circulars. Could explicitly mention when not to use this tool versus siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_cbkA
Search for Turkish Presidential Decrees (Cumhurbaşkanlığı Kararnamesi) in both titles and content.
IMPORTANT: Search is keyword-based, NOT by decree number. Use descriptive Turkish terms. Presidential Decrees are executive orders issued by the President of Turkey (post-2017).
Query Syntax: Simple keyword, AND, OR, NOT, +required, (grouping), "exact phrase"
Example queries:
"organize suç" - Find decrees about organized crime
"kamu OR devlet" - Decrees about public or state matters
"bakanlık AND teşkilat" - Ministry organization decrees
Returns: Decree number, title, publication date, Official Gazette info.
| Name | Required | Description | Default |
|---|---|---|---|
| aranacak_ifade | Yes | Search query with optional Boolean operators: simple word (organize), AND (organize AND suç), OR (suç OR ceza), NOT (organize NOT terör), + for required (+term), grouping with (), exact phrase with quotes ("organize suç") | |
| tam_cumle | No | Exact phrase match (true) or any word match (false, default). Set to true when searching for exact phrases. | |
| baslangic_tarihi | No | Start year for filtering results (format: YYYY, e.g., '2018') | |
| bitis_tarihi | No | End year for filtering results (format: YYYY, e.g., '2024') | |
| page_number | No | Page number for pagination (starts at 1) | |
| aranacak_yer | No | Where to search: 1=Title only, 2=Content only, 3=Both title and content (default) | |
| page_size | No | Number of results per page (1-100) |
Output Schema
| Name | Required | Description |
|---|---|---|
| documents | Yes | |
| total_results | Yes | |
| current_page | Yes | |
| page_size | Yes | |
| total_pages | Yes | |
| query_used | Yes | |
| error_message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It describes what is returned (decree number, title, publication date, Official Gazette info) and mentions pagination. It does not disclose potential rate limits, permissions, or side effects, but as a search tool, it is reasonably transparent. The description adds value beyond structured fields.
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 sections (explanation, important note, query syntax, example queries, returns). It is front-loaded with purpose. While it is longer than minimal, each section contributes useful information. A slightly more condensed version could achieve a 5, but it 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 the presence of an output schema (mentioned in context signals), the description does not need to detail return values. It covers all essential aspects: purpose, query syntax, scope (title/content/both), pagination, and date filtering. It is complete for a search tool with good parameter coverage and sibling differentiation.
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 adds value by providing query syntax examples and clarifying the keyword-based nature, which enhances understanding of the 'aranacak_ifade' parameter. It also explains the 'aranacak_yer' options more clearly. Thus, it goes beyond simple schema repetition.
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 searches for Turkish Presidential Decrees (Cumhurbaşkanlığı Kararnamesi) in both titles and content. It explains the resource and action, and the return fields specify what is output. Sibling tools like search_cbbaskankarar and search_within_cbk suggest different scopes, and the description implicitly differentiates by focusing on keyword search.
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 the tool is keyword-based and NOT by decree number, which guides usage. It provides query syntax and example queries. However, it does not explicitly state when to use this tool over siblings (e.g., search_cbbaskankarar for other decree types) or give exclusion criteria, which would elevate to a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_cbyonetmelikA
Search for Turkish Presidential Regulations (Cumhurbaşkanlığı Yönetmeliği / CB Yönetmeliği) in both titles and content.
IMPORTANT: Search is keyword-based, NOT by number. Use descriptive Turkish terms. These are regulations issued directly by the Presidency. For institutional regulations (Kurum Yönetmeliği), use 'search_kurum_yonetmelik' instead.
Query Syntax: Simple keyword, AND, OR, NOT, +required, (grouping), "exact phrase"
Example queries:
"ihale" - Procurement regulations
"taşınır AND mal" - Movable property regulations
"kamu ihale" - Public procurement regulations
Leave empty to list all, use date filters for period
Returns: Regulation number, title, publication date, Official Gazette info.
| Name | Required | Description | Default |
|---|---|---|---|
| aranacak_ifade | No | Search query with optional Boolean operators: simple word (yatırımcı), AND (yatırımcı AND tazmin), OR (vergi OR ücret), NOT (yatırımcı NOT kurum), + for required (+term), grouping with (), exact phrase with quotes ("mali sıkıntı"). Leave empty to list all regulations. | |
| tam_cumle | No | Exact phrase match (true) or any word match (false, default). Set to true when searching for exact phrases. | |
| baslangic_tarihi | No | Start year for filtering results (format: YYYY, e.g., '2018') | |
| bitis_tarihi | No | End year for filtering results (format: YYYY, e.g., '2024') | |
| page_number | No | Page number (1-indexed) | |
| aranacak_yer | No | Where to search: 1=Title only, 2=Content only, 3=Both title and content (default) | |
| page_size | No | Number of results per page (max 100) |
Output Schema
| Name | Required | Description |
|---|---|---|
| documents | Yes | |
| total_results | Yes | |
| current_page | Yes | |
| page_size | Yes | |
| total_pages | Yes | |
| query_used | Yes | |
| error_message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It explains the tool is keyword-based (not by number), details query syntax, and lists return fields. Though it omits potential limits like query length or character restrictions, it is transparent about core behavior.
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 purpose and key notes. It is logically structured but slightly verbose with query syntax examples that extend beyond essential guidance.
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 complexity (7 parameters, many siblings, output schema present), the description covers regulation type, search behavior, syntax, and return data. It is complete enough 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?
Input schema has 100% coverage with descriptive parameter descriptions. The description adds example queries but does not provide significant new 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?
The description clearly states the tool searches for Turkish Presidential Regulations (Cumhurbaşkanlığı Yönetmeliği) in both titles and content. It distinguishes from sibling tools by specifying that institutional regulations should use 'search_kurum_yonetmelik' instead.
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 when-to-use context (regulations issued by Presidency) and an alternative for institutional regulations. It includes query syntax and examples, but lacks explicit exclusions beyond the one sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_kanunA
Search for Turkish laws (Kanun) in both titles and content on mevzuat.gov.tr.
IMPORTANT: Search is keyword-based, NOT by law number. Use descriptive Turkish terms.
WRONG: "3065" or "6362" (numbers won't find laws reliably)
RIGHT: "katma değer vergisi" (finds KDV Kanunu No. 3065)
RIGHT: "sermaye piyasası" (finds Sermaye Piyasası Kanunu No. 6362)
RIGHT: "gümrük kanunu" (finds Gümrük Kanunu No. 4458)
RIGHT: "gelir vergisi" (finds Gelir Vergisi Kanunu No. 193)
RIGHT: "ceza muhakemesi" (finds CMK No. 5271)
RIGHT: "vergi usul" (finds VUK No. 213)
Use 'search_within_kanun' to search within a specific law's articles after finding its number.
Query Syntax:
Simple keyword: yatırımcı
Boolean AND: yatırımcı AND tazmin (both terms required)
Boolean OR: yatırımcı OR müşteri (at least one term)
Boolean NOT: yatırımcı NOT kurum (first yes, second no)
Required term: +yatırımcı +tazmin (similar to AND)
Grouping: (yatırımcı OR müşteri) AND tazmin
Exact phrase: "mali sıkıntı" (or use tam_cumle=true)
Returns: Law number, title, acceptance date, Official Gazette date and issue number.
| Name | Required | Description | Default |
|---|---|---|---|
| aranacak_ifade | Yes | Search query with optional Boolean operators: simple word (yatırımcı), AND (yatırımcı AND tazmin), OR (vergi OR ücret), NOT (yatırımcı NOT kurum), + for required (+term), grouping with (), exact phrase with quotes ("mali sıkıntı") | |
| tam_cumle | No | Exact phrase match (true) or any word match (false, default). Set to true when searching for exact phrases like 'mali sıkıntı'. | |
| baslangic_tarihi | No | Start date for filtering results (format: DD.MM.YYYY, e.g., '01.01.2020') | |
| bitis_tarihi | No | End date for filtering results (format: DD.MM.YYYY, e.g., '31.12.2024') | |
| page_number | No | Page number for pagination (starts at 1) | |
| aranacak_yer | No | Where to search: 1=Title only, 2=Content only, 3=Both title and content (default) | |
| page_size | No | Number of results per page (1-100) |
Output Schema
| Name | Required | Description |
|---|---|---|
| documents | Yes | |
| total_results | Yes | |
| current_page | Yes | |
| page_size | Yes | |
| total_pages | Yes | |
| query_used | Yes | |
| error_message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description fully carries the behavioral disclosure burden. It explains the search behavior (keyword-based), query syntax, and what is returned. While it covers most aspects well, it could mention pagination or result limits more explicitly.
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 sections and bullet points, front-loading the purpose. While somewhat lengthy, every sentence contributes value. Minor redundancy in query syntax examples could be tightened, but overall good.
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 (though not shown), the description adequately covers all necessary aspects: purpose, usage, parameters, query syntax, and return fields. No significant gaps remain.
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%, but the description adds significant value beyond schema definitions by explaining search philosophy, providing usage examples, and clarifying parameter meanings (e.g., aranacak_yer values). This goes beyond simply restating schema properties.
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 for Turkish laws (Kanun) in titles and content on mevzuat.gov.tr, with a specific verb and resource. It distinguishes from sibling tools like search_within_kanun, which is used to search within a specific law after finding its number.
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 explicit guidance that search is keyword-based, not by law number, with examples of correct and incorrect queries. Directs users to use search_within_kanun after obtaining the law number, clearly differentiating when to use this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_khkA
Search for Turkish Decree Laws (Kanun Hükmünde Kararname / KHK) in titles and content.
IMPORTANT: Search is keyword-based, NOT by KHK number. Use descriptive Turkish terms. KHKs were abolished after the 2017 constitutional referendum (last issued 2018). Previously enacted KHKs remain in force unless repealed.
Query Syntax: Simple keyword, AND, OR, NOT, +required, (grouping), "exact phrase"
Example queries:
"sağlık AND düzenleme" - Health-related KHKs
"anayasa" - Constitutional KHKs
Leave empty with dates (e.g., 2010-2018) to list all KHKs from a period
Returns: KHK number, title, dates, Official Gazette info.
| Name | Required | Description | Default |
|---|---|---|---|
| aranacak_ifade | No | Search query with Boolean operators and wildcards. Examples: "değişiklik" (simple), "sağlık AND düzenleme" (AND), "bakanlık OR kurum" (OR), "kanun NOT yürürlük" (NOT), "değişiklik*" (wildcard), "güvenlik sistemi" (exact phrase with quotes). Leave empty to list all KHKs in date range. | |
| tam_cumle | No | If True, searches for exact phrase match. If False (default), searches for any word match with Boolean operators. | |
| baslangic_tarihi | No | Start year for filtering results (format: YYYY, e.g., '2010'). Use with bitis_tarihi to define a date range. | |
| bitis_tarihi | No | End year for filtering results (format: YYYY, e.g., '2018'). Use with baslangic_tarihi to define a date range. | |
| page_number | No | Page number of results to retrieve (starts from 1) | |
| aranacak_yer | No | Where to search: 1=Title only, 2=Content only, 3=Both title and content (default) | |
| page_size | No | Number of results per page (1-100, default: 25) |
Output Schema
| Name | Required | Description |
|---|---|---|
| documents | Yes | |
| total_results | Yes | |
| current_page | Yes | |
| page_size | Yes | |
| total_pages | Yes | |
| query_used | Yes | |
| error_message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses important behavioral traits: KHKs were abolished after 2017 but remain in force, and returns include KHK number, title, dates, and Official Gazette info. It does not cover pagination or error handling, but the core behavior is transparent.
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 brief intro, important notes, query syntax, examples, and return info. Every sentence serves a purpose; no 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 lack of output schema, the description mentions return fields. Parameter descriptions in schema cover pagination. The description could elaborate more on pagination behavior, but it is adequate 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?
All 7 parameters have descriptions in the schema (100% coverage). The description adds value by providing query syntax examples, explaining the tam_cumle and aranacak_yer parameters, and showing how to use date range parameters with examples.
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 Turkish Decree Laws (KHK) in titles and content, distinguishing it from sibling tools for other legal documents. It specifies keyword-based search and provides context on KHK abolition.
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 says 'Search is keyword-based, NOT by KHK number' and advises using descriptive Turkish terms. It includes example queries and mentions leaving the query empty to list all KHKs, but does not explicitly state when to avoid this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_kurum_yonetmelikA
Search for Institutional/Organizational Regulations (Kurum ve Kuruluş Yönetmeliği) in titles and content.
IMPORTANT: Search is keyword-based, NOT by regulation number. Use descriptive Turkish terms. These are regulations issued by governmental institutions (ministries, agencies, boards). This is the largest dataset with 8686+ regulations. Use for: Gümrük Yönetmeliği, İthalat/İhracat Yönetmeliği, and similar institutional regulations.
Query Syntax: Simple keyword, AND, OR, NOT, +required, (grouping), "exact phrase"
Example queries:
"gümrük" - Customs regulations (e.g., Gümrük Yönetmeliği)
"ithalat" or "ihracat" - Import/export regulations
"nükleer" - Nuclear regulations
"adalet AND akademi" - Justice academy regulations
Leave empty with dates to list all regulations from a period
Returns: Regulation number, title, dates, Official Gazette info.
| Name | Required | Description | Default |
|---|---|---|---|
| aranacak_ifade | No | Search query with Boolean operators and wildcards. Examples: "nükleer" (simple), "ihracat AND kontrol" (AND), "denetim OR teftiş" (OR), "mali NOT ceza" (NOT), "kontrol*" (wildcard), "ithalat ihracat" (exact phrase with quotes). Leave empty to list all regulations in date range. | |
| tam_cumle | No | If True, searches for exact phrase match. If False (default), searches for any word match with Boolean operators. | |
| baslangic_tarihi | No | Start year for filtering results (format: YYYY, e.g., '2020'). Use with bitis_tarihi to define a date range. | |
| bitis_tarihi | No | End year for filtering results (format: YYYY, e.g., '2025'). Use with baslangic_tarihi to define a date range. | |
| page_number | No | Page number of results to retrieve (starts from 1) | |
| aranacak_yer | No | Where to search: 1=Title only, 2=Content only, 3=Both title and content (default) | |
| page_size | No | Number of results per page (1-100, default: 25) |
Output Schema
| Name | Required | Description |
|---|---|---|
| documents | Yes | |
| total_results | Yes | |
| current_page | Yes | |
| page_size | Yes | |
| total_pages | Yes | |
| query_used | Yes | |
| error_message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that search is keyword-based, explains query syntax with Boolean operators and examples, and states return fields. It does not mention whether it is read-only or any rate limits, but the read-only nature is implied by the search operation. Overall, it provides sufficient behavioral 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?
The description is well-structured with a clear first sentence, an 'IMPORTANT' callout, query syntax, examples, and return values. Every sentence is informative and earns its place. It is concise yet comprehensive, with no redundant or vague statements.
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 complexity (7 parameters, no required fields, no output schema details), the description covers all essential aspects: the type of regulations, how to query, date range, location, pagination, and what is returned. It provides enough context for an agent to use the tool effectively without additional documentation.
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 significant value beyond schema by explaining query syntax with practical examples, clarifying the 'tam_cumle' parameter, and showing how to use date filters and search location. This extra guidance helps the agent form correct queries.
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 it searches for institutional regulations ('Kurum ve Kuruluş Yönetmeliği') in titles and content. It specifies the dataset size (8686+ regulations) and gives concrete examples like Gümrük Yönetmeliği, İthalat/İhracat Yönetmeliği, distinguishing it from siblings that search other regulation types.
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 says search is keyword-based, not by regulation number, and recommends descriptive Turkish terms. It provides a clear usage context: 'Use for: Gümrük Yönetmeliği, İthalat/İhracat Yönetmeliği, and similar institutional regulations.' The 'IMPORTANT' alert further guides correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_mevzuatA
Search or browse all Turkish legislation on bedesten.adalet.gov.tr.
Covers 12 legislation types: Kanunlar, Cumhurbaşkanı Kararnameleri, Bakanlar Kurulu Yönetmelikleri, CB Yönetmelikleri, CB Kararları, CB Genelgeleri, KHK'lar, Tüzükler, Kurum/Kuruluş Yönetmelikleri, Üniversite Yönetmelikleri, Tebliğler, Mülga Mevzuat.
Search modes:
mevzuat_adi: Title/keyword search (recommended, searches legislation name)
phrase: Full-text content search (Solr syntax, searches inside document body)
mevzuat_no: Direct number lookup (e.g., '5237' for TCK)
Browse: Leave all empty to list by type
Date range filtering:
Use resmi_gazete_tarihi_start and/or resmi_gazete_tarihi_end (DD/MM/YYYY)
Single date: set both start and end to the same date
Year range: '01/01/2024' to '31/12/2024'
Workflow: Use this tool first to find legislation → then use mevzuatId from results with:
get_mevzuat_content: Full document text
search_within_mevzuat: Search articles within a document
get_mevzuat_madde_tree: Table of contents / article tree
get_mevzuat_gerekce: Law rationale (if gerekceId is present in results)
| Name | Required | Description | Default |
|---|---|---|---|
| phrase | No | Full-text search in document content (Solr/Lucene syntax). Searches inside the legislation text, not just the title. Leave empty to browse/list or use mevzuat_adi for title search. Solr operators: "exact phrase", +required -prohibited, wildcard*, single?, fuzzy~, fuzzy~N, "proximity"~N, boost^N. NOTE: AND/OR/NOT do NOT work here - use +term1 +term2 instead of term1 AND term2, use -term instead of NOT term, use 'term1 term2' (space) instead of term1 OR term2. Examples: 'ticaret' (simple), '"katma değer vergisi"' (exact phrase), '+yatırımcı +tazmin' (both required), 'yatırımcı -kurum' (exclude), 'yatırım*' (wildcard), '*ımcı' (leading wildcard), 'yatırımc?' (single char wildcard), 'yatırımcı~' (fuzzy), 'yatırımcı~2' (fuzzy with distance), '"yatırımcı tazmin"~5' (proximity within 5 words), 'yatırımcı^2 tazmin' (boost first term) | |
| mevzuat_adi | No | Title/keyword search (Aranacak Kavram). Searches in legislation title/name. Use Turkish keywords, not law numbers. Multiple words are AND-matched (all must appear in title). Supports only: simple keywords, trailing wildcard (ticar*), single char wildcard (ticare?). For exact phrase match use tamCumle=True instead of quotes. Do NOT use quotes, +, -, ~, ^, or other Solr operators here (they break the search). Examples: 'ticaret kanunu', 'ceza', 'gümrük', 'sermaye piyasası', 'gelir vergisi', 'ticar*'. Can be used alone or together with phrase for combined filtering. | |
| mevzuat_no | No | Legislation number filter. Directly filters by the official number. E.g., '5237' for Türk Ceza Kanunu, '6102' for Türk Ticaret Kanunu, '6362' for Sermaye Piyasası Kanunu. | |
| mevzuat_tur | No | Filter by legislation type. Leave empty to search all types. Single type or comma-separated for multiple types. Types: KANUN (Kanunlar), CB_KARARNAME (Cumhurbaşkanı Kararnameleri), YONETMELIK (Bakanlar Kurulu Yönetmelikleri), CB_YONETMELIK (Cumhurbaşkanlığı Yönetmelikleri), CB_KARAR (Cumhurbaşkanı Kararları), CB_GENELGE (Cumhurbaşkanlığı Genelgeleri), KHK (Kanun Hükmünde Kararnameler), TUZUK (Tüzükler), KKY (Kurum ve Kuruluş Yönetmelikleri), UY (Üniversite Yönetmelikleri), TEBLIGLER (Tebliğler), MULGA (Mülga Mevzuat). Examples: 'KANUN', 'KANUN,KHK', 'TEBLIGLER,KKY' | |
| basliktaAra | No | When True (default), mevzuat_adi searches only in legislation titles. When False, mevzuat_adi searches in both title and content. | |
| tamCumle | No | Exact phrase match for mevzuat_adi. When True, the entire mevzuat_adi text must appear as an exact phrase. When False (default), individual words are matched. Example: 'katma değer vergisi' with tamCumle=True finds only exact matches. | |
| resmi_gazete_tarihi_start | No | Start date filter for Official Gazette date range (DD/MM/YYYY format). Filters legislation published on or after this date. E.g., '01/01/2024' to find legislation from 2024 onwards. Use with resmi_gazete_tarihi_end for a specific date range. | |
| resmi_gazete_tarihi_end | No | End date filter for Official Gazette date range (DD/MM/YYYY format). Filters legislation published on or before this date. E.g., '31/12/2024' to find legislation up to end of 2024. Use with resmi_gazete_tarihi_start for a specific date range. | |
| resmi_gazete_sayisi | No | Official Gazette issue number filter. E.g., '28513'. | |
| page | No | Page number (1-based, default: 1) | |
| page_size | No | Results per page (1-100, default: 25) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description carries full burden. It explains search modes, date range formatting, pagination, and Solr syntax. Lacks auth/rate limit info but is otherwise transparent.
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 long and detailed with structured sections, but some parts like Solr syntax examples are verbose. Could be more concise while retaining clarity.
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 all major aspects: search modes, date filtering, workflow. Mentions mevzuatId in results hinting at output. Given complexity, it is adequately 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 description coverage is 100%. Description adds significant context beyond schema, including Solr syntax examples, date usage, and operator explanations 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 searches/browses Turkish legislation on a specific site, lists 12 legislation types, and distinguishes from sibling tools by being a general search across all types.
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 explicit workflow: use this tool first, then use specific tools with mevzuatId. Recommends search modes but does not explicitly exclude use when sibling tools are more appropriate for specific types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tebligA
Search for Turkish communiqués (Tebliğ) in both titles and content on mevzuat.gov.tr.
IMPORTANT: Search is keyword-based, NOT by number. Use descriptive Turkish terms. Communiqués are regulatory documents issued by various government institutions.
Query Syntax: Simple keyword, AND, OR, NOT, +required, (grouping), "exact phrase"
Example queries:
"katma değer vergisi" - Find VAT-related communiqués
"muafiyet OR istisna" - Communiqués about exemptions
"gümrük" - Customs-related communiqués
"ithalat" or "ihracat" - Import/export communiqués
Returns: Communiqué number, title, publication date, Official Gazette info.
| Name | Required | Description | Default |
|---|---|---|---|
| aranacak_ifade | Yes | Search query with optional Boolean operators: simple word (vergi), AND (vergi AND muafiyet), OR (muafiyet OR istisna), NOT (vergi NOT gelir), + for required (+term), grouping with (), exact phrase with quotes ("katma değer vergisi") | |
| tam_cumle | No | Exact phrase match (true) or any word match (false, default). Set to true when searching for exact phrases. | |
| baslangic_tarihi | No | Start year for filtering results (format: YYYY, e.g., '2020') | |
| bitis_tarihi | No | End year for filtering results (format: YYYY, e.g., '2024') | |
| page_number | No | Page number for pagination (starts at 1) | |
| aranacak_yer | No | Where to search: 1=Title only, 2=Content only, 3=Both title and content (default) | |
| page_size | No | Number of results per page (1-100) |
Output Schema
| Name | Required | Description |
|---|---|---|
| documents | Yes | |
| total_results | Yes | |
| current_page | Yes | |
| page_size | Yes | |
| total_pages | Yes | |
| query_used | Yes | |
| error_message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It explains search behavior (keyword-based, exact phrase option) and return fields, but omits details on pagination limits, result ordering, or whether the operation is read-only.
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 well-structured: purpose, important note, syntax, examples, returns. Examples are helpful but add length; still concise and front-loaded with critical 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 output schema exists, description appropriately states return fields. All parameters are documented. Missing details on potential errors or data volume, but sufficient for a search tool with clear purpose and good annotation coverage.
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 descriptions already cover all 7 parameters (100% coverage). Description adds value by explaining the query syntax and providing examples, which go beyond the schema's parameter 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?
Description clearly states the tool searches for Turkish communiqués (Tebliğ) in titles and content on mevzuat.gov.tr, with specific verb 'search' and resource 'Tebliğ'. It distinguishes from sibling tools like search_kanun or search_khk by targeting a specific document type.
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 notes that search is keyword-based, not by number, guiding users to use descriptive Turkish terms. Provides query syntax and examples, but does not explicitly mention alternative tools like get_teblig_content for number-based lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tuzukA
Search for Turkish Statutes/Regulations (Tüzük) in titles and content.
IMPORTANT: Search is keyword-based, NOT by statute number. Use descriptive Turkish terms. Tüzük are regulatory statutes that implement and detail the provisions of laws.
Query Syntax: Simple keyword, AND, OR, NOT, +required, (grouping), "exact phrase"
Example queries:
"tapu" - Land registry related statutes
"vakıf AND tescil" - Foundation registration statutes
Leave empty with dates to list all statutes from a period
Returns: Statute number, title, dates, Official Gazette info.
| Name | Required | Description | Default |
|---|---|---|---|
| aranacak_ifade | No | Search query with Boolean operators and wildcards. Examples: "tapu" (simple), "sicil AND kayıt" (AND), "tescil OR ilan" (OR), "vakıf NOT kurul" (NOT), "tescil*" (wildcard), "medeni kanun" (exact phrase with quotes). Leave empty to list all statutes in date range. | |
| tam_cumle | No | If True, searches for exact phrase match. If False (default), searches for any word match with Boolean operators. | |
| baslangic_tarihi | No | Start year for filtering results (format: YYYY, e.g., '2008'). Use with bitis_tarihi to define a date range. | |
| bitis_tarihi | No | End year for filtering results (format: YYYY, e.g., '2013'). Use with baslangic_tarihi to define a date range. | |
| page_number | No | Page number of results to retrieve (starts from 1) | |
| aranacak_yer | No | Where to search: 1=Title only, 2=Content only, 3=Both title and content (default) | |
| page_size | No | Number of results per page (1-100, default: 25) |
Output Schema
| Name | Required | Description |
|---|---|---|
| documents | Yes | |
| total_results | Yes | |
| current_page | Yes | |
| page_size | Yes | |
| total_pages | Yes | |
| query_used | Yes | |
| error_message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the search scope (title/content), query syntax, return fields (statute number, title, dates, Official Gazette info), and the ability to list all statutes with dates. This adequately covers behavior for a read-only search tool.
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 with no wasted words. It uses clear formatting (IMPORTANT note, example queries, returns list) and front-loads the key point about keyword-based search. 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?
The description explains the tool's purpose, input syntax, and output shape (aided by output schema existence). It lacks mention of sibling search_within_tuzuk for in-document searching, but overall it provides sufficient context for an agent to select and use the tool 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% and schema descriptions are detailed, but the description adds value by explaining query syntax and providing examples that clarify how Boolean operators and exact phrases work. This reduces ambiguity beyond the schema alone.
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 searches for Turkish Statutes/Regulations (Tüzük) in titles and content. It specifies that search is keyword-based, not by statute number, and provides examples. This distinctly identifies the resource and action, differentiating it from siblings that search other regulation types.
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 the agent when not to use this tool (not for statute number searches) and gives query syntax and examples. However, it does not mention alternative tools like search_kanun or search_within_tuzuk for related but different searches, leaving the agent to infer from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_within_cbbaskankararA
Search within a specific Presidential Decision's (CB Kararı) content using keyword or semantic search.
Presidential Decisions are PDF-based and use chunk-based splitting (no article structure).
Modes:
semantic=False (default): Keyword search with Boolean operators (AND/OR/NOT, uppercase required)
semantic=True: Natural language semantic search using AI embeddings (requires OPENROUTER_API_KEY)
Keyword examples: "atama AND görev", '"ihracat rejimi"', "vergi OR gümrük" Semantic examples: "kamu personeli atama kararları", "ihracat rejimi düzenlemeleri"
| Name | Required | Description | Default |
|---|---|---|---|
| mevzuat_no | Yes | The Presidential Decision number to search within (e.g., '1733', '10452') | |
| keyword | Yes | Search query. For keyword mode: supports AND/OR/NOT operators (uppercase). For semantic mode: use natural language. | |
| mevzuat_tertip | No | Decision series from search results (e.g., '5') | 5 |
| case_sensitive | No | Whether to match case when searching (default: False). Only used in keyword mode. | |
| max_results | No | Maximum number of matching segments to return (1-50, default: 25) | |
| semantic | No | True: semantic search (natural language query, requires OPENROUTER_API_KEY). False: keyword search (Boolean operators AND/OR/NOT). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions chunk-based splitting (no article structure), Boolean operator requirements, and provides examples. Missing details on pagination or error handling, but sufficient for behavioral understanding.
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 sections for modes and examples. Every sentence adds value, no 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 an output schema exists, description needn't explain return values. It covers search behavior, modes, and query syntax. Could mention result ordering or limitations like max results cap, but overall sufficient.
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% (baseline 3). The description adds value by explaining semantic mode, Boolean operators, and providing example queries for both modes, going beyond the schema alone.
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 within a specific Presidential Decision's content using keyword or semantic search, distinguishing it from siblings like search_cbbaskankarar (cross-decision) and get_cbbaskankarar_content (retrieval).
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 explains the two modes (keyword vs semantic) with examples and notes when to use each, including the requirement for OPENROUTER_API_KEY in semantic mode. However, it does not explicitly state when not to use this tool vs alternatives for cross-decision search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_within_cbgenelgeA
Search within a specific Presidential Circular's (CB Genelgesi) content using keyword or semantic search.
Presidential Circulars are PDF-based and use chunk-based splitting (no article structure). IMPORTANT: resmi_gazete_tarihi is required (from search_cbgenelge results).
Modes:
semantic=False (default): Keyword search with Boolean operators (AND/OR/NOT, uppercase required)
semantic=True: Natural language semantic search using AI embeddings (requires OPENROUTER_API_KEY)
Keyword examples: "koordinasyon AND toplantı", '"kamu yönetimi"' Semantic examples: "bakanlıklar arası koordinasyon düzeni", "tasarruf tedbirleri"
| Name | Required | Description | Default |
|---|---|---|---|
| mevzuat_no | Yes | The Presidential Circular number to search within (e.g., '16', '15') | |
| keyword | Yes | Search query. For keyword mode: supports AND/OR/NOT operators (uppercase). For semantic mode: use natural language. | |
| resmi_gazete_tarihi | Yes | Official Gazette date from search results in DD/MM/YYYY format (e.g., '20/09/2025') - REQUIRED for PDF retrieval | |
| mevzuat_tertip | No | Circular series from search results (e.g., '5') | 5 |
| case_sensitive | No | Whether to match case when searching (default: False). Only used in keyword mode. | |
| max_results | No | Maximum number of matching segments to return (1-50, default: 25) | |
| semantic | No | True: semantic search (natural language query, requires OPENROUTER_API_KEY). False: keyword search (Boolean operators AND/OR/NOT). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden: it discloses the two search modes, API key requirement for semantic mode, boolean operator usage, and chunk-based splitting. No destructive or side effects are implied, and the behavior is clear.
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 sections, examples, and important notes front-loaded. It is slightly verbose but every sentence adds meaning; no wasted words. It could be more succinct, but the clarity justifies the length.
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 7 parameters, an output schema, and no annotations, the description covers all essential aspects: search modes, prerequisites, parameter constraints, and mode-specific behavior. It is complete for an agent to correctly invoke the tool without confusion.
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 value by providing examples for keyword and semantic queries, explaining the case sensitivity relevance, and clarifying that 'resmi_gazete_tarihi' is required from prior search results, which goes beyond bare 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 searches within a specific Presidential Circular using keyword or semantic search, differentiating it from sibling tools like 'search_cbgenelge' which finds circulars themselves. It also specifies the chunk-based document structure, making the purpose concrete.
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?
It explicitly states that 'resmi_gazete_tarihi' is required and should come from 'search_cbgenelge' results, providing a clear prerequisite. It also explains the two modes (keyword vs semantic) and gives examples, leaving no ambiguity about when to use each.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_within_cbkA
Search within a specific Presidential Decree's articles using keyword or semantic search.
Modes:
semantic=False (default): Keyword search with Boolean operators (AND/OR/NOT, uppercase required)
semantic=True: Natural language semantic search using AI embeddings (requires OPENROUTER_API_KEY)
Keyword examples: "organize AND suç", '"organize suç"', "devlet OR kamu" Semantic examples: "organize suç örgütleri ile mücadele", "bakanlık teşkilat yapısı"
| Name | Required | Description | Default |
|---|---|---|---|
| mevzuat_no | Yes | The Presidential Decree number to search within (e.g., '1', '32') | |
| keyword | Yes | Search query. For keyword mode: supports AND/OR/NOT operators (uppercase). For semantic mode: use natural language. | |
| mevzuat_tertip | No | Decree series from search results (e.g., '5') | 5 |
| case_sensitive | No | Whether to match case when searching (default: False). Only used in keyword mode. | |
| max_results | No | Maximum number of matching articles to return (1-50, default: 25) | |
| semantic | No | True: semantic search (natural language query, requires OPENROUTER_API_KEY). False: keyword search (Boolean operators AND/OR/NOT). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It clearly describes two search modes, Boolean operator usage, and the API key dependency. It could mention rate limits or result handling, but the core behaviors are transparent.
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, well-structured with a clear overview, mode breakdown, and examples. Every sentence adds value, and the formatting improves 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 complexity (two search modes, 6 parameters), the description covers modes, constraints, and examples. An output schema exists (not shown), so return values need not be explained. Minor missing details like error handling are acceptable.
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, but the description adds value by explaining mode-specific behavior (e.g., case_sensitive only in keyword mode, semantic mode requiring API key) and providing examples. 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 searches within a specific Presidential Decree's articles using keyword or semantic search. It includes specific verbs ('search within') and explicitly distinguishes from sibling tools by focusing on a single decree vs. broad search.
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 explains two modes with examples and notes the OPENROUTER_API_KEY requirement for semantic mode. However, it does not explicitly state when to prefer this tool over siblings like 'search_cbk', though the naming and context imply it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_within_cbyonetmelikA
Search within a specific Presidential Regulation's articles using keyword or semantic search.
Modes:
semantic=False (default): Keyword search with Boolean operators (AND/OR/NOT, uppercase required)
semantic=True: Natural language semantic search using AI embeddings (requires OPENROUTER_API_KEY)
Keyword examples: "taşınır AND mal", '"ihale kanunu"', "kamu OR devlet" Semantic examples: "taşınır mal yönetimi ve zimmet işlemleri", "kamu ihale süreçleri"
| Name | Required | Description | Default |
|---|---|---|---|
| mevzuat_no | Yes | The Presidential Regulation number to search within (e.g., '10453', '9014') | |
| keyword | Yes | Search query. For keyword mode: supports AND/OR/NOT operators (uppercase). For semantic mode: use natural language. | |
| mevzuat_tertip | No | Regulation series from search results (typically '5') | 5 |
| case_sensitive | No | Whether to match case (false = case-insensitive, default). Only used in keyword mode. | |
| max_results | No | Maximum number of matching articles to return (1-50) | |
| semantic | No | True: semantic search (natural language query, requires OPENROUTER_API_KEY). False: keyword search (Boolean operators AND/OR/NOT). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses behavioral traits such as the two search modes, requirement for OPENROUTER_API_KEY in semantic mode, uppercase Boolean operators, case sensitivity only in keyword mode, and result limits (1-50). Minor omission: no mention of error behavior if API key is missing.
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: two opening sentences define purpose, followed by a clear bullet-style listing of modes with examples. Every sentence adds value, and the structure is front-loaded with essential 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 the tool's moderate complexity (6 params, output schema), the description covers the core functionality well. It explains modes and parameter usage, but does not address error scenarios (e.g., invalid mevzuat_no, missing API key) or specify that output schema details exist. Minor gaps prevent a perfect score.
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%, but the description adds value by clarifying that Boolean operators must be uppercase, providing concrete examples for both modes, and specifying that case_sensitive only applies in keyword mode. This enhances 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's purpose: search within a specific Presidential Regulation's articles using keyword or semantic search. It specifies the resource (Presidential Regulation articles) and distinguishes from siblings like search_within_cbgenelge or search_within_kanun by naming the regulation type.
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 explains when to use keyword vs semantic modes, but does not explicitly guide when to choose this tool over sibling tools for different regulation types. It assumes the agent knows that this tool is for 'cbyonetmelik'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_within_kanunA
Search within a specific law's articles using keyword or semantic search.
Modes:
semantic=False (default): Keyword search with Boolean operators (AND/OR/NOT, uppercase required)
semantic=True: Natural language semantic search using AI embeddings (requires OPENROUTER_API_KEY)
Keyword examples: "yatırımcı AND tazmin", '"mali sıkıntı"', "vergi OR ücret" Semantic examples: "yatırımcının zararının tazmini", "sermaye piyasası düzenlemeleri"
| Name | Required | Description | Default |
|---|---|---|---|
| mevzuat_no | Yes | The legislation number to search within (e.g., '6362', '5237') | |
| keyword | Yes | Search query. For keyword mode: supports AND/OR/NOT operators (uppercase). For semantic mode: use natural language. | |
| mevzuat_tertip | No | Legislation series from search results (e.g., '3', '5') | 5 |
| case_sensitive | No | Whether to match case when searching (default: False). Only used in keyword mode. | |
| max_results | No | Maximum number of matching articles to return (1-50, default: 25) | |
| semantic | No | True: semantic search (natural language query, requires OPENROUTER_API_KEY). False: keyword search (Boolean operators AND/OR/NOT). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Describes two search modes and their behavior, including Boolean operators and semantic embeddings. Lacks details on potential side effects, auth needs beyond API key, or rate limits, but adds value beyond schema.
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?
Structured into clear sections (modes, examples) with no redundant text. Every sentence adds value: two sentences covering core purpose, then bulleted lists for modes and examples.
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 both search modes, required parameters, optional parameters with defaults, and output schema exists. The description is complete given the tool's complexity and richness of schema and 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?
Input schema has 100% coverage with good descriptions. The description adds context by explaining modes and providing examples, which enhances understanding beyond the schema. However, the schema already handles parameter semantics adequately.
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 searches within a specific law's articles using keyword or semantic search. Distinguishes from sibling tools like 'search_within_kanun' vs general 'search_kanun' by specifying 'within a specific law' and providing two distinct search modes.
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 explicit usage guidance for both keyword and semantic modes, including examples and noting the OPENROUTER_API_KEY requirement for semantic search. However, does not explicitly state when to choose this tool over siblings or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_within_khkA
Search within a specific Decree Law's (KHK) articles using keyword or semantic search.
Modes:
semantic=False (default): Keyword search with Boolean operators (AND/OR/NOT, uppercase required)
semantic=True: Natural language semantic search using AI embeddings (requires OPENROUTER_API_KEY)
Keyword examples: "kanun AND değişiklik", '"kanun hükmünde"', "bakanlık OR kurum" Semantic examples: "sağlık alanında yapılan düzenlemeler", "anayasa değişikliği"
| Name | Required | Description | Default |
|---|---|---|---|
| mevzuat_no | Yes | The KHK number to search within (e.g., '703', '700', '665') | |
| keyword | Yes | Search query. For keyword mode: supports AND/OR/NOT operators (uppercase). For semantic mode: use natural language. | |
| mevzuat_tertip | No | KHK series from search results (e.g., '5') | 5 |
| case_sensitive | No | Whether to match case when searching (default: False). Only used in keyword mode. | |
| max_results | No | Maximum number of matching articles to return (1-50, default: 25) | |
| semantic | No | True: semantic search (natural language query, requires OPENROUTER_API_KEY). False: keyword search (Boolean operators AND/OR/NOT). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses mode behavior, operator support, case sensitivity, max results limit, and environment variable dependency. No annotations provided, so description compensates well. Could mention authentication or rate limits, but overall transparent.
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?
Concise two-paragraph structure with clear separation of modes, examples, and parameters. No unnecessary words; 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 sibling richness and presence of output schema, description is nearly complete. Could briefly state that it returns matching articles from the specified KHK, but context is sufficient for 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?
Schema has 100% description coverage, but description adds value by explaining modes with examples, clarifying that case_sensitive only applies to keyword mode, and providing defaults and ranges. Adds meaning 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?
Clearly states the tool searches within a specific KHK's articles using keyword or semantic search. However, it does not explicitly differentiate from the sibling tool 'search_khk', which likely searches across multiple KHKs. The description implies but does not contrast.
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?
Describes two modes and their requirements (e.g., OPENROUTER_API_KEY for semantic), but does not explicitly state when to use this tool vs. alternatives like 'search_khk' or other 'search_within_*' tools. Usage is implied but not directly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_within_kurum_yonetmelikA
Search within a specific Institutional Regulation's articles using keyword or semantic search.
Modes:
semantic=False (default): Keyword search with Boolean operators (AND/OR/NOT, uppercase required)
semantic=True: Natural language semantic search using AI embeddings (requires OPENROUTER_API_KEY)
Keyword examples: "nükleer AND ihracat", '"ihracat kontrol"', "denetim OR teftiş" Semantic examples: "nükleer madde ihracat kontrol düzenlemeleri", "disiplin cezaları"
| Name | Required | Description | Default |
|---|---|---|---|
| mevzuat_no | Yes | The regulation number to search within (e.g., '42641', '42638', '42613') | |
| keyword | Yes | Search query. For keyword mode: supports AND/OR/NOT operators (uppercase). For semantic mode: use natural language. | |
| mevzuat_tertip | No | Regulation series from search results (e.g., '5') | 5 |
| case_sensitive | No | Whether to match case when searching (default: False). Only used in keyword mode. | |
| max_results | No | Maximum number of matching articles to return (1-50, default: 25) | |
| semantic | No | True: semantic search (natural language query, requires OPENROUTER_API_KEY). False: keyword search (Boolean operators AND/OR/NOT). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that semantic mode requires an API key, keyword mode supports Boolean operators, and gives examples. However, it lacks details on error handling, rate limits, or limitations (e.g., what if mevzuat_no not found). The output schema exists but description doesn't mention return structure.
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 and well-structured, with bullet points for modes and examples. It front-loads the main purpose and avoids 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 that an output schema exists, the description need not explain return values. It covers mode selection, parameters, and examples adequately for a search tool. However, it could be slightly more complete by stating that it returns a list of matching articles, though not critical.
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% (baseline 3), but the description adds meaningful value by explaining modes, providing usage examples, and clarifying the semantic parameter's requirement. It goes beyond the schema's parameter 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 it searches within a specific Institutional Regulation's articles using keyword or semantic search. The verb 'search' and resource 'Institutional Regulation' (kurum yonetmelik) are specific and distinguish from siblings.
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 explains two modes with examples and requirements for semantic mode, but does not explicitly differentiate when to use this tool versus other search_within_* siblings or search_kurum_yonetmelik. No exclusion or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_within_mevzuatA
Search within a specific legislation's articles on bedesten.adalet.gov.tr.
Ideal for large legislation where get_mevzuat_content would return too much text. Fetches the full document, splits into individual articles (MADDE), and applies keyword search with Boolean operators. Returns only matching articles sorted by relevance score (match frequency).
Each result includes: article number (madde no), match count, and full article text.
Workflow: search_mevzuat → get mevzuatId → search_within_mevzuat(mevzuatId, keyword)
Example: To find investor compensation articles in Capital Markets Law:
search_mevzuat(mevzuat_adi='sermaye piyasası', mevzuat_tur='KANUN') → mevzuatId
search_within_mevzuat(mevzuat_id='...', keyword='yatırımcı AND tazmin')
| Name | Required | Description | Default |
|---|---|---|---|
| mevzuat_id | Yes | Legislation ID from search_mevzuat results (mevzuatId field). This is a string ID (e.g., '345097'), NOT the law number. First call search_mevzuat to get the mevzuatId. | |
| keyword | Yes | Search query with Boolean operators (operators MUST be uppercase). Simple keyword: 'yatırımcı'. AND (both required): 'yatırımcı AND tazmin'. OR (at least one): 'yatırımcı OR müşteri'. NOT (exclude): 'yatırımcı NOT kurum'. Exact phrase: '"mali sıkıntı"'. Combined: '"mali sıkıntı" AND yatırımcı NOT kurum'. | |
| case_sensitive | No | Case-sensitive matching (default: false) | |
| max_results | No | Maximum number of matching articles to return (1-50, default: 25) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description details the internal process: fetches full document, splits into articles, applies Boolean keyword search, sorts by relevance, and specifies result fields. It does not mention rate limits or potential large data usage, but it is sufficiently transparent.
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 and concise: opens with purpose, then usage context, behavioral details, result format, workflow, and example. No extraneous information; every sentence earns its place.
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 complexity (4 parameters, existing output schema) and good annotations, the description covers all necessary aspects: input requirements, processing logic, output structure, and usage workflow. It is fully complete 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?
The description adds substantial value beyond the schema: explains how to obtain mevzuat_id, provides detailed Boolean operator syntax with examples for keyword, and clarifies defaults and constraints for case_sensitive and max_results. With 100% schema coverage, the description still enriches understanding.
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: 'Search within a specific legislation's articles'. It distinguishes from siblings like get_mevzuat_content by noting it is ideal for large legislation, and from other search_within_* tools by specifying the source domain.
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 says when to use: 'Ideal for large legislation where get_mevzuat_content would return too much text.' Provides a step-by-step workflow and a concrete example, guiding the agent on correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_within_tebligA
Search within a specific communiqué's (Tebliğ) content using keyword or semantic search.
Tries article-based splitting first; if no articles found, falls back to chunk-based search.
Modes:
semantic=False (default): Keyword search with Boolean operators (AND/OR/NOT, uppercase required)
semantic=True: Natural language semantic search using AI embeddings (requires OPENROUTER_API_KEY)
Keyword examples: "vergi AND muafiyet", '"katma değer"', "istisna OR muafiyet" Semantic examples: "vergi muafiyeti koşulları", "KDV iade işlemleri"
| Name | Required | Description | Default |
|---|---|---|---|
| mevzuat_no | Yes | The communiqué number to search within (e.g., '42331') | |
| keyword | Yes | Search query. For keyword mode: supports AND/OR/NOT operators (uppercase). For semantic mode: use natural language. | |
| mevzuat_tertip | No | Communiqué series from search results (e.g., '5') | 5 |
| case_sensitive | No | Whether to match case when searching (default: False). Only used in keyword mode. | |
| max_results | No | Maximum number of matching segments to return (1-50, default: 25) | |
| semantic | No | True: semantic search (natural language query, requires OPENROUTER_API_KEY). False: keyword search (Boolean operators AND/OR/NOT). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description discloses fallback behavior (article-based then chunk-based), mode differences, and API key requirement. Lacks mention of cost or rate limits for semantic mode, but overall transparent.
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 clear sections (purpose, fallback, modes, examples). No redundant sentences; every part contributes useful 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 the tool's complexity (two modes, fallback, 6 params), the description covers key aspects. Output schema exists, so return values are not needed. Could mention pagination but not required.
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%, but the description adds significant value with examples, mode explanations, and fallback details. Goes beyond the schema to clarify usage patterns.
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 searches within a specific Tebliğ communiqué using keyword or semantic search. The verb 'search within' and resource 'teblig' are unambiguous, and the description distinguishes from sibling tools that search other document types.
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 explains two modes (keyword vs. semantic) with examples and the requirement of OPENROUTER_API_KEY for semantic mode. Provides fallback logic but does not explicitly differentiate from sibling tools like search_teblig, though the name indicates scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_within_tuzukA
Search within a specific Statute's (Tüzük) articles using keyword or semantic search.
Modes:
semantic=False (default): Keyword search with Boolean operators (AND/OR/NOT, uppercase required)
semantic=True: Natural language semantic search using AI embeddings (requires OPENROUTER_API_KEY)
Keyword examples: "tapu AND sicil", '"sicil kayıt"', "tescil OR ilan" Semantic examples: "tapu sicil kayıt işlemleri", "vakıf tescil süreci"
| Name | Required | Description | Default |
|---|---|---|---|
| mevzuat_no | Yes | The statute number to search within (e.g., '20135150', '20134513', '200814001') | |
| keyword | Yes | Search query. For keyword mode: supports AND/OR/NOT operators (uppercase). For semantic mode: use natural language. | |
| mevzuat_tertip | No | Statute series from search results (e.g., '5') | 5 |
| case_sensitive | No | Whether to match case when searching (default: False). Only used in keyword mode. | |
| max_results | No | Maximum number of matching articles to return (1-50, default: 25) | |
| semantic | No | True: semantic search (natural language query, requires OPENROUTER_API_KEY). False: keyword search (Boolean operators AND/OR/NOT). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description fully covers behavior: two search modes, Boolean operators, case sensitivity, max results, API key requirement. Examples clarify usage.
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?
Concise, front-loaded, uses headings for modes. Every sentence adds value. Examples are 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?
Covers all aspects: required inputs, mode selection, parameter details, examples. With 6 parameters and no annotations, description 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?
Schema already describes all parameters (100% coverage). Description adds value with usage examples, operator uppercase requirement, and API key condition for semantic mode.
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 searches within a specific statute's articles using keyword or semantic search. Distinguishes from siblings by specifying 'Tüzük' and requiring a statute number.
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?
Explains two modes and gives examples. Implicitly requires statute number (mevzuat_no). Does not explicitly compare to other tools like search_tuzuk, but provides context on mode selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
23 tool updates
- Added
get_mevzuat_content - Added
get_mevzuat_gerekce - Added
get_mevzuat_madde_tree - Changed
search_cbbaskankarar1 field changed- added
Input schema / properties / aranacak_yerAdded value: +{ + "default": 3, + "description": "Where to search: 1=Title only, 2=Content only, 3=Both title and content (default)", + "maximum": 3, + "minimum": 1, + "title": "Aranacak Yer", + "type": "integer" +}
- Changed
search_cbgenelge1 field changed- added
Input schema / properties / aranacak_yerAdded value: +{ + "default": 3, + "description": "Where to search: 1=Title only, 2=Content only, 3=Both title and content (default)", + "maximum": 3, + "minimum": 1, + "title": "Aranacak Yer", + "type": "integer" +}
- Changed
search_cbk1 field changed- added
Input schema / properties / aranacak_yerAdded value: +{ + "default": 3, + "description": "Where to search: 1=Title only, 2=Content only, 3=Both title and content (default)", + "maximum": 3, + "minimum": 1, + "title": "Aranacak Yer", + "type": "integer" +}
- Changed
search_cbyonetmelik1 field changed- added
Input schema / properties / aranacak_yerAdded value: +{ + "default": 3, + "description": "Where to search: 1=Title only, 2=Content only, 3=Both title and content (default)", + "maximum": 3, + "minimum": 1, + "title": "Aranacak Yer", + "type": "integer" +}
- Changed
search_kanun1 field changed- added
Input schema / properties / aranacak_yerAdded value: +{ + "default": 3, + "description": "Where to search: 1=Title only, 2=Content only, 3=Both title and content (default)", + "maximum": 3, + "minimum": 1, + "title": "Aranacak Yer", + "type": "integer" +}
- Changed
search_khk1 field changed- added
Input schema / properties / aranacak_yerAdded value: +{ + "default": 3, + "description": "Where to search: 1=Title only, 2=Content only, 3=Both title and content (default)", + "maximum": 3, + "minimum": 1, + "title": "Aranacak Yer", + "type": "integer" +}
- Changed
search_kurum_yonetmelik1 field changed- added
Input schema / properties / aranacak_yerAdded value: +{ + "default": 3, + "description": "Where to search: 1=Title only, 2=Content only, 3=Both title and content (default)", + "maximum": 3, + "minimum": 1, + "title": "Aranacak Yer", + "type": "integer" +}
- Added
search_mevzuat - Changed
search_teblig1 field changed- added
Input schema / properties / aranacak_yerAdded value: +{ + "default": 3, + "description": "Where to search: 1=Title only, 2=Content only, 3=Both title and content (default)", + "maximum": 3, + "minimum": 1, + "title": "Aranacak Yer", + "type": "integer" +}
- Changed
search_tuzuk1 field changed- added
Input schema / properties / aranacak_yerAdded value: +{ + "default": 3, + "description": "Where to search: 1=Title only, 2=Content only, 3=Both title and content (default)", + "maximum": 3, + "minimum": 1, + "title": "Aranacak Yer", + "type": "integer" +}
- Added
search_within_cbbaskankarar - Added
search_within_cbgenelge - Changed
search_within_cbk3 fields changed- changed
Input schema / properties / case_sensitive / descriptionPrevious value: -"Whether to match case when searching (default: False)"New value: +"Whether to match case when searching (default: False). Only used in keyword mode." - changed
Input schema / properties / keyword / descriptionPrevious value: -"Search query supporting advanced operators: simple keyword (\"organize\"), exact phrase (\"organize suç\"), AND/OR/NOT operators (organize AND suç, suç OR ceza, organize NOT terör). Operators must be uppercase."New value: +"Search query. For keyword mode: supports AND/OR/NOT operators (uppercase). For semantic mode: use natural language." - added
Input schema / properties / semanticAdded value: +{ + "default": false, + "description": "True: semantic search (natural language query, requires OPENROUTER_API_KEY). False: keyword search (Boolean operators AND/OR/NOT).", + "title": "Semantic", + "type": "boolean" +}
- Changed
search_within_cbyonetmelik3 fields changed- changed
Input schema / properties / case_sensitive / descriptionPrevious value: -"Whether to match case (false = case-insensitive, default)"New value: +"Whether to match case (false = case-insensitive, default). Only used in keyword mode." - changed
Input schema / properties / keyword / descriptionPrevious value: -"Search query supporting advanced operators: simple word (yatırımcı), AND (yatırımcı AND tazmin), OR (vergi OR ücret), NOT (yatırımcı NOT kurum), exact phrase with quotes (\"mali sıkıntı\")"New value: +"Search query. For keyword mode: supports AND/OR/NOT operators (uppercase). For semantic mode: use natural language." - added
Input schema / properties / semanticAdded value: +{ + "default": false, + "description": "True: semantic search (natural language query, requires OPENROUTER_API_KEY). False: keyword search (Boolean operators AND/OR/NOT).", + "title": "Semantic", + "type": "boolean" +}
- Changed
search_within_kanun3 fields changed- changed
Input schema / properties / case_sensitive / descriptionPrevious value: -"Whether to match case when searching (default: False)"New value: +"Whether to match case when searching (default: False). Only used in keyword mode." - changed
Input schema / properties / keyword / descriptionPrevious value: -"Search query supporting advanced operators: simple keyword (\"yatırımcı\"), exact phrase (\"mali sıkıntı\"), AND/OR/NOT operators (yatırımcı AND tazmin, yatırımcı OR müşteri, yatırımcı NOT kurum). Operators must be uppercase."New value: +"Search query. For keyword mode: supports AND/OR/NOT operators (uppercase). For semantic mode: use natural language." - added
Input schema / properties / semanticAdded value: +{ + "default": false, + "description": "True: semantic search (natural language query, requires OPENROUTER_API_KEY). False: keyword search (Boolean operators AND/OR/NOT).", + "title": "Semantic", + "type": "boolean" +}
- Changed
search_within_khk3 fields changed- changed
Input schema / properties / case_sensitive / descriptionPrevious value: -"Whether to match case when searching (default: False)"New value: +"Whether to match case when searching (default: False). Only used in keyword mode." - changed
Input schema / properties / keyword / descriptionPrevious value: -"Search query supporting advanced operators: simple keyword (\"değişiklik\"), exact phrase (\"kanun hükmünde\"), AND/OR/NOT operators (kanun AND değişiklik, madde OR fıkra, değişiklik NOT yürürlük). Operators must be uppercase."New value: +"Search query. For keyword mode: supports AND/OR/NOT operators (uppercase). For semantic mode: use natural language." - added
Input schema / properties / semanticAdded value: +{ + "default": false, + "description": "True: semantic search (natural language query, requires OPENROUTER_API_KEY). False: keyword search (Boolean operators AND/OR/NOT).", + "title": "Semantic", + "type": "boolean" +}
- Changed
search_within_kurum_yonetmelik3 fields changed- changed
Input schema / properties / case_sensitive / descriptionPrevious value: -"Whether to match case when searching (default: False)"New value: +"Whether to match case when searching (default: False). Only used in keyword mode." - changed
Input schema / properties / keyword / descriptionPrevious value: -"Search query supporting advanced operators: simple keyword (\"kontrol\"), exact phrase (\"ihracat kontrol\"), AND/OR/NOT operators (nükleer AND ihracat, denetim OR teftiş, kontrol NOT iptal). Operators must be uppercase."New value: +"Search query. For keyword mode: supports AND/OR/NOT operators (uppercase). For semantic mode: use natural language." - added
Input schema / properties / semanticAdded value: +{ + "default": false, + "description": "True: semantic search (natural language query, requires OPENROUTER_API_KEY). False: keyword search (Boolean operators AND/OR/NOT).", + "title": "Semantic", + "type": "boolean" +}
- Added
search_within_mevzuat - Added
search_within_teblig - Changed
search_within_tuzuk3 fields changed- changed
Input schema / properties / case_sensitive / descriptionPrevious value: -"Whether to match case when searching (default: False)"New value: +"Whether to match case when searching (default: False). Only used in keyword mode." - changed
Input schema / properties / keyword / descriptionPrevious value: -"Search query supporting advanced operators: simple keyword (\"kayıt\"), exact phrase (\"sicil kayıt\"), AND/OR/NOT operators (tapu AND sicil, tescil OR ilan, kayıt NOT iptal). Operators must be uppercase."New value: +"Search query. For keyword mode: supports AND/OR/NOT operators (uppercase). For semantic mode: use natural language." - added
Input schema / properties / semanticAdded value: +{ + "default": false, + "description": "True: semantic search (natural language query, requires OPENROUTER_API_KEY). False: keyword search (Boolean operators AND/OR/NOT).", + "title": "Semantic", + "type": "boolean" +}
21 tool updates
v1.0.0- Added
get_cbbaskankarar_content - Added
get_cbgenelge_content - Removed
get_mevzuat_article_content - Removed
get_mevzuat_article_tree - Added
get_teblig_content - Added
search_cbbaskankarar - Added
search_cbgenelge - Added
search_cbk - Added
search_cbyonetmelik - Added
search_kanun - Added
search_khk - Added
search_kurum_yonetmelik - Removed
search_mevzuat - Added
search_teblig - Added
search_tuzuk - Added
search_within_cbk - Added
search_within_cbyonetmelik - Added
search_within_kanun - Added
search_within_khk - Added
search_within_kurum_yonetmelik - Added
search_within_tuzuk
3 tool updates
- First observed
get_mevzuat_article_content - First observed
get_mevzuat_article_tree - First observed
search_mevzuat
TDQS
Scored across 26 tools
Several tools have overlapping boundaries: search_kanun/search_within_kanun overlap with search_mevzuat/search_within_mevzuat, and search_cbk/search_cbbaskankarar are easy to confuse despite the detailed descriptions. An agent is likely to misselect between the generic mevzuat workflow and the type-specific search tools because the intended source difference is not obvious.
Tool names generally follow a predictable search_<type>, search_within_<type>, and get_<type>_content pattern in snake_case. Minor inconsistencies like the abbreviated 'cbk' vs 'cbbaskankarar' and generic get_mevzuat_gerekce/get_mevzuat_madde_tree prevent a perfect score.
With 26 tools, the server exceeds the 25+ threshold and feels overly large. Much of the type-specific search/search_within surface duplicates the generic mevzuat workflow, so the count is inflated despite the broad legal document taxonomy.
The server covers the main read-only legal research lifecycle: searching by type, browsing by date, retrieving full content, searching within documents, getting article trees, and fetching law rationale. Minor gaps exist, such as no direct content getter for every document type and no semantic mode on generic search_within_mevzuat, but the generic workflow mostly compensates.
Maintenance
Related MCP Connectors
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
An MCP server that provides congressional transcripts
Connect AI to millions of laws and court cases with the Lawstronaut MCP.
Related MCP Servers
- AlicenseAqualityAmaintenanceA FastMCP server providing access to various Turkish legal databases including Supreme Court, Council of State, Constitutional Court, and Public Procurement Authority decisions through a standardized MCP interface for LLM applications.28220 PyPI1,112MIT
- AlicenseNot gradedqualityDmaintenanceProvides programmatic access to Turkey's Ministry of Justice Legislation Information System (mevzuat.gov.tr), enabling users to search legislation, retrieve article hierarchies, and fetch article contents in Markdown format through natural language.MIT
- AlicenseNot gradedqualityNot gradedmaintenanceProvides programmatic access to the Turkish Ministry of Justice Legislation Information System (mevzuat.gov.tr). It enables searching for legislation, navigating hierarchical article structures, and retrieving article content in Markdown format.1MIT
- FlicenseNot gradedqualityDmaintenanceMCP server that exposes Austrian federal law (Bundesrecht) to LLMs, enabling full-text search, paragraph retrieval, historical versions, statute lookup, BGBl lookups, amendment timelines, and citation searches via the public RIS OGD API.-