MCP Server

tendfeed

eu.tendfeed/tendfeed

What this MCP does

Searches EU public tenders and analyzes competition density, sector opportunities, deadlines, pricing evidence, and bid/no-bid indicators.

find_low_competition_lanes
Rank CPV sector "lanes" by OBSERVED competition density from the full corpus of 530,000 real EU awards: median bidders, single-bidder share, bid-rate, median value, beachhead score. Answers "where is competition thinnest right now". It does NOT estimate the user's probability of winning — thin competition is a selection signal, not a win forecast. Returns the top-ranked lanes only (see "limit"); the total count is in coverage.lanes_ranked. Data/research tool over TED (Tenders Electronic Daily, CC BY 4.0). No guarantee of award.
Read only
Input schema
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'How many top-ranked lanes to return (sorted by beachhead_score)'}, 'min_n': {'type': 'integer', 'default': 20, 'maximum': 500, 'minimum': 1, 'description': 'Drop lanes thinner than this (honest: small n = noise)'}}}
find_winnable_lanes
DEPRECATED — use find_low_competition_lanes instead; this alias behaves identically and stays available for existing clients. The old name wrongly implied a win forecast: TendFeed measures observed competition density, not the probability that you win. Data/research tool over TED (Tenders Electronic Daily, CC BY 4.0). No guarantee of award.
Read only
Input schema
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'How many top-ranked lanes to return (sorted by beachhead_score)'}, 'min_n': {'type': 'integer', 'default': 20, 'maximum': 500, 'minimum': 1, 'description': 'Drop lanes thinner than this (honest: small n = noise)'}}}
get_verdict
Pull one versioned verdict object by tender id (decision, score, per-channel evidence, price status, reason). Requires an API key (Authorization: Bearer cfm_live_…) with an active TendFeed subscription; without one you get a machine-readable key-required or subscription-required answer. Data/research tool over TED (Tenders Electronic Daily, CC BY 4.0). No guarantee of award.
Read only
Input schema
{'type': 'object', 'required': ['tender_id'], 'properties': {'tender_id': {'type': 'string', 'description': 'Tender publication id'}}}
search_tenders
Open EU tenders with a bid/no-bid verdict (Worth-It score, reason, competition density, price corridor where robust, deadline, SME-fit). Filter by sector (CPV division), country (NUTS), SME-only, min score. Guests (no key) get the expired-tender board plus a live_matched count; an API key (Authorization: Bearer cfm_live_…) with an active TendFeed subscription unlocks the live, still-biddable board. Data/research tool over TED (Tenders Electronic Daily, CC BY 4.0). No guarantee of award.
Read only
Input schema
{'type': 'object', 'properties': {'cpv': {'type': 'string', 'description': 'CPV division prefix, e.g. 45 (construction), 72 (IT), 33 (medical)'}, 'nuts': {'type': 'string', 'description': 'Country prefix, e.g. DE, FR, PL'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1}, 'sme_only': {'type': 'boolean', 'default': False}, 'min_score': {'type': 'integer', 'default': 0, 'maximum': 100, 'minimum': 0}}}
Added
get_verdict
Sept. 17, 2026, 12:39 p.m.
Added
search_tenders
Sept. 17, 2026, 12:39 p.m.
Added
find_winnable_lanes
Sept. 17, 2026, 12:39 p.m.
Added
find_low_competition_lanes
Sept. 17, 2026, 12:39 p.m.