comprasal-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| COMPRASAL_CACHE_DIR | No | Cache directory (gitignored, never committed) | .comprasal-cache |
| COMPRASAL_CACHE_TTL_MS | No | Entry lifetime in milliseconds; expired entries are deleted on read | 3600000 |
| COMPRASAL_CACHE_ENABLED | No | Set to true to cache raw API responses on disk | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_procurementA | Search awarded public procurement processes from El Salvador's COMPRASAL system. Returns matched awards, each with institution, supplier, awarded amount, dates, and process code. Use list_institutions first to turn an institution name into id_institucion. HOW FILTERING WORKS: the upstream government API only filters server-side by id_institucion. Year, free-text and date-range are applied CLIENT-SIDE by this server over the award date (fecha_adjudicacion) and text fields, by scanning newest-first pages. Because of that, prefer always passing id_institucion to keep the scan focused. The response includes a 'filtering' block: if window_fully_covered is false, increase 'page' to keep scanning older records. fecha_inicio/fecha_fin here DO filter on the actual award date. Each upstream record may represent one lot/supplier line of a larger process. One call scans a bounded number of pages (~7s each upstream), so it may take 10-40s. |
| get_process_detailA | Get full detail of one procurement process by its proceso_compra id: code, internal code, publication/award dates, awarded amount, contracting form, follow-up state, and the full stage calendar (reception of offers, evaluation, etc.). The id comes from the 'proceso_compra.id' field of a search_procurement result. |
| get_award_reportA | Get the richest award report for a process: contract name, contracting form, contractual term, planned vs certified amounts, signature date, budget codes (cifrados presupuestarios), and the list of bidders (oferentes). CAVEAT: this endpoint's id is NOT the proceso_compra.id used elsewhere; it lives in a different id space. Obtain the correct id from a process detail payload. If you pass the wrong id you will get a different contract. When unsure, prefer get_process_detail. |
| get_supplier_contractsA | Find the public contracts won by a specific SUPPLIER (company), by name, across institutions. Useful to build a supplier's public-sector track record ('what has company X been awarded?'). CRITICAL LIMITATION: the upstream government API cannot filter by supplier, and only sorts newest-first, so this performs a BOUNDED scan of the most-recent records — it does NOT return a supplier's full multi-year history. The response includes a 'coverage' block stating exactly what was scanned and warning when the result is bounded. Always relay that limitation to the user; never present a bounded scan as exhaustive. If you know which institution to look within, pass id_institucion to make the scan far faster and deeper. Each page is ~7s; raising max_pages increases coverage but also wait time. |
| list_institutionsA | List/search government institutions registered in COMPRASAL, to resolve a name into the numeric id_institucion used by search_procurement. Pass 'search' with a partial name (e.g. 'salud', 'hacienda'). |
| list_modalitiesA | List contracting modalities (formas de contratación: Licitación competitiva, Libre Gestión, Contratación Directa, Comparación de precios, etc.) with their ids, to use as id_modalidad filters. |
| list_statesA | List procurement process states with their ids, to use as id_estado filters. |
| list_yearsA | List the fiscal years (ejercicios) available in COMPRASAL. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Most tools have distinct purposes, but get_award_report and get_process_detail could be confused since both provide process details. The caveat about different IDs and the distinct focus (richest award vs full detail) help clarify, but there is potential for misselection.
All tool names follow a consistent snake_case verb_noun pattern (get_, list_, search_), making the set predictable for an agent.
8 tools is well-scoped for a procurement data retrieval system, covering search, detail views, supplier lookup, and listing of reference entities without unnecessary bloat.
The tool set covers the main read operations (search, detail, supplier contracts, reference lists). A minor gap is the lack of a straightforward 'list all processes' tool, but search can be used broadly. Overall, the surface is adequate for the domain.