tendfeed

Bid/no-bid verdicts for open EU tenders, from 592,000 real TED contract awards.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
90%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~886Tokens (tool definitions)
~861 BTypical response size
Moderate attention impact (0.69% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "tendfeed": {
      "url": "https://tendfeed.eu/api/mcp/tendfeed"
    }
  }
}

Remote endpoints

https://tendfeed.eu/api/mcp/tendfeedstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢find_low_competition_lanes(min_n, limit)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "min_n": {
      "type": "integer",
      "minimum": 1,
      "maximum": 500,
      "default": 20,
      "description": "Drop lanes thinner than this (honest: small n = noise)"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 25,
      "description": "How many top-ranked lanes to return (sorted by beachhead_score)"
    }
  }
}
🟢find_winnable_lanes(min_n, limit)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "min_n": {
      "type": "integer",
      "minimum": 1,
      "maximum": 500,
      "default": 20,
      "description": "Drop lanes thinner than this (honest: small n = noise)"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 25,
      "description": "How many top-ranked lanes to return (sorted by beachhead_score)"
    }
  }
}
🟢search_tenders(cpv, nuts, sme_only, min_score, limit)

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.

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"
    },
    "sme_only": {
      "type": "boolean",
      "default": false
    },
    "min_score": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 20
    }
  }
}
🟢get_verdict(tender_id)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "tender_id": {
      "type": "string",
      "description": "Tender publication id"
    }
  },
  "required": [
    "tender_id"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools
verifiedversion not recorded4 tools