Data source: TED (Tenders Electronic Daily) — Publications Office of the EU
Overview
TED (EU/EEA Public Procurement) wraps TED (Tenders Electronic Daily) — Publications Office of the EU, handling authentication, pagination, and rate limits for you. This tutorial covers all 3 tools with working code examples you can copy and run.
Prerequisites
- Sign up at https://context.gnist.ai/signup for a free API key (100 calls/day).
- Choose your integration method: MCP protocol or REST API.
Connect via MCP
Add to your MCP client config (Claude Desktop, Cursor, etc.):
{
"mcpServers": {
"gnist-ted": {
"url": "https://context.gnist.ai/mcp/ted/",
"headers": {
"Gnist-API-Key": "YOUR_API_KEY"
}
}
}
}
Tools (3)
search_notices
Search EU/EEA public procurement notices on TED (Tenders Electronic Daily). Covers all EU/EEA member states including Norway, Iceland, and Liechtenstein. Includes contract notices, awards, prior information notices, and modifications for procurement above EU threshold values. At least one filter parameter is required. Combine filters to narrow results (e.g. country='NOR' + cpv_code='72000000' for Norwegian IT procurement). Returns: Paginated list of procurement notices with title, buyer, deadline, estimated value, CPV codes, and TED URL. Use publication_number with get_notice for full details including lot descriptions and award information.
| Parameter | Type | Required | Description |
|---|---|---|---|
text | any | optional | Free text search across notice titles and descriptions (e.g. "software", "construction", "consulting"). |
country | any | optional | Filter by buyer country using 3-letter ISO code (e.g. 'NOR' for Norway, 'DEU' for Germany, 'FRA' for France, 'SWE' for Sweden). |
cpv_code | any | optional | Filter by CPV (Common Procurement Vocabulary) code — 8-digit EU classification (e.g. '72000000' for IT services, '45000000' for construction). |
published_after | any | optional | Filter notices published on or after this date (YYYY-MM-DD or YYYYMMDD). |
published_before | any | optional | Filter notices published on or before this date (YYYY-MM-DD or YYYYMMDD). |
notice_type | any | optional | Filter by notice type: 'cn-standard' (contract notice), 'can-standard' (contract award), 'pin-only' (prior information), 'can-modif' (modification), 'veat' (voluntary transparency), 'corr' (corrigendu |
procedure_type | any | optional | Filter by procedure: 'open', 'restricted', 'neg-w-call' (negotiated with call), 'neg-wo-call' (negotiated without call), 'comp-dial' (competitive dialogue), 'innovation'. |
page | integer | optional | Page number (default 1). (default: 1) |
page_size | integer | optional | Results per page (1-50, default 20). (default: 20) |
curl -X POST "https://context.gnist.ai/mcp/ted/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "search_notices", "arguments": {"text": "software"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/ted/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'text': 'software'}, 'name': 'search_notices'}},
)
print(resp.json())
get_notice
Get detailed information about a specific TED procurement notice. Returns the full notice including lot-level descriptions, buyer identity, award winners, contract values, and links to the official TED page. Returns: Detailed notice with buyer, lots, winners, values, and dates. Returns found=false if the publication number is not found.
| Parameter | Type | Required | Description |
|---|---|---|---|
publication_number | string | required | TED publication number in format NNNN-YYYY (e.g. "555-2026", "96926-2016"). Found in search results. |
curl -X POST "https://context.gnist.ai/mcp/ted/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "get_notice", "arguments": {"publication_number": "555-2026"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/ted/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'publication_number': '555-2026'},
'name': 'get_notice'}},
)
print(resp.json())
report_feedback
Report a bug, feature request, or general feedback for this data source. Use this when something doesn't work as expected, when you'd like a new feature, or when you have suggestions for improvement. Args: feedback: Describe the issue or suggestion. feedback_type: One of 'bug', 'feature_request', or 'general'.
| Parameter | Type | Required | Description |
|---|---|---|---|
feedback | string | required | |
feedback_type | string | optional | (default: general) |
curl -X POST "https://context.gnist.ai/mcp/ted/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "report_feedback", "arguments": {"feedback": "example"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/ted/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'feedback': 'example'}, 'name': 'report_feedback'}},
)
print(resp.json())
Common Patterns
Use
search_notices to find items, then get_notice to get full details. This two-step pattern is common for exploring data before drilling down.Several tools support
limit, offset, or page parameters. Start with small limits during development, then increase for production queries.FAQ
What data does TED (EU/EEA Public Procurement) provide?
EU/EEA public procurement notices from TED (Tenders Electronic Daily) — search tenders, contract notices, awards, and modifications across all EU/EEA member states including Norway. It exposes 3 tools: search_notices, get_notice, report_feedback.
What do I need to get started?
A Gnist API key (free tier: 100 calls/day). Sign up at https://context.gnist.ai/signup.
What format does the TED (EU/EEA Public Procurement) API return?
JSON, via either MCP protocol (JSON-RPC 2.0) or REST API.