get_direct_procurement_details
Retrieve detailed information about direct procurement processes in Turkish public tenders using specific identifiers and session tokens.
Instructions
Get Direct Procurement (Doğrudan Temin) details (dtDetayGetir) using tokens.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cookies | No | Cookie header (Çerez) for EKAP session (optional) | |
| dogrudan_temin_id | Yes | E10 token (dogrudanTeminId) from list (liste) | |
| idare_id | Yes | E11 token (idareId) from list (liste) |
Implementation Reference
- ihale_mcp.py:408-422 (handler)The primary MCP tool handler function for 'get_direct_procurement_details'. Registered via @mcp.tool decorator with input schema defined by Annotated type hints. Executes the tool logic by calling the EKAPClient helper method.@mcp.tool async def get_direct_procurement_details( dogrudan_temin_id: Annotated[str, "E10 token (dogrudanTeminId) from list (liste)"], idare_id: Annotated[str, "E11 token (idareId) from list (liste)"], cookies: Annotated[Optional[str], "Cookie header (Çerez) for EKAP session (optional)"] = None, ) -> Dict[str, Any]: """ Get Direct Procurement (Doğrudan Temin) details (dtDetayGetir) using tokens. """ return await ekap_client.get_direct_procurement_details( dogrudan_temin_id=dogrudan_temin_id, idare_id=idare_id, cookies=cookies, )
- ihale_client.py:1146-1238 (helper)Core helper method in EKAPClient class that implements the HTTP request to EKAP legacy endpoint, parses the JSON response, extracts and formats direct procurement details including basic info, authority, announcements, and contracts.async def get_direct_procurement_details( self, dogrudan_temin_id: str, idare_id: str, cookies: Optional[Any] = None, ) -> Dict[str, Any]: """Get details for a specific Direct Procurement (Doğrudan Temin). Calls YeniIhaleAramaData.ashx with metot=dtDetayGetir using the encrypted tokens returned by the list endpoint (E10=dogrudanTeminId, E11=idareId). """ params = { "metot": "dtDetayGetir", "dogrudanTeminId": dogrudan_temin_id, "idareId": idare_id, } try: data = await self._make_get_request_full_url(self.direct_procurement_url, params=params, cookies=cookies) detail = data.get("dogrudanTeminDetayResult", {}) if not detail: return {"error": "No details found", "success": False} dt_info = detail.get("DogrudanTeminBilgileri", {}) authority_info = detail.get("IdareBilgileri", {}) ilan_bilgileri = detail.get("IlanBilgileri", {}) contract_info = detail.get("SozlesmeBilgileri", {}) # Flatten announcement lists into a single list with categories announcements: List[Dict[str, Any]] = [] def append_anns(items: Optional[List[Dict[str, Any]]], category: str): if not items: return for it in items: announcements.append({ "category": category, "date": it.get("IlanTarihi"), "type_code": it.get("IlanTipi"), "enc_id": it.get("EncIlanId") }) append_anns(ilan_bilgileri.get("DogrudanTeminIlanBilgisiList"), "ilan") append_anns(ilan_bilgileri.get("DuzeltmeIlanBilgisiList"), "duzeltme") append_anns(ilan_bilgileri.get("IptalIlanBilgisiList"), "iptal") append_anns(ilan_bilgileri.get("SonucIlanBilgisiList"), "sonuc") result = { "basic": { "dt_no": dt_info.get("Dtn"), "name": dt_info.get("IsinAdi"), "type": dt_info.get("Turu"), "scope_article": dt_info.get("YasaKapsamiTeminMaddesi"), "kismi_teklif": dt_info.get("KismiTeklif"), "parts_count": dt_info.get("KisimSayisi"), "okas_codes": dt_info.get("BransKodList", []), "announcement_form": dt_info.get("IlaninSekli"), "dt_datetime": dt_info.get("DtTarihSaati"), "status": dt_info.get("DtDurumu"), "cancel_reason": dt_info.get("IptalNedeni"), "cancel_date": dt_info.get("IptalTarihi"), "will_announce": dt_info.get("DogrudanTeminDuyurusuYapilacakMi"), "is_electronic": dt_info.get("EIhale"), "has_contract_draft": dt_info.get("DogrudanTeminSozlesmeTasarisiVarMi"), "exception_basis": dt_info.get("IstisnaAliminDayanagi"), "regulation_basis": dt_info.get("MevzuatDayanagi"), }, "authority": { "top_authority": authority_info.get("EnUstIdare"), "parent_authority": authority_info.get("UstIdare"), "name": authority_info.get("Idare"), "province": authority_info.get("Ili"), }, "announcements": announcements, "contracts": contract_info.get("SozlesmeBilgisiList", []), "tokens": { "dogrudanTeminId": dogrudan_temin_id, "idareId": idare_id }, "success": True } return result except httpx.HTTPStatusError as e: return { "error": f"Direct procurement detail failed with status {e.response.status_code}", "message": str(e), "success": False } except Exception as e: return { "error": "Direct procurement detail request failed", "message": str(e), "success": False }
- ihale_mcp.py:408-408 (registration)The @mcp.tool decorator registers the get_direct_procurement_details function as an MCP tool.@mcp.tool