Özdisan MCP
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., "@Özdisan MCPFind in-stock 3.3V 500mA SOT-23 LDOs sorted by price"
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.
Özdisan MCP
Yapay zekâ asistanınıza Türkiye'nin en büyük elektronik komponent kataloğunu bağlayın.
Claude, Cursor, VS Code Copilot ve diğer MCP uyumlu araçlar için ozdisan.com üzerinde ~960.000 ürün ve 955 kategoride arama, parametrik filtreleme, fiyat/stok sorgulama, muadil bulma, BOM maliyetlendirme ve datasheet indirme/okuma yapan, tamamen bilgisayarınızda çalışan bir MCP sunucusu.
İçindekiler
Related MCP server: SheetsData MCP
Neden?
Devre tasarlarken yapay zekâya "3.3 V çıkışlı, en az 500 mA veren, SOT-23 kılıflı, stokta olan en ucuz LDO hangisi?" diye sorduğunuzda genellikle ezbere, stok durumu bilinmeyen veya artık üretilmeyen parçalar önerir. Özdisan MCP ile asistanınız:
Özdisan'ın güncel stok ve fiyat bilgisine erişir,
kategoriye özel parametrik filtrelerle (kılıf, voltaj, akım, kapasitans, tolerans…) gerçekten var olan ürünleri bulur,
seçtiği parçanın datasheet'ini okuyarak pin yapısı, mutlak maksimum değerler ve tipik uygulama devresini doğrular,
stokta olmayan parçalar için muadil önerir ve BOM maliyetinizi çıkarır.
API anahtarı, üyelik veya ücret gerekmez. Sunucu sizin bilgisayarınızda çalışır ve yalnızca okuma yapar.
Neler yapabilir?
Araç | Ne işe yarar? |
| Parça numarası veya anahtar kelimeyle tüm katalogda arama ( |
| Tek ürünün tüm detayları: teknik özellikler, stok, tedarik süresi, MOQ, fiyat kırılımları, datasheet bağlantısı |
| Türkçe/İngilizce kategori arama ( |
| Kategori ağacında gezinme (ürün sayılarıyla) |
| Bir kategorinin tüm filtreleri: özellikler, birimler, seçilebilir değerler, üreticiler |
| Sitedeki filtre paneliyle aynı: değer ve birimli sayısal aralık filtreleri, stok/RoHS, sıralama, sayfalama |
| Muadil (substitute), benzer, aksesuar ve parametrik eşdeğer ürünler |
| 2–10 ürünü özellik özellik karşılaştırma (farklı olanları işaretler) |
| Malzeme listesini stok, MOQ, sipariş katı, fiyat kırılımı ve EOL durumuna göre kontrol edip maliyetlendirme |
| Datasheet PDF'ini bilgisayarınıza indirme |
| Datasheet içinden metin okuma ve anahtar kelimeyle ilgili sayfayı bulma ( |
Ayrıca iki hazır istem (prompt) gelir: komponent_sec (ihtiyaca göre adım adım parça seçimi) ve
bom_kontrol (BOM'u kontrol edip riskli kalemlere alternatif önerme).
Hızlı başlangıç
Tek gereksinim Node.js 22 veya üstü. Kurulu olup olmadığını kontrol edin:
node --versionArdından kullandığınız yapay zekâ aracına aşağıdaki MCP sunucu tanımını ekleyin:
{
"mcpServers": {
"ozdisan": {
"command": "npx",
"args": ["-y", "ozdisan-mcp"]
}
}
}İstemcinizi yeniden başlatın ve şunu sorun: "Özdisan'da stokta olan, 3.3V çıkışlı, en az 500mA veren SOT-23 kılıflı LDO'ları fiyata göre listele."
npm'de henüz yoksa / doğrudan GitHub'dan kullanmak isterseniz:
"args": ["-y", "github:mert-ozkul/ozdisan-mcp"](ilk çalıştırmada derleme yapıldığı için biraz daha uzun sürer).
Kurulum (istemciye göre)
Ayarlar → Geliştirici → Yapılandırmayı düzenle menüsünden claude_desktop_config.json dosyasını açın:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"ozdisan": {
"command": "npx",
"args": ["-y", "ozdisan-mcp"]
}
}
}Claude Desktop'ı tamamen kapatıp açın. Sohbet kutusundaki araç simgesinde ozdisan görünmelidir.
claude mcp add ozdisan -- npx -y ozdisan-mcpTüm projelerinizde kullanmak için --scope user ekleyin. Kontrol: claude mcp list.
~/.cursor/mcp.json (tüm projeler) veya projedeki .cursor/mcp.json dosyasına ekleyin:
{
"mcpServers": {
"ozdisan": {
"command": "npx",
"args": ["-y", "ozdisan-mcp"]
}
}
}Projenizde .vscode/mcp.json oluşturun:
{
"servers": {
"ozdisan": {
"type": "stdio",
"command": "npx",
"args": ["-y", "ozdisan-mcp"]
}
}
}Copilot Chat'i Agent modunda kullanın.
Stdio destekleyen her MCP istemcisinde komut npx, argümanlar -y ozdisan-mcp olacak şekilde tanımlayın.
Windsurf için dosya: ~/.codeium/windsurf/mcp_config.json (biçim Claude Desktop ile aynıdır).
git clone https://github.com/mert-ozkul/ozdisan-mcp.git
cd ozdisan-mcp
npm install
npm run buildİstemci yapılandırmasında npx yerine derlenmiş dosyayı gösterin:
{
"mcpServers": {
"ozdisan": {
"command": "node",
"args": ["/tam/yol/ozdisan-mcp/dist/index.js"]
}
}
}Windows ipucu: İstemciniz
npxkomutunu bulamazsa"command": "cmd","args": ["/c", "npx", "-y", "ozdisan-mcp"]kullanın.
Örnek kullanım
Asistanınıza doğal dilde sormanız yeterli; hangi aracı ne zaman kullanacağına kendisi karar verir.
Parça seçimi
ESP32 tabanlı bir sensör kartı tasarlıyorum. 5V'tan 3.3V üretecek, en az 500 mA verebilen, SOT-23 kılıflı ve Özdisan'da stokta olan LDO'ları 100 adetlik fiyata göre sırala; en uygun ikisini datasheet'lerinden dropout voltajını kontrol ederek karşılaştır.
Arka planda yaklaşık olarak şu çağrılar yapılır:
search_categories("LDO regülatör") → get_category_filters("lineer-voltaj-regulatorleri-279") →
filter_products(... ranges: Çıkış Voltajı = 3.3 V, Çıkış Akımı ≥ 500 mA, Kılıf contains "SOT23", in_stock, sort: price) →
compare_products(...) → read_datasheet(..., search: "dropout").
Parça numarasıyla sorgu
STM32F103C8T6'nın Özdisan'daki stoğu, 1000 adet fiyatı ve tedarik süresi ne? Pin sayısı ve flash boyutunu da yaz.
Muadil bulma
LM317T stokta yok. Özdisan'da stokta olan TO-220 kılıflı muadillerini bul.
Datasheet okuma
NE555P datasheet'inden mutlak maksimum değerleri ve astable çalışma için frekans formülünü çıkar.
BOM kontrolü
Şu BOM'u 50 kart için Özdisan'da kontrol et, stok sorunu olanlara alternatif öner: STM32F103C8T6 1 adet, AMS1117-3.3 1 adet, CL10B104KB8NNNC 12 adet, RC0603FR-0710KL 8 adet
Araç referansı
Tüm araçlar salt okunurdur (yalnızca download_datasheet diske dosya yazar). Sonuçlardaki product alanı
Özdisan ürün kodudur ve diğer araçlara doğrudan verilebilir. category alanı (ör. mikroislemciler-218) kategori kimliğidir.
Parametre | Tip | Açıklama |
| string | Parça numarası, kısmi parça numarası veya anahtar kelime |
| string? | Yalnızca bu kategoride ara |
| boolean? | Yalnızca stoktakiler |
| 1–50 | Ayrıntılı ürün sayısı (varsayılan 10) |
| boolean? | Teknik özellikleri ekle (varsayılan true) |
|
|
Dönen veri: eşleşmelerin kategori dağılımı, en çok eşleşen kategorideki ürünler (stok, başlangıç fiyatı, özellikler) ve diğer kategorilerden hızlı eşleşmeler.
product olarak Özdisan ürün kodu (368374), ürün URL'si veya birebir parça numarası (STM32F103C8T6) verilebilir.
Dönen veri: üretici, açıklama, yaşam döngüsü durumu, RoHS, kategori yolu, tüm teknik özellikler, stok, gelecek stok,
tedarik süresi, MOQ / sipariş katı / MPQ, tam fiyat kırılım tablosu (KDV hariç), datasheet URL'si, görsel ve ürün sayfası.
include_alternatives: true ile muadiller de eklenir.
search_categories(query, limit?): Kategori adında (Türkçe ve İngilizce) ve ürün içeriğinde eşleşen kategoriler.browse_categories(category?, depth?): Kategori vermezseniz 5 ana grubu, verirseniz alt kategorileri (1–3 seviye) döndürür.
Parametre | Açıklama |
| Kategori (slug, numara, URL veya ad) |
| Yalnızca bu özelliğin tüm seçeneklerini göster |
| Seçenekler içinde ara (ör. |
| Özellik başına listelenecek seçenek sayısı |
| Mevcut filtreler: verilirse yalnızca hâlâ seçilebilir seçenekler ve kalan ürün sayısı döner |
Her özellik için type (numeric/text), sayısal özelliklerde kullanılabilir units ve options listelenir.
{
"category": "lineer-voltaj-regulatorleri-279",
"filters": [{ "property": "Kılıf / Kasa", "values": ["SOT23"], "match": "contains" }],
"ranges": [
{ "property": "Çıkış Akımı", "min": 500, "unit": "mA" },
{ "property": "Çıkış Voltajı", "min": 3.3, "max": 3.3, "unit": "V" }
],
"manufacturers": ["TEXAS", "STM"],
"in_stock": true,
"sort": { "by": "price", "order": "asc" },
"quantity": 100,
"page_size": 20
}filters: Metin seçenekleri. Aynı özelliğin değerleri VEYA, farklı özellikler VE ile birleşir.match: "contains"ile metni içeren tüm seçenekler seçilir.ranges: Sayısal aralık.unitverilmezse temel SI birimi (V, A, Hz, F, Ω, B) kullanılır. Değer aralığı olan ürünler (ör. ayarlanabilir1.2 to 37 V) istenen aralıkla kesişiyorsa listelenir.Özellik adları Türkçe veya İngilizce yazılabilir (
Çıkış Akımı=Output Current).Bayraklar:
in_stock,has_upcoming_stock,rohs,has_datasheet,discounted.sort.by:price,stock,manufacturer,moqveya sıralanabilir bir özellik adı.Hatalı özellik/değer/birimde araç, doğru seçenekleri öneri olarak döndürür.
types: substitute (birebir muadil), similar (benzer), accessory (tamamlayıcı), parametric (aynı kategoride aynı ana özelliklere sahip). limit tür başına en fazla ürün sayısıdır.
products: 2–10 ürün (kod, URL veya parça numarası), quantity: birim fiyatın seçileceği adet.
Özellikler satır satır hizalanır; değerleri farklı olanlar differing_specs içinde listelenir.
{
"items": [
{ "part": "STM32F103C8T6", "quantity": 1, "reference": "U1" },
{ "part": "NE555P", "quantity": 2, "reference": "U2,U3" }
],
"boards": 50,
"currency": "TRY"
}Her satır için: gerekli ve sipariş edilmesi gereken adet (MOQ/kat uygulanmış), stok, birim fiyat, satır toplamı ve uyarılar (stok yetersiz, EOL, teklif gerekli, bulunamadı + öneriler, aynı parça numarasıyla stokta olabilecek diğer ilanlar). En sonda KDV hariç toplam. Tek çağrıda en fazla 60 satır işlenir (satır başına ~1 sn); daha büyük BOM'ları parçalara bölün. İstemci destekliyorsa ilerleme bildirimi gönderilir ve iptal edilen çağrılar arka planda çalışmaya devam etmez.
download_datasheet(product, directory?, overwrite?): PDF'i varsayılan olarak~/Downloads/ozdisan-datasheetsklasörüne indirir ve dosya yolunu döndürür. Aynı dosya tekrar indirilmez.read_datasheet(product | url, search?, pages?, max_chars?): PDF'ten metin çıkarır.searchile önce ilgili sayfalar bulunur (alaka sırasına göre),pagesile ("1-3,7") belirli sayfalar okunur. Görseller/çizimler metne dahil değildir.
Ayarlar (ortam değişkenleri)
İstemci yapılandırmasında env alanıyla verilir:
{
"mcpServers": {
"ozdisan": {
"command": "npx",
"args": ["-y", "ozdisan-mcp"],
"env": { "OZDISAN_CURRENCY": "USD", "OZDISAN_LANG": "en" }
}
}
}Değişken | Varsayılan | Açıklama |
|
| Kategori ve özellik adlarının dili ( |
|
| Varsayılan para birimi ( |
|
| Datasheet indirme klasörü |
|
| Kategori ağacı disk önbelleği |
| açık |
|
|
| İstek zaman aşımı |
|
| İki istek arasındaki en kısa süre |
|
| Aynı anda en fazla istek sayısı |
|
| İndirilebilecek en büyük dosya |
Her araç ayrıca currency ve language parametreleriyle çağrı bazında da ayarlanabilir.
Nasıl çalışır?
Yapay zekâ istemcisi ⇄ (stdio / MCP) ⇄ ozdisan-mcp (sizin bilgisayarınızda) ⇄ (HTTPS) ⇄ www.ozdisan.comSunucu, ozdisan.com web sitesinin tarayıcıda kullandığı herkese açık uç noktalardan veri okur; giriş yapmaz, sepet/sipariş gibi hiçbir işlem yapmaz.
Siteye saygılı çalışır: aynı anda en fazla 2 istek, istekler arasında bekleme, 429/5xx yanıtlarında geri çekilerek yeniden deneme ve önbellekleme (ürün listeleri 5 dk, filtre şemaları 1 saat, kategori ağacı 24 saat).
Fiyatlar sitede misafir kullanıcıya gösterilen KDV hariç liste fiyatlarıdır; kurumsal (B2B) hesap fiyatlarınız farklı olabilir.
Hiçbir veri üçüncü bir tarafa gönderilmez; telemetri yoktur.
Geliştirme ve testler
npm install # bağımlılıklar + derleme
npm run dev # TypeScript kaynağından çalıştır
npm run typecheck # tip kontrolü
npm test # birim testleri (ağ gerektirmez)
npm run test:e2e # uçtan uca testler (canlı ozdisan.com'a bağlanır)
npm run inspect # MCP Inspector ile araçları elle deneyinTest yapısı
test/unit— Ağsız testler: filtre çözümleme (özellik adı → kimlik, birim dönüşümü, değer eşleştirme), fiyat kırılımı ve MOQ hesapları, Türkçe metin eşleştirme, HTTP yeniden deneme/zaman aşımı/eşzamanlılık, PDF metin çıkarma ve bellek içi MCP istemcisiyle tüm araçlar (sahte ağ yanıtlarıyla).test/e2e— Derlenmiş sunucu gerçek bir MCP istemcisiyle stdio üzerinden başlatılır ve canlı siteye karşı her araç uçtan uca çalıştırılır: arama, ürün detayı (kod/URL/parça no), TRY/USD/EUR ve TR/EN, kategori gezme, parametrik filtre + sıralama + sayfalama, hatalı girdi önerileri, muadil, karşılaştırma, BOM, datasheet indirme ve okuma. Ayrıca stdout'a JSON-RPC dışında hiçbir şey yazılmadığı doğrulanır.
Canlı veri değiştiği için e2e testleri fiyat/stok değerlerini değil, yapıyı ve iş kurallarını doğrular. Birim testlerdeki
örnek veriler npm run fixtures ile yenilenebilir.
Katkılarınızı bekliyoruz: hata bildirimi ve önerileriniz için issue açın veya pull request gönderin.
Sık sorulan sorular
Ücretli mi? API anahtarı gerekiyor mu? Hayır. Sunucu açık kaynaklıdır (MIT) ve herkese açık site verisini okur; anahtar veya üyelik gerekmez.
Sipariş verebilir mi? Hayır, bilerek salt okunur tasarlanmıştır. Sipariş için ürün bağlantısını kullanarak ozdisan.com'dan devam edin.
Fiyatlar KDV dahil mi?
Hayır, KDV hariç birim liste fiyatlarıdır. currency ile TRY, USD veya EUR seçebilirsiniz.
Yanıtlar neden Türkçe özellik adlarıyla geliyor?
Varsayılan dil Türkçedir. İngilizce için OZDISAN_LANG=en ayarlayın veya araçlara language: "en" verin.
Filtrelerde özellik adlarını iki dilde de yazabilirsiniz.
"Hiç ürün bulunamadı" diyor.
Filtreler çok dar olabilir. get_category_filters aracına mevcut filtrelerinizi verirseniz hâlâ seçilebilir değerleri ve kalan ürün sayısını görürsünüz.
Kurumsal hesabımla giriş yapıp kendi fiyatlarımı görebilir miyim? Şu an desteklenmiyor; yalnızca misafir fiyatları gösterilir.
Sorumluluk reddi
Bu proje bağımsız, açık kaynaklı bir topluluk projesidir; Özdisan Elektronik A.Ş. tarafından geliştirilmemiştir ve resmi olarak desteklenmemektedir. "Özdisan" adı ve markası sahibine aittir. Ürün, fiyat ve stok bilgileri anlık olarak ozdisan.com'dan okunur; satın alma kararı vermeden önce ürün sayfasından doğrulayın. Lütfen aracı makul kullanım sınırları içinde kullanın.
Lisans
Anahtar kelimeler: Özdisan MCP, ozdisan mcp server, Model Context Protocol, Claude MCP, Cursor MCP, elektronik komponent arama, elektronik malzeme, datasheet indir, devre tasarımı yapay zekâ, PCB, BOM maliyet, muadil parça bulma, stok sorgulama, STM32, Arduino, ESP32, regülatör, MOSFET, kondansatör, direnç.
Available Tools
11 toolsbrowse_categoriesKategori ağacında gezARead-onlyIdempotent
Browse the Özdisan category tree (5 main groups → thousands of sub-categories, ~1M products). Without 'category' returns the top-level groups; with 'category' returns that category's sub-categories. Every node includes its product count and a 'category' slug usable in other tools.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | How many levels of sub-categories to include (default 1). | |
| category | No | Category identifier. Best: the 'category' slug returned by search_categories/browse_categories (e.g. 'mikroislemciler-218'). Also accepts the numeric category id ('218'), a category URL, or a category name in Turkish or English ('Mikroişlemciler' / 'Microcontrollers'). | |
| language | No | Language of category/property names: 'tr' (Turkish, default) or 'en' (English). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered; the description still contributes useful context on result shape (product count per node, category slug) and tree scale. It doesn't warn about response size or pagination when browsing a node with thousands of sub-categories, which is the main unclosed loop for a large read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero filler; the mode split is front-loaded immediately after the scope statement, and the return-value hint sits last where it is most useful. Nothing repeats the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, three-parameter browsing tool with a fully documented schema and no output schema, the description covers what it returns and how to traverse. The one real omission is guidance on result volume or pagination when a top-level category expands to thousands of children.
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 the baseline is 3, but the description meaningfully adds what changes behaviorally when 'category' is supplied versus omitted, and tells the agent the returned slug is the preferred input form elsewhere. It adds no detail on 'depth' or 'language', though the schema documents those 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?
The description names a specific verb and resource ('Browse the Özdisan category tree') and quantifies scale (5 main groups → thousands of sub-categories, ~1M products). It also states the two operating modes (with/without 'category'). However, it never contrasts itself with the closest sibling, search_categories, so an agent still has to guess which entry point to use.
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 clearly states the call pattern: omit 'category' to get top-level groups, supply one to drill into sub-categories, and that returned slugs are reusable in other tools. It gives no explicit exclusions or guidance on when search_categories is the better choice, so it stops short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_bomBOM (malzeme listesi) kontrolüARead-onlyIdempotent
Check a bill of materials against Özdisan: for each line resolves the part, applies MOQ / order multiple, picks the price break for the quantity, checks stock (and lead time when stock is short), flags end-of-life or price-on-request parts and returns line totals plus the BOM total (VAT excluded). Up to 60 lines per call (about 1 s per line); split larger BOMs into several calls.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| boards | No | Multiply every quantity by this number of boards (default 1). | |
| currency | No | Price currency: TRY (default), USD or EUR. Prices are unit prices excluding VAT. | |
| language | No | Language of category/property names: 'tr' (Turkish, default) or 'en' (English). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses the computation performed per line — MOQ/order multiples, price-break selection, lead time when stock is short — and the return shape: line totals plus BOM total with VAT excluded. It also discloses throughput and the hard 60-line cap, which are practical constraints an agent must plan around.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded: the first defines the operation and its outputs, the second gives the call-size limit and remedy. Dense but every clause carries information an agent needs; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description responsibly explains what comes back (line totals, BOM total, VAT-excluded, EOL/price-on-request flags) and covers the batch limit. The one omitted behavior is what happens to lines whose part cannot be resolved or that are ambiguous — a meaningful gap for a batch tool fed arbitrary part numbers.
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 75% and the schema already documents part formats, quantity bounds, currency and language. The description adds only marginal semantic value — it clarifies that MOQ and order multiples are applied to the supplied quantity and that prices are VAT-excluded — while never mentioning the 'boards' multiplier or 'language' 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 states a specific verb and resource ('Check a bill of materials against Özdisan') and then enumerates the per-line work: part resolution, MOQ/order-multiple application, price-break selection, stock and lead-time checks, end-of-life/price-on-request flagging, and line plus BOM totals. This is unmistakably a batch BOM pricing/availability check, clearly distinct from single-part siblings like get_product or search_products.
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 gives concrete operating guidance: up to 60 lines per call at roughly 1 s per line, and instructs splitting larger BOMs into several calls. What it does not do is name an alternative for the single-part case (e.g. get_product) or state when not to use it, so it stops short of explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_productsÜrünleri karşılaştırARead-onlyIdempotent
Compare 2-10 products side by side: specs aligned by property (with the properties that differ highlighted), stock, MOQ, lead time and price at a given quantity.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | No | Price currency: TRY (default), USD or EUR. Prices are unit prices excluding VAT. | |
| language | No | Language of category/property names: 'tr' (Turkish, default) or 'en' (English). | |
| products | Yes | Products to compare (product codes, URLs or part numbers). | |
| quantity | No | Quantity used to pick the unit price (default 1). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the description's job is to add context, which it does by disclosing the shape of the result: aligned specs with differences highlighted plus stock, MOQ, lead time, and price. It does not address failure modes such as an unresolvable product identifier or mixed-category comparisons, which would have pushed this higher.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the action and product-count constraint, followed by a compact list of compared dimensions. Nothing is redundant and no clause could be removed without losing 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?
With no output schema, the description carries the burden of describing what comes back, and it lists the compared fields and difference highlighting clearly. It stops short of noting edge-case behavior (invalid codes, out-of-range counts, unavailable price at quantity), which is the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameter documentation is already complete. The description adds only marginal framing ('2-10 products', 'price at a given quantity') that overlaps the minItems/maxItems and quantity descriptions in the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Compare 2-10 products side by side') and enumerates the compared dimensions: specs aligned by property with differing properties highlighted, stock, MOQ, lead time, and price. That is enough to separate it from single-product siblings like get_product or get_alternatives, though it never names an alternative explicitly.
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?
Usage is only implied by the verb 'compare' and the 2-10 range; there is no statement of when to prefer this over get_alternatives, check_bom, or repeated get_product calls. An agent can infer the multi-product comparison scenario, but nothing tells it when this tool is the wrong choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_datasheetDatasheet indirAIdempotent
Download a product's datasheet PDF to the local disk and return the file path. Default folder: ~/Downloads/ozdisan-datasheets (configurable with OZDISAN_DOWNLOAD_DIR or the 'directory' argument). Already downloaded files are reused unless overwrite=true. To read the content use read_datasheet.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | Product identifier. Accepts the Özdisan product code (the numeric 'product' field returned by other tools, e.g. '368374'), a product URL from ozdisan.com, or an exact manufacturer part number (e.g. 'STM32F103C8T6'). | |
| language | No | Language of category/property names: 'tr' (Turkish, default) or 'en' (English). | |
| directory | No | Target folder as an absolute path inside the user's home folder ('~/' is expanded), e.g. '~/Projects/board/datasheets'. Hidden/system folders are not allowed. Created if missing. | |
| overwrite | No | Download again even if the file already exists (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-read-only, open-world, idempotent, non-destructive operation, and the description explains why it is idempotent (existing files are reused unless overwrite=true) and discloses the filesystem side effect and default location. It stops short of describing failure cases, such as products with no datasheet available or permission errors.
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?
Four short sentences, front-loaded with the purpose and return value, then the configuration default, then caching, then the sibling redirect. No redundant or filler wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully states that a file path is returned, and it covers defaults and overwrite semantics for a 4-parameter tool. Error behavior for missing datasheets and the exact response shape are the only notable omissions.
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 the baseline is 3, but the description adds the default folder value (~/Downloads/ozdisan-datasheets) and the OZDISAN_DOWNLOAD_DIR environment override with its precedence, neither of which appears in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Download a product's datasheet PDF to the local disk") plus the return value (file path). It also distinguishes itself from the sibling read_datasheet by naming it as the tool for reading content.
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 routes the agent: use this tool to save the PDF, use read_datasheet to read the content. Caching behavior (reuse unless overwrite=true) tells the agent it can call this repeatedly without side-effect concerns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filter_productsParametrik ürün filtreleARead-onlyIdempotent
Parametric product search inside a category, like the filter panel on ozdisan.com. Combine property filters (exact option values from get_category_filters), numeric ranges with units, manufacturers, stock/RoHS/datasheet flags, keyword, sorting and pagination. Returns products with stock, MOQ, the price break(s) relevant to 'quantity' (VAT excluded; get_product returns the full price table) and specs. Multiple values for the same property are OR'ed; different properties are AND'ed.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default 1). | |
| rohs | No | true: only RoHS compliant, false: only non-RoHS. | |
| sort | No | Sorting. Default is the site's default order (usually highest stock first). | |
| query | No | Optional keyword / part number filter inside the category. | |
| ranges | No | ||
| filters | No | ||
| category | Yes | Category identifier. Best: the 'category' slug returned by search_categories/browse_categories (e.g. 'mikroislemciler-218'). Also accepts the numeric category id ('218'), a category URL, or a category name in Turkish or English ('Mikroişlemciler' / 'Microcontrollers'). | |
| currency | No | Price currency: TRY (default), USD or EUR. Prices are unit prices excluding VAT. | |
| in_stock | No | Only products in stock. | |
| language | No | Language of category/property names: 'tr' (Turkish, default) or 'en' (English). | |
| quantity | No | Planned order quantity; adds 'unit_price_for_quantity' using the price breaks. | |
| page_size | No | Products per page (default 20, max 100). | |
| discounted | No | Only discounted / campaign products. | |
| has_datasheet | No | Only products that have a datasheet. | |
| include_specs | No | Include technical specs per product (default true). | |
| manufacturers | No | Manufacturer names as listed in get_category_filters (e.g. ['STM', 'TEXAS']). | |
| has_upcoming_stock | No | Only products with incoming stock. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/idempotent safety profile, yet the description adds genuinely new behavior: the AND across properties / OR within a property semantics, VAT-excluded unit pricing, the quantity-driven price break, and the exact return payload (stock, MOQ, price break, specs). None of this is derivable from the annotations or the 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?
Three dense sentences, front-loaded with purpose and then the combination semantics; nothing is filler. It is tightly packed but the ordering (what it does, how to combine, what comes back) is logical and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter tool with nested objects and no output schema, the description covers the essential return shape and the filter-combination rules that an agent cannot infer. Minor gaps remain around pagination limits and sort defaults, though those are handled in the schema descriptions.
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 already high (88%), so the baseline is 3; the description adds meaning on top by clarifying the boolean combination logic between filters and ranges and what 'quantity' actually changes. The unit/currency nuances remain delegated to schema text, which is acceptable given 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?
States a specific verb and resource ('Parametric product search inside a category') and anchors it with a concrete analogy ('like the filter panel on ozdisan.com'). It is clearly distinguishable from the keyword-oriented search_products sibling and from get_product, which it explicitly references for the full price table.
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?
Gives clear operating context: combine property filters using exact option values from get_category_filters, and use get_product if the full price table is needed. It does not explicitly say when to prefer search_products or browse_categories over this tool, so the routing to alternatives is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_alternativesMuadil / benzer ürünlerARead-onlyIdempotent
Find replacement options for a product: 'substitute' (drop-in equivalents / muadil), 'similar' (benzer), 'accessory' (complementary products), and 'parametric' (other products in the same category with the same key specs). Useful when a part is out of stock, end-of-life or too expensive.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max products per relation type (default 10). | |
| types | No | Which relation types to return (default: all). | |
| product | Yes | Product identifier. Accepts the Özdisan product code (the numeric 'product' field returned by other tools, e.g. '368374'), a product URL from ozdisan.com, or an exact manufacturer part number (e.g. 'STM32F103C8T6'). | |
| currency | No | Price currency: TRY (default), USD or EUR. Prices are unit prices excluding VAT. | |
| language | No | Language of category/property names: 'tr' (Turkish, default) or 'en' (English). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond that — nothing about empty result sets, how many relation types are queried by default server-side, or whether lookups cost quota. With annotations carrying most of the load, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and resource, then the type glossary, then the trigger conditions — no filler. The type enumeration is dense but each gloss is load-bearing.
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?
Five parameters, no output schema, and the description never indicates what a result looks like — whether each alternative comes with price (and in which currency), stock status, or match confidence. For a tool whose whole value is comparing options, that missing return-shape hint leaves a real gap, though the rich input schema and annotations prevent it from being severe.
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 the baseline is 3, but the description genuinely adds meaning beyond the bare enum values by defining what 'substitute' (drop-in/muadil), 'similar' (benzer), 'accessory' (complementary) and 'parametric' (same category, same key specs) actually mean. That disambiguates the most consequential parameter better than the schema does.
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 opens with a specific verb+resource ('Find replacement options for a product') and enumerates the four relation modes it can return, each glossed in parentheses. It is clearly distinct in intent from search/filter siblings, but it never names those siblings or states the contrast explicitly.
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?
'Useful when a part is out of stock, end-of-life or too expensive' gives concrete trigger conditions for reaching for this tool. It stops short of exclusions or alternatives (e.g. when to use search_products or compare_products instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_category_filtersKategori filtrelerini getirARead-onlyIdempotent
List the parametric filters of a category: every technical property (e.g. package, voltage, current, capacitance, tolerance), its type (numeric/text), units and selectable option values, plus manufacturers and stock/RoHS/document flags. Use it before filter_products to pick exact option values. Pass 'property' to see all options of one property, 'value_query' to search inside options, and optionally the current filters to see only the options still available.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Current keyword search inside the category. | |
| ranges | No | Current numeric range filters. | |
| filters | No | Current value filters; options are then limited to those still available. | |
| category | Yes | Category identifier. Best: the 'category' slug returned by search_categories/browse_categories (e.g. 'mikroislemciler-218'). Also accepts the numeric category id ('218'), a category URL, or a category name in Turkish or English ('Mikroişlemciler' / 'Microcontrollers'). | |
| language | No | Language of category/property names: 'tr' (Turkish, default) or 'en' (English). | |
| property | No | Only show this property (name or id) with all of its options. | |
| max_values | No | Max options listed per property (default 25, or 300 when 'property' is given). | |
| value_query | No | Only show options containing this text (e.g. 'SOT23', '3.3 V'). | |
| manufacturers | No | Current manufacturer filter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description adds the non-obvious dynamic behavior: when current filters are supplied, returned options are limited to those still available, which is a caching/availability caveat an agent cannot infer from the annotations. It does not mention result size limits or latency beyond what max_values in the schema implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: what the tool returns, when to call it, and how the parameter modes behave. The purpose is front-loaded in the first clause, and the example lists clarify rather than pad.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with no output schema, the description compensates by describing the returned content directly (properties, types, units, options, manufacturers, flags). Remaining gaps are minor: it doesn't mention the language toggle or the max_values truncation default, both of which are documented in the schema but are behaviorally relevant when options are cut off.
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 the baseline is 3, but the description adds genuine semantic value by explaining the relationship between parameters: 'property' and 'value_query' are narrowing modes, and the filter parameters act as a feedback loop that prunes unavailable options. It still leaves language, max_values, query and manufacturers to the schema, which documents them well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ("List the parametric filters of a category") and then enumerates exactly what is returned: technical properties, type (numeric/text), units, selectable option values, manufacturers, and stock/RoHS/document flags. It explicitly contrasts itself with the sibling filter_products, so an agent can route without opening either schema.
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 states the workflow position explicitly ("Use it before filter_products to pick exact option values") and names the conditions that select each parameter mode: 'property' for one property's options, 'value_query' to search inside options, and passing current filters to see only still-available options. The alternative tool and the trigger for using this one are both named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productÜrün detayıARead-onlyIdempotent
Full details of one product: manufacturer, part number, description, lifecycle status, RoHS, category path, all technical specs, stock, incoming stock, lead time, MOQ / order multiple / MPQ, quantity price breaks (VAT excluded), datasheet URL, image and product page URL. Optionally includes substitutes / similar products / accessories.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | Product identifier. Accepts the Özdisan product code (the numeric 'product' field returned by other tools, e.g. '368374'), a product URL from ozdisan.com, or an exact manufacturer part number (e.g. 'STM32F103C8T6'). | |
| currency | No | Price currency: TRY (default), USD or EUR. Prices are unit prices excluding VAT. | |
| language | No | Language of category/property names: 'tr' (Turkish, default) or 'en' (English). | |
| include_alternatives | No | Also return substitute, similar and accessory products (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare read-only, idempotent, non-destructive, and open-world behavior. The description adds useful behavioral context by specifying the returned data areas, VAT-exclusive pricing, and optional alternatives, though it does not describe not-found handling or error 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 the core purpose and then lists returned fields in one sentence. The field list is long but purposeful; there is little filler, though it could be more scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description appropriately carries the return-value burden and comprehensively lists the product fields, pricing basis, and optional alternatives. It is nearly complete for a read-only detail tool, but it omits behavior for missing products or ambiguous identifiers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains product identifiers, currency, language, and include_alternatives. The description reinforces VAT exclusion and optional alternatives but adds no syntax or format details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: it returns full details of one product. It enumerates the data included, making the single-product detail scope distinct from list-oriented siblings such as search_products and filter_products.
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?
Usage is implied by 'one product' and by the optional alternatives note, but the description does not explicitly say when to use this instead of search_products, get_alternatives, or compare_products. There is no explicit 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.
read_datasheetDatasheet okuARead-onlyIdempotent
Extract text from a product's datasheet PDF so you can read pinouts, absolute maximum ratings, electrical characteristics, typical application circuits, package dimensions, etc. Use 'search' to find the relevant pages first (e.g. 'pin configuration', 'absolute maximum', 'typical application', 'thermal'), then 'pages' to read them. Tables are returned as plain text; figures/diagrams are not included.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Direct datasheet PDF URL (alternative to 'product'). | |
| pages | No | Page range to read, e.g. '1-3,7' (default: from page 1 until max_chars). | |
| search | No | Keywords to locate pages (comma-separated for several terms). Returns matching pages with snippets plus the text of the best pages. | |
| product | No | Product identifier. Accepts the Özdisan product code (the numeric 'product' field returned by other tools, e.g. '368374'), a product URL from ozdisan.com, or an exact manufacturer part number (e.g. 'STM32F103C8T6'). | |
| language | No | Language of category/property names: 'tr' (Turkish, default) or 'en' (English). | |
| max_chars | No | Maximum characters of text to return (default 25000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive behavior, so the safety profile is covered. The description adds valuable output-shape context beyond that: tables come back as plain text while figures and diagrams are silently omitted, which prevents an agent from expecting graphical content. It does not mention rate limits, auth, or what happens when text exceeds max_chars.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with purpose before the workflow and then the output caveat. Every sentence carries information; the example search keywords are useful rather than filler. Minor length is added by the content-type enumeration, but it 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?
With no output schema and six optional parameters, the description does the necessary work: it explains the search/page workflow and discloses that tables are text and figures are excluded. The absence of any note on error behavior (bad URL, unscrapable PDF, product not found) is the main remaining gap for an open-world 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 each of the six parameters is already documented with type, range, enum, and examples. The description adds only the search-then-pages sequencing, which is light but genuine value. With the schema doing the heavy lifting, baseline 3 is warranted.
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 opens with a specific verb and resource ('Extract text from a product's datasheet PDF') and enumerates the content types an agent can expect (pinouts, absolute maximum ratings, electrical characteristics, package dimensions), which makes the tool's role unmistakable. It does not explicitly contrast itself with the sibling 'download_datasheet', so it falls short of full sibling 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?
It gives concrete operational guidance: call with 'search' first using terms like 'pin configuration' or 'thermal', then use 'pages' to read the located range. That is a clear recommended workflow with example inputs. It stops short of saying when NOT to use this tool versus download_datasheet or get_product.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_categoriesKategori araARead-onlyIdempotent
Find Özdisan product categories by name or by what they contain. Matches Turkish and English category names (e.g. 'mosfet', 'lineer regülatör', 'linear voltage regulator', 'MLCC', 'mikrodenetleyici'), and also lists the categories whose products match the text. Use the returned 'category' slug with get_category_filters and filter_products. Prefer the most specific (deepest) category for parametric filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of categories to return (default 10). | |
| query | Yes | Category name or component type to look for. | |
| language | No | Language of category/property names: 'tr' (Turkish, default) or 'en' (English). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered; the description adds the non-obvious trait that matching spans Turkish and English names and that result sets include categories whose products match, not just name matches. It also states the key output field ('category' slug), though it does not describe ordering, ranking, or empty-result 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?
Three sentences, front-loaded with purpose, then workflow routing, then the selection heuristic. No repetition of schema fields and no filler; every sentence carries decision-relevant 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?
For a 3-parameter, read-only search with no output schema, the description covers what is returned (categories keyed by a 'category' slug) and how to use it. It stops short of describing the result fields (name, depth/parent, matched-product indication) that the 'most specific category' advice depends on.
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 the baseline is 3, but the description earns an extra point by clarifying that the query is matched against both category names and product content and by giving worked examples ('mosfet', 'lineer regülatör', 'MLCC'). The 'language' parameter's effect is only implied through the bilingual examples rather than stated directly.
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?
"Find Özdisan product categories by name or by what they contain" gives a specific verb, resource, and two distinct matching modes. It also names the downstream siblings (get_category_filters, filter_products) that consume its output, so an agent can place it in the workflow without opening any schema.
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 says to feed the returned 'category' slug into get_category_filters and filter_products, and advises preferring the deepest matching category for parametric filtering — a real decision rule. It does not say when to pick this over search_products or browse_categories, which would have completed the routing picture.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsÜrün araARead-onlyIdempotent
Keyword / part-number search across all ~1M Özdisan products (e.g. 'STM32F103', 'LM317', 'NE555', '10uF 0805', 'ESP32'). Returns how many matches each category has, the best matching products with stock, starting price (VAT excluded) and key specs, and quick matches from other categories. Pass 'category' to search only inside one category. For parametric selection (e.g. 'LDO 3.3V 500mA SOT-23') prefer search_categories → get_category_filters → filter_products.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Part number, partial part number or keywords. | |
| category | No | Category identifier. Best: the 'category' slug returned by search_categories/browse_categories (e.g. 'mikroislemciler-218'). Also accepts the numeric category id ('218'), a category URL, or a category name in Turkish or English ('Mikroişlemciler' / 'Microcontrollers'). | |
| currency | No | Price currency: TRY (default), USD or EUR. Prices are unit prices excluding VAT. | |
| in_stock | No | Only products in stock. | |
| language | No | Language of category/property names: 'tr' (Turkish, default) or 'en' (English). | |
| page_size | No | Number of detailed products to return (default 10). | |
| include_specs | No | Include technical specs for each product (default true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, and the description adds real value beyond them: corpus size (~1M), that results include per-category match counts, best matches with stock, VAT-excluded starting prices, key specs, and quick matches from other categories. It stops short of describing pagination behavior or result limits beyond the page_size parameter, so a 4 rather than a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and search mode, followed by return shape, then narrowing, then the alternative routing. The parenthetical example lists are dense but functional; a couple of examples would have sufficed instead of five.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so adequately, naming the match counts, product entries with stock/price/specs, and cross-category quick matches. For a 7-parameter read tool with full annotation coverage it is close to complete, missing only pagination/total-count semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters including the enums and the category identifier formats. The description reinforces category scoping and VAT-excluded pricing but adds no format rules or defaults the schema does not already carry, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Keyword / part-number search across all ~1M Özdisan products') with concrete query examples ('STM32F103', '10uF 0805'), which makes the retrieval mode unambiguous. It also explicitly separates itself from parametric search by naming the sibling chain to use 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?
Gives explicit routing: use this tool for keyword/part-number lookups, pass 'category' to constrain to one category, and for parametric selection (with a concrete example, 'LDO 3.3V 500mA SOT-23') use search_categories → get_category_filters → filter_products. Both when-to-use and when-to-use-something-else are stated.
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.
11 tool updates
v0.1.0- First observed
browse_categories - First observed
check_bom - First observed
compare_products - First observed
download_datasheet - First observed
filter_products - First observed
get_alternatives - First observed
get_category_filters - First observed
get_product - First observed
read_datasheet - First observed
search_categories - First observed
search_products
TDQS
Scored across 11 tools
Each tool has a clearly stated role, and the descriptions explicitly sequence them (search_categories → get_category_filters → filter_products) so an agent knows which to pick. The only soft overlaps are search_products vs filter_products (both return product lists) and get_alternatives' 'parametric' mode vs filter_products, but the descriptive guidance resolves these in practice.
All eleven tools use snake_case with a leading verb and a clear noun object (get_, search_, filter_, browse_, compare_, check_, download_, read_). The pattern is fully predictable across the set.
Eleven tools is well within the sweet spot and each one covers a distinct step in the part-selection workflow (discovery, filtering, detail, comparison, alternatives, BOM, datasheets). No tool looks like padding or a duplicate of another.
The surface covers the full research workflow from category browsing through parametric filtering, product detail, alternatives, comparison, BOM pricing and datasheet reading, with no dead ends for read-only sourcing. Minor gaps exist around commercial actions (cart/quote/order submission) and manufacturer-centric listing, which agents would have to work around.
Maintenance
Related MCP Connectors
Turn datasheets into source-backed JSON contracts, pinout matrices, and KiCad CAD for AI agents.
Search real parts with datasheet-provenance specs, check compatibility and compose priced BOMs.
AI-agent product catalog: search, lookup & purchase routing over verified merchant data.
Source-linked robotics projects, bills of materials and components for AI agents.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables searching and filtering over 1.5 million electronic components across JLCPCB, Mouser, and DigiKey using parametric queries and smart parsing. It supports finding alternative parts, accessing pinout data, and downloading KiCad footprints directly through AI coding assistants.11140MIT
- AlicenseAqualityAmaintenanceProvides AI agents with instant, structured access to electronic component datasheets, pinouts, and electrical specifications without requiring PDF uploads. It enables seamless part searching, design validation, and side-by-side component comparisons across major hardware providers.14114 npm12MIT
- FlicenseAqualityCmaintenanceEnables AI assistants to search JLCPCB's 450K+ electronic component catalog with real-time stock levels and pricing, supporting keyword search, filtering, and detailed component information.467 PyPI9-
- AlicenseAqualityCmaintenanceEnables AI assistants to search millions of electronic components and ICs, retrieve specifications, compare alternates, and submit turnkey BOM procurement requests.4MIT