protogrid

Search / gr.diavgis/procurement

Diavgis — Greek Public Procurement

R1· needs a key

Greek public procurement: tenders, awards, contracts, payments, suppliers, expiring contracts.

v1.3.0 · active · repository · website · descriptor JSON · versions

An agent can connect on its own if it already holds PROCUREMENT_TOKEN.Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.
Quality92strong
Trust97of 100
Uptime, 30 days100%
Latency p50372 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "procurement": {
      "type": "http",
      "url": "https://mcp.diavgis.gr/mcp",
      "headers": {
        "Authorization": "Bearer ${PROCUREMENT_TOKEN}"
      }
    }
  }
}
claude mcp add --transport http procurement https://mcp.diavgis.gr/mcp --header "Authorization: Bearer ${PROCUREMENT_TOKEN}"
[mcp_servers.procurement]
url = "https://mcp.diavgis.gr/mcp"
bearer_token_env_var = "PROCUREMENT_TOKEN"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "procurement": {
      "type": "remote",
      "url": "https://mcp.diavgis.gr/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer {env:PROCUREMENT_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "procurement": {
      "type": "http",
      "url": "https://mcp.diavgis.gr/mcp",
      "headers": {
        "Authorization": "Bearer ${PROCUREMENT_TOKEN}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=procurement&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbWNwLmRpYXZnaXMuZ3IvbWNwIiwiaGVhZGVycyI6eyJBdXRob3JpemF0aW9uIjoiQmVhcmVyICR7UFJPQ1VSRU1FTlRfVE9LRU59In19"
}
{
  "servers": {
    "procurement": {
      "type": "http",
      "url": "https://mcp.diavgis.gr/mcp",
      "headers": {
        "Authorization": "Bearer ${PROCUREMENT_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "procurement": {
      "httpUrl": "https://mcp.diavgis.gr/mcp",
      "headers": {
        "Authorization": "Bearer ${PROCUREMENT_TOKEN}"
      }
    }
  }
}
extensions:
  "procurement":
    enabled: true
    name: "procurement"
    type: streamable_http
    uri: "https://mcp.diavgis.gr/mcp"
    headers:
      "Authorization": "Bearer ${PROCUREMENT_TOKEN}"
    timeout: 300

Placeholders to fill from your own secret store: ${PROCUREMENT_TOKEN}. The registry never accepts secret values.

Quality 92 / 100strong

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list carries no ttlMs, so clients re-fetch it
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene93 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length1 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations10 of 10 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 2,607 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changes3 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

10 tools, about 2,607 tokens to load them all · tool set c0e3d9542c2e · tools last changed 2026-10-07 · checked 2026-10-20 12:13 UTC

Tool changes

  • get_quotachangedoutput schema
  • get_actchangedoutput schema
  • search_tenderschangedoutput schema

Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 97 / 100

provenance100
liveness100
freshness85
hygiene100

+repository +namespace-matches-repo +dns-namespace +website +reachable +uptime-100% ~updated-52d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://mcp.diavgis.gr/mcp streamable-httpapi_key ${PROCUREMENT_TOKEN}yes100%372 ms2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-052026-10-20

Tools (10)

entity_counterpartiesread-onlyTop counterparties of an entity (ΑΦΜ): for a buyer, the suppliers it pays most; for a supplier, its top public buyers — with act counts and EUR totals. The 'who does business with whom' due-diligence view.
expiring_contractsread-onlyGreek public contracts that are RUNNING NOW and expire within a horizon of 0, 7, 30 or 180 days — the renewal pipeline. Each row carries who currently holds the contract and HOW it was awarded (direct award vs competitive tender, and the number of bids where the source reports it), which is what tells you whether the re-tender is worth chasing. One procurement is counted ONCE: Greek sources publish the duration on the award record as well as the contract, so award records are dropped when a contract in the same lifecycle chain already defines the expiry. ⚠ `expiry_basis` on every row states how the date was obtained — `published` (the buyer published an end date), `computed_from_start` (start date + declared duration) or `computed_from_publication` (no start date published, so the publication date was substituted; systematically early). Do not present a computed date as a published one. ACCESS: horizon 0 (expiring today) is free on every plan and returns the complete record. Horizons 7/30/180 require a paid plan — lead time is the paid product.
find_entityread-onlyResolve a Greek buyer or supplier NAME to its ΑΦΜ. Use this first whenever you have a name but no ΑΦΜ — get_entity, entity_counterparties and the buyer_afm/supplier_afm filters all need the 9-digit number. Matching is accent- and case-insensitive; returns the closest names with their ΑΦΜ, so pick the right one before calling anything else.
get_actread-onlyFull detail of one act by its id (Διαύγεια ΑΔΑ, ΚΗΜΔΗΣ 'kimdis:<ΑΔΑΜ>', or TED 'ted:<number>'): 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.
get_chainread-onlyA reconstructed procurement lifecycle chain by chain_id: the linked sequence of related acts (e.g. commitment → award → contract → payments) with confidence and link method. Get a chain_id from the chain_id field of any act. A chain is ONE procurement's lifecycle, not everything an act references: an administrative umbrella cited by more than 25 acts (e.g. one annual expense-approval decision referenced by thousands of a buyer's acts) is deliberately NOT merged, so a chain never swallows a year of unrelated activity. Those references are still published — see the act's own references — they simply do not form a chain.
get_entityread-onlyProfile of a legal entity (company or public body) by 9-digit ΑΦΜ: name, role, and spend/receipt statistics as buyer and as supplier. EUR totals = the COMMITTED procurement value counted ONCE per procurement (deduplicated across ΚΗΜΔΗΣ/Διαύγεια sources and the award→contract→payment lifecycle; tenders/budgets excluded), so it reflects real committed spend, not a sum of every published act.
get_quotaread-onlyWhat this API key is allowed to do right now: plan, calls used this period, calls remaining, per-minute rate, page-size and pagination caps, and when the period resets. Free — this call is not counted against the quota. Check it before starting a long job so you can size the work instead of hitting a wall mid-task.
rank_entitiesread-onlyRank top Greek public-procurement entities. role=buyer (default) or supplier; by=spend (default — COMMITTED procurement value in EUR, counted ONCE per procurement: deduplicated across sources and lifecycle stages, tenders excluded), single_bidder (count of ≤1-bid awards/contracts) or direct_award (count of απευθείας ανάθεση). Answers 'top 10 suppliers by public revenue', 'which buyers award most without competition'. Returns afm, name, metric, total. Precomputed and refreshed every 6 hours, so it is instant and always the top 15.
search_tendersread-onlySearch Greek public-procurement acts across THREE cross-linked sources — Διαύγεια, ΚΗΜΔΗΣ (Central Electronic Public Procurement Registry) and EU TED. Filter by source (diavgeia|kimdis|ted), lifecycle status (request|tender|award|contract|payment), buyer or supplier ΑΦΜ (9-digit tax id), CPV code, EUR budget range, NUTS region, submission deadline (deadline_after=TODAY + status=tender ⇒ the OPEN tenders a supplier can still bid on), free-text q over the act title, and procurement signals (published facts from ΚΗΜΔΗΣ): direct_award (απευθείας ανάθεση), single_bidder (≤1 bid on the contract), cancelled. Returns a paginated envelope; 'next' is the next PAGE NUMBER or null. Natural-person counterparties are redacted. Do NOT sum amount_net across results to get spend — use rank_entities or spend_by_cpv, which count each procurement once.
spend_by_cpvread-onlyCommitted public procurement value by CPV category (2-digit division), optionally for one year. Value = counted ONCE per procurement (deduplicated across sources and award/contract/payment stages; tenders excluded). Answers 'what does the Greek state spend the most on'. Returns cpv_division, acts, spend (EUR) for the top divisions by spend — precomputed nightly, so it is instant. Use search_tenders with cpv= for divisions outside the top list.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "gr.diavgis/procurement",
  "icons": [
    {
      "src": "https://diavgis.gr/icon-512.png",
      "sizes": [
        "512x512"
      ],
      "mimeType": "image/png"
    },
    {
      "src": "https://diavgis.gr/apple-touch-icon.png",
      "sizes": [
        "180x180"
      ],
      "mimeType": "image/png"
    }
  ],
  "title": "Diavgis — Greek Public Procurement",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://mcp.diavgis.gr/mcp",
      "type": "streamable-http",
      "headers": [
        {
          "name": "Authorization",
          "isSecret": true,
          "isRequired": true,
          "description": "Bearer <API key>. Free key (500 calls/month) at https://diavgis.gr/pricing",
          "placeholder": "Bearer dvg_..."
        }
      ]
    }
  ],
  "version": "1.3.0",
  "repository": {
    "url": "https://github.com/diavgis/diavgis-mcp",
    "source": "github"
  },
  "websiteUrl": "https://diavgis.gr/docs/en",
  "description": "Greek public procurement: tenders, awards, contracts, payments, suppliers, expiring contracts."
}