MCP server for searching Turkish trademarks, patents, and designs on turkpatent.gov.tr using FastMCP. Provides access to the Turkish Patent and Trademark Office research database with automatic reCAPTCHA handling.
Server provides 6 well-structured tools with complete input schemas and reasonable descriptions. All tools follow verb_noun naming (search_*, get_*) and include parameter type definitions with constraints (enums, min/max). Descriptions are adequate (100-200 chars) but lack actionable recovery guidance and dependency hints. Output schemas are not explicitly documented in the source. Error handling returns generic error dicts without classification or next-step guidance. No tool annotations (readOnlyHint, destructiveHint) despite all tools being read-only. Parameter descriptions are present but could be more specific about format/constraints.
Get detailed information about a specific design application. Use the fileId value from search_designs results to retrieve full details. Returns design information including design name, designer, applicant, Locarno class, registration details, and bulletin dates.
Get detailed information about a specific patent application. Returns full patent information including title, abstract, inventors, applicant, IPC/CPC classes, priority claims, and publication dates.
Get detailed information about a specific trademark application. Returns mark information including name, holder, Nice classes, application date, registration status, bulletin numbers, and protection dates.
Search industrial designs registered in Turkey on TURKPATENT. Returns matching designs with registration number, design name, applicant, Locarno class, and bulletin information. Examples: - search_designs(design_name="masa") - search_designs(applicant="IKEA") - search_designs(locarno_class="06-01")
Search patents registered in Turkey on TURKPATENT. Returns matching patents with application number, title, applicant, IPC class, and publication date. Examples: - search_patents(title="yapay zeka") - search_patents(applicant="ASELSAN") - search_patents(ipc_class="G06F")
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all 6 tools being read-only. LLMs cannot distinguish safe tools from destructive ones without explicit hints.
Error handling returns generic {'error': msg} dicts without classification (retryable/user-fixable/fatal) or recovery guidance. LLMs cannot determine next steps on failure.
Output schemas not documented in source code. LLMs cannot plan downstream calls or extract required fields (e.g., application_number from search results for detail lookups).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | <=2025-11-25 | v2 |
Search trademarks registered in Turkey on TURKPATENT. Returns a list of matching trademarks with application number, name, holder, status, Nice classes, and application date. Examples: - search_trademarks(trademark_name="Apple") - search_trademarks(trademark_name="Samsung", nice_classes="9,35") - search_trademarks(holder_name="VESTEL")
Parameter descriptions lack format/constraint details. E.g., 'nice_classes' says 'comma-separated' but doesn't specify valid range or example format. 'application_number' lacks format examples (T/01853 vs 2020/12345).
No dependency hints in descriptions. E.g., get_trademark_details requires application_number from search_trademarks, but this relationship is not documented. LLMs may attempt detail calls without prior search.