public-tenders-es-eu
Public Tenders ES/EU
TED(Tenders Electronic Daily -- EU公式の調達公告プラットフォーム)に掲載された公共部門の入札を正規化検索するサービスです。スペインとEU域内のその他の国々をカバーします。NEXUS候補 #16 -- 手動ビルド、FORGE生成ではありません。候補 #3/#4/#6/#8/#9/#13と同じ手動・Cloud Run・アセットのパターンです。
POST /search-public-tenders {"country": "ESP", "keyword": null, "cpv_prefix": null, "days_back": 30, "limit": 20}-- 1回の呼び出しにつき$0.01。MCPツール
search_public_tendersは/mcpにあり、パラメータは同一 -- 現在は無料。「既知の制限事項」を参照。GET /health、GET /.well-known/agent-card.json、GET /openapi.json(x-payment-infoを含む)、GET /.well-known/402index-verify.txt(402indexのクレーム検証ファイル)。
ソース:当初のブリーフからの方向転換、明示的な承認済み(2026-08-23)
タスクブリーフには contrataciondelsectorpublico.gob.es/sindicacion/sindicacion_643/(スペイン国内のPLACSP ATOMシンジケーションフィード)が「前回セッションから既にgrounded(検証済み)である」と書かれていました。それを今回のセッション開始時に、2つの独立した取得経路(curl、WebFetch、ブラウザのUser-Agentの有無それぞれ)でライブ確認したところ、403 Forbidden が返されました。さらに、同ドメイン自身のrobots.txtもサイト全体に対してDisallow: / を宣言しています -- これは明示されたサイト全体のブロックであり、レート制限ではありません。この場合、Cloud Run(データセンター向けIP帯域。この種のWAFルールの典型的な標的です)もほぼ確実にブロックされます。コードを書く前にユーザーにその旨を明示しました(黙って代替先に置き換えたりはしていません)。ユーザーはTEDへのピボットを選択しました。
TED(Tenders Electronic Daily、api.ted.europa.eu) は、EU Publications Office が運営する公式の公共調達公告検索APIで、無料・APIキー不要、文書化された認証はありません。今セッション内でライブかつフィールドごとの検証を実施しました(第三者のREADMEでは最初の段階でクエリフィールド名が誤っており、たとえば実際のAPIはbuyer-countryしか受け付けないのにcountry-buyerだと書いていたため、以下のすべてのフィールド・演算子は、実際のAPIのレスポンスで確認したものであり、伝聞的二次情報を信頼していません)。
POST https://api.ted.europa.eu/v3/notices/searchに、JSONボディとしてquery(エキスパート検索文字列)、fields(返すeFormsフィールド名の配列)、limit、scope("ACTIVE"または"ALL")を指定します。ライブで確認済みのクエリフィールド:
publication-date>=YYYYMMDD(8桁、ハイフンなし)、buyer-country=ESP(ISO-3166 alpha-3)、FT~"phrase"(フルテキスト)、AND、SORT BY publication-date DESC。ライブで確認済みの出力フィールド:
publication-number、notice-title(多言語辞書、キーはspa/engなど)、buyer-name(リストの多言語辞書)、buyer-country、publication-date、classification-cpv(CPVコードのリスト)、total-value(このすべての公告種別に存在するわけではない。たとえば真おの補正システム公告には含まれない。これは正常な仕様であり、エラーではありません)、notice-type、links(言語ごとのhtml/pdf/xml詳細URL)。実際に試したクエリの例:
buyer-country=ESPだけで24,314件がACTIVEスコープの条件で一致した(チェック時点)。またpublication-date+buyer-countryの組み合わせでは8日間のウィンドウで1,058件に一致しており、実際の有効値で、古い・空のエンドポイントではありません。
TEDはスペイン(EUの公開闘価を超える入札品はすべてbuyer-country=ESPとして表示)に加え、EU域内の他国も対象としています。当初の「スペイン・UE」というところでは、ブロックされた国内のサブスレショルド・フィードと同等以上に合致しています。むしろTEDは設計上EU全域を対象としており、ブロックされていません。ブロックされた外のソースとのカバー範囲の違い:TEDはEU公開闘値以上の公告しか掲載しません(これは実質的な下限です。PLACSPの国内フィードだけがようやく届けていたような、スペインの閾値未満の入札は、TEDには載りません)。このアセットはそれらのサブスレショルドには対応しているとは主張していません。total_matching_noticesと、各結果のフィールドsource: "TED"により、実際のカバレッジは購入者に明示されており、より広範囲であると暗に表現されることはありません。
Related MCP server: LexSocket MCP Server
状態(db_constraint 例外)
姉妹の手動アセット(url-metadata-api、agent-verification-api、document-conversion-api、new-x402-listings-feed、onchain-activity-index、x402-receipt-verifier)はすべて完全無状態です。単一の呼び出しがその都度、上流を新規に想定、標準のテレメトリ基盤であるtraffic_events/revenue_events/mcp_call_eventsの3点セット以外にNEXUSが所有するテーブルはありません。本アセットは、この手動/FORGE の8アセットのうち、初めてケースバイケースの例外が必要となるものです。
herdsで、**tenders_query_cache**という新しいテーブル(Supabaseのマイグレーション add_tenders_query_cache_candidate16、プロジェクト番号 ieduhdgfjdeffvzxvihf)を追加し、このアセットからの読み書きのみで使用します。
その理由:TEDのドキュメントには明文化されたレート制限があるという記述はないものの、共有される公共リソースへのリクエスト量は合理的に抑えるよう求めています。同じ繰り返しクエリ( cpv\_prefix の内容まで同じ)を1時間キャッシュするのは、その指示を守る良い行いであり、べをべ取らっぱのない処理というわけではありません。キャッシュヒット時には応答に "cache_hit": true が記載され、いつキャッシュヒットが起きたかを購入者側が確認できます。
これは、当初のPLACSPスクレイピング設計が得るはずだった状態とは全くありません。 あの設計(フィルタリングできないATOMフィードをウォークスし、差分を検出するため「既に見た」入札IDをトラックする。これはnew-x402-listings-feedのカタログ・ウォーク・キャッシュと同じ形)は今ここでは当てはまりません。TED側のサーバーサイドフィルタリングpublication-date>=がすでに「X以降に新たにあったもの」を教えてくれており、個別入札の情報をこのアセットが記憶しておく必要がありません。保持される状態は短期のレスポンスキャッシュのみであり、入札インデックスではありません。
RLS:anonロールはtenders_query_cacheに対するSELECTとINSERTのみが許可され、UPDATE / DELETEは付与されません。これは他のすべてのNEXUSテレメトリテーブルと同じ「appendのみ」の方針です。キャッシュの「上書き」は、実際には新しいcached_atを持った新しい行を追加するだけです。検索クエリは常にTTLウィンドウしたの最も新しい行を選びます。1時間のTTLを超えた古い行は削除しないため、7日間のトライアル期間内という比較的短い期間での無制限成長は軽微(1時間単位×ユニーククエリごとに1行)なので、今はそれで良しとしています。本格的なクリーンアップには、スケジューラードジョブ、もしくはこのアセットがそれ以外に必要ないDELETE権限の付与が必要になりません。
デ プ ロ イ 先 : Cloud Run
候補 #4/#3/#6/#13/#9/#13と同じもので、パイプラインの詳細は 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>既知の制限事項(意図的に未修正 -- CLAUDE.md SS3、証拠がないならゲートしない)
MCPツールの呼び出しは課金されません。 他の手動アセットと同じ、インプロセスコールのパターンです。
EU公開閾値以上の公告のみです。 前述の「Source」を参照。スペイン国内のサブスレショールド入札はTEDに含まれず、このアセットでもカバーしません。
cpv_prefixは取得後、クライアント側でフィルタされます。 TEDのクエリ構文では、サーバー側CPVプレフィックスが冴しないため、cpv_prefixが設定されているときに、このアセットは余分に取得し(上限50で、limitの3倍)、その後にプロセス内でフィルタします。狭いcpv_prefix対広いdays_backウィンドウという呼び出しでは、TEDの全結果セットの中で実際に存在する以上に少ない結果が返ることがあります。キャッシュは単に1時間のTTLで、新しいTEDの掲載で無効化されません。 同じ1時間バケット内の同一クリエリは、TEDの時点で約~1時間まで、古い結果を返す可能性があります。これについては、どの応答の
cache_hitでも披露されます。呼び出し側ごとのレート制限はありません。 7日間期限付きの計測ウィンドウとしては許容できます。
tenders_query_cacheの行は削除されません。 前出「State」を参照してください。
クオリティゲート(2026-08-23、事後ではなく設計時点から)
候補 #3/#4/#6/#8/#9/#13と同じ2エージェントプロセス(セキュリティーレンズ、機能+クオリティ+購入者体験レンンズ)で、実行後に結果を下に記入します。
計測(候補 #16、7日間ウィンドウ)
2026-08-23(実際のデプロイ日)から7日間のウィンドウ → 判定点は2026-08-30。真実の情報源は、Cloud Runログではなくtraffic_events/revenue_events/mcp_call_events(asset_name = 'public-tenders-es-eu')です。7日目に、実際のトラフィックがゼロ(ク直らを除外後)なら、下記でCloud Runのサービスを一時停止または削除します(gcloud run services delete public-tenders-es-eu --region us-central1 --project nexus-505016)。
GXP2
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityBmaintenanceExposes 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.4MIT
- 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 gradedqualityCmaintenanceAccess Spain public procurement tender notices from PLACSP without API keys.8MIT
- AlicenseNot gradedqualityCmaintenanceEnables searching and retrieving detailed information on EU grant calls and tenders from the EU Funding & Tenders Portal, including deadlines, budgets, and topic details.15MIT
Related MCP Connectors
Spain public procurement MCP — PLACSP tender notices (keyless).
Government tender search for AI agents. UK, EU and US procurement opportunities.
TED MCP — Tenders Electronic Daily (EU public procurement)
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nexus-mcp-infra/public-tenders-es-eu'
If you have feedback or need assistance with the MCP directory API, please join our Discord server