Skip to main content
Glama
atlasprzetargow

Atlas Przetargów

Atlas Przetargów — MCP 서버

npm version License: MIT

폴란드 공공 조달 데이터를 위한 최초의 MCP 서버입니다. Claude Desktop, Cursor, Continue, Cline 또는 모든 MCP 호환 AI 클라이언트에서 80만 건 이상의 폴란드 공공 입찰(BZP + TED), 발주처/낙찰자 프로필 및 카테고리 통계를 직접 조회하세요.

Atlas Przetargów — 폴란드 공공 조달 검색 및 분석 플랫폼에서 제공합니다.


이것은 무엇인가요?

Model Context Protocol (MCP)를 사용하면 AI 어시스턴트가 외부 도구 및 데이터에 연결할 수 있습니다. 이 서버는 Atlas Przetargów API를 모든 MCP 클라이언트에 노출하여 AI 어시스턴트가 다음을 수행할 수 있도록 합니다:

  • 폴란드 공공 입찰 검색: 키워드, CPV 카테고리, 위치, 금액, 마감일별 검색

  • 입찰 상세 정보 조회: 발주처, CPV 코드, 추정 금액, 마감일, AI 생성 요약(선택 사항) 포함

  • 발주처(zamawiający) 프로필 조회: NIP별 조회 — 계약을 가장 자주 수주하는 업체 포함

  • 낙찰자(wykonawca) 프로필 조회: NIP별 조회 — 낙찰받은 발주처 포함

  • 시장 통계 분석: CPV 카테고리별 통계(건수, 중앙값, 평균 입찰 수, 평균 마감일)

  • 지역별 비교: 주(province) 및 도시별 조달 규모 비교

  • 용어집 액세스: 90개 이상의 폴란드 공공 조달 용어

  • 가이드 워크플로우 사용: 입찰 분석, 발주처 실사 및 기회 발견을 위한 프롬프트


Related MCP server: narajangteo-searcher

빠른 시작 (Claude Desktop)

옵션 A — npx 사용 (권장, 설치 불필요)

Claude Desktop 설정 파일을 편집하세요:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

추가:

{
  "mcpServers": {
    "atlas-przetargow": {
      "command": "npx",
      "args": ["-y", "@atlasprzetargow/mcp"]
    }
  }
}

Claude Desktop을 재시작하세요. 도구 패널에 Atlas 도구가 나타납니다.

옵션 B — 전역 설치

npm install -g @atlasprzetargow/mcp

그런 다음 claude_desktop_config.json에 추가:

{
  "mcpServers": {
    "atlas-przetargow": {
      "command": "atlas-przetargow-mcp"
    }
  }
}

사용 예시 (Claude Desktop)

"바르샤바에서 예산 50만~500만 PLN 규모의 활성 건설 입찰을 찾고 상위 5개를 보여줘"

"NIP 5252248481에 대해 buyer-due-diligence 프롬프트를 사용해" (→ 바르샤바 시를 발주처로 실사 수행)

"작년 폴란드 IT 입찰의 중앙값은 얼마인가요?"

"입찰 2026/BZP 00202613을 조회하고 주요 조건과 위험 요소를 분석해줘"

"의료 장비에 대한 CPV 코드를 찾고 활성 입찰을 보여줘"

"GDDKiA(국가도로청)로부터 가장 자주 계약을 수주하는 업체는 어디인가요?"


도구

도구

설명

search_tenders

필터(쿼리, CPV, 도시, 주, 금액 범위, 날짜, 정렬)를 사용하여 입찰 검색

get_tender

ID별 입찰 상세 정보(AI 요약 포함 가능)

get_buyer

NIP별 발주처 프로필 + 상위 낙찰자

get_contractor

NIP별 낙찰자 프로필 + 낙찰받은 상위 발주처

search_entities

이름으로 발주처/낙찰자 찾기 (다른 도구에서 사용할 NIP 반환)

get_category_stats

CPV 카테고리별 집계 통계(건수, 중앙값, 평균 입찰 수, 평균 마감일)

get_province_stats

주 또는 도시별 통계(상위 발주처, 상위 CPV)

search_cpv

폴란드어 키워드로 CPV 코드 조회

리소스

URI

설명

atlas://glossary

90개 이상의 폴란드 공공 조달 용어 색인

atlas://glossary/{slug}

특정 용어의 전체 정의

atlas://knowledge

장문 지식 베이스 기사 색인

atlas://knowledge/{slug}

전체 지식 베이스 기사

프롬프트

프롬프트

설명

analyze-tender

입찰 공고에 대한 종합 분석: 범위, 금액, 마감일, 위험 요소, 권장 사항

buyer-due-diligence

발주처 실사: 구매 프로필, 계약자 네트워크, 위험 신호

find-opportunities

CPV + 위치 + 금액 프로필에 맞는 활성 입찰 기회 찾기


설정 (환경 변수)

모두 선택 사항입니다. 기본값은 안전합니다.

변수

기본값

설명

ATLAS_API_BASE

https://atlasprzetargow.pl

API 루트. 스테이징 또는 자체 호스팅 Atlas에 유용

ATLAS_API_KEY

(없음)

/api/llm/* 엔드포인트(AI 요약)를 위한 선택적 키. 없어도 전체 공개 데이터로 서버 작동

ATLAS_TIMEOUT_MS

20000

요청 시간 초과

ATLAS_MAX_RETRIES

2

429 / 5xx / 시간 초과에 대한 재시도 횟수

MCP 클라이언트 설정을 통해 전달하세요:

{
  "mcpServers": {
    "atlas-przetargow": {
      "command": "npx",
      "args": ["-y", "@atlasprzetargow/mcp"],
      "env": {
        "ATLAS_API_KEY": "your-optional-key-here"
      }
    }
  }
}

폴란드 공공 조달 — 빠른 참조

  • BZP (Biuletyn Zamówień Publicznych) — 폴란드 국가 입찰 등록소. ID 형식 예: 2026/BZP 00202613.

  • TED (Tenders Electronic Daily) — EU 전체 입찰 등록소, EU 임계값 이상의 입찰에 필수.

  • CPV (Common Procurement Vocabulary) — 8자리 카테고리 코드, 예: 45000000 = 건설, 72000000 = IT.

  • NIP — 폴란드 10자리 세금 ID, 모든 발주처/낙찰자 식별에 사용.

  • 주 코드: PL02 돌노실롱스크 · PL04 쿠야비포모제 · PL06 루블린 · PL08 루부시 · PL10 우치 · PL12 마워폴스카 · PL14 마조프셰 · PL16 오폴레 · PL18 포드카르파츠키에 · PL20 포들라스키에 · PL22 포모제 · PL24 실롱스크 · PL26 시비엥토크시스키에 · PL28 바르미아마주리 · PL30 비엘코폴스카 · PL32 서포모제

  • 공고 유형:

    • ContractNotice — 활성 입찰, 입찰 참여 가능

    • TenderResultNotice / ContractAwardNotice — 결과 (낙찰자, 낙찰 금액)

    • CompetitionNotice, ConcessionNotice — 특수 공고


개발

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"]

속도 제한 및 공정 사용

Atlas Przetargów API에는 IP당 속도 제한이 있습니다(LLM 엔드포인트는 분당 30회 요청, 공개 엔드포인트는 더 높음). MCP 서버는 429 응답을 받으면 지수 백오프(exponential backoff)를 사용하여 자동으로 재시도합니다.

속도 제한에 자주 도달하는 경우(예: 프로덕션 자동화), atlasprzetargow.pl/kontakt를 통해 더 높은 등급의 액세스를 문의하십시오.


라이선스

MIT © Atlas Przetargów

데이터 출처

모든 입찰 데이터 출처:

  • BZP (Biuletyn Zamówień Publicznych) — 폴란드 공공 조달청의 공개 등록소

  • TED (Tenders Electronic Daily) — EU 공공 조달 등록소

Atlas Przetargów에서 처리, 보강 및 제공합니다.


관련 링크

Available Tools

8 tools
get_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nipYesPolish tax ID (NIP) of the procuring entity — 10 digits
include_winning_contractorsNoIf true, also fetch the list of contractors that most frequently win this buyer's tenders. Default: true.

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cpvYesCPV code or prefix, e.g. '45' (construction), '72' (IT), '45240000-1'
windowNoStatistics window: month=30d, quarter=90d, year=365d. Default: year

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nipYesPolish tax ID (NIP) of the contractor — 10 digits
include_winning_buyersNoIf true, also fetch the list of buyers this contractor most frequently wins tenders from. Default: true.

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
provinceNoProvince code like 'PL14'. If omitted, returns totals for ALL provinces.
cityNoIf provided, returns top buyers and top CPV categories for this city instead.

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
tender_idYesTender ID in BZP format '2026/BZP 00202613' or dashed '2026-BZP-00202613'. TED IDs are also supported.
include_ai_summaryNoIf true and ATLAS_API_KEY is configured, attach AI-generated summary of the tender notice. Default: false.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch term for CPV (Common Procurement Vocabulary) codes — keyword in Polish, e.g. 'komputer', 'budowa drogi', 'usługi prawne'
limitNoMax results (1-30, default 10)

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesName (or fragment) of the entity to search, e.g. 'warszawa', 'gddkia', 'budimex'
typeNoLimit to buyers (zamawiający), contractors (wykonawcy), or both. Default: all
limitNoMax results (1-30, default 10)

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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'.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoFull-text search query (Polish terms work best), e.g. 'budowa drogi', 'komputer'
cpvNoCPV code prefix or full code. Examples: '45' (roboty budowlane), '72' (IT services), '45240000-1'
cityNoCity name, e.g. 'Warszawa', 'Kraków'
provinceNoPolish 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
buyerNipNoNIP (tax ID) of the procuring entity (zamawiający)
noticeTypeNoContractNotice = active tender; TenderResultNotice/ContractAwardNotice = results
orderKindNoKind of procurement: works (roboty), supplies (dostawy), services (usługi)
dateFromNoISO date YYYY-MM-DD — filter publications from
dateToNoISO date YYYY-MM-DD — filter publications to
valueMinNoMinimum estimated value in PLN
valueMaxNoMaximum estimated value in PLN
sortNoSort order (default: newest)
limitNoMax results per page (1-50, default 20)
pageNoPage number (default 1)

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 8 tool updatesv0.1.0
    • First observedget_buyer
    • First observedget_category_stats
    • First observedget_contractor
    • First observedget_province_stats
    • First observedget_tender
    • First observedsearch_cpv
    • First observedsearch_entities
    • First observedsearch_tenders

TDQS

A4.2/5.0

Scored across 8 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness5/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Exposes 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.
    4
    226 PyPI
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables users to search and analyze Korean public procurement IT bid announcements, including full bid opening results, through natural language conversation with Claude.
    8
    1
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables 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.
    12
    1
    -