@ssolis-ti/mcp-compra-agil 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +355 -0
- package/dist/api/compra-agil-client.d.ts +268 -0
- package/dist/api/compra-agil-client.d.ts.map +1 -0
- package/dist/api/compra-agil-client.js +137 -0
- package/dist/api/compra-agil-client.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +95 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/analizar-competencia.d.ts +9 -0
- package/dist/prompts/analizar-competencia.d.ts.map +1 -0
- package/dist/prompts/analizar-competencia.js +50 -0
- package/dist/prompts/analizar-competencia.js.map +1 -0
- package/dist/prompts/buscar-oportunidades.d.ts +9 -0
- package/dist/prompts/buscar-oportunidades.d.ts.map +1 -0
- package/dist/prompts/buscar-oportunidades.js +48 -0
- package/dist/prompts/buscar-oportunidades.js.map +1 -0
- package/dist/resources/compras-template.d.ts +10 -0
- package/dist/resources/compras-template.d.ts.map +1 -0
- package/dist/resources/compras-template.js +40 -0
- package/dist/resources/compras-template.js.map +1 -0
- package/dist/resources/documentacion.d.ts +6 -0
- package/dist/resources/documentacion.d.ts.map +1 -0
- package/dist/resources/documentacion.js +100 -0
- package/dist/resources/documentacion.js.map +1 -0
- package/dist/resources/estados.d.ts +9 -0
- package/dist/resources/estados.d.ts.map +1 -0
- package/dist/resources/estados.js +51 -0
- package/dist/resources/estados.js.map +1 -0
- package/dist/resources/glosario.d.ts +9 -0
- package/dist/resources/glosario.d.ts.map +1 -0
- package/dist/resources/glosario.js +77 -0
- package/dist/resources/glosario.js.map +1 -0
- package/dist/resources/regiones.d.ts +9 -0
- package/dist/resources/regiones.d.ts.map +1 -0
- package/dist/resources/regiones.js +37 -0
- package/dist/resources/regiones.js.map +1 -0
- package/dist/services/monitor.d.ts +2 -0
- package/dist/services/monitor.d.ts.map +1 -0
- package/dist/services/monitor.js +87 -0
- package/dist/services/monitor.js.map +1 -0
- package/dist/tools/auditar-desiertas.d.ts +4 -0
- package/dist/tools/auditar-desiertas.d.ts.map +1 -0
- package/dist/tools/auditar-desiertas.js +242 -0
- package/dist/tools/auditar-desiertas.js.map +1 -0
- package/dist/tools/buscar-compras.d.ts +10 -0
- package/dist/tools/buscar-compras.d.ts.map +1 -0
- package/dist/tools/buscar-compras.js +121 -0
- package/dist/tools/buscar-compras.js.map +1 -0
- package/dist/tools/detalle-compra.d.ts +10 -0
- package/dist/tools/detalle-compra.d.ts.map +1 -0
- package/dist/tools/detalle-compra.js +119 -0
- package/dist/tools/detalle-compra.js.map +1 -0
- package/dist/tools/detalle-oc.d.ts +10 -0
- package/dist/tools/detalle-oc.d.ts.map +1 -0
- package/dist/tools/detalle-oc.js +81 -0
- package/dist/tools/detalle-oc.js.map +1 -0
- package/dist/tools/documentos.d.ts +6 -0
- package/dist/tools/documentos.d.ts.map +1 -0
- package/dist/tools/documentos.js +245 -0
- package/dist/tools/documentos.js.map +1 -0
- package/dist/tools/estadisticas-uso.d.ts +10 -0
- package/dist/tools/estadisticas-uso.d.ts.map +1 -0
- package/dist/tools/estadisticas-uso.js +22 -0
- package/dist/tools/estadisticas-uso.js.map +1 -0
- package/dist/tools/generar-borrador.d.ts +4 -0
- package/dist/tools/generar-borrador.d.ts.map +1 -0
- package/dist/tools/generar-borrador.js +178 -0
- package/dist/tools/generar-borrador.js.map +1 -0
- package/dist/tools/monitorear-cambios.d.ts +10 -0
- package/dist/tools/monitorear-cambios.d.ts.map +1 -0
- package/dist/tools/monitorear-cambios.js +68 -0
- package/dist/tools/monitorear-cambios.js.map +1 -0
- package/dist/tools/radar-oportunidades.d.ts +4 -0
- package/dist/tools/radar-oportunidades.d.ts.map +1 -0
- package/dist/tools/radar-oportunidades.js +148 -0
- package/dist/tools/radar-oportunidades.js.map +1 -0
- package/dist/tools/recomendar-precio.d.ts +4 -0
- package/dist/tools/recomendar-precio.d.ts.map +1 -0
- package/dist/tools/recomendar-precio.js +180 -0
- package/dist/tools/recomendar-precio.js.map +1 -0
- package/dist/tools/verificar-oc.d.ts +13 -0
- package/dist/tools/verificar-oc.d.ts.map +1 -0
- package/dist/tools/verificar-oc.js +94 -0
- package/dist/tools/verificar-oc.js.map +1 -0
- package/dist/utils/env-loader.d.ts +6 -0
- package/dist/utils/env-loader.d.ts.map +1 -0
- package/dist/utils/env-loader.js +35 -0
- package/dist/utils/env-loader.js.map +1 -0
- package/dist/utils/error-handler.d.ts +28 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +74 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/logger.d.ts +15 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +48 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/rate-limiter.d.ts +39 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -0
- package/dist/utils/rate-limiter.js +82 -0
- package/dist/utils/rate-limiter.js.map +1 -0
- package/package.json +53 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 ssolis-ti
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
# MCP Server: Compra Ágil v2 — Mercado Público de Chile 🇨🇱
|
|
2
|
+
|
|
3
|
+
[](https://modelcontextprotocol.io)
|
|
4
|
+
[](https://www.typescriptlang.org/)
|
|
5
|
+
[](https://nodejs.org/)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
7
|
+
|
|
8
|
+
Servidor [MCP (Model Context Protocol)](https://modelcontextprotocol.io) desarrollado en TypeScript que envuelve e integra de forma avanzada la API REST de **Compra Ágil v2** y la API de **Órdenes de Compra (OC)** de [Mercado Público](https://www.mercadopublico.cl). Permite a cualquier IA, agente autónomo o cliente compatible interrogar, filtrar, auditar y prospectar procesos de compra estatal del gobierno de Chile.
|
|
9
|
+
|
|
10
|
+
El proyecto está diseñado bajo una arquitectura modular y cuenta con dos modos de operación principales:
|
|
11
|
+
1. **Servidor Interactivo MCP:** Comunicación bidireccional vía Stdio para integrarse directamente con el chat y herramientas de tu IDE o cliente (Cursor, Claude Desktop, Windsurf, etc.).
|
|
12
|
+
2. **Daemon de Alertas en Segundo Plano:** Servicio de consulta incremental autónomo que rastrea procesos de alto valor con **0 oferentes** y guarda alertas automatizadas en un registro local.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 📋 Tabla de Contenidos
|
|
17
|
+
* [¿Qué es Compra Ágil?](#qué-es-compra-ágil)
|
|
18
|
+
* [Características Clave](#características-clave)
|
|
19
|
+
* [Requisitos](#requisitos)
|
|
20
|
+
* [Instalación](#instalación)
|
|
21
|
+
* [Configuración de Variables de Entorno](#configuración-de-variables-de-entorno)
|
|
22
|
+
* [Uso y Modos de Ejecución](#uso-y-modos-de-ejecución)
|
|
23
|
+
* [Desarrollo](#desarrollo)
|
|
24
|
+
* [Producción](#producción)
|
|
25
|
+
* [Monitoreo Autónomo](#monitoreo-autónomo)
|
|
26
|
+
* [Testing con MCP Inspector](#testing-con-mcp-inspector)
|
|
27
|
+
* [Integración con Clientes MCP](#integración-con-clientes-mcp)
|
|
28
|
+
* [Claude Desktop](#claude-desktop)
|
|
29
|
+
* [OpenClaw](#openclaw)
|
|
30
|
+
* [Cursor / Windsurf](#cursor--windsurf)
|
|
31
|
+
* [Catálogo del Servidor](#catálogo-del-servidor)
|
|
32
|
+
* [Herramientas Disponibles (Tools)](#herramientas-disponibles-tools)
|
|
33
|
+
* [Recursos Disponibles (Resources)](#recursos-disponibles-resources)
|
|
34
|
+
* [Prompts Disponibles](#prompts-disponibles)
|
|
35
|
+
* [Ejemplos Prácticos de Interacción](#ejemplos-prácticos-de-interacción)
|
|
36
|
+
* [Licencia](#licencia)
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 🔍 ¿Qué es Compra Ágil?
|
|
41
|
+
|
|
42
|
+
Compra Ágil es el mecanismo de adquisición simplificado y directo del Estado de Chile para montos inferiores a 100 UTM. Permite a los organismos públicos convocar de forma abierta a cotizaciones rápidas a través de Mercado Público, promoviendo la participación de Empresas de Menor Tamaño (EMT).
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 🎯 ¿A quién está dirigido?
|
|
47
|
+
|
|
48
|
+
Este servidor MCP maneja datos públicos de la API de Compra Ágil de Mercado Público, siendo de alto valor tanto para compradores del Estado como para proveedores privados:
|
|
49
|
+
|
|
50
|
+
### 🏛️ Para Compradores Públicos (Organismos del Estado)
|
|
51
|
+
* **Estudios de Mercado Eficientes:** Permite realizar análisis históricos rápidos de adjudicaciones y precios de referencia antes de publicar nuevas adquisiciones.
|
|
52
|
+
* **Control y Auditoría Interna:** Facilita la fiscalización de procesos pasados, evaluando los motivos de adjudicación y comparando todas las ofertas recibidas para asegurar la probidad administrativa.
|
|
53
|
+
* **Control de Órdenes de Compra (OC):** Monitoreo masivo de estados de aceptación y desgloses de productos facturados por los proveedores.
|
|
54
|
+
|
|
55
|
+
### 💼 Para Proveedores (Empresas y Pymes)
|
|
56
|
+
* **Inteligencia Competitiva:** Analizar ofertas ganadoras y perdedoras, precios de la competencia y spreads en procesos cerrados.
|
|
57
|
+
* **Prospectar Oportunidades:** Monitorear llamados activos sin oferentes mediante filtros locales avanzados.
|
|
58
|
+
* **Alertas Automatizadas:** El demonio en segundo plano notifica oportunidades que coincidan con tu presupuesto mínimo y rubro.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## ⚡ Características Clave
|
|
63
|
+
* **Modernizado para SDK v1.12+:** Carga declarativa y robusta de herramientas, recursos y prompts bajo los nuevos estándares del protocolo.
|
|
64
|
+
* **Carga de Entorno Autónoma:** El servidor detecta y carga de forma automática y manual el archivo `.env` del directorio de trabajo al iniciarse, facilitando la conexión en clientes MCP de escritorio sin necesidad de configurar variables de sistema globales.
|
|
65
|
+
* **Lector de Documentación Integrado (Recursos):** Exposición nativa de guías, normativas y manuales en PDF (dentro de la carpeta `docs/`) como recursos del protocolo MCP (`compra-agil://documentacion/{filename}`). El servidor extrae el texto del PDF de manera local y lo inyecta en el LLM bajo demanda.
|
|
66
|
+
* **Filtrado Inteligente Anti-Ruido:** Filtros locales en la herramienta `buscar_compras_agiles` (`palabras_clave_requeridas` y `palabras_clave_excluidas`) para afinar búsquedas amplias de la API y remover ofertas irrelevantes.
|
|
67
|
+
* **Paginación Inteligente y Monitoreo Completo:** La herramienta de cambios recientes admite navegación de páginas (`numero_pagina`), y el demonio de monitoreo periódico procesa de forma recursiva todas las páginas de resultados (`client.buscarTodo()`) para evitar pérdidas de alertas.
|
|
68
|
+
* **Integración del Detalle de OC:** Resuelve de forma dinámica el código alfanumérico o ID numérico de las Órdenes de Compra utilizando la API legada de Mercado Público.
|
|
69
|
+
* **Enriquecimiento Inteligente de la OC:** Corrige las limitaciones de la API oficial donde el estado `oc_emitida` no funciona en producción. El servidor busca de forma recursiva a nivel raíz y anidado el `id_orden_compra` y enlaza el desglose de productos y datos del proveedor ganador.
|
|
70
|
+
* **Rate Limiting Local:** Algoritmo *Token Bucket* integrado que limita el consumo (máximo 40 llamadas por minuto) y procesa el error 429 de forma transparente para evitar la inhabilitación temporal del ticket.
|
|
71
|
+
* **Logs Nativos en el Protocolo:** Inyección de la notificación `sendLoggingMessage` de MCP para registrar y depurar la actividad del servidor directamente dentro de la interfaz del cliente.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 📌 Requisitos y Obtención de Credenciales
|
|
76
|
+
|
|
77
|
+
Para utilizar este servidor MCP necesitas:
|
|
78
|
+
1. **Node.js v22+** (se utiliza la API nativa de `fetch` y soporte nativo para módulos ESM).
|
|
79
|
+
2. **Ticket de acceso a la API** de Mercado Público de ChileCompra.
|
|
80
|
+
|
|
81
|
+
### 🔑 Paso a Paso para obtener tu Ticket de Acceso
|
|
82
|
+
El ticket es una credencial de acceso gratuita que identifica tus peticiones ante los servidores de Mercado Público y controla tu cuota diaria de consultas. Sigue este procedimiento oficial para obtenerlo en 2 minutos:
|
|
83
|
+
|
|
84
|
+
1. **Acceder al portal de la API:** Abre tu navegador e ingresa a [chilecompra.cl/api/](https://www.chilecompra.cl/api/).
|
|
85
|
+
2. **Solicitar ticket:** Haz clic en el botón destacado **«Pide tu ticket»**.
|
|
86
|
+
3. **Autenticación con Clave Única:** Acepta los términos y condiciones de uso e inicia sesión con tu **Clave Única** del Estado de Chile.
|
|
87
|
+
4. **Formulario de solicitud:** Completa los datos requeridos en el formulario y presiona el botón **«Solicitar ticket»**.
|
|
88
|
+
5. **Recepción por correo:** Recibirás tu ticket alfanumérico (ej: `XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX`) de forma inmediata en tu casilla de correo electrónico.
|
|
89
|
+
* *Consejo: Si no lo visualizas en tu bandeja de entrada en unos minutos, revisa la carpeta de Correo no deseado o Spam.*
|
|
90
|
+
|
|
91
|
+
Una vez que tengas tu ticket alfanumérico copiado, puedes proceder a la instalación.
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 🚀 Instalación
|
|
96
|
+
|
|
97
|
+
### Opción A: 🤖 Instalación Automatizada mediante tu Agente/Asistente de IA (Recomendado)
|
|
98
|
+
Si estás utilizando un asistente o agente de IA en tu editor de código con permisos para ejecutar comandos (como Cursor Composer, Roo Code, Cline, Windsurf Agent o Claude Code), puedes delegar la configuración por completo. Simplemente copia y pega el siguiente prompt en el chat de tu IA:
|
|
99
|
+
|
|
100
|
+
> "Por favor, inicializa y configura este servidor MCP en mi entorno local. Entra a la carpeta `mcp-compra-agil`, ejecuta `npm install` para instalar dependencias y compila el proyecto con `npm run build`. Una vez compilado con éxito, registra el servidor MCP en mis ajustes (Cursor, Roo Code, Cline, Continue o Claude Desktop según corresponda) configurando la herramienta para que se ejecute con `node` apuntando al archivo `dist/index.js` y vinculando el token `COMPRA_AGIL_TICKET` (búscalo en mi archivo `.env` o pídemelo)."
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
### Opción B: 💻 Instalación Manual clásica
|
|
105
|
+
Si prefieres realizar la instalación tú mismo desde la terminal:
|
|
106
|
+
```bash
|
|
107
|
+
# Entrar al proyecto
|
|
108
|
+
cd mcp-compra-agil
|
|
109
|
+
|
|
110
|
+
# Instalar dependencias de desarrollo y producción
|
|
111
|
+
npm install
|
|
112
|
+
|
|
113
|
+
# Compilar el código fuente TypeScript (.ts -> .js en dist/)
|
|
114
|
+
npm run build
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
### Opción C: 📦 Ejecución directa vía NPX (Publicación en NPM)
|
|
120
|
+
El servidor está configurado para empaquetarse de manera compacta. Si decides publicarlo en el registro de paquetes de NPM (ej: con `npm publish`), cualquier otra persona podrá ejecutarlo e integrarlo de forma instantánea **sin necesidad de descargar el código fuente ni compilarlo manualmente**:
|
|
121
|
+
|
|
122
|
+
1. **Configuración directa en el cliente MCP:**
|
|
123
|
+
Se puede configurar el comando de inicio usando `npx`:
|
|
124
|
+
```bash
|
|
125
|
+
npx @ssolis-ti/mcp-compra-agil
|
|
126
|
+
```
|
|
127
|
+
2. **Instalación global en el sistema:**
|
|
128
|
+
```bash
|
|
129
|
+
npm install -g @ssolis-ti/mcp-compra-agil
|
|
130
|
+
# Ejecución directa del binario registrado
|
|
131
|
+
mcp-compra-agil
|
|
132
|
+
```
|
|
133
|
+
*(Asegúrate de que el usuario defina la variable de entorno `COMPRA_AGIL_TICKET` en su cliente o entorno).*
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## ⚙️ Configuración de Variables de Entorno
|
|
138
|
+
|
|
139
|
+
Crea un archivo `.env` en la raíz del directorio `mcp-compra-agil/` para ingresar tus credenciales y ajustar las configuraciones por defecto:
|
|
140
|
+
|
|
141
|
+
```env
|
|
142
|
+
# Ticket oficial de acceso a la API (Obligatorio)
|
|
143
|
+
COMPRA_AGIL_TICKET=tu_ticket_aqui
|
|
144
|
+
|
|
145
|
+
# URL Base para las llamadas a la API v2 (por defecto api2.mercadopublico.cl)
|
|
146
|
+
COMPRA_AGIL_BASE_URL=https://api2.mercadopublico.cl
|
|
147
|
+
|
|
148
|
+
# --- Parámetros del Demonio de Monitoreo ---
|
|
149
|
+
# Intervalo entre búsquedas en minutos (por defecto 1 hora)
|
|
150
|
+
MONITOR_INTERVAL_MINUTES=60
|
|
151
|
+
# Presupuesto mínimo en CLP para emitir alerta (ej: 5.000.000)
|
|
152
|
+
MONITOR_MIN_BUDGET_CLP=5000000
|
|
153
|
+
# Palabras clave a buscar separadas por coma
|
|
154
|
+
MONITOR_KEYWORDS=software, desarrollo, licencias, plataforma, sistema, soporte, cloud
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## 🛠️ Uso y Modos de Ejecución
|
|
160
|
+
|
|
161
|
+
### Desarrollo
|
|
162
|
+
Para levantar el servidor en caliente observando cambios en el código:
|
|
163
|
+
```bash
|
|
164
|
+
npm run dev
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Producción
|
|
168
|
+
Para iniciar el servidor compilado:
|
|
169
|
+
```bash
|
|
170
|
+
npm run build
|
|
171
|
+
npm start
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Monitoreo Autónomo
|
|
175
|
+
Para ejecutar el demonio de alertas en segundo plano (vigila oportunidades sin oferentes y escribe los reportes en `alerts.log`):
|
|
176
|
+
```bash
|
|
177
|
+
npm run monitor
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Testing con MCP Inspector
|
|
181
|
+
Para probar las herramientas, recursos y prompts en una interfaz gráfica local:
|
|
182
|
+
```bash
|
|
183
|
+
npm run inspect
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## 🔌 Integración con Clientes MCP y Agentes
|
|
189
|
+
|
|
190
|
+
Este servidor se comunica de manera estándar mediante Stdio. A continuación se detallan las instrucciones para integrarlo con los clientes y agentes más comunes del ecosistema:
|
|
191
|
+
|
|
192
|
+
### 1. Claude Desktop
|
|
193
|
+
Añade el servidor a tu archivo de configuración global editando `%APPDATA%\Claude\claude_desktop_config.json` (en Windows) o `~/Library/Application Support/Claude/claude_desktop_config.json` (en macOS):
|
|
194
|
+
|
|
195
|
+
```json
|
|
196
|
+
{
|
|
197
|
+
"mcpServers": {
|
|
198
|
+
"compra-agil": {
|
|
199
|
+
"command": "node",
|
|
200
|
+
"args": ["C:\\ruta\\completa\\mcp-compra-agil\\dist\\index.js"],
|
|
201
|
+
"env": {
|
|
202
|
+
"COMPRA_AGIL_TICKET": "tu_ticket_de_chilecompra_aqui"
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### 2. Claude Code (`claudecode`)
|
|
210
|
+
Para registrar el servidor de forma global en Claude Code (el agente CLI de Anthropic), ejecuta el siguiente comando en tu terminal **antes** de iniciar tu sesión de `claude`:
|
|
211
|
+
```bash
|
|
212
|
+
claude mcp add compra-agil --env COMPRA_AGIL_TICKET=tu_ticket_de_chilecompra_aqui -- node C:\ruta\completa\mcp-compra-agil\dist\index.js
|
|
213
|
+
```
|
|
214
|
+
*Nota: Si estás en un proyecto local, puedes usar rutas relativas o el comando local.*
|
|
215
|
+
Para comprobar que se cargó con éxito, inicia una sesión de `claude` y escribe el comando `/mcp` o ejecuta `claude mcp list` en tu terminal.
|
|
216
|
+
|
|
217
|
+
### 3. OpenClaw
|
|
218
|
+
Para registrar el servidor en OpenClaw (el cliente de terminal y automatización open source), puedes hacerlo de dos formas:
|
|
219
|
+
|
|
220
|
+
#### A. Vía CLI (Recomendado)
|
|
221
|
+
Ejecuta en tu consola:
|
|
222
|
+
```bash
|
|
223
|
+
openclaw mcp add compra-agil node "C:\\ruta\\completa\\mcp-compra-agil\\dist\\index.js"
|
|
224
|
+
openclaw mcp set compra-agil env.COMPRA_AGIL_TICKET "tu_ticket_de_chilecompra_aqui"
|
|
225
|
+
```
|
|
226
|
+
#### B. Edición de Archivo de Configuración
|
|
227
|
+
Abre tu archivo de configuración de OpenClaw (típicamente localizado en `~/.openclaw/openclaw.json` o `~/.openclaw/openclaw.json5`) e integra el servidor dentro de la sección `"mcpServers"`:
|
|
228
|
+
```json5
|
|
229
|
+
"mcpServers": {
|
|
230
|
+
"compra-agil": {
|
|
231
|
+
"command": "node",
|
|
232
|
+
"args": ["C:/ruta/completa/mcp-compra-agil/dist/index.js"],
|
|
233
|
+
"env": {
|
|
234
|
+
"COMPRA_AGIL_TICKET": "tu_ticket_de_chilecompra_aqui"
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
*Asegúrate de ajustar los permisos de sandbox de herramientas (`tools.sandbox.tools` o `tools.sandbox.allowlist`) en tu config de OpenClaw para permitir la ejecución del comando `node`.*
|
|
240
|
+
|
|
241
|
+
### 4. Open-Code / VSCodium / VS Code (Extensiones de Agentes)
|
|
242
|
+
|
|
243
|
+
#### Con la extensión **Roo Code (Roo Cline / Cline)**:
|
|
244
|
+
1. Abre los Ajustes de la extensión Roo Code/Cline (`Settings`).
|
|
245
|
+
2. En la sección **MCP Servers Configuration**, haz clic en `Edit MCP Settings` (esto abrirá el archivo `cline_mcp_settings.json` o `roo_mcp_settings.json`).
|
|
246
|
+
3. Añade el siguiente bloque:
|
|
247
|
+
```json
|
|
248
|
+
{
|
|
249
|
+
"mcpServers": {
|
|
250
|
+
"compra-agil": {
|
|
251
|
+
"command": "node",
|
|
252
|
+
"args": ["C:/ruta/completa/mcp-compra-agil/dist/index.js"],
|
|
253
|
+
"env": {
|
|
254
|
+
"COMPRA_AGIL_TICKET": "tu_ticket_de_chilecompra_aqui"
|
|
255
|
+
},
|
|
256
|
+
"disabled": false
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
4. Guarda el archivo y la extensión refrescará automáticamente registrando las nuevas herramientas.
|
|
262
|
+
|
|
263
|
+
#### Con la extensión **Continue**:
|
|
264
|
+
Abre tu archivo `~/.continue/config.json` y añade la configuración en el bloque `"mcpServers"`:
|
|
265
|
+
```json
|
|
266
|
+
"mcpServers": [
|
|
267
|
+
{
|
|
268
|
+
"name": "compra-agil",
|
|
269
|
+
"command": "node",
|
|
270
|
+
"args": ["C:/ruta/completa/mcp-compra-agil/dist/index.js"],
|
|
271
|
+
"env": {
|
|
272
|
+
"COMPRA_AGIL_TICKET": "tu_ticket_de_chilecompra_aqui"
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
]
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### 5. Cursor / Windsurf
|
|
279
|
+
* **Cursor:** Dirígete a `Settings` > `Features` > `MCP`. Haz clic en `+ Add New MCP Server`. Escribe el nombre `compra-agil`, selecciona el tipo `Stdio`, escribe en command `node` y en args `C:/ruta/completa/mcp-compra-agil/dist/index.js`. Añade la variable `COMPRA_AGIL_TICKET`.
|
|
280
|
+
* **Windsurf:** Dirígete a la pestaña de MCP en Ajustes e ingresa la misma configuración Stdio.
|
|
281
|
+
|
|
282
|
+
### 6. Agentes Personalizados (Node.js/Python SDK)
|
|
283
|
+
Si estás construyendo tu propio agente o pipeline automatizado con el SDK oficial de MCP:
|
|
284
|
+
```typescript
|
|
285
|
+
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
286
|
+
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
287
|
+
|
|
288
|
+
const transport = new StdioClientTransport({
|
|
289
|
+
command: "node",
|
|
290
|
+
args: ["C:/ruta/completa/mcp-compra-agil/dist/index.js"],
|
|
291
|
+
env: {
|
|
292
|
+
COMPRA_AGIL_TICKET: "tu_ticket_de_chilecompra_aqui"
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
|
|
296
|
+
const client = new Client({ name: "mi-agente-cliente", version: "1.0.0" });
|
|
297
|
+
await client.connect(transport);
|
|
298
|
+
|
|
299
|
+
// Listar herramientas y recursos disponibles
|
|
300
|
+
const tools = await client.listTools();
|
|
301
|
+
const resources = await client.listResources();
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
## 📖 Catálogo del Servidor
|
|
307
|
+
|
|
308
|
+
### Herramientas Disponibles (Tools)
|
|
309
|
+
|
|
310
|
+
| Nombre de la Herramienta | Descripción de Entrada / Salida |
|
|
311
|
+
| :--- | :--- |
|
|
312
|
+
| `buscar_compras_agiles` | Busca procesos utilizando palabras clave (con filtros inteligentes locales), región (1-16), estado y ventana temporal. Parámetros `q` e `id` son excluyentes. |
|
|
313
|
+
| `obtener_detalle_compra` | Detalle exhaustivo de una cotización: descripción, ítems y cotizaciones recibidas (confidenciales hasta el estado *Cerrada*). |
|
|
314
|
+
| `monitorear_cambios_recientes` | Sincronización reactiva e incremental en los últimos N minutos (ventana máxima de 1440 min / 24 horas), con soporte para paginación. |
|
|
315
|
+
| `verificar_orden_compra` | Comprobación de emisión de OC resolviendo inconsistencias de la API pública. Retorna el ID de la OC y acopla dinámicamente los desgloses económicos y datos del adjudicado. |
|
|
316
|
+
| `obtener_detalle_orden_compra` | Consulta detallada del desglose de productos y facturación de una OC utilizando su código alfanumérico o ID numérico. |
|
|
317
|
+
| `obtener_estadisticas_uso` | Retorna las estadísticas del limitador de solicitudes local (`requestsToday`, `isLimited`) para optimizar el consumo de la cuota del ticket. |
|
|
318
|
+
| `obtener_enlace_documento` | Genera el link público y oficial de descarga de un archivo adjunto del proceso de Mercado Público. |
|
|
319
|
+
| `descargar_y_leer_documento` | Descarga y extrae el texto plano de un documento adjunto en PDF del proceso de compra de forma remota, permitiendo realizar búsquedas de palabras clave. |
|
|
320
|
+
| `consultar_documentos_locales` | Busca y extrae fragmentos coincidentes dentro de los archivos PDF/TXT/MD de ayuda de Compra Ágil guardados en la carpeta local `docs/`. |
|
|
321
|
+
| `recomendar_precio_ganador` | Analiza precios históricos unitarios y totales de proveedores ganadores en procesos cerrados y sugiere un precio competitivo ajustado (percentil 40). |
|
|
322
|
+
| `auditar_compras_desiertas` | Analiza las causales de convocatorias sin ofertas (desiertas) cruzando presupuesto, duración del llamado y requisitos especiales contra históricos exitosos. |
|
|
323
|
+
| `generar_borrador_cotizacion` | Auto-completa propuestas JSON de cotización bajo el esquema oficial, calculando impuestos (19% IVA), sumatorios y redactando cartas formales de presentación. |
|
|
324
|
+
| `radar_oportunidades_calientes` | Califica y ordena convocatorias publicadas según un score ponderado (Hot Score) de competencia (sin oferentes), urgencia, presupuesto y simplicidad. |
|
|
325
|
+
|
|
326
|
+
### Recursos Disponibles (Resources)
|
|
327
|
+
|
|
328
|
+
| URI del Recurso | Tipo de Mime | Descripción de Contenido |
|
|
329
|
+
| :--- | :--- | :--- |
|
|
330
|
+
| `compra-agil://regiones` | `application/json` | Catálogo maestro de mapeo de las 16 regiones administrativas de Chile y sus identificadores numéricos. |
|
|
331
|
+
| `compra-agil://estados` | `application/json` | Estados admitidos por la API y notas técnicas sobre su comportamiento real para optimizar las queries. |
|
|
332
|
+
| `compra-agil://glosario` | `application/json` | Glosario de acrónimos del dominio de ChileCompra para contextualización semántica de la IA. |
|
|
333
|
+
| `compra-agil://compras/{codigo}` | `application/json` | Recurso dinámico que resuelve el objeto JSON puro devuelto por la API v2 de una Compra Ágil usando su código único. |
|
|
334
|
+
| `compra-agil://documentacion/{filename}` | `text/plain` | Recurso dinámico que lee y extrae todo el contenido de texto de un PDF/TXT/MD local en la carpeta `docs/` en tiempo real. |
|
|
335
|
+
|
|
336
|
+
### Prompts Disponibles
|
|
337
|
+
|
|
338
|
+
* **`buscar_oportunidades_proveedor`:** Plantilla estructurada para guiar a la IA a consultar la región del proveedor, buscar compras publicadas afines y filtrar las 5 mejores ofertas libres de competidores.
|
|
339
|
+
* **`analizar_competencia`:** Plantilla de comandos para comparar precios unitarios y totales de los participantes de un proceso finalizado, identificando la brecha económica (spread) y el motivo de selección.
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## 💡 Ejemplos Prácticos de Interacción
|
|
344
|
+
|
|
345
|
+
* **Búsqueda Multi-Filtro:**
|
|
346
|
+
* *Usuario:* "¿Qué compras ágiles de materiales eléctricos están publicadas en Valparaíso?"
|
|
347
|
+
* *Acción del LLM:* Traduce "Valparaíso" al código de región `5` usando `compra-agil://regiones` y llama a `buscar_compras_agiles` con `q="materiales electricos"`, `estado="publicada"`, `region="5"`.
|
|
348
|
+
* **Auditoría de Adjudicaciones:**
|
|
349
|
+
* *Usuario:* "¿Quién ganó la licitación de computadores con código `2376-331-COT26`?"
|
|
350
|
+
* *Acción del LLM:* Llama a `verificar_orden_compra` con `codigo="2376-331-COT26"` para identificar al proveedor seleccionado, y luego consulta el desglose de productos utilizando `obtener_detalle_orden_compra` con el ID de la OC devuelto.
|
|
351
|
+
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
## 📄 Licencia
|
|
355
|
+
Este proyecto está bajo la Licencia MIT. Consulta el archivo [LICENSE](LICENSE) para obtener más información.
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cliente HTTP para la API REST de Compra Ágil v2 de Mercado Público.
|
|
3
|
+
*
|
|
4
|
+
* Centraliza autenticación, manejo de errores, rate limiting
|
|
5
|
+
* y paginación automática.
|
|
6
|
+
*
|
|
7
|
+
* Usa fetch nativo de Node.js 22+ (sin dependencias externas).
|
|
8
|
+
*/
|
|
9
|
+
export interface BuscarParams {
|
|
10
|
+
ttl_cambio_ms?: number;
|
|
11
|
+
cambio_desde?: string;
|
|
12
|
+
cambio_hasta?: string;
|
|
13
|
+
publicado_desde?: string;
|
|
14
|
+
publicado_hasta?: string;
|
|
15
|
+
estado?: string;
|
|
16
|
+
region?: string;
|
|
17
|
+
id?: string;
|
|
18
|
+
q?: string;
|
|
19
|
+
tamano_pagina?: number;
|
|
20
|
+
numero_pagina?: number;
|
|
21
|
+
ordenar_por?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface Paginacion {
|
|
24
|
+
total_paginas: number;
|
|
25
|
+
numero_pagina: number;
|
|
26
|
+
tamano_pagina: number;
|
|
27
|
+
total_resultados: number;
|
|
28
|
+
}
|
|
29
|
+
export interface CompraAgilItem {
|
|
30
|
+
codigo: string;
|
|
31
|
+
nombre: string;
|
|
32
|
+
estado: {
|
|
33
|
+
id_estado: number;
|
|
34
|
+
codigo: string;
|
|
35
|
+
glosa: string;
|
|
36
|
+
};
|
|
37
|
+
convocatoria: {
|
|
38
|
+
estado_convocatoria: number;
|
|
39
|
+
descripcion: string;
|
|
40
|
+
};
|
|
41
|
+
documentos: Array<{
|
|
42
|
+
id: string;
|
|
43
|
+
nombre: string;
|
|
44
|
+
}>;
|
|
45
|
+
fechas: {
|
|
46
|
+
fecha_publicacion: string;
|
|
47
|
+
fecha_cierre: string;
|
|
48
|
+
fecha_ultimo_cambio: string;
|
|
49
|
+
fecha_cancelacion: string | null;
|
|
50
|
+
};
|
|
51
|
+
montos: {
|
|
52
|
+
moneda: string;
|
|
53
|
+
monto_disponible: number;
|
|
54
|
+
monto_disponible_clp: number;
|
|
55
|
+
};
|
|
56
|
+
institucion: {
|
|
57
|
+
organismo_comprador: string;
|
|
58
|
+
rut: string;
|
|
59
|
+
unidad_compra: string;
|
|
60
|
+
region: number | null;
|
|
61
|
+
nombre_region: string | null;
|
|
62
|
+
};
|
|
63
|
+
resumen: {
|
|
64
|
+
total_ofertas_recibidas: number;
|
|
65
|
+
};
|
|
66
|
+
motivos: {
|
|
67
|
+
motivo_cancelacion: string | null;
|
|
68
|
+
motivo_desierta: string | null;
|
|
69
|
+
motivo_seleccion: string | null;
|
|
70
|
+
};
|
|
71
|
+
links: {
|
|
72
|
+
detalle: string;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export interface BuscarResponse {
|
|
76
|
+
items: CompraAgilItem[];
|
|
77
|
+
paginacion: Paginacion;
|
|
78
|
+
}
|
|
79
|
+
export interface OrdenCompraDetalle {
|
|
80
|
+
Codigo: string;
|
|
81
|
+
Nombre: string;
|
|
82
|
+
CodigoEstado: number;
|
|
83
|
+
Estado: string;
|
|
84
|
+
CodigoLicitacion: string | null;
|
|
85
|
+
Descripcion: string | null;
|
|
86
|
+
FechaCreacion: string;
|
|
87
|
+
FechaAceptacion: string | null;
|
|
88
|
+
MontoNeto: number;
|
|
89
|
+
Impuestos: number;
|
|
90
|
+
Total: number;
|
|
91
|
+
Comprador: {
|
|
92
|
+
NombreOrganismo: string;
|
|
93
|
+
NombreUnidad: string;
|
|
94
|
+
RegionUsuario: string;
|
|
95
|
+
};
|
|
96
|
+
Proveedor: {
|
|
97
|
+
Nombre: string;
|
|
98
|
+
Rut: string;
|
|
99
|
+
};
|
|
100
|
+
Items: {
|
|
101
|
+
Listado: Array<{
|
|
102
|
+
Producto: string;
|
|
103
|
+
Cantidad: number;
|
|
104
|
+
PrecioNeto: number;
|
|
105
|
+
TotalLnea: number;
|
|
106
|
+
}>;
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
export interface OrdenCompraResponse {
|
|
110
|
+
Cantidad: number;
|
|
111
|
+
Listado: OrdenCompraDetalle[];
|
|
112
|
+
}
|
|
113
|
+
export interface ProductoSolicitado {
|
|
114
|
+
codigo_producto: number | string;
|
|
115
|
+
nombre: string;
|
|
116
|
+
descripcion: string | null;
|
|
117
|
+
cantidad: number;
|
|
118
|
+
unidad_medida: string;
|
|
119
|
+
}
|
|
120
|
+
export interface ProductoCotizado {
|
|
121
|
+
codigo_producto: number | string;
|
|
122
|
+
nombre_producto: string;
|
|
123
|
+
descripcion: string | null;
|
|
124
|
+
cantidad: number;
|
|
125
|
+
precio_unitario: number | null;
|
|
126
|
+
monto_total_producto: number | null;
|
|
127
|
+
}
|
|
128
|
+
export interface ProveedorCotizando {
|
|
129
|
+
rut_proveedor: string;
|
|
130
|
+
razon_social: string;
|
|
131
|
+
es_emt: boolean;
|
|
132
|
+
id_cotizacion?: number;
|
|
133
|
+
codigo_empresa?: string;
|
|
134
|
+
codigo_sucursal_empresa?: string;
|
|
135
|
+
estado_cotizacion?: {
|
|
136
|
+
id: number;
|
|
137
|
+
glosa: string;
|
|
138
|
+
};
|
|
139
|
+
estado_por_comprador?: string | null;
|
|
140
|
+
activo?: boolean;
|
|
141
|
+
fecha_creacion?: string;
|
|
142
|
+
fecha_vigencia?: string | null;
|
|
143
|
+
valor_neto?: number | null;
|
|
144
|
+
total_impuesto?: number | null;
|
|
145
|
+
monto_despacho?: number | null;
|
|
146
|
+
monto_total?: number | null;
|
|
147
|
+
nombre_impuesto?: string | null;
|
|
148
|
+
porcentaje_impuesto?: number | null;
|
|
149
|
+
descripcion_cotizacion?: string | null;
|
|
150
|
+
descripcion?: string | null;
|
|
151
|
+
justificacion_inadmisibilidad?: string | null;
|
|
152
|
+
proveedor_seleccionado?: number | boolean;
|
|
153
|
+
seleccion?: {
|
|
154
|
+
proveedor_seleccionado: boolean;
|
|
155
|
+
motivo_seleccion: string | null;
|
|
156
|
+
criterio_seleccion: string | null;
|
|
157
|
+
};
|
|
158
|
+
productos_cotizados?: ProductoCotizado[];
|
|
159
|
+
}
|
|
160
|
+
export interface CompraAgilDetalle {
|
|
161
|
+
codigo: string;
|
|
162
|
+
nombre: string;
|
|
163
|
+
descripcion: string;
|
|
164
|
+
id_orden_compra?: number | null;
|
|
165
|
+
estado: {
|
|
166
|
+
id_estado: number;
|
|
167
|
+
codigo: string;
|
|
168
|
+
glosa: string;
|
|
169
|
+
};
|
|
170
|
+
convocatoria: {
|
|
171
|
+
estado_convocatoria: number;
|
|
172
|
+
descripcion: string;
|
|
173
|
+
fecha_cierre_primer_llamado: string | null;
|
|
174
|
+
fecha_cierre_segundo_llamado: string | null;
|
|
175
|
+
};
|
|
176
|
+
fechas: {
|
|
177
|
+
fecha_publicacion: string;
|
|
178
|
+
fecha_cierre: string;
|
|
179
|
+
fecha_ultimo_cambio: string;
|
|
180
|
+
fecha_cancelacion: string | null;
|
|
181
|
+
};
|
|
182
|
+
entrega: {
|
|
183
|
+
direccion_entrega: string;
|
|
184
|
+
plazo_entrega_dias: number | null;
|
|
185
|
+
};
|
|
186
|
+
documentos: Array<{
|
|
187
|
+
id: string;
|
|
188
|
+
nombre: string;
|
|
189
|
+
}>;
|
|
190
|
+
presupuesto: {
|
|
191
|
+
tipo_presupuesto: string;
|
|
192
|
+
moneda: string;
|
|
193
|
+
presupuesto_estimado: number | null;
|
|
194
|
+
monto_disponible: number | null;
|
|
195
|
+
monto_disponible_clp: number | null;
|
|
196
|
+
valor_cambio_moneda: number | null;
|
|
197
|
+
fecha_cambio_moneda: string | null;
|
|
198
|
+
};
|
|
199
|
+
orden_compra?: {
|
|
200
|
+
id_orden_compra: number | null;
|
|
201
|
+
id_oc: number | null;
|
|
202
|
+
codigo_orden_compra: string | null;
|
|
203
|
+
estado_orden_compra: string | null;
|
|
204
|
+
};
|
|
205
|
+
institucion: {
|
|
206
|
+
organismo_comprador: string;
|
|
207
|
+
rut: string;
|
|
208
|
+
unidad_compra: string;
|
|
209
|
+
region: number | null;
|
|
210
|
+
nombre_region: string | null;
|
|
211
|
+
};
|
|
212
|
+
productos_solicitados: ProductoSolicitado[];
|
|
213
|
+
proveedores_cotizando: ProveedorCotizando[];
|
|
214
|
+
resumen: {
|
|
215
|
+
multa_sancion: number | null;
|
|
216
|
+
total_ofertas_recibidas: number;
|
|
217
|
+
total_demandas: number;
|
|
218
|
+
};
|
|
219
|
+
motivos: {
|
|
220
|
+
motivo_cancelacion: string | null;
|
|
221
|
+
motivo_desierta: string | null;
|
|
222
|
+
};
|
|
223
|
+
flags: {
|
|
224
|
+
considera_requisitos_medioambientales: boolean;
|
|
225
|
+
considera_requisitos_impacto_social_economico: boolean;
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
export declare class CompraAgilClient {
|
|
229
|
+
private readonly baseUrl;
|
|
230
|
+
private readonly ticket;
|
|
231
|
+
private readonly rateLimiter;
|
|
232
|
+
constructor(ticket: string, baseUrl?: string);
|
|
233
|
+
/**
|
|
234
|
+
* Realiza un GET autenticado a la API.
|
|
235
|
+
*/
|
|
236
|
+
private request;
|
|
237
|
+
/**
|
|
238
|
+
* Buscar Compras Ágiles con filtros y paginación.
|
|
239
|
+
*/
|
|
240
|
+
buscar(params: BuscarParams): Promise<BuscarResponse>;
|
|
241
|
+
/**
|
|
242
|
+
* Buscar todas las páginas de resultados (auto-paginación).
|
|
243
|
+
* Útil cuando la IA necesita todos los resultados sin gestionar páginas.
|
|
244
|
+
*/
|
|
245
|
+
buscarTodo(params: BuscarParams, maxPages?: number): Promise<CompraAgilItem[]>;
|
|
246
|
+
/**
|
|
247
|
+
* Obtener el detalle completo de una Compra Ágil específica.
|
|
248
|
+
*/
|
|
249
|
+
detalle(codigo: string): Promise<CompraAgilDetalle>;
|
|
250
|
+
/**
|
|
251
|
+
* Buscar cambios recientes en los últimos N milisegundos.
|
|
252
|
+
*/
|
|
253
|
+
cambiosRecientes(ttlMs: number, filtros?: Partial<BuscarParams>): Promise<BuscarResponse>;
|
|
254
|
+
/**
|
|
255
|
+
* Obtener estadísticas del rate limiter.
|
|
256
|
+
*/
|
|
257
|
+
getRateLimitStats(): {
|
|
258
|
+
requestsToday: number;
|
|
259
|
+
isLimited: boolean;
|
|
260
|
+
resetTime: string | null;
|
|
261
|
+
};
|
|
262
|
+
/**
|
|
263
|
+
* Obtener el detalle completo de una Orden de Compra (OC).
|
|
264
|
+
* Admite tanto el ID numérico interno como el código alfanumérico.
|
|
265
|
+
*/
|
|
266
|
+
obtenerDetalleOC(idOC: string | number): Promise<OrdenCompraResponse>;
|
|
267
|
+
}
|
|
268
|
+
//# sourceMappingURL=compra-agil-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compra-agil-client.d.ts","sourceRoot":"","sources":["../../src/api/compra-agil-client.ts"],"names":[],"mappings":"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"}
|