Data source: TED (Tenders Electronic Daily)
Overview
Global Tenders wraps TED (Tenders Electronic Daily), handling authentication, pagination, and rate limits for you. This tutorial covers all 5 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-global-tenders": {
"url": "https://context.gnist.ai/mcp/global-tenders/",
"headers": {
"Gnist-API-Key": "YOUR_API_KEY"
}
}
}
}
Tools (5)
search_tenders
Search active public procurement notices (tenders) across EU, UK, and US sources. Args: query: Full-text search term (e.g. "software development", "road construction"). country: ISO 3166-1 alpha-2 country code to restrict search (e.g. "DE", "NO", "GB", "US"). Omit to search all EU countries via TED. sector_cpv: CPV code prefix to filter by sector (e.g. "72000000" for IT services). Only applied for EU/TED searches. date_from: ISO 8601 date (YYYY-MM-DD) — only return notices published on or after this date. value_min_eur: Minimum estimated contract value in EUR. limit: Maximum number of results to return (1-50, default 10). Returns: List of tender notices with title, contracting authority, country, deadline, estimated value, CPV codes, and source URL.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | required | Full-text search term (e.g. "software development", "road construction"). |
country | any | optional | ISO 3166-1 alpha-2 country code to restrict search (e.g. "DE", "NO", "GB", "US"). Omit to search all EU countries via TED. |
sector_cpv | any | optional | CPV code prefix to filter by sector (e.g. "72000000" for IT services). Only applied for EU/TED searches. |
date_from | any | optional | ISO 8601 date (YYYY-MM-DD) — only return notices published on or after this date. |
value_min_eur | any | optional | Minimum estimated contract value in EUR. |
limit | integer | optional | Maximum number of results to return (1-50, default 10). (default: 10) |
curl -X POST "https://context.gnist.ai/mcp/global-tenders/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "search_tenders", "arguments": {"query": "software development"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/global-tenders/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'query': 'software development'},
'name': 'search_tenders'}},
)
print(resp.json())
get_tender
Get full details for a specific EU TED procurement notice by document number. Args: notice_id: TED notice document number (e.g. "123456-2024"). Retrieve this from search_tenders results. Returns: Full notice details including title, contracting authority, country, published date, deadline, estimated value, CPV codes, and source URL.
| Parameter | Type | Required | Description |
|---|---|---|---|
notice_id | string | required | TED notice document number (e.g. "123456-2024"). Retrieve this from search_tenders results. |
curl -X POST "https://context.gnist.ai/mcp/global-tenders/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "get_tender", "arguments": {"notice_id": "123456-2024"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/global-tenders/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'notice_id': '123456-2024'}, 'name': 'get_tender'}},
)
print(resp.json())
get_awarded_contracts
Get recently awarded public contracts from EU TED, UK Find a Tender, or US SAM.gov. Args: country: ISO 3166-1 alpha-2 country code (e.g. "DE", "NO", "GB", "US"). Omit for all EU countries. sector_cpv: CPV code prefix to filter by sector. Only applied for EU/TED searches. year: Calendar year to filter awards. Omit for most recent. limit: Maximum number of results to return (1-50, default 10). Returns: List of awarded contracts with contracting authority, winner (where available), value, award date, country, and CPV codes.
| Parameter | Type | Required | Description |
|---|---|---|---|
country | any | optional | ISO 3166-1 alpha-2 country code (e.g. "DE", "NO", "GB", "US"). Omit for all EU countries. |
sector_cpv | any | optional | CPV code prefix to filter by sector. Only applied for EU/TED searches. |
year | any | optional | Calendar year to filter awards. Omit for most recent. |
limit | integer | optional | Maximum number of results to return (1-50, default 10). (default: 10) |
curl -X POST "https://context.gnist.ai/mcp/global-tenders/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "get_awarded_contracts", "arguments": {"country": "DE"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/global-tenders/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'country': 'DE'}, 'name': 'get_awarded_contracts'}},
)
print(resp.json())
search_by_winner
Find public contracts won by a named company. Args: company_name: Company name to search for (e.g. "Accenture", "IBM"). country: ISO 3166-1 alpha-2 country code to restrict search. year_from: Start year for award date filter (inclusive). year_to: End year for award date filter (inclusive). limit: Maximum number of results to return (1-50, default 10). Returns: List of award notices where the winner name matches the query.
| Parameter | Type | Required | Description |
|---|---|---|---|
company_name | string | required | Company name to search for (e.g. "Accenture", "IBM"). |
country | any | optional | ISO 3166-1 alpha-2 country code to restrict search. |
year_from | any | optional | Start year for award date filter (inclusive). |
year_to | any | optional | End year for award date filter (inclusive). |
limit | integer | optional | Maximum number of results to return (1-50, default 10). (default: 10) |
curl -X POST "https://context.gnist.ai/mcp/global-tenders/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "search_by_winner", "arguments": {"company_name": "Accenture"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/global-tenders/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'company_name': 'Accenture'},
'name': 'search_by_winner'}},
)
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/global-tenders/" \
-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/global-tenders/",
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_tenders to find items, then get_tender 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 Global Tenders provide?
EU public procurement notices — contract opportunities and award results. It exposes 5 tools: search_tenders, get_tender, get_awarded_contracts, search_by_winner, 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 Global Tenders API return?
JSON, via either MCP protocol (JSON-RPC 2.0) or REST API.