Skip to main content
Glama

EU Tender MCP

Live, structured European public-procurement intelligence for SMEs — as an MCP server. Search opportunities, analyze cross-border risk, and understand EU tenders — all from inside Claude, Cursor, or any MCP client.

The value here is information an LLM cannot know: current tender opportunities, EU thresholds, CPV codes, and cross-border risk patterns. It's built for a consulting, services, or supply SME that wants to bid on public contracts outside its home member state.


Why it's genuinely useful (and not just another wrapper)

Thing an LLM fakes from memory

What this MCP actually does

"What's the EU threshold for services?"

Returns the real figure (€143k standard) with the category it applies to

"Find me tenders in Germany for software"

Returns structured, filterable tender records (country/CPV/value/deadline)

"Is this RFP risky to bid from abroad?"

Runs a red-flag scan (bonds, turnover floors, local-presence, short deadlines) + an honest SME fit score

"What CPV code is 'cleaning services'?"

Returns the CPV division with aliases

"What does this notice type mean?"

Explains pin, cn-standard, results, etc.

Every tool is deterministic, typed, and honest about its data source — it never fabricates "live" opportunities when a TED API key isn't configured.


Related MCP server: Polish Public Tenders (e-Zamówienia/BZP) MCP

Tools (7)

Tool

What it does

search_tenders

Search tenders by query / country / CPV / value range / deadline

market_snapshot_tool

Activity by country & sector, typical values, urgent deadlines

analyze_tender

Red-flag scan + 0-100 SME fit score (by tender id or pasted RFP text)

look_up_cpv

Translate a description into EU CPV division codes

look_up_notice_type

Explain what a notice type (pin, cn-standard, results…) signals

eu_threshold

Whether a value is above EU mandatory-publication thresholds

tender_details

Full structured record for one tender


Install & run

python3 -m venv .venv
.venv/bin/pip install -e .
.venv/bin/pytest tests/ -q      # 38 tests, incl. a real MCP stdio integration

Start the server (stdio)

.venv/bin/eu-tender-mcp
# or
.venv/bin/python -m tendermcp.server

Connect a client

Claude Desktop — add to your MCP config (claude_desktop_config.json): mcpServers → see configs/claude-desktop.json. Point PYTHONPATH at the repo absolute path.

Claude Code / Cursor / other MCP clients — use configs/mcp-config.json and install the package (pip install -e .) so python3 -m tendermcp.server resolves.


Data model

  • Default provider: a bundled set of clearly-labeled sample tenders (source bundled_sample) so the MCP works out of the box, is demoable, and is fully testable with no key.

  • Live TED (roadmap): register a TED API key, set TED_API_KEY, and implement TEDLiveProvider._fetch() (in providers.py, already stubbed). Until then, no live data is ever fabricated — the labeled sample is returned instead.


Project layout

eu-tender-mcp/
├── tendermcp/
│   ├── server.py        ← FastMCP server wiring all tools
│   ├── knowledge.py     ← CPV codes, notice types, EU thresholds, red-flag rules
│   ├── analyzer.py      ← red-flag scan + SME fit scoring (offline, deterministic)
│   ├── providers.py     ← provider interface + bundled/live providers
│   ├── models.py        ← typed Tender / search-params models
│   ├── intel.py         ← market-snapshot aggregations
│   └── sample_data.py   ← labeled demo tenders
├── configs/             ← Claude Desktop / generic MCP client configs
├── tests/               ← 38 tests including real stdio integration
├── pyproject.toml
└── README.md

Roadmap / honest notes

  • Live TED feed is the single biggest upgrade — it needs a registered TED/OPEN API key + account feed URL (account-specific), which only a user can supply. The provider seam is ready.

  • More red-flag rules and jurisdiction nuance are planned; the analyzer is transparent on purpose (it outputs reasons, not false precision).

  • Not legal advice. The analyzer is a triage aid; always verify against the full tender documents.

MIT licensed.

Available Tools

7 tools
analyze_tenderA

Analyze a tender's cross-border risk and fit for an SME bidder.

Provide either 'tender_id' (looks it up from the active pool and pulls its value/deadline automatically) OR paste 'text' of an RFP to scan it directly. Uses 'estimated_value_eur' / 'deadline_days_left' as overrides when given. Returns a red-flag scan + an honest 0-100 fit score with reasons.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
tender_idNo
buyer_typeNo
deadline_days_leftNo
estimated_value_eurNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral disclosure burden. It explains that `tender_id` looks up the active pool and automatically pulls value/deadline, while `text` is scanned directly, and it describes the output as a red-flag scan plus a 0-100 fit score. It could mention error/empty-input behavior, but the disclosed behavior is above-average.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: a one-sentence purpose, an input-mode explanation with clear either/or guidance, override semantics, and a statement of expected output. Each line adds useful guidance and no unnecessary filler is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the light schema annotations and the absence of an output schema, the description covers the core invocation modes, how overrides behave, and what the tool returns. The main omissions are the purpose of `buyer_type` and behavior when neither `tender_id` nor `text` is supplied, but the overall description is still adequate for an agent to use the tool reasonably.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It meaningfully explains the roles of `text`, `tender_id`, `estimated_value_eur`, and `deadline_days_left`, including the override behavior. The one gap is `buyer_type`, whose effect is not described anywhere, but most parameters gain useful semantic meaning beyond their names and types.

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?

The description is specific: 'Analyze a tender's cross-border risk and fit for an SME bidder' clearly identifies the action, resource, and analytical outcome. It sets this tool apart from the sibling lookup and search tools, which focus on discovering or returning tender details rather than analyzing fit and risk.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains how to invoke it — providing either a `tender_id` or RFP `text` — and that overrides are available. However, it does not explicitly state when to choose this tool over siblings like `tender_details` or `market_snapshot_tool`, so usage guidance is largely implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

eu_thresholdC

Check whether a tender's value is above EU mandatory publication thresholds. 'category' in works/supplies/services/concessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNostandard
categoryYes

TDQS

C2.6/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility for behavioral disclosure. It fails to state what the tool returns (e.g., boolean, threshold value, comparison result), whether it is read-only or has side effects, or what inputs are actually required to assess the tender's value. The mention of category values is the only behavioral hint, but it leaves the core behavior opaque.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, direct sentences with no filler. The purpose is front-loaded, and the category constraint is included efficiently. It earns a high score for being appropriately concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of an output schema, annotations, and the cryptic 'kind' parameter, this description is incomplete. It does not explain the return value, the meaning of 'kind', or how the tender value is passed. An agent would have to guess how to invoke it correctly, especially since the required 'category' parameter is explained but the optional 'kind' is not.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains that 'category' can be 'works/supplies/services/concessions', which adds meaning for that parameter. However, it does not explain the 'kind' parameter at all, nor does it specify how the tender's value is provided (there is no value parameter in the schema). The description only partially clarifies the inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Check whether') and a specific resource ('a tender's value is above EU mandatory publication thresholds'), and even enumerates the valid category values. However, it does not explicitly differentiate from sibling tools such as market_snapshot_tool or analyze_tender, so it lacks explicit sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives. The description simply states what it does, leaving it to the agent to infer the context. There is no mention of when not to use it, prerequisites, or why it should be chosen over other threshold-related or tender-analysis tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

look_up_cpvA

Translate a good/service description into EU CPV division codes.

Useful for cross-border bidders to classify a tender or pick the right alert keywords. Also returns all divisions if 'query' is empty.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It explicitly states the main transformation and discloses the empty-query behavior: 'Also returns all divisions if query is empty.' It does not describe output format or error cases, but for a simple lookup tool this is reasonably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences: the core purpose, the user scenarios, and the edge-case behavior. No wasted words or redundant schemas. The most important information (input-to-output translation) is placed first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (one required string parameter, no nested objects, no output schema), the description covers the essential context: what input to provide and what to do with an empty input. It does not specify return-value details, but for a code-lookup tool this is a minor gap, not a critical one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must clarify the only parameter 'query'. It does: query is a good/service description line, and an empty string triggers a special 'return all divisions' behavior. This adds meaningful semantics entirely absent from the schema.

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?

The description opens with a specific verb and resource: 'Translate a good/service description into EU CPV division codes.' This clearly states the input, the transformation, and the output type. It also implicitly distinguishes itself from siblings like look_up_notice_type by focusing on CPV divisions rather than other classifications.

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?

The description explains when it is useful: 'cross-border bidders to classify a tender or pick the right alert keywords.' This gives clear usage context. It does cite alternatives or say when not to use it, but there is no need, since the use case is well articulated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

look_up_notice_typeA

Explain what an EU tender notice type (e.g. 'cn-standard', 'pin', 'results') means and what it signals to a bidder.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes

TDQS

A4/5.0
Behavior3/5

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 correctly implies a read-only explanatory operation and adds bidder-relevant context, but it does not specify the output form, whether it returns a standardized definition, or any limitations on accepted codes. This is acceptable for a simple lookup but not richly transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence, front-loaded with the core action and resource, with examples woven in naturally. Every part of the sentence earns its place, and there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, low-complexity explanatory tool, the description covers the essential semantics and gives useful examples. The absence of an output schema is mostly fine because the output is an explanation, but a note about the response format or accepted-code coverage would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides only a single 'code' string with 0% description coverage, so the description must compensate. It does so by giving the semantic domain ('EU tender notice type') and three concrete accepted code examples, which is meaningful guidance beyond the bare schema. However, it stops short of describing the full accepted set or case-sensitivity.

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?

The description states a specific verb ('explain') and a specific resource ('EU tender notice type'), with concrete examples ('cn-standard', 'pin', 'results') and a clear audience-focused purpose ('what it signals to a bidder'). This clearly distinguishes it from sibling tools like look_up_cpv, which covers a different code domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied by the description and name — call this when the user needs the meaning of a notice type code — but there is no explicit when-to-use guidance, no mention of alternatives, and no statement of when not to use it. The context is clear enough for inference, but it does not meet the 'explicit' bar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

market_snapshot_toolA

Get a market overview of available tenders: activity by country and sector, typical contract values, and the most urgent deadlines.

Optionally filter by country (ISO) or CPV division.

ParametersJSON Schema
NameRequiredDescriptionDefault
cpvNo
countryNo
max_resultsNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It implies a read-only operation ('overview', 'snapshot') and indicates the output is a summary (typical values, most urgent deadlines), but it does not disclose potential limitations like data recency, pagination, or any side effects. It is somewhat transparent but incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences that clearly state the purpose and available filters. No jargon, no redundancy, well-structured with a colon to introduce the overview content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, the description must cover side effects, requirements, and limitations. It provides the core purpose and optional filters but omits any alternative tool guidance, performance expectations, or authorization needs. It is adequate for a simple read-only snapshot tool but lacks some contextual depth.

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?

The description partially explains the parameters: it mentions country (ISO) and CPV division for filteringaine but does not detail the max_results parameter or specific formats (e.g., how CPV division is entered). Since no schema descriptions are present and the description covers only two of three parameters, it is moderately informative but not exhaustive.

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?

The description states a clear action ('Get a market overview') on a specific resource ('available tenders'), and specifies the content: activity by country and sector, typical contract values, and urgent deadlines. It distinguishes itself from siblings like search_tenders by focusing on aggregated 'overview' data rather than individual tender searches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions optional filters (country ISO, CPV division) but does not explicitly state when to use this tool versus search_tenders or others. It implies a summary use case but does not give exclusion criteria or direct alternatives. There is no '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.

search_tendersB

Search EU public tenders.

Returns a list of tender records with id, title, buyer, country, CPV, deadline, and estimated value. Free text 'query' matches title/description. 'country' is an ISO code like 'DE'. 'cpv' is a CPV division (e.g. 48000000).

ParametersJSON Schema
NameRequiredDescriptionDefault
cpvNo
limitNo
queryNo
sourceNoauto
countryNo
deadline_fromNo
max_value_eurNo
min_value_eurNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. It does disclose the return shape, free-text matching behavior, and ISO/CPV value formats, which is helpful. However, it omits default limit behavior, the meaning of source='auto', pagination, and how filters combine.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the core purpose, and every sentence adds useful information. It avoids filler and is appropriately sized for a search tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without an output schema, listing the returned fields is a good compensation. However, with 8 optional parameters and no annotations, the description leaves meaningful gaps around source semantics, limit behavior, and filter interactions, making it adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains query, country, and cpv, but 5 of 8 parameters (limit, source, deadline_from, min_value_eur, max_value_eur) receive no semantic explanation. The property names are somewhat self-explanatory, but the description does not fully carry the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches EU public tenders and lists the fields returned, which makes the basic purpose obvious. It does not explicitly contrast with sibling tools like tender_details, but the 'list of tender records' wording signals an aggregate search rather than a single-record lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives like tender_details, analyze_tender, or market_snapshot_tool. The parameter explanations imply how to filter, but the description never states selection criteria or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tender_detailsB

Get the full structured record for one tender by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
tender_idYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states it returns 'full structured record', but does not disclose the record's fields, structure, pagination, or error behavior. While 'get' implies a read-only operation, this is not explicit, and no side effects or prerequisites are mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence of 9 words that front-loads the core action ('Get the full structured record') without extraneous content. It is appropriately brief and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and only one parameter, the description should describe what the 'full structured record' contains and any expectations on the output. It is vague, omits return format details, error handling, and does not clarify the scope of a tender record. An agent lacks confidence in what will be returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description adds no information about tender_id beyond the schema's type string. There is no guidance on format, constraints, examples, or what constitutes a valid tender ID, so the description offers zero value over the schema.

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?

The description states the verb 'Get', the resource 'full structured record for one tender', and the method 'by id'. This clearly differentiates it from siblings like search_tenders (which searches broadly) and look_up_cpv (which looks up CPV codes).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its use for fetching a specific tender by ID, but provides no explicit guidance on when to choose it over alternatives. It does not mention conditions such as 'use when you have a tender_id' or exclusion cases, leaving the agent to infer the appropriate context.

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. 7 tool updatesv0.1.0
    • First observedanalyze_tender
    • First observedeu_threshold
    • First observedlook_up_cpv
    • First observedlook_up_notice_type
    • First observedmarket_snapshot_tool
    • First observedsearch_tenders
    • First observedtender_details

TDQS

A3.5/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a distinct purpose: searching for tenders, getting market snapshots, analyzing bidder fit, looking up CPV codes, explaining notice types, checking thresholds, and fetching details. There is no overlap that would cause an agent to misselect between them. The analyze_tender tool's dual input modes are intuitively separate from the other tools.

Naming Consistency3/5

Tool names mix patterns: most follow verb_noun (search_tenders, analyze_tender, look_up_cpv, look_up_notice_type), but market_snapshot_tool and eu_threshold use noun phrases, and tender_details is noun_noun. While readable, the inconsistent structure and the odd '_tool' suffix in market_snapshot_tool reduce predictability.

Tool Count5/5

With 7 tools, the server is well-scoped and covers the core needs of EU tender discovery, analysis, and reference lookups without bloat or redundancy. Each tool clearly earns its place.

Completeness4/5

The tool surface covers search, detail retrieval, market overview, cross-border analysis, CPV translation, notice type explanation, and threshold checks—covering the main workflows. Minor gaps exist, such as no ability to fetch attached tender documents or filter tenders by date range in search, but these are edge cases that agents can often work around.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to find, score, and monitor government contract opportunities across UK, EU, and US with AI-powered relevance scoring.
    2
    75 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables searching and retrieving detailed information on EU grant calls and tenders from the EU Funding & Tenders Portal, including deadlines, budgets, and topic details.
    8 npm
    1
    MIT