Skip to main content
Glama

EU public tender search (TED)

ted_tender_search
Read-onlyIdempotent

Search EU public procurement notices (tenders, contract notices, awards) on TED through the official API v3: keywords, optional buyer country and open-deadline filter, newest first. Free: the 25 newest matches. With bulk=true or page: 100 notices per page, pages 1-50, for $0.002 USDC. Paid calls made without a payment return isError with the x402 v2 PaymentRequired object (amount in USDC atomic units, network, payTo, HTTP endpoint); retry with the signed PaymentPayload in params._meta["x402/payment"]. Invalid input and calls where every item fails are never charged. Fetches follow robots.txt, use the User-Agent AdamHaleTools/1.0 and refuse private or internal addresses.

Input Schema

NameRequiredDescriptionDefault
qYesKeywords; a comma separates alternatives (OR), up to 5, e.g. "cloud hosting,data centre".
bulkNotrue = paid tier (100 notices per page).
pageNoPaid tier: result page of 100 notices.
countryNoOptional buyer country, ISO 3166-1 alpha-2 (EU/EEA + CH), e.g. "FR".
open_onlyNotrue = only notices whose tender deadline has not passed.
x402_paymentNoOptional, paid tier only: a signed x402 v2 PaymentPayload, base64 (the value an HTTP client sends as the PAYMENT-SIGNATURE header). Prefer params._meta["x402/payment"]. Never a private key or seed phrase.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations (readOnly, openWorld, idempotent, non-destructive) only cover the safety profile; the description adds unusually rich behavior beyond them: pricing ($0.002 USDC), pagination ceiling (pages 1-50), the exact failure shape (isError with an x402 v2 PaymentRequired object in USDC atomic units), and the no-charge guarantees for invalid input or all-failed items. It also discloses network behavior (robots.txt compliance, User-Agent AdamHaleTools/1.0, refusal of private/internal addresses).

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?

Four tight sentences, front-loaded with what the tool does, then tiering/pricing, then error-and-retry behavior, then fetch/safety policy. Despite covering an unusually large surface, there is no filler and each sentence carries decision-relevant information.

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 no output schema, the description still conveys result shape (25 newest free, 100 per page paid, newest first) and all failure modes, so an agent can call it correctly. The only gap is that the fields returned per notice are not described, which is a minor omission given the no-output-schema constraint.

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 100%, so the schema already documents q, bulk, page, country, open_only and x402_payment, which sets the baseline at 3. The description nonetheless adds meaning: it frames q as keyword search with the optional country and open-deadline filters, ties bulk/page to the paid tier, and explains the _meta["x402/payment"] delivery path for the payment parameter.

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) plus the resource (EU public procurement notices: tenders, contract notices, awards) and the data source (TED official API v3). This is unambiguous and clearly separable from every sibling, all of which are unrelated web/content utilities.

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?

Explicitly explains when the free path applies ('the 25 newest matches') versus the paid path ('bulk=true or page: 100 notices per page, pages 1-50') and how to recover from a payment failure via the signed PaymentPayload retry. It does not need to route to a sibling since none overlap, but it stops short of spelling out exclusion cases beyond the payment/error flow.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources