HammerMap: Spanish court auctions and State sales
Server Details
Spain's court auctions and State sales from BOE open data, updated each working day. Free, no key.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 3 tools
Each tool has a clearly distinct role: get_facets returns aggregate counts/filter discovery, search_listings finds short listing records, and get_listing retrieves one full record by id. The descriptions explicitly explain the workflow, so an agent can reliably choose the right tool.
All tool names use consistent snake_case verb_noun patterns: get_facets, get_listing, search_listings. The use of singular/plural nouns is natural and predictable.
Three tools are well-scoped for a read-only search and detail API: facet discovery, search, and record retrieval. No unnecessary tools are present, and each earns its place.
The tool set covers the core read-only lifecycle: discover filters/freshness, search listings, and retrieve full listing details with official links. Minor gaps may exist for ancillary workflows such as saved searches or alerts, but they are not central to the stated purpose.
Available Tools
3 toolsget_facetsFilter values, counts and data freshnessARead-onlyIdempotentInspect
Counts of current listings by type, procedure, asset type and province, the starting-price range, covered countries, and data freshness (data_updated, latest_boe_publication, update_frequency). Use it to discover valid filter values for search_listings or to answer "how many / how fresh" questions. No arguments.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| facets | Yes | |
| attribution | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world and non-destructive, so the safety profile is covered. The description adds behavioral context beyond that by disclosing data-freshness semantics (data_updated, latest_boe_publication, update_frequency) and confirming the call takes no arguments, though it says nothing about result size or whether counts can be stale.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no filler; the facet inventory leads and the usage guidance follows. Slightly better front-loading would put the purpose before the field enumeration, and the parenthetical freshness list is dense but earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 does not need to explain return shapes, and annotations carry the safety profile. For a no-argument, read-only discovery tool, everything an agent needs to decide to call it is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters and the description explicitly confirms 'No arguments,' matching the empty schema with additionalProperties false. No further parameter meaning is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource (facet counts of current listings by type, procedure, asset type, province) and the extra data returned (price range, countries, freshness fields). It is instantly distinguishable from get_listing (single record) and search_listings (the consumer of these filter values).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states two use cases: discovering valid filter values for search_listings, and answering 'how many / how fresh' questions, which routes the agent away from the search siblings. It never states a when-not-to-use condition, but the positive routing is clear enough to act on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_listingGet one listingARead-onlyIdempotentInspect
Full record for one listing by id from search_listings (SUB-… for court auctions, BOE-B-… for State sales): lots with starting price and deposit, bid deadline, auction session date, bidding mode, approximate place, HammerMap's general risk analysis with legal basis (not legal advice), corrections, official BOE and portal links, and data freshness (attribution.data_updated). Returns an error if the id is not listed any more. Bids and payments happen only on the official channel in urls / bidding.where.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Listing id exactly as returned by search_listings, e.g. SUB-JA-2026-267510 or BOE-B-2026-35250 |
Output Schema
| Name | Required | Description |
|---|---|---|
| licence | No | |
| listing | Yes | |
| attribution | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered; the description adds genuinely new behavior: it errors when the id is no longer listed, exposes data freshness via attribution.data_updated, and flags the risk analysis as non-legal-advice. It omits auth/rate or pagination behavior, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and keyed on the id, then a single long enumeration of returned fields. Dense but every clause maps to real content (lots, deposit, deadline, mode, place, risk analysis, links, freshness); the official-channel caveat at the end is short and useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value explanation is optional, yet the description still previews the payload, states the error condition, identifies the freshness field, and redirects bidding/payment to official urls. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the pattern already constrains the id format, so the baseline is 3. The description adds meaning beyond the schema by decoding what the two id prefixes represent (court auctions vs State sales), helping the agent validate provenance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (retrieve full record) and resource (one listing), scoped by id, and immediately distinguishes itself from the sibling search_listings by requiring an id that came from that search. The id prefix conventions (SUB-… court auctions, BOE-B-… State sales) further pin down the resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the call as a follow-up to search_listings and gives the exact id forms it accepts, so an agent knows when this tool applies. It does not spell out an exclusion case (e.g. what to do instead when the id is unknown) beyond noting an error is returned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_listingsSearch Spanish auction listingsARead-onlyIdempotentInspect
Search current Spanish court auctions (BOE section IV) and State/public-body sales (BOE section V-B). Use it first to find listings by province, town, type, asset type, starting price or dates; then call get_listing with an id for the full record. Returns total count, paging (limit/offset) and short records: id, title in 5 languages, approximate place, seller, starting price in EUR when the notice gives one, publication date, deadline, HammerMap risk light and links (HammerMap page, official channel, BOE notice). Coverage: Spain only. Data are updated once per working day; attribution.data_updated and attribution.latest_boe_publication show how fresh they are. Court auction notices in BOE open data have no price, description or closing date (those are on the official portal). All filters are optional and combine with AND.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free text, accent-insensitive, matched in title, seller, town, province and lot description, e.g. "vivienda" or "Puerto de Valencia" | |
| sort | No | published_desc = newest first (default), deadline_asc = closing soonest, price_asc / price_desc = by starting price (no price last) | published_desc |
| type | No | court_auction = judicial auction (BOE IV); state_sale = sale by the State or a public body (BOE V-B) | |
| limit | No | Results per page, 1-100 | |
| offset | No | Number of results to skip, for paging | |
| country | No | ISO 3166-1 alpha-2 country code. Only ES (Spain) has data; any other value returns 0 results. | ES |
| province | No | Spanish province, exact name, accent-insensitive, e.g. Madrid, Valencia, Illes Balears. Call get_facets for the list. | |
| max_price | No | Maximum starting price in EUR. Only listings with a known price match. | |
| min_price | No | Minimum starting price in EUR. Only listings with a known price match. | |
| procedure | No | apremio = enforcement for debt, voluntaria = voluntary court sale, concursal = insolvency, estado = State sale | |
| asset_type | No | vivienda = home, local = commercial premises, garaje = parking, solar = building plot, rustica = rural land, inmueble = other real estate, vehiculo = vehicle, otros = other goods, unknown = not stated in the notice | |
| deadline_to | No | Bid deadline to; only listings with a known deadline match (YYYY-MM-DD) | |
| municipality | No | Town, exact name: the court's town for court auctions, the asset's town for State sales | |
| published_to | No | BOE publication date to (YYYY-MM-DD) | |
| deadline_from | No | Bid deadline from; only listings with a known deadline match (YYYY-MM-DD) | |
| published_from | No | BOE publication date from (YYYY-MM-DD) |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | Short listing records |
| limit | No | |
| total | Yes | Number of matching listings |
| offset | No | |
| licence | No | |
| attribution | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld=false, so safety is covered. The description adds genuinely useful behavioral context: Spain-only coverage, once-per-working-day refresh with attribution fields exposed, and the important caveat that BOE court-auction notices lack price, description and closing date. It could note more about pagination limits or result caps, but the missing-data caveat is exactly the kind of context annotations can't convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and usage, then returns, then caveats and freshness. It is dense but nearly every sentence carries information; the short-record field list overlaps slightly with the existing output schema, but that is minor.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 16 optional parameters, an output schema and annotations present, the description supplies everything an agent still needs: coverage, freshness, the AND-combination rule, the price/deadline absence caveat and the get_listing handoff. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds real semantic value beyond the schema by stating that all filters are optional, combine with AND, and that Spain-only coverage ties to the country parameter. That AND-combination rule is not obvious from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and two precisely defined resources (BOE section IV court auctions and section V-B state sales) and explicitly distinguishes from get_listing by naming it as the follow-up for full records. An agent can tell exactly what this tool returns versus its siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use it first to find listings by province, town, type, asset type, starting price or dates; then call get_listing with an id for the full record' gives an explicit ordering and the alternative tool. Nothing is left to inference about when to choose this versus get_listing.
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.
2 tool updates
- Changed
get_listing1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"Listing id, e.g. SUB-JA-2026-267510 or BOE-B-2026-35250"New value: +"Listing id exactly as returned by search_listings, e.g. SUB-JA-2026-267510 or BOE-B-2026-35250"
- Changed
search_listings18 fields changed- added
Input schema / properties / asset_type / descriptionAdded value: +"vivienda = home, local = commercial premises, garaje = parking, solar = building plot, rustica = rural land, inmueble = other real estate, vehiculo = vehicle, otros = other goods, unknown = not stated in the notice" - changed
Input schema / properties / country / descriptionPrevious value: -"ISO country code. Only ES has data."New value: +"ISO 3166-1 alpha-2 country code. Only ES (Spain) has data; any other value returns 0 results." - added
Input schema / properties / deadline_from / descriptionAdded value: +"Bid deadline from; only listings with a known deadline match (YYYY-MM-DD)" - added
Input schema / properties / deadline_to / descriptionAdded value: +"Bid deadline to; only listings with a known deadline match (YYYY-MM-DD)" - added
Input schema / properties / limit / descriptionAdded value: +"Results per page, 1-100" - changed
Input schema / properties / max_price / descriptionPrevious value: -"EUR; only listings with a known starting price"New value: +"Maximum starting price in EUR. Only listings with a known price match." - changed
Input schema / properties / min_price / descriptionPrevious value: -"EUR; only listings with a known starting price"New value: +"Minimum starting price in EUR. Only listings with a known price match." - changed
Input schema / properties / municipality / descriptionPrevious value: -"Town (court town for court auctions)"New value: +"Town, exact name: the court's town for court auctions, the asset's town for State sales" - added
Input schema / properties / offset / descriptionAdded value: +"Number of results to skip, for paging" - changed
Input schema / properties / procedure / descriptionPrevious value: -"apremio (debt), voluntaria, concursal (insolvency), estado (State sale)"New value: +"apremio = enforcement for debt, voluntaria = voluntary court sale, concursal = insolvency, estado = State sale" - changed
Input schema / properties / province / descriptionPrevious value: -"Spanish province, e.g. Madrid, Valencia, Illes Balears (accent-insensitive)"New value: +"Spanish province, exact name, accent-insensitive, e.g. Madrid, Valencia, Illes Balears. Call get_facets for the list." - added
Input schema / properties / published_from / descriptionAdded value: +"BOE publication date from (YYYY-MM-DD)" - added
Input schema / properties / published_to / descriptionAdded value: +"BOE publication date to (YYYY-MM-DD)" - changed
Input schema / properties / q / descriptionPrevious value: -"Free text: title, seller, town, lot description"New value: +"Free text, accent-insensitive, matched in title, seller, town, province and lot description, e.g. \"vivienda\" or \"Puerto de Valencia\"" - added
Input schema / properties / sort / descriptionAdded value: +"published_desc = newest first (default), deadline_asc = closing soonest, price_asc / price_desc = by starting price (no price last)" - changed
Input schema / properties / type / descriptionPrevious value: -"court_auction or state_sale"New value: +"court_auction = judicial auction (BOE IV); state_sale = sale by the State or a public body (BOE V-B)" - added
Output schema / properties / items / descriptionAdded value: +"Short listing records" - added
Output schema / properties / total / descriptionAdded value: +"Number of matching listings"
3 tool updates
- First observed
get_facets - First observed
get_listing - First observed
search_listings
Related MCP Connectors
Spanish public property auctions (judicial, AEAT, Social Security): daily data and risk flags.
Spain's company registry gazette (BORME): more than 9.6 million events since 2009. API key or OAuth.
Search Spain's BOE/BORME gazettes, open EU funding calls and EU TED tenders. Keyless sources.
Spain consolidated legislation — Agencia Estatal Boletín Oficial del Estado (BOE), open-data API.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server for Spain's official BOE auction portal: search judicial foreclosures, notarial and tax-agency auctions, get consolidated per-auction detail (assets, lots, bids, authority contacts) and computed legal thresholds (art. 671 LEC). Clean JSON, GDPR-safe, no headless browser.3AGPL 3.0
- AlicenseAqualityBmaintenanceEnables AI clients to query Spain's official BDNS subsidy and grant listings and BOE open-data publications live, with exact counts, computed deadlines, forecast calendars, and literal PDF text of grant bases. It also surfaces BOE oposiciones and licitaciones, flagging uncertainty instead of inventing data.100MIT
- FlicenseNot gradedqualityDmaintenanceEnables searching and retrieving details of over 500,000 Spanish government grants and subsidies from the official BDNS database, without requiring an API key.-
- AlicenseNot gradedqualityBmaintenanceAccess Spain public procurement tender notices from PLACSP without API keys.219 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.