Atlas Przetargów
Atlas Przetargów — Servidor MCP
El primer servidor MCP para datos de contratación pública polaca. Consulta más de 800 000 licitaciones públicas polacas (BZP + TED), perfiles de compradores/contratistas y estadísticas de categorías directamente desde Claude Desktop, Cursor, Continue, Cline o cualquier cliente de IA compatible con MCP.
Desarrollado por Atlas Przetargów, la plataforma polaca de búsqueda y análisis de contratación pública.
¿Qué es esto?
El Model Context Protocol (MCP) permite a los asistentes de IA conectarse a herramientas y datos externos. Este servidor expone la API de Atlas Przetargów a cualquier cliente MCP, dando a tu asistente de IA la capacidad de:
Buscar licitaciones públicas polacas por palabra clave, categoría CPV, ubicación, valor o fecha límite.
Obtener detalles completos de la licitación, incluyendo comprador, códigos CPV, valor estimado, fechas límite y un resumen opcional generado por IA.
Crear un perfil de cualquier entidad contratante (zamawiający) por NIP, incluyendo quién gana sus contratos con mayor frecuencia.
Crear un perfil de cualquier contratista (wykonawca) por NIP, incluyendo de qué compradores obtienen contratos.
Analizar estadísticas de mercado para cualquier categoría CPV (recuento, valor mediano, promedio de ofertas, promedio de fechas límite).
Comparar provincias y ciudades en volumen de contratación.
Acceder a un glosario de más de 90 términos de contratación pública polaca.
Usar flujos de trabajo guiados (prompts) para el análisis de licitaciones, diligencia debida del comprador y descubrimiento de oportunidades.
Related MCP server: narajangteo-searcher
Inicio rápido (Claude Desktop)
Opción A — vía npx (recomendado, sin instalación)
Edita tu archivo de configuración de Claude Desktop:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Añade:
{
"mcpServers": {
"atlas-przetargow": {
"command": "npx",
"args": ["-y", "@atlasprzetargow/mcp"]
}
}
}Reinicia Claude Desktop. Las herramientas de Atlas aparecerán en el panel de herramientas.
Opción B — instalación global
npm install -g @atlasprzetargow/mcpLuego en claude_desktop_config.json:
{
"mcpServers": {
"atlas-przetargow": {
"command": "atlas-przetargow-mcp"
}
}
}Ejemplos de uso (en Claude Desktop)
"Busca licitaciones de construcción activas en Varsovia con un presupuesto de 500k–5M PLN y muéstrame las 5 principales"
"Usa el prompt buyer-due-diligence para el NIP 5252248481" (→ realiza una diligencia debida sobre la Ciudad de Varsovia como entidad contratante)
"¿Cuál es el valor mediano de las licitaciones de TI en Polonia el año pasado?"
"Busca la licitación 2026/BZP 00202613 y analiza sus términos clave y riesgos"
"Búscame el código CPV para equipos médicos y muestra las licitaciones activas"
"¿Quién gana con mayor frecuencia contratos de GDDKiA (Autoridad Nacional de Carreteras)?"
Herramientas
Herramienta | Descripción |
| Busca licitaciones con filtros (consulta, CPV, ciudad, provincia, rango de valor, fechas, orden) |
| Detalles completos de una licitación por ID, opcionalmente con resumen de IA |
| Perfil de una entidad contratante por NIP + principales contratistas ganadores |
| Perfil de un contratista por NIP + principales compradores de los que obtienen contratos |
| Encuentra compradores / contratistas por nombre (devuelve el NIP para otras herramientas) |
| Estadísticas agregadas para una categoría CPV (recuento, mediana, promedio de ofertas, promedio de fechas límite) |
| Estadísticas por provincia o ciudad (principales compradores, principales CPV) |
| Busca códigos CPV por palabra clave en polaco |
Recursos
URI | Descripción |
| Índice de más de 90 términos de contratación pública polaca |
| Definición completa de un término específico |
| Índice de artículos de la base de conocimientos de formato largo |
| Artículo completo de la base de conocimientos |
Prompts
Prompt | Descripción |
| Análisis exhaustivo de un anuncio de licitación: alcance, valor, fechas límite, riesgos, recomendación |
| Diligencia debida sobre una entidad contratante: perfil de compra, red de contratistas, señales de alerta |
| Encuentra oportunidades de licitación activas que coincidan con un perfil de CPV + ubicación + valor |
Configuración (variables de entorno)
Todas son opcionales. Los valores predeterminados son seguros.
Variable | Predeterminado | Descripción |
|
| Raíz de la API. Útil para staging o Atlas autohospedado |
| (ninguno) | Clave opcional para endpoints |
|
| Tiempo de espera de la solicitud |
|
| Número de reintentos para 429 / 5xx / tiempos de espera |
Pásalas a través de la configuración de tu cliente MCP:
{
"mcpServers": {
"atlas-przetargow": {
"command": "npx",
"args": ["-y", "@atlasprzetargow/mcp"],
"env": {
"ATLAS_API_KEY": "your-optional-key-here"
}
}
}
}Contratación pública polaca — referencia rápida
BZP (Biuletyn Zamówień Publicznych) — Registro nacional de licitaciones de Polonia. Los IDs tienen el formato
2026/BZP 00202613.TED (Tenders Electronic Daily) — Registro de licitaciones de toda la UE, requerido para licitaciones por encima de los umbrales de la UE.
CPV (Common Procurement Vocabulary) — Códigos de categoría de 8 dígitos, p. ej.,
45000000= construcción,72000000= TI.NIP — Identificación fiscal polaca de 10 dígitos, utilizada para identificar a cada comprador / contratista.
Códigos de provincia:
PL02dolnośląskie ·PL04kujawsko-pomorskie ·PL06lubelskie ·PL08lubuskie ·PL10łódzkie ·PL12małopolskie ·PL14mazowieckie ·PL16opolskie ·PL18podkarpackie ·PL20podlaskie ·PL22pomorskie ·PL24śląskie ·PL26świętokrzyskie ·PL28warmińsko-mazurskie ·PL30wielkopolskie ·PL32zachodniopomorskieTipos de anuncio:
ContractNotice— licitación activa, abierta a ofertasTenderResultNotice/ContractAwardNotice— resultados (quién ganó, a qué precio)CompetitionNotice,ConcessionNotice— anuncios especializados
Desarrollo
git clone https://github.com/atlasprzetargow/mcp-server.git
cd mcp-server
npm install
npm run build
npm run smoke # runs all tools against production API
# Test locally in Claude Desktop:
# Point the "command" in claude_desktop_config.json to the absolute path of dist/index.js:
# "command": "node", "args": ["/abs/path/to/mcp-server/dist/index.js"]Límites de tasa y uso justo
La API de Atlas Przetargów tiene un límite de tasa por IP (30 req/min para endpoints de LLM, más para los públicos). El servidor MCP reintenta automáticamente las respuestas 429 con retroceso exponencial.
Si alcanzas los límites de tasa con frecuencia (p. ej., en automatizaciones de producción), por favor contáctanos a través de atlasprzetargow.pl/kontakt para obtener acceso de nivel superior.
Licencia
MIT © Atlas Przetargów
Atribución de fuente de datos
Todos los datos de licitación provienen de:
BZP (Biuletyn Zamówień Publicznych) — registro público de la Oficina de Contratación Pública de Polonia
TED (Tenders Electronic Daily) — registro de contratación pública de la UE
Procesado, enriquecido y servido por Atlas Przetargów.
Relacionado
Atlas Przetargów — interfaz web
Model Context Protocol — el estándar
Claude Desktop — cliente de referencia
awesome-mcp-servers — lista de la comunidad
Available Tools
8 toolsget_buyerGet profile of a procuring entity (zamawiający)A
Fetch a profile of a Polish public procuring entity (zamawiający) by its NIP (tax ID). Returns name, location, statistics, recent tenders, and top winning contractors. Use for due diligence on who buys what and from whom.
| Name | Required | Description | Default |
|---|---|---|---|
| nip | Yes | Polish tax ID (NIP) of the procuring entity — 10 digits | |
| include_winning_contractors | No | If true, also fetch the list of contractors that most frequently win this buyer's tenders. Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the return content (name, location, statistics, recent tenders, top winning contractors) and the tool's purpose (due diligence). However, it lacks details on error handling, rate limits, authentication needs, or data freshness, which are important for a tool fetching entity profiles.
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 front-loaded with the core purpose and efficiently uses two sentences: one for the tool's function and return values, and another for its usage context. Every sentence adds value without redundancy, making it appropriately concise and well-structured.
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?
Given the tool's moderate complexity (fetching entity profiles with two parameters) and no output schema, the description provides a good overview of return content and usage context. However, it lacks details on output structure (e.g., format of statistics or tender lists) and behavioral aspects like errors or limits, leaving some gaps for an agent to invoke it correctly without additional context.
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 schema description coverage is 100%, so the schema already fully documents both parameters (nip and include_winning_contractors). The description adds no additional parameter semantics beyond what the schema provides, such as explaining the significance of the NIP or the impact of the boolean flag, so it meets the baseline for high coverage.
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 clearly states the specific action ('Fetch a profile'), the resource ('Polish public procuring entity'), and the key identifier ('by its NIP'). It distinguishes from sibling tools by focusing on buyer profiles rather than statistics, contractors, tenders, or searches.
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 description provides clear context for when to use this tool ('for due diligence on who buys what and from whom'), which implicitly differentiates it from tools like get_contractor or get_tender. However, it does not explicitly state when not to use it or name specific alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_category_statsGet tender statistics for a CPV categoryA
Retrieve aggregate statistics for a CPV category: count, average/median value, average number of offers, average deadline period. Based on historical BZP+TED data. Useful for market sizing and competitive benchmarking.
| Name | Required | Description | Default |
|---|---|---|---|
| cpv | Yes | CPV code or prefix, e.g. '45' (construction), '72' (IT), '45240000-1' | |
| window | No | Statistics window: month=30d, quarter=90d, year=365d. Default: year |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool retrieves aggregate statistics (implying read-only, non-destructive behavior) and specifies the data sources (historical BZP+TED data). However, it lacks details on permissions, rate limits, error handling, or output format, leaving behavioral gaps for a tool with no output 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?
The description is front-loaded with the core purpose, followed by specific metrics and context. Every sentence adds value: the first defines the action and metrics, the second specifies data sources, and the third states use cases. It is efficiently structured with zero wasted words.
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?
Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is partially complete. It covers purpose, data sources, and use cases adequately, but lacks details on output format, error conditions, or behavioral constraints, which are important for a statistical tool with no structured output documentation.
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 schema fully documents both parameters (cpv and window). The description adds no additional parameter semantics beyond what the schema provides, such as examples or constraints. The baseline score of 3 is appropriate as the schema handles the heavy lifting.
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 clearly states the specific verb 'retrieve' and resource 'aggregate statistics for a CPV category', listing concrete metrics (count, average/median value, etc.). It distinguishes from siblings by focusing on statistical aggregation rather than individual entity retrieval (e.g., get_tender, get_buyer) or search operations (e.g., search_cpv).
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 description provides clear context for when to use this tool: 'useful for market sizing and competitive benchmarking' based on 'historical BZP+TED data'. It implies usage for aggregated insights rather than detailed searches, but does not explicitly state when not to use it or name specific alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contractorGet profile of a contractor (wykonawca)A
Fetch a profile of a Polish tender contractor by its NIP. Returns name, location, total wins, total value and top buyers they win tenders from.
| Name | Required | Description | Default |
|---|---|---|---|
| nip | Yes | Polish tax ID (NIP) of the contractor — 10 digits | |
| include_winning_buyers | No | If true, also fetch the list of buyers this contractor most frequently wins tenders from. Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the return data structure (name, location, wins, value, buyers) which is helpful, but doesn't mention error handling, rate limits, authentication needs, or whether this is a read-only operation. The description adds some behavioral context but leaves gaps for a tool with no annotations.
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?
Single sentence efficiently conveys purpose, resource, key parameter, and return data. Every element earns its place with zero wasted words. The structure is front-loaded with the core action and progressively adds details.
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 2-parameter read tool with no annotations and no output schema, the description provides adequate purpose and return data overview but lacks details on error cases, data freshness, or response format. It's minimally viable but could better address the gaps left by missing structured fields.
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 schema already fully documents both parameters. The description mentions NIP as the identifier and implies include_winning_buyers controls buyer data inclusion, but adds no additional semantic context beyond what the schema provides. Baseline 3 is appropriate when schema does the heavy lifting.
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 clearly states the specific action ('Fetch a profile'), resource ('Polish tender contractor'), and key identifying attribute ('by its NIP'). It distinguishes this tool from siblings like get_buyer or get_tender by focusing on contractor profiles rather than buyers, categories, or tenders.
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 description implies usage when needing contractor profile data by NIP, but provides no explicit guidance on when to use this versus alternatives like search_entities or other get_* tools. It mentions what data is returned but doesn't specify prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_province_statsGet tender statistics by province or cityA
Retrieve aggregate tender statistics by Polish province (all 16 voivodeships) or drill down to a specific city (top buyers, top CPV categories). Without arguments returns the full province ranking.
| Name | Required | Description | Default |
|---|---|---|---|
| province | No | Province code like 'PL14'. If omitted, returns totals for ALL provinces. | |
| city | No | If provided, returns top buyers and top CPV categories for this city instead. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the tool's statistical aggregation behavior and the hierarchical drill-down capability (province → city). However, it doesn't mention performance characteristics, data freshness, or potential limitations like result size constraints.
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?
Three tightly constructed sentences with zero waste: first establishes core purpose, second explains parameter hierarchy, third clarifies default behavior. Every sentence earns its place by adding distinct value.
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 statistical tool with good schema coverage, the description provides adequate context about scope and behavior. The main gap is lack of output format information (no output schema), but the description compensates somewhat by specifying what statistics are returned (ranking, top buyers, top CPV categories).
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 schema already documents both parameters thoroughly. The description adds marginal value by explaining the hierarchical relationship between province and city parameters and clarifying the default behavior when no arguments are provided.
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 clearly states the verb 'retrieve' and resource 'aggregate tender statistics', specifies geographic scope (Polish provinces/cities), and distinguishes from siblings by focusing on statistical aggregation rather than individual entity lookup or search operations.
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 description provides clear context about when to use different parameter combinations (no arguments for full ranking, province for province-level, city for city-level details). However, it doesn't explicitly state when NOT to use this tool versus alternatives like get_category_stats or search_tenders.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tenderGet full details of a public tenderA
Retrieve detailed information about a specific Polish public tender by its ID. Returns buyer, location, deadlines, estimated value, CPV codes, contractor (if awarded), notice type and a content excerpt. Optionally includes AI-generated summary points (requires ATLAS_API_KEY).
| Name | Required | Description | Default |
|---|---|---|---|
| tender_id | Yes | Tender ID in BZP format '2026/BZP 00202613' or dashed '2026-BZP-00202613'. TED IDs are also supported. | |
| include_ai_summary | No | If true and ATLAS_API_KEY is configured, attach AI-generated summary of the tender notice. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes what the tool returns (buyer, location, deadlines, etc.), mentions optional AI-generated summaries, and notes the ATLAS_API_KEY requirement for that feature. However, it doesn't address error conditions, rate limits, or authentication needs beyond the API key mention.
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 efficiently structured in two sentences: the first states the core purpose and return data, the second covers the optional feature. Every element serves a purpose with zero wasted words, making it easy to parse.
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 tool with no annotations and no output schema, the description does a good job explaining what information is returned. It could be more complete by describing the response format or structure, but it adequately covers the tool's purpose and behavior given the context.
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?
With 100% schema description coverage, the schema already documents both parameters thoroughly. The description adds marginal value by mentioning the AI-generated summary feature in context, but doesn't provide additional parameter semantics beyond what's in the schema descriptions.
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 clearly states the specific action ('Retrieve detailed information'), resource ('Polish public tender'), and scope ('by its ID'). It distinguishes from siblings like get_buyer or search_tenders by focusing on full details for a single tender rather than entity-specific data or search functionality.
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 description provides clear context for when to use this tool (to get full details of a specific tender by ID). It doesn't explicitly mention when not to use it or name alternatives, but the context implies this is for detailed retrieval rather than searching or getting partial data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_cpvSearch CPV codes by keywordA
Look up CPV (Common Procurement Vocabulary — EU procurement category) codes by Polish keyword. Use this before search_tenders to find the right CPV filter. Returns code, name, division, and historical tender count.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search term for CPV (Common Procurement Vocabulary) codes — keyword in Polish, e.g. 'komputer', 'budowa drogi', 'usługi prawne' | |
| limit | No | Max results (1-30, default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the return format ('Returns code, name, division, and historical tender count') and implies a read-only lookup operation, though it doesn't mention potential limitations like rate limits or authentication needs.
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 efficiently structured in three sentences: purpose, usage guidance, and return values, with zero wasted words. It's front-loaded with the core functionality and appropriately sized for the tool's complexity.
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?
Given the tool's moderate complexity, no annotations, and no output schema, the description is largely complete. It covers purpose, usage, and return format, though it could benefit from mentioning any error conditions or the format of the historical tender count.
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 schema already documents both parameters thoroughly. The description adds minimal value beyond the schema by reinforcing the Polish keyword requirement and the purpose of finding CPV filters, but doesn't provide additional syntax or format details.
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 clearly states the specific action ('Look up CPV codes'), resource ('CPV codes'), and scope ('by Polish keyword'), distinguishing it from siblings like search_tenders by focusing on code lookup rather than tender search. It explicitly mentions the EU procurement category context.
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 description provides explicit guidance on when to use this tool ('Use this before search_tenders to find the right CPV filter') and distinguishes it from the sibling search_tenders tool, offering clear context for its application in a workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_entitiesSearch procuring entities or contractors by nameA
Search Polish public procurement entities (buyers / zamawiający) or contractors (wykonawcy) by name. Returns a list with NIP, location and volume. Useful to find the NIP for get_buyer / get_contractor tools.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Name (or fragment) of the entity to search, e.g. 'warszawa', 'gddkia', 'budimex' | |
| type | No | Limit to buyers (zamawiający), contractors (wykonawcy), or both. Default: all | |
| limit | No | Max results (1-30, default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the return format ('list with NIP, location and volume'), which is helpful, but lacks details on behavioral traits like pagination, rate limits, error handling, or authentication needs. It's adequate but has gaps.
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, zero waste. The first sentence states the purpose and output, the second provides usage guidance. It's front-loaded with essential information and appropriately sized.
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?
Given no annotations and no output schema, the description does well by explaining the return format and usage context. However, it could improve by mentioning potential limitations (e.g., search scope, data freshness) or error cases. It's mostly complete but not exhaustive.
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 schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by mentioning 'name (or fragment)' for the query and hinting at the output fields, but doesn't provide additional syntax or format details. Baseline 3 is 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 clearly states the verb ('Search') and resource ('Polish public procurement entities or contractors'), specifies the search criteria ('by name'), and distinguishes it from siblings by explaining its role in finding NIPs for get_buyer/get_contractor tools. It's specific and avoids tautology.
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 explicitly states when to use this tool ('Useful to find the NIP for get_buyer / get_contractor tools'), providing clear guidance on its purpose in the workflow and distinguishing it from sibling tools like get_buyer or get_contractor that require NIPs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tendersSearch Polish public tendersA
Search public procurement tenders from BZP (Biuletyn Zamówień Publicznych) and TED (Tenders Electronic Daily) via Atlas Przetargów. Returns a list with titles, buyers, locations, CPV codes, estimated values and deadlines. Use for queries like 'aktywne przetargi budowlane w Warszawie', 'zamówienia IT powyżej 500k PLN', 'co kupuje ZUS'.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Full-text search query (Polish terms work best), e.g. 'budowa drogi', 'komputer' | |
| cpv | No | CPV code prefix or full code. Examples: '45' (roboty budowlane), '72' (IT services), '45240000-1' | |
| city | No | City name, e.g. 'Warszawa', 'Kraków' | |
| province | No | Polish province code: PL02 dolnośląskie, PL04 kujawsko-pomorskie, PL06 lubelskie, PL08 lubuskie, PL10 łódzkie, PL12 małopolskie, PL14 mazowieckie, PL16 opolskie, PL18 podkarpackie, PL20 podlaskie, PL22 pomorskie, PL24 śląskie, PL26 świętokrzyskie, PL28 warmińsko-mazurskie, PL30 wielkopolskie, PL32 zachodniopomorskie | |
| buyerNip | No | NIP (tax ID) of the procuring entity (zamawiający) | |
| noticeType | No | ContractNotice = active tender; TenderResultNotice/ContractAwardNotice = results | |
| orderKind | No | Kind of procurement: works (roboty), supplies (dostawy), services (usługi) | |
| dateFrom | No | ISO date YYYY-MM-DD — filter publications from | |
| dateTo | No | ISO date YYYY-MM-DD — filter publications to | |
| valueMin | No | Minimum estimated value in PLN | |
| valueMax | No | Maximum estimated value in PLN | |
| sort | No | Sort order (default: newest) | |
| limit | No | Max results per page (1-50, default 20) | |
| page | No | Page number (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the return format (list with titles, buyers, locations, etc.) and suggests Polish terms work best, but doesn't mention rate limits, authentication requirements, pagination behavior beyond parameters, or error handling.
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 well-structured sentences: first states purpose and return format, second provides usage examples. Every word earns its place with zero waste, making it highly efficient and front-loaded.
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 complex 14-parameter search tool with no annotations and no output schema, the description provides good purpose clarity and usage examples. However, it could better address behavioral aspects like result limitations, authentication needs, or error scenarios given the tool's complexity.
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 schema already documents all 14 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema, maintaining the baseline score of 3.
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 clearly states the tool searches public procurement tenders from specific sources (BZP and TED via Atlas Przetargów) and returns a list with specific fields. It distinguishes from siblings by focusing on search functionality rather than getting specific entities or statistics.
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 description explicitly provides when to use this tool with concrete query examples ('aktywne przetargi budowlane w Warszawie', 'zamówienia IT powyżej 500k PLN', 'co kupuje ZUS'), giving clear context for appropriate usage scenarios.
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.
8 tool updates
v0.1.0- First observed
get_buyer - First observed
get_category_stats - First observed
get_contractor - First observed
get_province_stats - First observed
get_tender - First observed
search_cpv - First observed
search_entities - First observed
search_tenders
TDQS
Scored across 8 tools
Every tool has a clearly distinct purpose with no ambiguity. For example, get_buyer retrieves buyer profiles, get_tender fetches specific tender details, and search_tenders performs broader searches, each targeting different resources and actions. The descriptions explicitly differentiate their functions, making misselection unlikely.
All tool names follow a consistent verb_noun pattern, such as get_buyer, search_tenders, and get_category_stats. This uniformity enhances readability and predictability, with no deviations in naming conventions across the set.
With 8 tools, the count is well-scoped for the server's purpose of Polish public procurement analysis. Each tool earns its place by covering distinct aspects like entity profiles, tender searches, and statistical data, avoiding both thinness and overload.
The tool set provides complete coverage for the domain, including CRUD-like operations such as fetching entities and tenders, searching with filters, and retrieving statistical insights. There are no obvious gaps, as it supports due diligence, market analysis, and competitive benchmarking workflows.
Maintenance
Related MCP Connectors
Polish public tenders (przetargi): hybrid search, AI SWZ summaries, buyers, contractors, CPV stats.
141Polish public procurement for AI agents: BZP and TED tenders, awards, buyers and contractors.
91EU tenders and grant calls, matched to your company and qualified, inside the AI you already use
Search EU public tenders across TED and 8 national portals. Monitor, match, and analyse procurement.
Related MCP Servers
- AlicenseAqualityBmaintenanceExposes French and EU public procurement data (BOAMP + TED) as MCP tools for AI agents, enabling search for tenders, awards, and winner intelligence via typed filters.4226 PyPIMIT
- AlicenseAqualityCmaintenanceEnables users to search and analyze Korean public procurement IT bid announcements, including full bid opening results, through natural language conversation with Claude.81MIT
- AlicenseNot gradedqualityCmaintenanceFind, analyze, and score Polish public tenders (BZP): parsed requirements, deadlines, certificates, and bid-fit scoring against your company profile.6 npmMIT
- FlicenseAqualityCmaintenanceEnables searching and analyzing Polish public procurement tenders from BZP and TED, including filtering, tender details and timelines, offers and contract values, buyer/contractor profiles, CPV code lookup, and regional statistics, with optional AI-summary endpoints.121-