# Przetargowy Janusz — Polish public tenders

> Polish public tenders (przetargi): hybrid search, AI SWZ summaries, buyers, contractors, CPV stats.

- name: pl.przetargowyjanusz/tenders
- version: 1.1.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 86/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/pl.przetargowyjanusz%2Ftenders
- tools: https://api.protogrid.dev/v1/servers/pl.przetargowyjanusz%2Ftenders/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "tenders": {
      "type": "http",
      "url": "https://przetargowyjanusz.pl/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-12d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 86/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 14 of 14 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,305 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 19 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 14, about 2,305 tokens to load them all
- tool set hash: 4f6e2d2900d83e27266cf5fc387ef43d
- tools last changed: 2026-10-19T12:12:12.484Z
- badge: [![protogrid quality](https://protogrid.dev/badge/pl.przetargowyjanusz/tenders.svg)](https://protogrid.dev/servers/pl.przetargowyjanusz/tenders)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-19 `search_my_tenders` changed (title, annotations)
- 2026-10-19 `list_my_alerts` changed (title, annotations)
- 2026-10-19 `list_my_tenders` changed (title, annotations)
- 2026-10-19 `cpv_labels` changed (title, annotations)
- 2026-10-19 `cpv_tree` changed (title, annotations)
- 2026-10-19 `cpv_search` changed (title, annotations)
- 2026-10-19 `cpv_stats` changed (title, annotations)
- 2026-10-19 `get_contractor` changed (title, annotations)
- 2026-10-19 `get_buyer` changed (title, annotations)
- 2026-10-19 `search_entities` changed (title, annotations)

Full history: https://api.protogrid.dev/v1/servers/pl.przetargowyjanusz%2Ftenders/changes

## Remotes

- https://przetargowyjanusz.pl/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (14)

- `cpv_labels`: Resolve CPV codes to their Polish labels. Pass an array of full codes (e.g. ['45000000-7']).
- `cpv_search`: Resolve free-text to CPV codes (the EU Common Procurement Vocabulary used to classify tenders). Returns matching codes with Polish labels. Use the codes with list_tenders filter='category' (division = first 8 digits).
- `cpv_stats`: Monthly market statistics for one CPV category, as on its public statistics page: awards with a price, median and p10/p90 award value, average offers per award, distinct winners, top winners, biggest awards and the regional split. Available for these 8-digit codes: 45000000, 33000000, 71000000, 90000000, 34000000, 39000000, 55000000, 30000000, 48000000, 79000000, 50000000, 09000000, 38000000, 15000000, 80000000, 72000000, 85000000, 60000000, 42000000, 31000000, 32000000, 44000000.
- `cpv_tree`: Walk the CPV hierarchy. Omit `parent` for top-level divisions; pass a code (e.g. '45000000-7') to list its children. Each node flags whether it has children.
- `get_buyer`: Profile of one contracting authority (zamawiający) by slug (from search_entities or a tender's authority): identity (NIP, REGON, KRS, region), counts, its active tenders, recent awards with winners, top contractors, procurement plan positions and recent contracts — or, on older pages, its tenders and public finance (municipal budget, NFZ contracts, investments). Same data as its public page.
- `get_contractor`: Profile of one contractor (wykonawca — company or sole trader) by slug (from search_entities or a buyer's results): registry data (REGON, legal form, VAT status, PKD, debtor-register flags), wins and offers, recent wins and losses, its main buyers, rivals it meets, and recent public contracts. Same data as its public page.
- `get_tender`: Fetch full detail for one tender by its public slug (from search_tenders/list_tenders results): metadata, the 12-section AI SWZ summary, the OPZ scope brief, full award results (winner, value, offer price band, rejected offers, whether the cheapest offer won), the cancelled predecessor it re-issues (with that procedure's offer band — a price signal), the EU project funding it, and the bidders' Q&A. Returns not-found for non-public tenders.
- `list_facets`: List the browsable facets of the active tender set: CPV categories, voivodeships (regions), and cities, each with a count and the slug/code to pass to list_tenders. Call this to discover valid filter values.
- `list_my_alerts`: List the signed-in user's saved alert profiles (saved searches / notification rules): query, CPV codes, regions, budget band, and delivery settings. Requires OAuth authentication.
- `list_my_tenders`: List the tenders in the signed-in user's pipeline ('Moje przetargi'), most recently updated first, with each one's pipeline status and public URL. Requires OAuth authentication.
- `list_tenders`: Browse tenders without a text query. `filter` selects the axis: 'all' (every active tender, or archived when archived=true), 'category' (CPV division code from list_facets), 'region' (voivodeship slug from list_facets), or 'city' (city slug from list_facets). Use list_facets first to get valid values.
- `search_entities`: Find contracting authorities (kind='buyer', zamawiający) or contractors (kind='contractor', wykonawcy — companies and sole traders) by name or NIP. Returns each match with its slug and public URL; pass the slug to get_buyer / get_contractor.
- `search_my_tenders`: Plan-gated hybrid search over active tenders for the signed-in user's organization (the same search as the in-app command palette). Requires OAuth authentication and an active plan.
- `search_tenders`: Semantic search over active Polish public tenders (przetargi) by meaning, with optional filters. Ranks by relevance (hybrid vector + keyword). Returns paginated tender cards, each with a public URL. Only publicly-servable tenders with an AI summary are returned. `mode` is 'semantic', or 'lexical' when the embedding service is temporarily unavailable.
