Ukraine Builders
Server Details
Open tenders, signed contracts, upcoming projects and guides for Ukraine's reconstruction.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-03-26
- URL
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: aggregate contract statistics, retrieve a specific tender, list directory companies, search contracts, search site content, and search open tenders. The only potential overlap—between contract_sizes_by_sector and search_contracts—is well differentiated by description (aggregate stats vs. individual records).
Most tool names follow a predictable verb_noun pattern (get_tender, list_companies, search_contracts, search_site, search_tenders). The exception is contract_sizes_by_sector, a noun phrase without a verb, but this is a minor deviation and still readable.
Six tools is well-scoped for a reconstruction procurement information server. Each tool covers a distinct data access pattern without redundant or thin coverage.
The surface covers open tenders (search and get), signed contracts (search and aggregate), a company directory, and site search. Minor gaps remain: there is no dedicated get_contract or get_company tool, though search results include official record links that partially mitigate this.
Available Tools
6 toolscontract_sizes_by_sectorARead-onlyIdempotentInspect
Typical (median), largest and total value of the tracked signed contracts by sector, with the number of contracts, winning companies and buyers. Only contracts of UAH 5 million or more are included.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the non-obvious data-scope threshold (UAH 5M minimum), which matters for interpreting results, but says nothing about the time window covered or result ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences; the list of returned metrics comes first, and the scope constraint follows with no filler. Nothing is redundant with the annotations or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description must explain what comes back, and it does well by naming the statistics and counts. The gap is the absence of any time period or aggregation granularity, which an agent would need to interpret the numbers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 by rule. The description's statement that only contracts of UAH 5M+ are tracked effectively documents the fixed implicit filter an agent should know about.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-like resource ('contract sizes by sector') and enumerates the exact metrics returned: median, largest, total value, plus counts of contracts, companies and buyers. This distinguishes it from sibling search/list tools, but it never explicitly names an alternative (e.g. search_contracts) for row-level data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is for sector-level aggregate market analysis rather than retrieving individual contracts. The note that 'only contracts of UAH 5 million or more are included' usefully bounds applicability, but there is no explicit when-to-use statement or pointer to a sibling for other cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tenderARead-onlyIdempotentInspect
Get one open tender by its id (the id field from search_tenders).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered and the description needn't repeat it. The description does add one behavioral fact beyond the annotations — that only 'open' tenders are retrievable — but says nothing about what happens for closed, expired, or nonexistent ids.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with verb and resource, with the id provenance attached immediately. No filler and nothing an agent must read past to get the essential contract.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only, idempotent lookup with full annotation coverage and no output schema, the description supplies everything necessary to invoke it: what it returns (one open tender), the key to supply, and where the key comes from. Nothing material is missing at this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load, and it does: it identifies the single parameter's meaning and origin ('the id field from search_tenders'), telling the agent exactly where to obtain a valid value. It stops short of stating the format or whether unknown ids error versus return empty.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get one open tender') scoped to a single record by id, and implicitly contrasts with the sibling search_tenders by naming it as the id's source. The contrast is inferred rather than stated, so it falls short of a clean 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(the id field from search_tenders)' establishes the usage context: call this after a search when you already hold an id. It gives clear positive guidance but never states when not to use it (e.g. when you need to search or need multiple tenders).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_companiesARead-onlyIdempotentInspect
List companies in the free partner directory (entries are posted by the companies themselves and are NOT verified). Can filter by what a company says it is looking for.
| Name | Required | Description | Default |
|---|---|---|---|
| looking_for | No | foreign-suppliers, local-subcontractors, local-distributor (distributor or agent in Ukraine), joint-venture, local-agent (can represent foreign companies in Ukraine). | |
| max_results | No | Default 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive and closed-world behavior, so the bar is lower; the description still adds meaningful trust context by flagging that entries are self-posted and NOT verified. It does not describe what a returned entry contains, but the honesty caveat is the valuable part.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the data-quality caveat front-loaded before the filtering capability. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With two optional params, no required params, no output schema and full annotation coverage, the definition is workable. The remaining gap is the shape of a returned company entry, which the agent cannot infer from either schema or description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the enum values and default are already documented; baseline would be 3. The description adds semantic nuance by framing 'looking_for' as what a company *says* it wants, which tells the agent these are self-reported intents rather than verified needs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('List') plus a precisely scoped resource ('companies in the free partner directory'), with the source and verification status stated up front. It is unmistakably distinct from the contract/tender/site siblings, which cover entirely different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies when the filter is relevant ('Can filter by what a company says it is looking for') and warns that entries are unverified, but gives no explicit guidance on when to call this versus not calling it, and no prerequisites. Adequate context, no routing guidance — and there are no competing siblings to route to, which softens the gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_contractsARead-onlyIdempotentInspect
Search signed Prozorro public contracts of UAH 5 million (about US$122,000) or more in reconstruction-related categories: winner, awarding organisation, value, sector, signing date and official record.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Default: largest first. | |
| query | No | Words to look for in the contract title, winner or awarding organisation. | |
| since | No | Only contracts signed on or after this date, YYYY-MM-DD. | |
| sector | No | ||
| max_results | No | Default 10. | |
| min_value_uah | No | Minimum contract value in hryvnia. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the description's real contribution is the hardcoded UAH 5M floor and the reconstruction-category restriction — behavioral facts an agent could not learn from the schema. It does not mention pagination, result caps, or how the floor interacts with min_value_uah.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence: verb, scope threshold, category restriction, then the fields surfaced. No filler, and the most decision-relevant constraint (the value floor) appears early.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, listing the returned fields (winner, awarding organisation, value, sector, signing date, official record) is genuinely useful. But for a six-parameter, zero-required search tool it omits result-window behavior and the interaction between the built-in floor and min_value_uah, leaving real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 83%, so the schema already documents sort, query, since, sector, max_results and min_value_uah; the baseline of 3 applies. The description adds no syntax or format detail and, notably, leaves ambiguous whether min_value_uah overrides or stacks with the stated UAH 5M floor.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb+resource ('Search signed Prozorro public contracts'), pins the domain with a hard value floor (UAH 5M) and a category scope (reconstruction-related), and lists the facets exposed. It implicitly separates itself from search_tenders by specifying signed contracts rather than tenders, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the stated scope: an agent can infer this tool is for high-value, reconstruction-related signed awards. There is no explicit when-to-use/when-not guidance and no pointer to the obvious alternatives (search_tenders, get_tender, contract_sizes_by_sector).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_siteARead-onlyIdempotentInspect
Search Ukraine Builders guides, upcoming World Bank and EBRD projects, tender issuers, winning companies and pages. Use it to find a guide (for example how a foreign company can bid on Prozorro) or an organisation.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Restrict to one kind of result. | |
| query | Yes | ||
| max_results | No | Default 8. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that the corpus spans guides, projects, tender issuers, winning companies, and pages, but does not explain result ranking, how query matching works, or other behavioral details beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the searchable corpus and followed by concrete usage examples. Every sentence earns its place and there is no redundant restatement of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with no output schema, the definition covers the searchable content types and gives examples, but leaves gaps around result ordering, query syntax, and the missing 'Sector' kind. It is adequate but not complete enough to fully guide an agent on expected search behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, with the kind enum restricted to one kind of result and max_results capped and defaulted. The description loosely maps several enum values to natural-language content types, but it omits the 'Sector' kind entirely and adds no detail about query semantics or how kind interacts with query.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (Search) and resource, and enumerates the site's content types: guides, upcoming projects, tender issuers, winning companies, and pages. It is clear what the tool does, but it does not explicitly distinguish itself from siblings like search_tenders or search_contracts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives usage context and examples ('find a guide ... or an organisation'), which implies when to use it. However, with siblings such as search_tenders and search_contracts, it does not state when to prefer those alternatives or when this broad site search is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tendersARead-onlyIdempotentInspect
Search currently open public tenders for Ukraine's reconstruction (World Bank, EU TED, EBRD, Prozorro). Returns title (English headline), issuer, sector, region, estimated value, deadline and links to the page on Ukraine Builders and the official notice.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Default: soonest deadline first. | |
| query | No | Words to look for in the title or issuer, e.g. "boiler" or "school Kharkiv". | |
| sector | No | Sector filter. | |
| max_results | No | Default 10. | |
| min_value_usd | No | Only tenders with an estimated value of at least this many US dollars (approximate, UAH at about 41 per USD). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a read-only, idempotent, non-destructive, closed-world operation. The description adds useful context beyond that: it limits results to currently open tenders, names the source programmes, and lists the returned fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with no wasted wording. The core purpose and sources are front-loaded, followed immediately by the return fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully lists what the tool returns and names the underlying sources. It leaves minor gaps around result handling and alternative-tool routing, but it is complete enough for an agent to invoke the search correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already explains all five parameters, including enums and defaults. The description adds no parameter-specific semantics beyond what the schema provides, making the baseline score appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: searching currently open public tenders for Ukraine's reconstruction, with named sources. It does not explicitly distinguish itself from siblings such as get_tender or search_contracts, but the tender-specific scope makes the purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'currently open' and by the source list, but the description gives no explicit when-to-use, when-not-to-use, or alternative-tool guidance. It does not tell an agent when to prefer get_tender for details or search_contracts for awarded contracts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
- First observed
contract_sizes_by_sector - First observed
get_tender - First observed
list_companies - First observed
search_contracts - First observed
search_site - First observed
search_tenders
Related MCP Connectors
Public tenders and contract awards from EU TED and UK Find a Tender, with buyer, value and deadline.
Public procurement register, 75 countries: suppliers, buyers, contracts, single-bid awards
Government tenders, contract awards, buyers and suppliers from official sources in 60+ countries.
Open Contracting MCP — international public procurement: government tenders and contract awards…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables search and analysis of European public procurement tenders, including EU above-threshold (TED) and below-threshold from 11 national sources, with hybrid search and filtering.MIT
- AlicenseNot gradedqualityDmaintenanceFind, analyze, and score Polish public tenders (BZP): parsed requirements, deadlines, certificates, and bid-fit scoring against your company profile.5 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables querying international public procurement data, including government tenders, through the Open Contracting standard.10 npmMIT
- AlicenseBqualityCmaintenanceProvides AI models with access to Ukrainian government procurement data from Prozorro, enabling search and retrieval of tender information by organization, date range, and other criteria.15 npm12ISC
Glama MCP Gateway
Add one secure layer between your agents and this server.