Prozorro.Sale MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PROZORRO_SALE_API_BASE | No | Full base URL override | |
| PROZORRO_SALE_INSTANCE | No | Environment: production, staging (synthetic data) or dgf | production |
| PROZORRO_SALE_MAX_PAGES | No | Hard ceiling per call | 40 |
| PROZORRO_SALE_TIMEOUT_MS | No | Per-request timeout in milliseconds | 45000 |
| PROZORRO_SALE_MAX_RETRIES | No | Retries on network/5xx errors | 2 |
| PROZORRO_SALE_CACHE_TTL_MS | No | Feed-page cache lifetime in milliseconds | 120000 |
| PROZORRO_SALE_DEFAULT_PAGES | No | Feed pages a search scans by default (100 auctions each) | 8 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_auctionsA | Find auctions of Ukrainian public assets. The entry point for any "what is available" question. WHEN TO USE: the user describes what they are looking for rather than naming one auction. For a specific auction id, call get_auction instead. KEY PARAMETERS
EXAMPLE — everything Lviv Polytechnic put up for lease this year: {"procedure_type":["legitimatePropertyLease"],"property_owner_edrpou":"02071010", "changed_since":"2026-01-01","changed_until":"2026-08-06","scan_pages":40} EXAMPLE — property lease near Lviv, still open, under 50 000 UAH: {"procedure_type":["legitimatePropertyLease"],"open_for_bids":true,"region":"Львів","max_value":50000,"limit":10} EXAMPLE — everything privatisation-related sold in July 2026: {"procedure_type":["smallPrivatization","largePrivatization"],"status":["complete"], "changed_since":"2026-07-01","changed_until":"2026-07-31","scan_pages":25} RETURNS: compact auction summaries (id, title, status, price, region, seller, propertyOwner, deadlines, auctionUrl) plus a "scanned" block. ALWAYS relay that block's window and truncation to the user — an empty result means "not in the scanned window", never "does not exist". |
| get_auctionA | Everything about a single auction: the asset, the financial terms, the seller, and whichever sub-sections are asked for. WHEN TO USE: the user names an auction, or a search result needs expanding. For deadlines alone use get_auction_timeline; for the outcome alone use get_auction_results — both are much smaller responses. KEY PARAMETERS
EXAMPLE — full picture before deciding whether to bid: {"auction":"SPD001-UA-20260806-70620","include":["items","terms","documents","questions"]} EXAMPLE — minimal lookup: {"auction":"LRE001-UA-20260708-03894"} RETURNS: auction summary, seller, description, per-section counts, and the requested sections. Lease auctions additionally carry propertyOwner (the institution the asset belongs to, with its EDRPOU), ownershipType and currentTenants (sitting tenants and their contract dates). Redacted personal data appears as "[redacted]". |
| get_auction_timelineA | The stage clock for one auction: what has passed, what is running now, what comes next, and how much time is left to bid. WHEN TO USE: any time-related question — "how long do I have", "when is the auction", "has the question period closed", "what happens after bidding". Far smaller than get_auction for this. KEY PARAMETERS
EXAMPLE — "can I still bid on this?": {"auction":"LRE001-UA-20260708-03894"} EXAMPLE — "did the seller change anything after publishing?": {"auction":"LRE001-UA-20260708-03894","include_revisions":true} RETURNS: status with its plain-language meaning, every stage marked past/current/upcoming, the next deadline, and a bidding block with closesAt / stillOpen / hoursRemaining. Cancellation reasons appear when the auction was withdrawn. |
| get_auction_resultsA | How one auction ended: sold or not, for how much, to how many bidders. WHEN TO USE: "what did it go for", "did it sell", "how many people bid", "why was it cancelled". Works on in-progress auctions too — it reports outcome "in_progress" rather than failing. KEY PARAMETERS
EXAMPLE: {"auction":"SPE001-UA-20260729-69703"} RETURNS: outcome (contract_signed / winner_determined / ended_without_winner / cancelled_by_seller / in_progress), starting vs final price with priceUpliftPercent between them, bid and disqualified-bid counts, attemptNumber (>1 means the lot failed to sell before), awards, contracts and cancellation reasons. Winner identities are redacted by the platform; bid amounts appear only after the auction concludes. |
| get_auction_documentsA | Files published for one auction, each with a direct public download URL that can be fetched without authentication. WHEN TO USE: "show me the documents", "where is the technical specification", "get the signed contract", "is there a photo of the property". KEY PARAMETERS
EXAMPLE — just the technical spec: {"auction":"SPD001-UA-20260806-70620","document_type":"technicalSpecifications"} EXAMPLE — the complete paper trail including the signed contract: {"auction":"SPD001-UA-20260806-70620","include_attachments_of":["auction","awards","contracts"]} RETURNS: per set, a list of documents with title, type, format, publication date and downloadUrl. Documents attached to bids are never published. |
| find_comparable_auctionsA | Takes one auction and finds recent comparable ones, then reports median prices and how often that kind of lot actually sells. WHEN TO USE: valuation and risk questions — "is this price reasonable", "what do similar plots go for", "how likely is this to sell", "should I bid at the starting price". KEY PARAMETERS
EXAMPLE — price benchmark for a land lease: {"auction":"LRE001-UA-20260708-03894","match_on":["sellingMethod","classification"]} EXAMPLE — what similar assets are on the market right now: {"auction":"SPD001-UA-20260806-70620","concluded_only":false,"limit":25} RETURNS: the reference summary, median starting and achieved prices, sold share, and the comparable auctions themselves. Re-listings of the same lot are excluded so one asset is not counted twice. The sample comes from recent activity, not full history — say so when quoting a figure. |
| track_auction_changesA | What appeared or changed in a niche since a given moment. Cursor-based, so repeated calls make forward progress without re-reading the same activity. WHEN TO USE: monitoring rather than searching — "anything new since yesterday", "did anything change on the lots I am watching", "keep me posted on timber auctions". For a one-off "what exists" question use search_auctions instead. KEY PARAMETERS
EXAMPLE — first poll of a niche: {"procedure_type":["landRental"],"region":"Полтав","limit":20} EXAMPLE — follow-up poll using the cursor from the previous response: {"procedure_type":["landRental"],"region":"Полтав","since":"2026-08-06T06:27:21.880000Z"} RETURNS: changed auctions with changedAt and an isNew flag distinguishing brand-new listings from updates to existing ones, a newlyPublished count, and nextCursor for the following poll. The cursor is inclusive, so the last auction may repeat once. |
| analyze_auction_marketA | Counts, price statistics and sold-share over a window of auction activity, broken down by a dimension of your choice. WHEN TO USE: questions about volume and trends rather than individual lots — "how much land was auctioned last week", "which regions are most active", "what share of timber lots actually sell", "who are the biggest sellers". KEY PARAMETERS
EXAMPLE — which regions had the most land activity recently: {"procedure_type":["landRental","landSell"],"group_by":"region","scan_pages":25} EXAMPLE — how privatisation performed in July 2026: {"procedure_type":["smallPrivatization"],"since":"2026-07-01","until":"2026-07-31", "group_by":"sellingMethod","scan_pages":30} RETURNS: totals with count/total/mean/median/min/max starting prices, a status histogram, soldSharePercentOfSettled (settled = complete, unsuccessful or cancelled only), and the same figures per group. CRITICAL: these describe only auctions CHANGED inside the scanned window, not the whole catalogue. Always report the window and coverage alongside any number. |
| list_procedure_typesA | The vocabulary every other tool filters on. Cheap, cached, no network cost after the first call. WHEN TO USE: before a search whose asset programme is unclear, or when the user asks what kinds of auctions exist, what a status means, or what an auction id prefix stands for. Call this rather than guessing a procedure_type value — an unrecognised one silently returns nothing. KEY PARAMETERS
EXAMPLE — what land-related programmes exist: {"filter":"land"} EXAMPLE — the full vocabulary: {} RETURNS: 33 programme families, each with its auction formats, the exact sellingMethod values to pass as procedure_type, and the three-letter auction-id prefix each produces (LRE = landRental-english, SPE = smallPrivatization-english, and so on). Plus the auction-id format and, by default, what each of the ten procedure statuses means. |
| get_publication_constraintsA | Seller-side planning: if a lot is published today, how soon may the auction itself run. WHEN TO USE: the user is preparing to list something and needs to plan dates — "how far ahead do I need to publish", "what is the minimum notice period", "can we hold the auction before the 20th". This is the only forward-looking tool here; everything else describes auctions that already exist. KEY PARAMETERS
EXAMPLE — notice period for one format: {"procedure_type":"landRental-english"} EXAMPLE — compare every format of a programme: {"procedure_type":"smallPrivatization"} RETURNS: per selling method, earliestAuctionStart (the soonest auctionPeriod.startDate the platform would accept for a procedure published now) and noticeDays, that gap in days. The value is computed live and moves with the calendar, so it is not cached. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/VladyslavMykhailyshyn/prozorro-sale-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server