get_sayistay_document_unified
Extract Sayıştay decision documents in Markdown format by specifying decision ID and type, enabling easy access and standardized legal data retrieval.
Instructions
Get Sayıştay decision document in Markdown format for any decision type
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| decision_id | Yes | Decision ID from search_sayistay_unified results | |
| decision_type | Yes | Decision type: genel_kurul, temyiz_kurulu, or daire |
Implementation Reference
- mcp_server_main.py:1421-1437 (registration)Registration of the MCP tool 'get_sayistay_document_unified' which wraps the unified client methodasync def get_sayistay_document_unified( decision_id: str = Field(..., description="Decision ID from search_sayistay_unified results"), decision_type: Literal["genel_kurul", "temyiz_kurulu", "daire"] = Field(..., description="Decision type: genel_kurul, temyiz_kurulu, or daire") ) -> Dict[str, Any]: """Get Sayıştay decision document as Markdown for any decision type.""" logger.info(f"Tool 'get_sayistay_document_unified' called for ID: {decision_id}, type: {decision_type}") if not decision_id or not decision_id.strip(): raise ValueError("Decision ID must be a non-empty string.") try: result = await sayistay_unified_client_instance.get_document_unified(decision_id, decision_type) return result.model_dump() except Exception as e: logger.exception("Error in tool 'get_sayistay_document_unified'") raise
- Core handler function that retrieves the document using the base client and wraps in unified modelasync def get_document_unified(self, decision_id: str, decision_type: str) -> SayistayUnifiedDocumentMarkdown: """Unified document retrieval for all Sayıştay decision types.""" # Use existing client method (decision_type is already a string) result = await self.client.get_document_as_markdown(decision_id, decision_type) return SayistayUnifiedDocumentMarkdown( decision_type=decision_type, decision_id=result.decision_id, source_url=result.source_url, document_data=result.model_dump(), markdown_content=result.markdown_content, error_message=result.error_message )
- Output schema/model for the unified Sayistay documentclass SayistayUnifiedDocumentMarkdown(BaseModel): """Unified document model for all Sayıştay decision types.""" decision_type: Literal["genel_kurul", "temyiz_kurulu", "daire"] = Field(..., description="Type of document") decision_id: str = Field(..., description="Decision ID") source_url: str = Field(..., description="Source URL of the document") document_data: Dict[str, Any] = Field(default_factory=dict, description="Document content and metadata") markdown_content: Optional[str] = Field(None, description="Markdown content") error_message: Optional[str] = Field(None, description="Error message if retrieval failed")
- Unified client class instantiation and base client integrationclass SayistayUnifiedClient: """Unified client that handles all three Sayıştay decision types.""" def __init__(self, request_timeout: float = 60.0): self.client = SayistayApiClient(request_timeout) async def search_unified(self, params: SayistayUnifiedSearchRequest) -> SayistayUnifiedSearchResult: """Unified search that routes to appropriate search method based on decision_type.""" if params.decision_type == "genel_kurul": # Convert to genel kurul request genel_kurul_params = GenelKurulSearchRequest( karar_no=params.karar_no, karar_ek=params.karar_ek, karar_tarih_baslangic=params.karar_tarih_baslangic, karar_tarih_bitis=params.karar_tarih_bitis, karar_tamami=params.karar_tamami, start=params.start, length=params.length ) result = await self.client.search_genel_kurul_decisions(genel_kurul_params) # Convert to unified format decisions_list = [decision.model_dump() for decision in result.decisions] return SayistayUnifiedSearchResult( decision_type="genel_kurul", decisions=decisions_list, total_records=result.total_records, total_filtered=result.total_filtered, draw=result.draw ) elif params.decision_type == "temyiz_kurulu": # Convert to temyiz kurulu request temyiz_params = TemyizKuruluSearchRequest( ilam_dairesi=params.ilam_dairesi, yili=params.yili, karar_tarih_baslangic=params.karar_tarih_baslangic, karar_tarih_bitis=params.karar_tarih_bitis, kamu_idaresi_turu=params.kamu_idaresi_turu, ilam_no=params.ilam_no, dosya_no=params.dosya_no, temyiz_tutanak_no=params.temyiz_tutanak_no, temyiz_karar=params.temyiz_karar, web_karar_konusu=params.web_karar_konusu, start=params.start, length=params.length ) result = await self.client.search_temyiz_kurulu_decisions(temyiz_params) # Convert to unified format decisions_list = [decision.model_dump() for decision in result.decisions] return SayistayUnifiedSearchResult( decision_type="temyiz_kurulu", decisions=decisions_list, total_records=result.total_records, total_filtered=result.total_filtered, draw=result.draw ) elif params.decision_type == "daire": # Convert to daire request daire_params = DaireSearchRequest( yargilama_dairesi=params.yargilama_dairesi, karar_tarih_baslangic=params.karar_tarih_baslangic, karar_tarih_bitis=params.karar_tarih_bitis, ilam_no=params.ilam_no, kamu_idaresi_turu=params.kamu_idaresi_turu, hesap_yili=params.hesap_yili, web_karar_konusu=params.web_karar_konusu, web_karar_metni=params.web_karar_metni, start=params.start, length=params.length ) result = await self.client.search_daire_decisions(daire_params) # Convert to unified format decisions_list = [decision.model_dump() for decision in result.decisions] return SayistayUnifiedSearchResult( decision_type="daire", decisions=decisions_list, total_records=result.total_records, total_filtered=result.total_filtered, draw=result.draw ) else: raise ValueError(f"Unsupported decision type: {params.decision_type}") async def get_document_unified(self, decision_id: str, decision_type: str) -> SayistayUnifiedDocumentMarkdown: """Unified document retrieval for all Sayıştay decision types.""" # Use existing client method (decision_type is already a string) result = await self.client.get_document_as_markdown(decision_id, decision_type) return SayistayUnifiedDocumentMarkdown( decision_type=decision_type, decision_id=result.decision_id, source_url=result.source_url, document_data=result.model_dump(), markdown_content=result.markdown_content, error_message=result.error_message )
- mcp_server_main.py:361-361 (helper)Global singleton instance of SayistayUnifiedClient used by the tool handlersayistay_unified_client_instance = SayistayUnifiedClient()