Skip to main content
Glama

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
NameRequiredDescriptionDefault
decision_idYesDecision ID from search_sayistay_unified results
decision_typeYesDecision type: genel_kurul, temyiz_kurulu, or daire

Implementation Reference

  • Registration of the MCP tool 'get_sayistay_document_unified' which wraps the unified client method
    async 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 model
    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 )
  • Output schema/model for the unified Sayistay document
    class 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 integration
    class 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 )
  • Global singleton instance of SayistayUnifiedClient used by the tool handler
    sayistay_unified_client_instance = SayistayUnifiedClient()

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/saidsurucu/yargi-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server