Tender MCP
Server Details
Government tender search for AI agents. UK, EU and US procurement opportunities.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2024-11-05
- URL
- Repository
- OjasKord/tender-mcp
- GitHub Stars
- 1
- Server Listing
- Tender MCP
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: search_tenders finds active opportunities, while get_tender_intelligence provides award history and daily digest for known keywords. They are complementary rather than overlapping, with no confusion about when to use each.
Both tools follow a consistent verb_noun pattern using lowercase snake_case: search_tenders and get_tender_intelligence. The verbs 'search' and 'get' match the actions precisely, and there is no mixed convention.
With only two tools, the server feels thin for the tender domain. However, the pair covers a coherent pre-bid research workflow (search then intelligence), so it earns a borderline score rather than a lower one.
The tools cover the essential discovery and pricing context: searching active tenders and retrieving award history/monitoring daily digest. Minor gaps exist, such as no tool for retrieving full tender documents or tracking bid submissions, but these fall outside the stated pre-bid intelligence scope.
Available Tools
2 toolsget_tender_intelligenceAInspect
Retrieves tender intelligence including award history and daily digest. Call this BEFORE your agent bids on any contract without knowing who dominates the sector — at the moment a specific opportunity has been identified and bid/no-bid decision is pending. Use this when your agent has identified a specific tender and needs competitive context — either the history of who has won similar contracts or new opportunities since yesterday. AWARD_HISTORY: past contract winners for a keyword. DAILY_DIGEST: all new tenders last 24h for monitored keywords. Submitting a bid without AWARD_HISTORY leaves your price uninformed by what similar contracts actually paid — a mispriced bid cannot be revised after the tender submission deadline passes. Do not bid without running AWARD_HISTORY first.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | DAILY_DIGEST: new tenders in last 24hrs. AWARD_HISTORY: past contract winners. | |
| limit | No | Max results per source for AWARD_HISTORY (default 10) | |
| keyword | No | Keyword for award history search. Required for AWARD_HISTORY. | |
| sources | No | Sources to search. Defaults to all three. | |
| keywords | No | Keywords to monitor or search (e.g. ["cybersecurity", "cloud infrastructure"]). Required for DAILY_DIGEST. |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | Yes | |
| status | No | Present on the free-tier preview path |
| message | No | |
| checked_at | No | |
| _disclaimer | No | |
| upgrade_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the two modes and warns about the irreversibility of bid prices, providing consequential context beyond a simple retrieval statement. However, it does not mention authentication requirements, rate limits, or explicitly state that it is read-only, though these are likely implied by its retrieval nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than necessary, with repetitive emphasis on the importance of award history and the consequences of mispriced bids. While it is front-loaded with the core function and structured clearly, redundant warnings could be trimmed to improve conciseness without losing informational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's two-mode design, the description adequately covers purpose, when to use each mode, and the recommended workflow. It leverages the output schema and parameter descriptions to avoid duplicating return format or field details, making it complete for the typical use case. The only minor gap is the lack of explicit comparison with the sibling tool, but that is not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all five parameters, and the description does not add any parameter-level meaning beyond what the schema provides. It mentions the two modes but does not elaborate on the parameters themselves, so the schema carries the heavy lifting and the description offers no additional semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Retrieves tender intelligence including award history and daily digest.' It clearly explains the two modes and positions the tool for bid/no-bid decisions, distinguishing it from generic tender search by focusing on competitive context. This is non-tautological and highly informative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to invoke the tool: 'Call this BEFORE your agent bids on any contract' and 'Use this when your agent has identified a specific tender and needs competitive context.' It also gives a direct command, 'Do not bid without running AWARD_HISTORY first,' which is clear and actionable, even though it doesn't name the sibling tool as an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tendersAInspect
Searches active government tenders across UK, EU, and US. Call this BEFORE your agent allocates proposal resources, drafts a bid response, or routes a procurement opportunity to a human team — at the moment a keyword or sector is known and no bid decision has been made. Use this when your agent is starting a procurement discovery run and needs to know which live tenders match the company capabilities before committing any resources to a bid. Returns BID/INVESTIGATE/SKIP verdict with AI fit score 0-100, deadline, estimated value, and key requirements from UK Contracts Finder, EU TED, and US SAM.gov simultaneously. A missed tender deadline cannot be recovered. An agent that drafts a bid without checking active opportunities wastes resources on closed or mismatched contracts. Call get_tender_intelligence with mode=AWARD_HISTORY next for any tender scored BID or INVESTIGATE, before committing proposal resources to a bid.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results per source (default 10, max 25) | |
| keyword | Yes | Search keyword — company capability, product type, or service (e.g. "cybersecurity", "catering", "IT support") | |
| sources | No | Which sources to search. Defaults to all three: ["uk","eu","us"] | |
| days_old | No | Only return tenders published in the last N days (default 30) | |
| min_score | No | Only return tenders scoring above this threshold (default 50). Only applies when company_profile is provided. | |
| company_profile | No | Description of the company capabilities and what contracts they are looking for. Used for AI fit scoring. More detail = better scores. If omitted, results are returned unscored. |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | |
| keyword | Yes | |
| scoring | No | Present only when company_profile was provided |
| tenders | Yes | |
| checked_at | Yes | |
| _disclaimer | Yes | |
| total_found | Yes | |
| _intelligence | No | Always-present upsell hook -- not gated by tier |
| sources_searched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the return type (BID/INVESTIGATE/SKIP verdict, score, deadline, etc.), warns about non-recoverable deadlines, and explains the consequence of skipping this step. However, it omits that the AI fit score only applies when company_profile is provided—a meaningful behavioral nuance. The warning and workflow guidance earn a 4, but the scoring dependency keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than typical but well-structured: purpose → usage guidance → output summary → urgency context → next step. Each sentence adds operational value, though it is slightly wordy. It earns a 4 for being front-loaded and purposeful, not a 5 because some redundancy exists (e.g., 'before committing resources' appears twice).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 params, multi-source search, scoring logic, output schema present), the description covers the essential workflow: what it does, when to use, key outputs, and next step. The main gap is the unstated condition that scoring only occurs with company_profile, but the schema covers that. Overall, it is reasonably complete for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add much parameter-level meaning beyond what the schema already provides; it mentions 'company capabilities' in a workflow context but does not explain individual parameters. The schema's own descriptions are thorough, so the description earns a baseline 3 without adding extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Searches active government tenders across UK, EU, and US.' It clearly differentiates from the sibling tool by explaining that this is the discovery step ('starting a procurement discovery run') and that get_tender_intelligence is the follow-up. This is a textbook example of purpose clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'Call this BEFORE your agent allocates proposal resources... at the moment a keyword or sector is known and no bid decision has been made.' It also names an explicit alternative/next step: 'Call get_tender_intelligence with mode=AWARD_HISTORY next for any tender scored BID or INVESTIGATE.' This exceeds the bar for usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
get_tender_intelligence1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Shape varies by mode (DAILY_DIGEST/AWARD_HISTORY) and tier (free preview vs paid full access) -- fields below are the common envelope.", + "properties": { + "_disclaimer": { + "type": "string" + }, + "checked_at": { + "format": "date-time", + "type": "string" + }, + "message": { + "type": "string" + }, + "mode": { + "enum": [ + "DAILY_DIGEST", + "AWARD_HISTORY" + ], + "type": "string" + }, + "status": { + "description": "Present on the free-tier preview path", + "type": "string" + }, + "upgrade_url": { + "type": "string" + } + }, + "required": [ + "mode" + ], + "type": "object" +}
- Changed
search_tenders1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "properties": { + "_disclaimer": { + "type": "string" + }, + "_intelligence": { + "description": "Always-present upsell hook -- not gated by tier", + "type": "object" + }, + "checked_at": { + "format": "date-time", + "type": "string" + }, + "errors": { + "items": { + "type": "object" + }, + "type": "array" + }, + "keyword": { + "type": "string" + }, + "scoring": { + "description": "Present only when company_profile was provided", + "type": [ + "object", + "null" + ] + }, + "sources_searched": { + "items": { + "type": "string" + }, + "type": "array" + }, + "tenders": { + "items": { + "properties": { + "ai_score": { + "description": "Present only when company_profile was provided", + "type": [ + "number", + "null" + ] + }, + "contracting_authority": { + "type": "string" + }, + "description": { + "type": "string" + }, + "fit_summary": { + "type": "string" + }, + "id": { + "type": "string" + }, + "reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "recommendation": { + "enum": [ + "BID", + "INVESTIGATE", + "SKIP", + null + ], + "type": [ + "string", + "null" + ] + }, + "source": { + "type": "string" + }, + "title": { + "type": "string" + }, + "value": { + "type": [ + "string", + "number", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "total_found": { + "type": "integer" + } + }, + "required": [ + "keyword", + "total_found", + "sources_searched", + "tenders", + "checked_at", + "_disclaimer" + ], + "type": "object" +}
Related MCP Connectors
UK public procurement data for AI agents: tenders, contracts, buyer and supplier profiles.
EU tenders and grant calls, matched to your company and qualified, inside the AI you already use
Search EU public tenders across TED and 8 national portals. Monitor, match, and analyse procurement.
Search government tenders and public procurement opportunities with structured results.
Related MCP Servers
AlicenseNot gradedqualityBmaintenanceUK public procurement data for AI agents. Tenders, contracts, buyer and supplier profiles over MCP and REST. 250 free credits.MIT- AlicenseAqualityFmaintenanceMatch your tech product or consulting service to thousands of live government tenders, RFPs, grants, and frameworks from 25+ official sources worldwide.421 npm6MIT
- AlicenseNot gradedqualityBmaintenanceEnables searching and analyzing government tenders, contract awards, and pre-tender pipelines from 21 official sources, with tools for tender search, award intelligence, and detailed notice retrieval.MIT
- 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.4141 PyPIMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.