Skip to main content
Glama

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
NameRequiredDescriptionDefault
cookiesNoCookie header (Çerez) for EKAP session (optional)
dogrudan_temin_idYesE10 token (dogrudanTeminId) from list (liste)
idare_idYesE11 token (idareId) from list (liste)

Implementation Reference

  • 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, )
  • 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

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/ihale-mcp'

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