Skip to main content
Glama

Overfit — German tenders & procurement law

Ausschreibungen filtern und auflisten

list_tenders
Read-onlyIdempotent

Lists German and EU public tender notices by exact filters (status, Landkreis, CPV prefix, sector, contracting authority, deadline within 14 days and more), with optional keyword search (q, full text, not by meaning) and sorting, e.g. newest publications first. Intended for structured listings such as all open IT tenders (cpv_prefix=72), all tenders in a Landkreis with a deadline in the next 14 days, or the latest publications. Search by topic or meaning is done by search_tenders. Data: 190,000+ notices (30,000+ open), new notices daily (federal portal every 30 minutes). Each hit has id (the numeric notice_id, input of get_tender_documents) and uid (input of get_tender). The same tender published on several portals appears once per portal with different uids; hits with the same title, contracting authority and deadline are one tender. Counting: the result carries total (number of all matching notices, so counting needs no paging) and, on the first page when at most 500 notices match, by_bundesland (matching notices per Bundesland). Limits: offset up to 2000; 40 requests per 10 minutes and 300 per day per IP.

Example user questions: "Liste alle offenen Ausschreibungen mit Frist in den nächsten 14 Tagen"; "Zeig alle Vergaben aus dem Landkreis München"; "Welche Ausschreibungen wurden zuletzt veröffentlicht?"; "Alle offenen IT-Vergaben (CPV 72) sortiert nach Veröffentlichungsdatum"; "Liste alle Bekanntmachungen der Bundesagentur für Arbeit"

Input Schema

NameRequiredDescriptionDefault
qNoKeyword fulltext search over scope/purpose text and AI summaries. Not semantic; matching by meaning is done by search_tenders.
bboxNoBounding-box geo filter: 'lat_min,lat_max,lon_min,lon_max'.
top_kNoPage size (1–2000). Max 50 per call via MCP.
offsetNoPagination offset, up to 2000 (403 above). Max 500 per call via MCP.
sectorNoFacet sector value as returned by /api/options/sectors, e.g. 'Bauleistung'.
sourceNoRestrict to a specific source portal. list_tender_portals returns current counts per portal.
statusNoNotice status filter. Default: 'open' (also excludes expired deadlines).open
urgentNoOnly notices with submission_deadline within the next 14 days.
order_byNo'score' requires q. Default: deadline_asc (soonest deadline first, nulls last).deadline_asc
landkreisNoExact Landkreis/city name as returned by /api/options/landkreise, e.g. 'Kreisfreie Stadt München', 'Berlin, Stadt'.
cpv_prefixNoCPV code prefix (leading digits), e.g. '72' for all IT services, '45' for construction. Matches any CPV code starting with this string.
legal_basisNoLegal basis code, e.g. 'vgv', 'UVgO', 'sektvo', 'VOB'. See /api/options/legal-bases for full list.
notice_typeNoEU notice form type.
authority_idNoNumeric authority ID from /api/options/authorities.
include_deadNoInclude notices with dead/soft_dead portal URL.
assistant_readyNotrue = only notices with document assistant available.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered. The description still adds genuine operational context beyond them: rate limits (40 per 10 min, 300/day per IP), offset cap of 2000, cross-portal dedup semantics (same tender appears once per portal with different uids), and the `total`/`by_bundesland` counting behavior including the 500-notice threshold for the aggregation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then usage, then data scale, then identifiers, then limits. The trailing sample questions are somewhat redundant with the earlier filtered-listing examples, so it is not perfectly lean, but nearly every sentence carries operational value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-parameter, zero-required-parameter read tool with no output schema, the description covers everything an agent needs: data volume (190k notices, 30k open), refresh cadence, paging/limit ceilings, aggregation fields, dedup rules, and how the returned ids chain into sibling tools.

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 16 parameters; baseline is 3. The description reinforces a few key ones (q is full text not semantic, cpv_prefix=72 for IT) but largely repeats schema content. Its one real addition is the cross-tool linkage — `id` feeds get_tender_documents and `uid` feeds get_tender — which is useful but does not extend to the majority of parameters.

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?

Opens with a specific verb and resource ('Lists German and EU public tender notices') and immediately names the filter dimensions that define the tool. It explicitly draws the line against search_tenders ('Search by topic or meaning is done by search_tenders'), so an agent can distinguish the two sibling tools without reading the schema.

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?

States the intended use case ('structured listings') and names the alternative plus the condition that selects it (semantic/topic search → search_tenders). Concrete routing examples (cpv_prefix=72, Landkreis + 14-day deadline, newest publications) plus sample user questions make the invocation conditions unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources