Open Tender and RFP Finder MCP Server
Reads EU TED (Tenders Electronic Daily) open tender notices, enabling searches by keywords, CPV codes, and buyer countries and returning notice details such as buyer, deadlines, estimated value, contract type, contacts, and links.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Open Tender and RFP Finder MCP ServerFind open UK tenders for software published this week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Open Tender and RFP Finder MCP Server
An MCP server for the Mamba Labs Open Tender and RFP Finder actor on Apify. Give it keywords, CPV codes, or buyer countries. Each run reads four official public notice portals and returns one row per open tender or RFP notice.
What's Inside
Related MCP server: EU Tender MCP
What it does
The actor reads UK Contracts Finder, UK Find a Tender, EU TED (Tenders Electronic Daily), and the CanadaBuys open tender file, all official open data with no key. It keeps the notices that match your keywords and filters and returns one flat row per notice: buyer, buyer country, publication day, response deadline, days to deadline, estimated value and currency, CPV or UNSPSC codes, contract type, procedure, the buyer contact email the notice publishes, and a link. Filtered notices are never billed, and when nothing matches one free row says why.
All of the work runs on Apify. This package is a thin client that starts the actor run, waits for it, and hands back the dataset rows.
Quick start
You need Node.js 18 or newer and an Apify account with an API token.
Add this to your Claude Desktop config (claude_desktop_config.json), Cursor, or any MCP client:
{
"mcpServers": {
"mamba-open-tender-rfp-finder": {
"command": "npx",
"args": [
"-y",
"@mambalabsdev/mcp-open-tender-rfp-finder"
],
"env": {
"APIFY_TOKEN": "your-apify-token"
}
}
}
}Restart the client. The find_open_tenders tool appears.
Prerequisites
Node.js 18 or newer.
An Apify API token from console.apify.com/account/integrations, set as
APIFY_TOKEN. The server lists its tool without a token; a call needs one.
Example prompts
"Find open UK and Irish public tenders for software published this week."
"Which German and Dutch public bodies are buying IT services worth more than 100,000 EUR right now?"
"List open CanadaBuys RFPs for marketing services with their deadlines."
Tool
find_open_tenders. One tool. Example arguments:
{
"keywords": [
"software"
],
"countries": [
"GB"
],
"published_within_days": "7"
}Inputs
Every buyer facing input of the actor, unchanged. Omitted inputs take the actor's own defaults. Numbers and booleans are sent as strings.
Input | Type | Description |
| array | Words or phrases to find in the notice title or description, any case. A notice matches any of them. EU TED matches over the full notice text in every language. Empty: every open notice in the window. Up to 25. |
| array | Drop a notice whose title or description contains any of these. |
| array | Keep notices with a CPV code that starts with one of these, for example 72 or 48000000. CanadaBuys uses UNSPSC codes, so a CPV filter leaves it out. |
| array | Two letter buyer country codes, for example GB, DE, CA. A portal that covers none of them is skipped. |
| array | Portals to read. Default all four. |
| string | Publication window in days, 1 to 90, today included. Default 14. |
| string | Drop notices whose deadline has passed. Default true. |
| string | Drop notices valued below this number, in the notice currency. Notices with no value are kept. |
| string | Notice rows per run, newest first, up to 5000. Each notice row is billed. Default 100. |
| string | Skip notices an earlier run with the same state_key returned. Default false. |
| string | Names the seen list for only_new. |
| string | Optional. The run stops before any row that would take its charges over this amount. |
Pricing
Pay per event on Apify, billed to your Apify account. Prices in USD.
Event | Free plan | Bronze | Silver | Gold |
| $0.003 | $0.00285 | $0.0027 | $0.00255 |
| $0.002 | $0.002 | $0.002 | $0.002 |
The no results row and notices skipped by only_new are free.
Your keys
The actor needs no key. Every portal is an official open data API or file, read directly, and the actor holds no key of any kind. Mamba Labs pays the platform and proxy costs of the run.
Full actor documentation
apify.com/mambalabs/open-tender-rfp-finder
License
MIT. See LICENSE.
Available Tools
1 toolfind_open_tendersFind open tenders and RFPsARead-only
Find open public tender and RFP notices that match keywords, CPV codes, and buyer countries, read from four official portals with no key: UK Contracts Finder, UK Find a Tender, EU TED (Tenders Electronic Daily), and CanadaBuys. Returns one row per notice with portal, notice_id, notice_url, title, description_excerpt, buyer_name, buyer_country, published_at, deadline_at, days_to_deadline, estimated_value, currency, category_codes (CPV or UNSPSC), contract_type, procedure, sme_suitable (UK), buyer_contact_email, matched_keywords, and match_source. Filters run before billing. When nothing matches, one free no_results row says why. A run that does not succeed is returned as an error with its run ID. Read-only; requires an APIFY_TOKEN; Apify charges per notice row returned plus a run start.
| Name | Required | Description | Default |
|---|---|---|---|
| portals | No | Portals to read. Default all four. | |
| keywords | No | Words or phrases to find in the notice title or description, any case. A notice matches any of them. EU TED matches over the full notice text in every language. Empty: every open notice in the window. Up to 25. | |
| only_new | No | Skip notices an earlier run with the same state_key returned. Default false. | |
| countries | No | Two letter buyer country codes, for example GB, DE, CA. A portal that covers none of them is skipped. | |
| min_value | No | Drop notices valued below this number, in the notice currency. Notices with no value are kept. | |
| only_open | No | Drop notices whose deadline has passed. Default true. | |
| state_key | No | Names the seen list for only_new. | |
| max_notices | No | Notice rows per run, newest first, up to 5000. Each notice row is billed. Default 100. | |
| cpv_prefixes | No | Keep notices with a CPV code that starts with one of these, for example 72 or 48000000. CanadaBuys uses UNSPSC codes, so a CPV filter leaves it out. | |
| max_charge_usd | No | Optional. The run stops before any row that would take its charges over this amount. | |
| exclude_keywords | No | Drop a notice whose title or description contains any of these. | |
| published_within_days | No | Publication window in days, 1 to 90, today included. Default 14. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and open-world, but the description adds substantial value beyond them: per-notice-row billing plus a run start charge, filters executing pre-billing, a free no_results row, and failures returned as errors carrying a run ID. This is a genuinely rich behavioral disclosure.
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?
Front-loaded with purpose, then the return columns, then billing, error, and auth facts. The column enumeration is long but earns its place given there is no output schema; only minor density could be trimmed.
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?
With no output schema, the description compensates by enumerating the returned fields, and it covers auth, billing model, edge cases, and error semantics. An agent has everything needed to call it 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 all 12 parameters are already well documented in the schema itself. The description references keyword/CPV/country filtering but adds no syntax or format detail beyond what the schema provides, so the baseline of 3 applies.
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?
States a specific verb and resource ('Find open public tender and RFP notices') and immediately names the exact scope: keywords, CPV codes, buyer countries across four named portals. An agent knows precisely what it retrieves without opening the schema.
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?
Notes the APIFY_TOKEN requirement, that filters run before billing, and how no-match and failure cases resolve, giving clear operational context. There are no siblings to differentiate against, and it stops short of explicit when-not-to-use 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.
1 tool update
v1.0.0- First observed
find_open_tenders
Related MCP Connectors
Search EU public tenders from TED and national portals by CPV code, country, buyer or value.
Search EU public tenders across TED and 8 national portals. Monitor, match, and analyse procurement.
Search open EU public tenders and contract awards on TED by keyword, CPV, country and deadline.
Search EU TED procurement notices by CPV, country, keyword, value, or type.
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
- 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
- FlicenseNot gradedqualityCmaintenanceProvides normalized search over public-sector tender notices from TED, covering Spain and the rest of the EU. Supports filtering by country, keyword, CPV prefix, and publication recency, returning tender details and related links.1-
- FlicenseNot gradedqualityBmaintenanceEnables searching government tenders and public procurement opportunities with structured, anti-bot-handled results.-