Public procurement for AI agents: Chile tenders and Compra Ágil, fit, buyer and supplier history.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this to decide whether a tender is worth your user's time. Pass tender_id plus company_profile (sector, capabilities, brands, certifications, in the user's words) and/or supplier_id (the user's tax id, e.g. Chilean RUT). Andes checks evidence it holds: the company's terms (with procurement synonyms) in the tender's title, items and description; the supplier's past awards in the same UNSPSC product category; the estimated amount against the supplier's usual award; and whether it already sold to this buyer. Returns fit (strong, possible, weak, insufficient_evidence), relevance_score 0-1, signals (each with status, strength, evidence and source), gaps (what would improve the judgment), the buyer's competition context (average bidders, usual winners) and agent_guidance. Without supplier_id the score is capped: text cannot prove capability. It does not read tender documents yet. Treat it as evidence; the decision is your user's. Access: needs an identified agent key (free, self-service at https://pass.andesprotocol.com).
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http tenders https://mcp.andesprotocol.com/mcp
Use this to decide whether a tender is worth your user's time. Pass tender_id plus company_profile (sector, capabilities, brands, certifications, in the user's words) and/or supplier_id (the user's tax id, e.g. Chilean RUT). Andes checks evidence it holds: the company's terms (with procurement synonyms) in the tender's title, items and description; the supplier's past awards in the same UNSPSC product category; the estimated amount against the supplier's usual award; and whether it already sold to this buyer. Returns fit (strong, possible, weak, insufficient_evidence), relevance_score 0-1, signals (each with status, strength, evidence and source), gaps (what would improve the judgment), the buyer's competition context (average bidders, usual winners) and agent_guidance. Without supplier_id the score is capped: text cannot prove capability. It does not read tender documents yet. Treat it as evidence; the decision is your user's. Access: needs an identified agent key (free, self-service at https://pass.andesprotocol.com).
| Argument | Type | Description |
|---|---|---|
| tender_id* | string | |
| supplier_id | any | |
| company_profile | any | |
| preferred_language | string | |
| include_original_evidence | boolean |
{
"type": "object",
"title": "assess_fitArguments",
"required": [
"tender_id"
],
"properties": {
"tender_id": {
"type": "string",
"title": "Tender Id"
},
"supplier_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Supplier Id",
"default": null
},
"company_profile": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Profile",
"default": null
},
"preferred_language": {
"type": "string",
"title": "Preferred Language",
"default": "en-US"
},
"include_original_evidence": {
"type": "boolean",
"title": "Include Original Evidence",
"default": false
}
}
}Use this to learn how a buyer behaves before bidding: what it awarded, to which suppliers, how many bidders its tenders draw (median_bidders, single_bidder_share) and how awards compare with the estimate (median_award_to_estimate). Pass tender_id from search_tenders, or buyer_name, or buyer_id. Built from the buyer's awarded tenders in Open Contracting (OCDS) data; period, sources and computed_at are in each match. An empty matches list comes with a note saying why. Access: needs an identified agent key (free, self-service at https://pass.andesprotocol.com).
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| buyer_id | any | |
| tender_id | any | |
| buyer_name | any | |
| preferred_language | string |
{
"type": "object",
"title": "buyer_historyArguments",
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 3
},
"buyer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Buyer Id",
"default": null
},
"tender_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Tender Id",
"default": null
},
"buyer_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Buyer Name",
"default": null
},
"preferred_language": {
"type": "string",
"title": "Preferred Language",
"default": "en-US"
}
}
}Use this before deciding whether a tender is worth pursuing. Pass a tender_id from search_tenders. Returns buyer, description, dates, estimated amount, items, documents, the question deadline and the official source_url, plus agent_guidance: deadlines, questions to ask your user, a checklist of market rules and suggested next calls. If the id is unknown it returns error.code 'not_found': retry with search_tenders using the tender name. Access: open to anonymous agents (rate-limited); a free AndesPass key raises the limit.
| Argument | Type | Description |
|---|---|---|
| tender_id* | string | |
| preferred_language | string | |
| include_original_evidence | boolean |
{
"type": "object",
"title": "get_tender_detailArguments",
"required": [
"tender_id"
],
"properties": {
"tender_id": {
"type": "string",
"title": "Tender Id"
},
"preferred_language": {
"type": "string",
"title": "Preferred Language",
"default": "en-US"
},
"include_original_evidence": {
"type": "boolean",
"title": "Include Original Evidence",
"default": true
}
}
}Use this to understand a public procurement market before choosing where to bid: the largest awards, supplier concentration (top-3 share, HHI), fastest-growing categories, award versus estimate, single-bidder and direct-award shares, and live open Compras Ágiles with no quote yet, plus amount_anomalies: awards whose recorded amount is out of range (left out of totals, listed to verify at the source). Each signal has a neutral statement, its number, the change against the previous period, an implication for a supplier and suggested_next_calls. Pass category as a UNSPSC code ('42', '4213') or a name ('equipamiento medico'), and period as last_12m (default), a year ('2025') or a quarter ('2025-Q3'). Built from awarded tenders (OCDS), which lag months: every signal states data_as_of. Anonymous agents get one market-wide signal per call. Access: open to anonymous agents (rate-limited); a free AndesPass key raises the limit.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| period | string | |
| signals | any | |
| category | any | |
| preferred_language | string |
{
"type": "object",
"title": "market_signalsArguments",
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 5
},
"period": {
"type": "string",
"title": "Period",
"default": "last_12m"
},
"signals": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Signals",
"default": null
},
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Category",
"default": null
},
"preferred_language": {
"type": "string",
"title": "Preferred Language",
"default": "en-US"
}
}
}Use this first to find ChileCompra public tenders matching a need. Pass Spanish keywords for best results (e.g. 'firewall', 'notebook', 'ciberseguridad'). Returns only tenders still open for bids (set include_closed=true for history), ordered by match score and then the soonest closing date, each with tender_id, retrieved_at and source_url. Andes adds the synonyms Chilean buyers use (e.g. 'ciberseguridad' also finds 'seguridad informática', 'firewall', 'SOC'): audit.expanded_terms lists them and each result's matched_terms says which term hit. One concept per word is best; accents do not matter. audit.index_last_synced_at and audit.index_open_tenders describe the whole index: zero results with a recent sync means nothing open matches today. Call get_tender_detail before deciding anything. Access: open to anonymous agents (rate-limited); a free AndesPass key raises the limit.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query* | string | |
| response_mode | string | |
| include_closed | boolean | |
| preferred_language | string | |
| include_original_evidence | boolean |
Use this to size up a supplier, your user's own company or a competitor: what it won, from which buyers, in which categories, how many bidders it beat (competition_when_winning: read median_bidders first, framework agreements with hundreds of bidders skew the average), and, when bidder lists are published, its win rate and most frequent competitors. Pass supplier_id (tax id such as a Chilean RUT, or the supplier_id seen in buyer_history) or supplier_name. Suppliers are grouped by legal identifier; built from awarded tenders in Open Contracting (OCDS) data. An empty matches list comes with a note saying why. Access: needs an identified agent key (free, self-service at https://pass.andesprotocol.com).
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| supplier_id | any | |
| supplier_name | any | |
| preferred_language | string |
{
"type": "object",
"title": "supplier_historyArguments",
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 3
},
"supplier_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Supplier Id",
"default": null
},
"supplier_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Supplier Name",
"default": null
},
"preferred_language": {
"type": "string",
"title": "Preferred Language",
"default": "en-US"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 5, 2026.
{
"type": "object",
"title": "search_tendersArguments",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 5
},
"query": {
"type": "string",
"title": "Query"
},
"response_mode": {
"type": "string",
"title": "Response Mode",
"default": "structured"
},
"include_closed": {
"type": "boolean",
"title": "Include Closed",
"default": false
},
"preferred_language": {
"type": "string",
"title": "Preferred Language",
"default": "en-US"
},
"include_original_evidence": {
"type": "boolean",
"title": "Include Original Evidence",
"default": true
}
}
}