Germany public procurement MCP — official German government tenders (keyless). Wraps the Datenservice Öffentliche Beschaffung open-data feed published by the German federal Bekanntmachungsservice at https://oeffentlichevergabe.de.
Single tool 'germany_search_tenders' has a strong, action-verb name and comprehensive description (280 chars, within baseline 194±). Input schema is well-structured with 4 parameters, all typed and described. However, output schema is not formally documented in the tool definition, only inferred from code comments. Parameter 'limit' accepts both number and string types (unusual), and date validation logic is implicit rather than schema-enforced. Error handling returns structured objects but lacks recovery guidance. No tool annotations (readOnlyHint, etc.) present.
Search official GERMAN government public-procurement tenders (Öffentliche Vergabe / Ausschreibungen) from the federal Bekanntmachungsservice open-data feed (oeffentlichevergabe.de), Open Contracting Data Standard (OCDS). Returns each notice shaped: ocid, title, buyer/Vergabestelle, contract value in EUR, procurement category, CPV code, procurement method, submission deadline, and publish date. Filter by publish-date range and/or a keyword (matched against title, description, buyer, and CPV description — German text). Defaults to the most recent days if no dates given. Data covers Germany only.
Output schema not formally documented. Tool description and code comments describe the response shape, but no explicit outputSchema field in tool definition. LLMs cannot reliably infer downstream field availability.
Parameter 'limit' accepts both 'number' and 'string' types. This is ambiguous, LLMs may pass '25' as a string, requiring runtime coercion. Should be number only with min/max constraints in schema.
Date format validation (YYYY-MM-DD) is documented in descriptions but not enforced via JSON Schema format constraint. Should use 'format: date' to enable client-side validation.
No tool annotations present. Tool is read-only (no state mutation), but lacks readOnlyHint annotation. This prevents clients from optimizing caching and retry logic.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Error responses lack recovery guidance. When 'date_from > date_to', response is { error: '...' } with no suggestion to swap or retry. Should guide LLM on corrective action.