Skip to main content
Glama

Prozorro Get Tender

prozorro_get_tender
Read-onlyIdempotent

Full detail for a single Ukraine ProZorro tender by id (via the keyless OpenProcurement public API). Returns tenderID, title, description, status, procurementMethod + procurementMethodType (raw OCDS fields — broad method vs ProZorro's specific type, e.g. aboveThresholdUA/aboveThresholdEU), tender_value (the ORIGINAL ASKING PRICE — not money spent), the buyer/procuring entity (name, EDR identifier, region, contact), tender period (start/end), enquiry period, number of bids, line items (description, CPV classification, quantity, unit, relatedLot), lots (id/title/status/value, when the tender is lotted), and the OCDS award/contract stage: award (operative award: status, date, value, winning supplier, lotID, bid_id — null if none) plus the full awards history (each with the FULL suppliers[] array — name + identifier scheme/id — alongside the single-supplier supplier field kept for backward compatibility), and contract (signed contract value/date, with its CURRENT status and amountPaid read from the contract record — the tender's own copy goes stale after signing; use prozorro_get_contract for amendments, termination and contract documents). An interpretation line states plainly whether the tender_value was ever actually spent. Pass raw:true to also get the complete, unshaped upstream OCDS tender object under raw, for any field not shaped above. Text is largely Ukrainian. Accepts the internal 32-char tender id OR a human tenderID ("UA-2026-09-20-000012-a") — for a tenderID this now tries to resolve the internal id by scanning the most-recently-modified feed records first (cheap, usually one call for anything modified in the last few hours) and returns FULL detail when that succeeds; it falls back to the search index's summary (detail_available:false, no awards) only when the tender wasn't modified recently enough to be found that way.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesTender id — the internal 32-hex id (e.g. "156db6e773ba4b6e925d00f9ad3b13f4") from prozorro_recent_tenders always returns full detail. A human tenderID ("UA-2026-09-20-000012-a") from prozorro_search_tenders is also accepted; full detail depends on whether it can be resolved (see tool description) — detail_available in the response says which case you got.
rawNoInclude the complete, unshaped upstream OCDS tender JSON under `raw`. Only applies when full detail is available (detail_available:true). Default false — the raw object can be large (documents, full bids, etc).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / id / description
      Previous value: -"Tender id (32-hex, e.g. \"156db6e773ba4b6e925d00f9ad3b13f4\"). Not the human tenderID like \"UA-2026-...\"."New value: +"Tender id — the internal 32-hex id (e.g. \"156db6e773ba4b6e925d00f9ad3b13f4\") from prozorro_recent_tenders always returns full detail. A human tenderID (\"UA-2026-09-20-000012-a\") from prozorro_search_tenders is also accepted; full detail depends on whether it can be resolved (see tool description) — detail_available in the response says which case you got."
    • addedInput schema / properties / raw
      Added value: +{
      +  "description": "Include the complete, unshaped upstream OCDS tender JSON under `raw`. Only applies when full detail is available (detail_available:true). Default false — the raw object can be large (documents, full bids, etc).",
      +  "type": "boolean"
      +}
  2. Changed1 schema field changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "id": "156db6e773ba4b6e925d00f9ad3b13f4"
      +  }
      +]
  3. First observed

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly, idempotent, openWorld, non-destructive), and the description adds rich behavior beyond that: staleness of the tender's own contract copy, null handling for award, backward-compatible supplier fields, and the exact resolution/fallback path for tenderID inputs with detail_available signaling which case occurred.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, but the body is a single dense paragraph enumerating every returned field, which is a heavy read. With no output schema the enumeration earns its place, yet the structure is not efficient or skimmable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a detail tool with no output schema, the description fully compensates by enumerating the shaped return fields, flags the interpretation line, and explains raw/fallback behavior. An agent has everything needed to call and interpret it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description still adds meaning beyond the schema by explaining the resolution nuance for the `id` parameter and the size/availability caveat for `raw:true` (only applies when full detail is available).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Full detail for a single Ukraine ProZorro tender by id') and immediately scopes the data source (keyless OpenProcurement public API). It is clearly distinguishable from siblings like prozorro_search_tenders (list/summary) and prozorro_get_contract (amendments/termination), which it names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Routes the agent well: it names prozorro_get_contract for amendments and termination and explains that for a human tenderID the tool first scans recent feed records and may fall back to a summary. It doesn't explicitly contrast with prozorro_search_tenders for retrieval, but the when-to-use context is strong and the fallback condition is spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.