public-tenders-es-eu
Öffentliche Ausschreibungen ES/EU
Normalisierte Suche über öffentliche Ausschreibungen, die auf TED (Tenders Electronic Daily, der offiziellen EU-Plattform für Vergabebekanntmachungen) veröffentlicht werden – Abgedeckt werden Spanien und der Rest der EU. NEXUS-Kandidat #16 – manueller Build, nicht FORGE-generiert, dasselbe Muster manueller Cloud-Run-Assets wie die Kandidaten #3/#4/#6/#8/#9/#13.
POST /search-public-tenders {"country": "ESP", "keyword": null, "cpv_prefix": null, "days_back": 30, "limit": 20}-- $0.01/Aufruf.MCP-Tool
search_public_tendersunter/mcp, gleiche Parameter – derzeit kostenlos, siehe „Bekannte Einschränkungen“.GET /health,GET /.well-known/agent-card.json,GET /openapi.json(enthältx-payment-info),GET /.well-known/402index-verify.txt(Verifikationsdatei für die 402index-Anspruchsprüfung).
Quelle: vom ursprünglichen Briefing gedreht, mit ausdrücklicher Freigabe (2026-08-23)
Das Aufgaben-Briefing nannte contrataciondelsectorpublico.gob.es/sindicacion/sindicacion_643/ (den spanischen nationalen PLACSP-ATOM-Sindikationsfeed) als „already grounded aus der vorherigen Sitzung“. Zu Beginn dieser Sitzung live über zwei unabhängige Abrufpfade verifiziert (curl, WebFetch, mit und ohne Browser-User-Agent): 403 Forbidden, und das eigene robots.txt der Domain ist für die gesamte Site Disallow: / – eine deklarierte, seitenweite Sperre, keine Ratenbegrenzung. Das würde sehr wahrscheinlich auch Cloud Run blockieren (eine Rechenzentrums-IP-Range, das übliche Ziel dieser Art von WAF-Regeln). Dem Nutzer wurde das gemeldet, bevor Code geschrieben wurde (nicht stillschweigend ersetzt) – der Nutzer entschied sich für den Pivot auf TED.
TED (Tenders Electronic Daily, api.ted.europa.eu) ist die eigene offizielle Such-API für öffentliche Vergabebekanntmachungen des EU-Amts für Veröffentlichungen – kostenlos, ohne Key, ohne dokumentierte Authentifizierung. In dieser Sitzung live und feldweise bestätigt (eine Drittanbieter-README hatte die Abfrage-Feldnamen zunächst falsch angegeben – z. B. wurde country-buyer behauptet, während die echte API nur buyer-country akzeptiert – daher wurde jedes Feld/Operationszeichen unten gegen die Antworten der echten API verifiziert, nicht aus zweiter Hand übernommen):
POST https://api.ted.europa.eu/v3/notices/searchmit einem JSON-Body ausquery(Expert-Search-String),fields(Array der eForms-Feldnamen, die zurückgegeben werden sollen),limit,scope("ACTIVE"oder"ALL").Abfragefelder live bestätigt:
publication-date>=YYYYMMDD(8-stellig, ohne Bindestriche),buyer-country=ESP(ISO-3166 alpha-3),FT~"phrase"(Volltext),AND,ORDER BYpublication-date DESC.Ausgabefelder live bestätigt:
publication-number,notice-title(mehrsprachiges Wörterbuch, Schlüssel z. B.spa/eng),buyer-name(mehrsprachiges Wörterbuch aus Listen),buyer-country,publication-date,classification-cpv(Liste der CPV-Codes),total-matching-notices(nicht bei jedem Bekanntmachungstyp vorhanden – z. B. haben Bekanntmachungen von Qualifikationssystemen keinen; das ist normal, kein Fehler),notice-type,links(pro Sprachehtml/pdf/xml-Detail-URLs).Echter Query getestet:
buyer-country=ESPallein ergab zum Zeitpunkt dieser Prüfung 26.314 Bekanntmachungen im BereichACTIVE; eine Kombination auspublication-date+buyer-countryergab 1.058 in einer 8-Tage-Fenster – echte, aktuelle Datenmenge, kein veralteter/leerer Endpunkt.
TED deckt bereits Spanien ab (jede Ausschreibung über der EU-Vergabeschwelle erscheint mit buyer-country=ESP) sowie den Rest der EU, also passt es mindestens so gut zum „España/UE“-Rahmen des ursprünglichen Briefings wie der blockierte nationale Unterschwellen-Feed – vermutlich besser, da es konstruktionsgemäß EU-weit ist und nicht blockiert. Umfangabweichung gegenüber der blockierten Quelle: TED enthält nur Bekanntmachungen über der EU-Vergabeschwelle (eine echte, nicht-triviale Hürde – Spaniens eigene Bekanntmachungen unterhalb der Schwelle, die allein der nationale Alvin register-Feed geliefert hätte, sind NICHT in TED enthalten). Dieses Asset erhebt nicht den Anspruch, diese abzudecken; total_matching_notices und das Feld source: "TED" in jedem Ergebnis machen die tatsächliche Abdeckung für einen Abrufer explizit, nicht durchsetzen, dass sie breiter wäre.
Related MCP server: @pipeworx/eu-funding-tenders
Zustand (db_constraint-Ausnahme)
Jedes verwandte manuelle Asset (url-metadata-api, agent-verification-api, document-conversion-api, new-x482-listings-feed, onchain-activity-index, x402-receipt-verifier) ist vollständig zustandslos – jeder Aufruf trifft seinen Upstream frisch, keine NEXUS-eigene Tabelle über das übliche Telemetrie-Trio traffic_events/revenue_events/mcp_call_events hinaus. Dies ist das erste der 8 manuellen/FORGE-Assets, das die software-setense Version casesgemäße Ausnahme benötigt: eine neue Tabelle, tenders_query_cache (Supabase-Migration add_tenders_query_cache_candidate16, Projekt ieduhdgfjdeffvzxvihhf), die nur von diesem Asset liest geschrieben wird.
Warum: TEDs eigene Dokumentation nennt zwar kein dokumentiertes Rate-Limit, bittet Anrufer aber um angemessenes Anfragevolume auf einer gemeinsam genutzten öffentlichen Ressource. Identische, wiederholte Abfragen (gleiches Land/Schlagwort/cpv_prefix/days_back/limit, stundenweise gebündelt) für 1 Stunde zu cachen ist ein fairer Umgang mit dieser Vorgabe und keine unnötige State – bei einem Cache-Treffer wird in der Antwort "cache_hit": true gesetzt, sodass der Abrufer sehen kann, wann dies passiert ist.
Das ist NICHT der Zustand, der das ursprüngliche PLACSP-Scraping-Design gebraucht hätte. Dieses Design (einen nicht filterbaren ATOM-Feed durchlaufen, „already gesehenen“ Angebots-IDs verfolgen, um Deltas zu erkennen – also das Muster des Katalog-Durchlauf-Caches von new-x482-listings-feed) gilt hier nicht: Der eigene Serverfilter publication-date>= von TED beantwortet bereits „Was ist neu seit X?“, ohne dass dieses Asset sich selbst konkrete Ausschreibungen merken müsste. Der einzige gespeicherte Zustand ist ein kurzlebiger Antwort-Cache, kein Ausschreibungsindex.
RLS: anon erhält für tenders_query_cache nur SELECT + INSERT – kein ./DELETE Privileg, dieselbe Insert-und-Hänge-Disziplin wie bei jeder anderen NEXUS-Telemetrietabelle. Ein „Overwrite“ des Caches ist eigentlich nur eine neue Zeile, die mit einem neueren cached_at versehen wird; die Nachschlage-Abfrage wählt immer die frischeste Zeile innerhalb des TTL-Fensters. Veraltete Zeilen, die älter als 1 Stunde TTL sind, werden nie gelöscht – das unbegrenzte Wachstum über das JT-Tag-Fenster ist vernachlässigbar (eine Zeile pro Einzelabfrage pro Stunde) und wird vorerst akzeptiert; eine echte Bereinigung bräuchte entweder einen geplanten Job oder eine DELETE-Recht, die dieses Assett zusätzlich nicht benötigt.
Deploy-Ziel: Cloud Run
Dieselbe Pipeline wie bei Kandidat #4/#3/#6/#8/#9/#13 – siehe skills/infra-deploy-ops.
# 1. First deploy -- PUBLIC_DOMAIN not known yet, every real request 421s until step 2.
./scripts/deploy_cloud_run.sh public-tenders-es-eu manual_assets/public-tenders-es-eu
# 2. Grab the printed *.run.app URL, then (only if it differs from env-vars.deploy.yaml's guess):
gcloud run services update public-tenders-es-eu --region us-central1 --project nexus-505016 \
--update-env-vars PUBLIC_DOMAIN=<the-real-domain>Bekannte Einschränkungen (von Absicht unbehoben – CLAUDE.md SS3, Zirka kein Zugang ohne Nachweis, dass er nötig ist)
MCP-Werkzeugaufrufe sind nicht kostenpflichtig. Gleiches Muster wie jedes Standman- mapp-anwendungsasset in dieser Codebase.
Nur Ausschreibungen mit Überschwelle der EU-Veröffentlichung. Siehe „Quelle“ oben – Spaniens unterhalb der Schwelle skala die veröffentlichen nationalen Ausschreibungen sind nicht in TED und nicht durch diesen Asseten abgedeckt.
cpv_prefixwird clientseitig gefiltert, nach dem Abruf. TEDs Query-Syntax unterstützt keine serverseitige CPV-Präfixsuche; dieses Asset holt bei gesetztemcpv_prefix(3xlimit, gekappt auf 50) über dar, also über mehr Daten, und filtert dann prozessintern. Ein Anrufer mit einem sehr engencpv_prefixgegenüber einem breitendays_back-Fenster könnte weniger echte Treffer erhalten als in TEDs Gesamt-Ergebnismenge, nach dem überfrachteten Rahmen existieren.Cache ist eine einfache 1-Stunden-TTL und wird bei neuen TED-Veröffentlichungen nicht invalid. Eine Abfrage, die in derselben Stunden-Block wiederholt wird, kann Ergebnisse liefern, die bis zu ~1 Stunde alt sind verglichen mit TED. Über
cache_hitin jeder Antwort offengelegt.Keine Ratenbegrenzung pro Aufrufer. Das ist für ein 7-Cross-Window für Wegwerf-Messungen fine.
Zeilen in
tenders_query_cachewerden nie gelöscht. Siehe „Zustand“ oben.
Qualitäts-Gate (2026-08-23, aus dem Design, nicht retrograd)
Gleicher Zwei-Agenten-Prozess wie die Kandidaten #3/#4/#6/#8/#9/#13 (Security-Linse; Funktionalitäts-, Qualitäts- und Käufer-Erfahrungs-Linse) – Ergebnisse werden unten ergänzt, sobald sie ausgeführt sind.
Measurement (Kandidat #16, 7-Tage-Fenster)
7-Tage-Fenster vom 2026-08-23 (tatsächliches Deploy-Datum) → Entscheidungspunkt 2026-08-30. Quelle der Wahrheit: traffic_events/revenue_events/mcp_call_events (asset_name = 'public-tenders-es-eu'), nicht Cloud-Run-Logs. Tag 7: Wenn kein echter Datenverkehr (Crawler herausfiltern), Cloud Run-Dienst anhalten/löschen (gcloud run services delete public-tenders-es-eu --region us-central1 --project nexus-505016).
This server cannot be deployed
Maintenance
Related MCP Connectors
Search EU TED procurement notices by CPV, country, keyword, value, or type.
Search open EU public tenders and contract awards on TED by keyword, CPV, country and deadline.
1Search EU public tenders across TED and 8 national portals. Monitor, match, and analyse procurement.
Search public procurement notices from 17 sources across Germany, the EU and the UK. Read-only.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables search and analysis of European public procurement tenders, including EU above-threshold (TED) and below-threshold from 11 national sources, with hybrid search and filtering.MIT
- AlicenseNot gradedqualityBmaintenanceEnables searching and retrieving detailed information on EU grant calls and tenders from the EU Funding & Tenders Portal, including deadlines, budgets, and topic details.285 npm1MIT
- AlicenseAqualityFmaintenanceEnables searching for EU public-procurement tenders, analyzing cross-border risk, and understanding tender details through tools for CPV code lookup, EU threshold checks, red-flag scanning, and SME fit scoring.7MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to search and retrieve public procurement notices from 17 sources across Germany, the EU, and the UK, with filtering by country, CPV code, deadline, and contract value, plus full tender details and source freshness checks.MIT