Skip to main content
Glama

Distil — Machine-Native Public Data Refinery

Search Spain Public Tenders

search_es_tenders
Read-onlyIdempotent

Searches Spain's aggregated PLACSP public sector procurement tenders (excludes minor contracts) by keyword, CPV code, contracting authority, or budget range — continuously synced from the official syndication feed into Distil's data moat.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of search results to return (default 5, max 20).
queryNoFree-text search query, project title keyword, or contracting authority.
maxBudgetNoMaximum budget threshold in EUR.
minBudgetNoMinimum budget threshold in EUR.
forceFreshNoSpend Control: When true, bypasses Edge KV cache and forces a real-time statutory primary registry call (applies 2.5x Freshness Inconvenience Surcharge). Default: false.
maxAgeHoursNoSpend Control: Maximum acceptable data age in hours (e.g. 48 for 2 days tolerance). If cache satisfies this, delivers sub-5ms at standard 1.0x Economy rate. Set to 0 to force live primary fetch.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
contentYes
isErrorNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description need not restate safety. It adds valuable behavioral context: the data is aggregated from PLACSP, excludes minor contracts, and is continuously synced from the official syndication feed. It does not detail pagination or return behavior, but the output schema likely covers that.

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 that begins with the action and resource, then enumerates the search dimensions and data source. Every clause contributes meaning, and there is no filler or redundant restating of the tool name.

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 six optional parameters, fully described schema, explicit annotations, and an output schema, the description is largely sufficient. It captures scope, exclusions, and data freshness/source. The only notable gap is the lack of explicit routing between this tool and closely related siblings like get_es_public_tender or search_eu_tenders.

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 the schema already documents every parameter. The description's phrase 'by keyword, CPV code, contracting authority, or budget range' groups the parameters semantically, but it adds little beyond the schema text. This matches the baseline 3 for high schema coverage.

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 opens with a specific action and resource: 'Searches Spain's aggregated PLACSP public sector procurement tenders', and it adds concrete search dimensions (keyword, CPV code, contracting authority, budget range). It distinguishes from siblings such as get_es_public_tender implicitly through the verb 'searches' and plural 'tenders', but it never explicitly names or contrasts that sibling.

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?

There is no explicit when-to-use guidance or mention of alternatives. An agent must infer that this tool is for broad search while get_es_public_tender is for retrieving a specific tender. The described scope and filter-by dimensions imply usage context, but the description does not state when not to use it.

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.

TDQS

A4/5.0
Disambiguation5/5

Each tool maps to a distinct data product: country-specific filings, tender records/search, risk scoring, sanctions screening, and entity graphs. The search/get split cleanly separates discovery from retrieval, and even similar country-specific tools are clearly qualified by region and entity type.

Naming Consistency5/5

All tools use a consistent snake_case verb_noun pattern: get_* for retrieval and search_* for discovery, with country or region qualifiers where applicable. Cross-cutting tools like get_corporate_risk_score and get_tender_intelligence fit the same pattern without feeling out of place.

Tool Count4/5

At 16 tools, the server is slightly above the ideal 3-15 range, but the multi-country, multi-domain scope justifies nearly every tool. The set is heavier than a tightly focused server, yet no tool feels redundant.

Completeness4/5

The set covers the core read-only workflow well: search to find entities or tenders, get to retrieve records, plus analytical tools for risk, sanctions, and tender intelligence. Minor gaps exist, such as no Spanish company registry access and no UK tender search, but these are workable and do not block primary due-diligence workflows.

Resources