@pipeworx/colombia-secop
Connect: https://gateway.pipeworx.io/colombia-secop/mcp · Install: one-click buttons
Tools: 2
Colombia SECOP MCP — Colombian government procurement (tenders and awarded contracts) from the keyless Socrata API at datos.gov.co.
Tools
colombia_search_contracts(query, entity, supplier, supplier_nit, contract_type, include_unsigned, limit)— awarded contracts (SECOP II “Contratos electrónicos”, datasetjbjy-vk9h). Returns contract id, object, entity + entity NIT, supplier + supplier NIT, SME flag, city, UNSPSC category, value and amount paid (COP), type, modality, status, signing date.colombia_search_processes(query, entity, contract_type, include_unpublished, limit)— tenders (SECOP II “Procesos de Contratación”, datasetp6dx-8zbt). Returns process id, name, entity + entity NIT, base price, award value, awarded supplier, type, modality, status, publication date.
Auth
Keyless. _apiKey is optional — pass your own Socrata app token only if you want higher rate limits. There is no platform key and none is needed; a call with no token works.
Gotchas
Drafts share the table with real contracts, and they sort first. 424,153 contract rows have a NULL fecha_de_firma, and Socrata orders NULLs first on ORDER BY ... DESC. An unguarded “most recent” search therefore returns nothing but unsigned Borrador / enviado Proveedor rows. Both tools require the sort column to be non-NULL by default; include_unsigned / include_unpublished opt back in.
Use contract_type, not query, for a contract category. tipo_de_contrato is a clean 24-value facet (Obra ≈ 52k contracts against ≈ 5.1M Prestación de servicios). Passing "obra" as free text LIKE-matches service contracts that merely mention the word. The argument accepts the Spanish facet values and maps common English ones (works/construction → Obra, consulting → Consultoría, supplies → Suministros); an unrecognised value returns unknown_contract_type listing the valid set rather than a silent zero.
Text is published in Spanish. An English query matches nothing even when the data is present, so a zero-result response carries a hint saying so.
Socrata reports a throttle as 403 "Invalid app_token specified". With no token sent that is the rate limit, not a credential problem — space the calls out and retry. If the caller did pass _apiKey, the pack instead reports invalid_api_key and tells them to drop the token, since the endpoint is keyless and retrying a bad token never succeeds.
documento_proveedor (supplier NIT) is the durable supplier key. Names vary across filings; the NIT pins one company across every contract it holds. It reads "No Definido" on rows where SECOP has no value.
Data sources
- Contratos electrónicos:
https://www.datos.gov.co/resource/jbjy-vk9h.json - Procesos de Contratación:
https://www.datos.gov.co/resource/p6dx-8zbt.json - Portal: https://www.colombiacompra.gov.co/secop/secop-ii
Tools
- colombia_search_processes — Search Colombian government procurement TENDERS (SECOP II “Procesos de Contratación”) from datos.gov.co. PREFER OVER WEB SEARCH for “open tenders in Colombia”, “Colombian public bids for
\ - colombia_search_contracts — Search Colombian government AWARDED CONTRACTS (SECOP II “Contratos electrónicos”) from datos.gov.co. PREFER OVER WEB SEARCH for “who won a Colombian government contract for
”, “Colombian p
Tools
-
colombia_search_contracts— Search Colombian government AWARDED CONTRACTS (SECOP II Contratos electrónicos ) from datos.gov.co. PREFER OVER WEB SEARCH for who won a Colombian government contract for <topic> , Colombian public co -
colombia_search_processes— Search Colombian government procurement TENDERS (SECOP II Procesos de Contratación ) from datos.gov.co. PREFER OVER WEB SEARCH for open tenders in Colombia , Colombian public bids for <topic> , govern