Skip to main content
Glama

Diavgis — Greek Public Procurement

Get One Act

get_act
Read-onlyIdempotent

Full detail of one act by its id (Διαύγεια ΑΔΑ, ΚΗΜΔΗΣ 'kimdis:<ΑΔΑΜ>', or TED 'ted:'): canonical fields, resolved buyer/supplier entities, CPV codes with labels, and its cross-source lifecycle chain if linked. On ΚΗΜΔΗΣ contracts, commitment_ada carries the Διαύγεια ΑΔΑ of the budget-commitment decision the source declares (comma-separated when more than one). It is a pointer INTO Διαύγεια, not an act we necessarily hold — resolve it at diavgeia.gov.gr, not through this API — and it is deliberately NOT a chain edge: one annual commitment funds many unrelated contracts. On tenders and public-works awards/contracts, discount carries the contractor discount (official from the document, or calculated) — see its schema.

Input Schema

NameRequiredDescriptionDefault
adaYesact id — ΑΔΑ, 'kimdis:<ΑΔΑΜ>' or 'ted:<number>'

Output Schema

NameRequiredDescriptionDefault
actYes
cpvsYesCPV classifications with their official Greek labels
buyerYes
chainYes
discountNoContractor discount, only on tenders and on public-works (CPV 45) awards/contracts. The key is ABSENT when there is nothing to show (not null). basis "document" = the percentage exactly as the award decision states it (measure average_discount | discount_on_budget, with document_ref and document_url to the source), Pro plan and above. basis "calculated" = Diavgis' own 1 - award_net / tender_budget_net, single winner only, shown only when the award is 30-100% of the budget and, where the document states a figure, within 1 point of it. official_locked: true + upgrade_url = the document states an official figure this plan does not include. A calculated value is not the official one.
supplierYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / discount / description
      Previous value: -"Contractor discount, only on tenders and on public-works (CPV 45) awards/contracts. The key is ABSENT when there is nothing to show (not null). basis \"document\" = the percentage exactly as the award decision states it (measure average_discount | discount_on_budget, with document_ref and document_url to the source), Pro plan and above. basis \"calculated\" = Diavgis' own 1 - award_net / tender_budget_net, single winner only, shown only when the award is 30-100% of the budget and, where the document states a figure, within 1 point of it. official_locked: true + upgrade_url = the document states an official figure this plan does not include. Never present a calculated value as the official one."New value: +"Contractor discount, only on tenders and on public-works (CPV 45) awards/contracts. The key is ABSENT when there is nothing to show (not null). basis \"document\" = the percentage exactly as the award decision states it (measure average_discount | discount_on_budget, with document_ref and document_url to the source), Pro plan and above. basis \"calculated\" = Diavgis' own 1 - award_net / tender_budget_net, single winner only, shown only when the award is 30-100% of the budget and, where the document states a figure, within 1 point of it. official_locked: true + upgrade_url = the document states an official figure this plan does not include. A calculated value is not the official one."
  2. Changed1 schema field changed
    • addedOutput schema / properties / discount
      Added value: +{
      +  "description": "Contractor discount, only on tenders and on public-works (CPV 45) awards/contracts. The key is ABSENT when there is nothing to show (not null). basis \"document\" = the percentage exactly as the award decision states it (measure average_discount | discount_on_budget, with document_ref and document_url to the source), Pro plan and above. basis \"calculated\" = Diavgis' own 1 - award_net / tender_budget_net, single winner only, shown only when the award is 30-100% of the budget and, where the document states a figure, within 1 point of it. official_locked: true + upgrade_url = the document states an official figure this plan does not include. Never present a calculated value as the official one.",
      +  "properties": {
      +    "basis": {
      +      "enum": [
      +        "document",
      +        "calculated"
      +      ],
      +      "type": "string"
      +    },
      +    "document_ref": {
      +      "type": "string"
      +    },
      +    "document_url": {
      +      "type": "string"
      +    },
      +    "formula": {
      +      "type": "string"
      +    },
      +    "measure": {
      +      "enum": [
      +        "average_discount",
      +        "discount_on_budget"
      +      ],
      +      "type": "string"
      +    },
      +    "official_locked": {
      +      "type": "boolean"
      +    },
      +    "upgrade_url": {
      +      "type": "string"
      +    },
      +    "value": {
      +      "description": "percent, one decimal",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "basis"
      +  ],
      +  "type": "object"
      +}
  3. Changed1 schema field changed
    • changedOutput schema / properties / act / properties / supplier_afm / description
      Previous value: -"null when the counterparty is a redacted natural person"New value: +"9-digit ΑΦΜ of a company supplier; a pseudonym \"Φ-XXXXXXXXXX\" for a natural-person contractor; null when the counterparty is a redacted natural person"
  4. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/openWorld=false, so safety is covered; the description instead spends its budget on non-obvious data semantics, notably that commitment_ada is a pointer into an external system and deliberately NOT a chain edge, and that discount is official-or-calculated. That is genuine disclosure beyond the structured fields. It stops short of covering behavior for unlinked acts or what happens with an unresolvable id.

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

Conciseness5/5

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

Front-loaded: the retrieval contract is fully stated in the first clause before any field trivia. Sentences are dense but each carries distinct information, and the parenthetical id-format list is compact rather than repetitive.

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

Completeness4/5

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

With readOnly annotations, a 100%-covered single required param, and an output schema, the description covers the remaining unknowns: id formats, entity resolution, and the two misleading response fields. The only shortfall is that the long commitment_ada/discount exposition duplicates what the output schema already provides, indicating mild misallocation rather than a true information gap.

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

Parameters3/5

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

Only one parameter, and the schema description already spells out 'ΑΔΑ, kimdis:<ΑΔΑΜ> or ted:<number>' at 100% coverage. The description restates those same three forms without adding accepted-syntax detail the schema lacks (no prefix casing rules, no example values). Baseline 3 is appropriate since the schema does the work.

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?

Opens with a specific verb+resource ('Full detail of one act by its id') and enumerates what comes back: canonical fields, resolved buyer/supplier entities, CPV codes with labels, cross-source lifecycle chain. It also names the id namespaces (Διαύγεια ΑΔΑ, kimdis:<ΑΔΑΜ>, ted:<number>), which separates it cleanly from list/search siblings like search_tenders or get_chain.

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

Usage Guidelines3/5

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

Usage is only implied: you fetch a single act by id. There is one explicit when-not — 'resolve it at diavgeia.gov.gr, not through this API' — but that constrains a response field, not the tool choice. It never routes the agent to get_chain versus get_act, even though get_chain exists as a sibling covering the lifecycle chain this tool only partially surfaces.

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.