Skip to main content
Glama

TenderAPI

Server Details

Search EU public tenders from TED and national portals by CPV code, country, buyer or value.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: search vs. get for tenders, plus separate tools for organisations and CPV codes. The descriptions explicitly link related tools (e.g., use search_organisations id with get_organisation_tenders, call search_cpv_codes before search_tenders), leaving little room for misselection.

Naming Consistency5/5

All names use consistent snake_case with a predictable verb_noun pattern: get_* for direct retrieval and search_* for querying. Singular/plural differences reflect natural resource semantics without breaking the convention.

Tool Count5/5

Five tools are well-scoped for a read-only public procurement search API. Each tool earns its place by covering a distinct resource or action, with no redundant or filler operations.

Completeness4/5

The surface covers core search and retrieval for tenders, organisations, and CPV codes, including full abstract and winners. Minor gaps exist, such as no dedicated organisation profile lookup beyond tenders or no direct filtering of tenders by supplier, but these are workable.

Available Tools

5 tools
get_organisation_tendersOrganisation tender historyA
Read-onlyIdempotent
Inspect

List tenders an organisation published as buyer (purchase history) or won as supplier (award history).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page, 1-50. Default 10.
rolesNobuyer returns what the organisation procured, winner what it was awarded. Default both.
cursorNopage.nextCursor from the previous call.
sortByNoSort field. Default publicationDate.
sortOrderNoSort direction.
organisationIdYesOrganisation id (UUID) from search_organisations or a tender's buyer.id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
tendersYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds only semantic role interpretation ('buyer = purchase history'), not behavioral traits like pagination, rate limits, or auth requirements, so it adds modest value beyond the structured fields.

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 front-loaded sentence with zero waste, clearly stating the resource and the two role interpretations. Every phrase earns its place.

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?

With an output schema present and 100% parameter description coverage, the description need not explain return values or parameter details. It is nearly complete for a listing tool, though it could briefly state its relationship to search_tenders for routing clarity.

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%, and the schema already documents all six parameters including the roles enum and cursor pagination. The description restates the buyer/winner meaning but adds no syntax or format detail beyond what the schema provides, so the baseline 3 is appropriate.

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 specific verb ('List'), resource ('tenders'), and scope ('an organisation published as buyer ... or won as supplier'), so an agent can understand exactly what it does. It does not explicitly differentiate from siblings like search_tenders, which also returns tenders, so it stops short of a 5.

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 clarifies the two role modes (buyer = purchase history, winner = award history), which implies when each mode is useful. However, it gives no explicit guidance on when to use this organisation-scoped tool versus search_tenders or get_tender, and no exclusions or prerequisites are stated.

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

get_tenderGet tenderA
Read-onlyIdempotent
Inspect

Fetch one tender by id, including its full abstract and winners.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTender id (UUID) as returned by search_tenders.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
linkYes
buyerYes
titleYes
sourceYes
statusYes
winnersYes
abstractYes
cpvCodesYes
deadlineYes
serviceTypeYes
estimatedValueYes
deadlineHasTimeYes
publicationDateYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds that the response includes the 'full abstract and winners', which is modest extra context, but an output schema already exists so return contents are largely structured data; no auth scope or not-found behavior is described.

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 front-loaded sentence with the resource, key constraint (id), and payload summary. No padding or redundancy.

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 read tool with full schema coverage, output schema, and annotations, the description covers purpose and identifier source sufficiently. Minor gaps such as error/empty-result behavior are acceptable given the output schema handles returns.

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?

With a single parameter at 100% schema description coverage, the schema carries the semantics (UUID, sourced from search_tenders). The description's 'by id' adds nothing beyond the schema, so baseline 3 is appropriate.

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?

States a specific verb and resource ('Fetch one tender by id') and scopes it as a single-item lookup, which naturally separates it from search_tenders and get_organisation_tenders. It does not explicitly name the sibling it contrasts with, so it stops short of a 5.

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?

'By id' implies the caller must already hold a tender id, and the schema notes ids come from search_tenders, so the retrieval workflow is inferable. However, the description itself gives no explicit when-to-use guidance or exclusion (e.g. use search_tenders when you only have criteria), leaving it implicit.

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

search_cpv_codesSearch CPV codesA
Read-onlyIdempotent
Inspect

Look up Common Procurement Vocabulary codes by English keywords or browse by code prefix. Call this before search_tenders when the user describes a subject rather than giving codes.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum codes to return. Default 20.
queryYesEnglish keywords describing the subject (for example "software consultancy"), or a numeric code prefix such as 4523 to browse a branch.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codesYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds useful workflow context (this is a prerequisite resolution step for search_tenders) but says nothing about result limits behavior or ranking; still, it exceeds the low bar set by the annotations.

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?

Two sentences, zero waste: the purpose is front-loaded and the sequencing guideline follows immediately. Nothing redundant.

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 an output schema present, return values need not be described, and the description covers purpose, both input modes, and the ordering relative to search_tenders. Nothing an agent needs to invoke it correctly is missing.

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 both parameters (query and limit) are already documented in the schema with the same keyword-or-prefix semantics the description mentions. The description adds no syntax or format detail beyond the schema, so baseline 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 (look up) and resource (Common Procurement Vocabulary codes) plus two explicit modes: keyword search and prefix browsing. This clearly differentiates it from siblings like search_tenders, which operate on tenders rather than the code vocabulary itself.

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

Usage Guidelines5/5

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

Gives an explicit trigger and ordering rule: 'Call this before search_tenders when the user describes a subject rather than giving codes.' It names the alternative tool and the condition that selects it, leaving nothing to inference.

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

search_organisationsSearch organisationsA
Read-onlyIdempotent
Inspect

Find buyers and suppliers by name and country. Use the returned id with get_organisation_tenders.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoPart of the organisation name, any language.
limitNoResults per page, 1-50. Default 10.
cursorNopage.nextCursor from the previous call.
countriesNoISO 3166-1 alpha-3 country codes.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
organisationsYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered and the description is not required to restate it. The only added behavioral context is that results yield ids that feed get_organisation_tenders; nothing is said about result volume, pagination behavior, or matching semantics for the name filter.

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?

Two short sentences, no filler, and the core capability is front-loaded ahead of the follow-up routing hint. Every sentence earns its place.

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?

With an output schema present, return values need not be explained, and the description supplies the one thing the schema cannot: how the returned id is consumed. Pagination and degree of name matching remain implicit, but for a simple search tool the definition is nearly complete.

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% — name, limit, cursor and countries are all documented in the schema. The description's 'by name and country' merely restates two of those parameters without adding format, matching, or normalization detail, so the baseline 3 is appropriate.

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 gives a specific verb ('Find') and resource ('buyers and suppliers'), and clarifies the scope with filter facets ('by name and country'). It is clearly distinguishable from search_tenders and search_cpv_codes by resource, though it does not explicitly contrast itself with those siblings.

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?

It provides a concrete next-step ('Use the returned id with get_organisation_tenders'), which is genuine usage guidance for downstream work. However, it never says when to pick this tool over search_tenders, nor any when-not conditions, so the selection guidance is only implied.

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

search_tendersSearch tendersA
Read-onlyIdempotent
Inspect

Search public procurement notices from TED and national portals by CPV code, buyer country, status, dates, estimated value and title. Returns a page of tenders with links to the official notices.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page, 1-50. Default 10.
queryNoSubstring matched against the tender title. Titles are written in the buyer's national language, so prefer cpvCodes plus buyerCountries for topic searches.
cursorNopage.nextCursor from the previous call. Filters must stay identical.
sortByNoSort field. Default publicationDate.
sourcesNoPortals to include. Default is all.
cpvCodesNo8-digit CPV codes. A parent code such as 72000000 also matches all of its child codes. Use search_cpv_codes to find codes.
currencyNoCurrency of minValue and maxValue. Default EUR.
maxValueNoMaximum estimated contract value in currency.
minValueNoMinimum estimated contract value in currency.
statusesNoTender statuses. open means not yet awarded or cancelled; combine with deadlineFrom to find tenders that still accept bids.
buyerNameNoPart of the buying organisation's name.
sortOrderNoSort direction. Defaults: publicationDate desc, deadline asc, estimatedValue desc.
deadlineFromNoEarliest submission deadline, YYYY-MM-DD or RFC3339. Set to today's date to exclude expired tenders.
serviceTypesNoContract nature.
deadlineUntilNoLatest submission deadline, YYYY-MM-DD or RFC3339. A plain date includes the whole day.
publishedFromNoEarliest publication date, YYYY-MM-DD or RFC3339.
buyerCountriesNoISO 3166-1 alpha-3 country codes of the buyer, for example AUT, DEU, SVN.
publishedUntilNoLatest publication date, YYYY-MM-DD or RFC3339.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
tendersYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds that results are paginated and carry links to official notices, which is useful context, but it omits coverage/completeness caveats (e.g. partial portal coverage, latency, auth) for an 18-parameter cross-portal search.

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?

Two sentences: the first leads with the action, scope and filter surface; the second states the return shape. No filler, nothing buried, and the core capability is front-loaded.

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?

With an output schema present, the description needn't detail return fields, and it correctly limits itself to scope, filters and pagination. For a broad multi-portal search it is nearly complete, though a note on result freshness or source coverage would close the remaining gap.

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 18 parameters are already documented, including cursor semantics, CPV parent-code expansion, and status interpretation. The description only recaps the filter categories already present in the schema, adding no syntax or behavioral nuance beyond it. Baseline 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 (search) and resource (public procurement notices/tenders) and names the two source families (TED and national portals). It also lists the filter dimensions and the return shape, which cleanly separates it from siblings like get_tender (single notice) and get_organisation_tenders (buyer-scoped).

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 usage by enumerating searchable dimensions, and the schema notes that topic searches should prefer cpvCodes plus buyerCountries. However, it never states when to choose this tool over search_organisations, get_organisation_tenders or get_tender, nor any when-not conditions. Adequate but with a clear routing gap.

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. 5 tool updates
    • First observedget_organisation_tenders
    • First observedget_tender
    • First observedsearch_cpv_codes
    • First observedsearch_organisations
    • First observedsearch_tenders

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Perplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.
    2
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    11 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources