Skip to main content
Glama
mambalabsdev

Open Tender and RFP Finder MCP Server

Find open tenders and RFPs

find_open_tenders
Read-only

Find open public tenders and RFPs that match keywords, CPV codes, and buyer countries across official UK, EU, and Canada portals, returning notice details and links.

Instructions

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.

Input Schema

NameRequiredDescriptionDefault
portalsNoPortals to read. Default all four.
keywordsNoWords 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_newNoSkip notices an earlier run with the same state_key returned. Default false.
countriesNoTwo letter buyer country codes, for example GB, DE, CA. A portal that covers none of them is skipped.
min_valueNoDrop notices valued below this number, in the notice currency. Notices with no value are kept.
only_openNoDrop notices whose deadline has passed. Default true.
state_keyNoNames the seen list for only_new.
max_noticesNoNotice rows per run, newest first, up to 5000. Each notice row is billed. Default 100.
cpv_prefixesNoKeep 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_usdNoOptional. The run stops before any row that would take its charges over this amount.
exclude_keywordsNoDrop a notice whose title or description contains any of these.
published_within_daysNoPublication window in days, 1 to 90, today included. Default 14.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

Deploy Server

Other Tools