Importa presupuestos OPUS, Neodata y Excel; analiza precios unitarios y simula cambios.
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.
Llama sin argumentos para abrir el selector de archivos. Para reabrir una revisión publicada, indica presupuestoId y version juntos. El visor permite buscar conceptos, consultar sus APU y abrir una fuente con sourceId. Para un documento privado, usa la cuenta propietaria o el enlace de lectura vigente.
Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor.
Referencia de la evidencia que quieres ver en el visor. Copia el valor exacto que devolvió la consulta del concepto, renglón, recurso o cálculo.
Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto.
Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste.
The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http presupuestos-red https://presupuestos.red/mcp
Llama sin argumentos para abrir el selector de archivos. Para reabrir una revisión publicada, indica presupuestoId y version juntos. El visor permite buscar conceptos, consultar sus APU y abrir una fuente con sourceId. Para un documento privado, usa la cuenta propietaria o el enlace de lectura vigente.
| Argument | Type | Description |
|---|---|---|
| version | integer | Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor. |
| sourceId | string | Referencia de la evidencia que quieres ver en el visor. Copia el valor exacto que devolvió la consulta del concepto, renglón, recurso o cálculo. |
| presupuestoId | string | Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto. |
| readSharePath | string | Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste. |
| conversation_id | string | The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"version": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor.",
"exclusiveMinimum": 0
},
"sourceId": {
"type": "string",
"maxLength": 200,
"description": "Referencia de la evidencia que quieres ver en el visor. Copia el valor exacto que devolvió la consulta del concepto, renglón, recurso o cálculo."
},
"presupuestoId": {
"type": "string",
"pattern": "^[0-9a-f]{10}$",
"description": "Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto."
},
"readSharePath": {
"type": "string",
"maxLength": 120,
"description": "Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
},
"additionalProperties": false
}Sólo el botón de confirmación del visor: aplica la propuesta exacta firmada, revalida propietario, scope, versión y estado y relee el resultado. No reintentar una escritura si se perdió la respuesta; consultar el estado real.
| Argument | Type | Description |
|---|---|---|
| proposal* | string | Comprobante de la propuesta visible, disponible sólo en metadata privada del visor. |
| conversation_id | string | The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"proposal"
],
"properties": {
"proposal": {
"type": "string",
"maxLength": 100000,
"minLength": 1,
"description": "Comprobante de la propuesta visible, disponible sólo en metadata privada del visor."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
},
"additionalProperties": false
}Busca conceptos por código, descripción y partida; devuelve hasta 10 candidatos y nextCursor para continuar. Puede acotar a partidaId; con partidaId permite query vacío para recorrer sus conceptos en orden del presupuesto. Usa el contexto del presupuesto abierto. El acceso depende de la cuenta propietaria, de que el documento sea público o del enlace de lectura vigente. No guarda cambios ni emite una opinión profesional.
| Argument | Type | Description |
|---|---|---|
| query | string | Código o texto del concepto o partida que buscas. Con partidaId puedes recorrer la partida sin texto de búsqueda. |
| cursor | integer | Posición desde la que se retoma la lectura. Usa nextCursor de la página anterior. |
| version* | integer | Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor. |
| partidaId | integer | ID de partida devuelto en mapaPartidas.partidas por obtener_resumen_presupuesto o como wbsNodeId en la tabla presupuesto. |
| presupuestoId* | string | Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto. |
| readSharePath | string | Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste. |
Solicita autorización de tu cuenta existente para consultar e importar en ChatGPT. Autorizar no vincula presupuestos.
| Argument | Type | Description |
|---|---|---|
| edit | boolean | Solicitar además permiso explícito de edición económica; no guarda ni confirma propuestas. |
| conversation_id | string | The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"edit": {
"type": "boolean",
"description": "Solicitar además permiso explícito de edición económica; no guarda ni confirma propuestas."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
},
"additionalProperties": false
}Con conceptoId devuelve el APU detallado, sus diez insumos principales y los pasos del PU. Con conceptoIds y la huella vigente devuelve cabeceras y hasta 20 filas directas por APU con coeficiente, operación y costos del motor. forConcept expresa cantidad e incidencia de cada fila para la cantidad del concepto; null indica dato no calculable, incluido el consumo de cargos porcentuales. Cero es válido. Las filas no explotan básicos ni suman padres e hijos; los costos horarios conservan su composición cerrada. Con compare:true, comparison alinea filas por catalogId y omite rows de las cabeceras. cells sigue el orden de conceptoIds; null indica una fila no entregada. differentFields compara los datos de la fila por unidad, sin confundir diferencias por cantidad del concepto con cambios de composición o equivalencia técnica. sharedBasics cuenta conceptos usuarios directos en el documento y su importe visible completo, no la incidencia del básico; no sumes importes entre recursos. Excluye interiores de costos horarios y porcentajes. Para usos e incidencia consulta consultar_usos_insumos. Cita sourceId para la fila, resourceSourceId para datos de catálogo y PU importado del recurso, y engineSourceId para costos calculados. forConcept es contexto derivado. presentation identifica la procedencia del texto efectivo. pending indica páginas, ramas y detalle pendientes. Usa inspeccionar_componentes_apu para abrir ramas. El lote no acredita cobertura completa. Usa el contexto del presupuesto abierto. El acceso depende de la cuenta propietaria, de que el documento sea público o del enlace de lectura vigente. No guarda cambios ni emite una opinión profesional.
| Argument | Type | Description |
|---|---|---|
| compare | boolean | Con true devuelve cabeceras sin rows y una comparación alineada por catálogo; textos/unidades una vez, coeficientes/operaciones/costos por concepto. Conserva límites de las filas directas entregadas. |
| version* | integer |
Lee presupuesto, catalogo, componentes y explosion por páginas de 50 registros, hasta 100. Componentes devuelve matrices con cabecera (código, descripción y unidad), directUses e items directos con recurso, unidad, coeficiente, operación y costo del motor. directUses muestra conteos completos y hasta 20 referencias documentales directas a conceptos raíz o items de matrices padre con sus conceptos raíz; hasMore indica referencias omitidas. concept.importe es el importe visible del concepto completo, no incidencia del recurso ni una cifra sumable entre referencias. Las relaciones internas de costos horarios y porcentajes son documentary_only. consultar_usos_insumos consulta occurrences reales dentro de conceptos; no continúa exactamente esta lista documental. totalComponents, limit y cursor cuentan componentes fuente, no matrices ni referencias. Una matriz puede continuar en otra página con la misma cabecera. Las otras tablas conservan rows y totalRows. Continúa con nextCursor y expectedDataFingerprint de la primera respuesta. status, null y boundary conservan faltantes y cargos cerrados; costPerUnit es el costo por unidad del recurso o la base porcentual, no el importe del renglón. Las fuentes citables se consultan con consultar_apu e inspeccionar_componentes_apu. Usa el contexto del presupuesto abierto. El acceso depende de la cuenta propietaria, de que el documento sea público o del enlace de lectura vigente. No guarda cambios ni emite una opinión profesional.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Tamaño de la página en registros de origen. En componentes se cuentan los renglones, aunque pertenezcan a la misma matriz. |
| table* | string | Elige la vista económica según lo que investigas. La tabla de conceptos permite comparar valores de origen y del visor. La de matrices muestra la composición directa y la explosión acumula consumos e importes por insumo. |
Devuelve las señales del motor de Análisis antes de la selección ejecutiva de la UI. Sirven para orientar investigación, no son errores probados ni hallazgos del agente. El motor limita la selección y las entidades relacionadas son ejemplos. Usa el contexto del presupuesto abierto. El acceso depende de la cuenta propietaria, de que el documento sea público o del enlace de lectura vigente. No guarda cambios ni emite una opinión profesional.
| Argument | Type | Description |
|---|---|---|
| version* | integer | Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor. |
| presupuestoId* | string | Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto. |
| readSharePath | string | Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste. |
| conversation_id | string | The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics. |
{
"type": "object",
"required": [
"presupuestoId",
"version"
],
"properties": {
"version": {
"type": "integer",
"minimum": 1,
"description": "Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor."
},
"presupuestoId": {
"type": "string",
"pattern": "^[a-f0-9]{10}$",
"description": "Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto."
},
"readSharePath": {
"type": "string",
"maxLength": 100,
"description": "Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
},
"additionalProperties": false
}Investiga catalogId o varios catalogIds juntos, con expectedDataFingerprint vigente. scope limita a presupuesto (por defecto), conceptos o partidas con descendientes. Devuelve conceptos relacionados, importe visible afectado y contribución de costo directo por recurso y conjunta para TODO el alcance. La unión excluye descendientes ya contenidos en otro recurso seleccionado: las contribuciones individuales pueden solaparse. Es contribución actual, no ahorro ni resultado de eliminar recursos. cursor/limit paginan sólo evidence; los agregados no cambian entre páginas. Fronteras de costos horarios y porcentajes permanecen cerradas. null significa no calculable; completeness describe integridad económica y evidence.hasMore sólo páginas pendientes. Usa el contexto del presupuesto abierto. El acceso depende de la cuenta propietaria, de que el documento sea público o del enlace de lectura vigente. No guarda cambios ni emite una opinión profesional.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Número de filas de evidencia por página. Los agregados cubren todo el alcance. |
| scope | any | Alcance sobre el que se calculan los agregados y se buscan usos del recurso. |
| cursor | string | Posición desde la que se retoma la lectura. Usa nextCursor de la página anterior. |
| version* | integer | Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor. |
| catalogId | integer |
Comprueba si el host ha autorizado una cuenta. No modifica datos ni vincula documentos.
| Argument | Type | Description |
|---|---|---|
| conversation_id | string | The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
},
"additionalProperties": false
}Crea un intento persistente para el archivo seleccionado en la interfaz. Con cuenta verificada asigna propietario; sin cuenta crea un invitado. No repetir automáticamente si se pierde la respuesta.
| Argument | Type | Description |
|---|---|---|
| size* | integer | Tamaño del archivo en bytes. |
| filename* | string | Nombre del archivo seleccionado. |
| requireAccount* | boolean | Impide cambiar a invitado un intento iniciado con cuenta. |
| conversation_id | string | The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"filename",
"size",
"requireAccount"
],
"properties": {
"size": {
"type": "integer",
"maximum": 78643200,
"description": "Tamaño del archivo en bytes.",
"exclusiveMinimum": 0
},
"filename": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Nombre del archivo seleccionado."
},
"requireAccount": {
"type": "boolean",
"description": "Impide cambiar a invitado un intento iniciado con cuenta."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
},
"additionalProperties": false
}Devuelve el concepto y su ruta de partidas, filas directas con coeficiente, operación, datos de catálogo y costos del motor, y referencias citables. Pasa el sourceId de una fila como occurrenceId para abrir su matriz ordinaria y ver sus ancestros; las ramas hermanas, los costos horarios y los cargos porcentuales quedan cerrados. nextCursor continúa la página del mismo alcance. completeness indica el grado de expansión. Usa el contexto del presupuesto abierto. El acceso depende de la cuenta propietaria, de que el documento sea público o del enlace de lectura vigente. No guarda cambios ni emite una opinión profesional.
| Argument | Type | Description |
|---|---|---|
| cursor | integer | Posición desde la que se retoma la lectura. Usa nextCursor de la página anterior. |
| version* | integer | Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor. |
| conceptoId* | integer | ID de concepto devuelto como conceptoId en buscar_conceptos o conceptId en la tabla presupuesto. Usa el ID interno del mismo documento. |
| occurrenceId | string | sourceId de la fila de una matriz ordinaria devuelta por inspeccionar_componentes_apu. Úsalo para abrir esa rama del concepto. |
| presupuestoId* | string | Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto. |
Lista hasta 50 presupuestos propios y referencias guardadas de la cuenta autorizada. Usa offset para continuar; no modifica datos.
| Argument | Type | Description |
|---|---|---|
| offset | integer | Desplazamiento de la página, en incrementos de 50. |
| conversation_id | string | The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"offset": {
"type": "integer",
"default": 0,
"maximum": 10000,
"minimum": 0,
"description": "Desplazamiento de la página, en incrementos de 50."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
},
"additionalProperties": false
}Obtiene el resumen económico y un mapa de partidas. Los importes por partida incluyen sus descendientes y se expresan en la base declarada; la cobertura de matrices no certifica una revisión completa. Usa el contexto del presupuesto abierto. El acceso depende de la cuenta propietaria, de que el documento sea público o del enlace de lectura vigente. No guarda cambios ni emite una opinión profesional.
| Argument | Type | Description |
|---|---|---|
| version* | integer | Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor. |
| presupuestoId* | string | Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto. |
| readSharePath | string | Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste. |
| conversation_id | string | The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics. |
{
"type": "object",
"required": [
"presupuestoId",
"version"
],
"properties": {
"version": {
"type": "integer",
"minimum": 1,
"description": "Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor."
},
"presupuestoId": {
"type": "string",
"pattern": "^[a-f0-9]{10}$",
"description": "Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto."
},
"readSharePath": {
"type": "string",
"maxLength": 100,
"description": "Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
},
"additionalProperties": false
}Calcula cantidades, costos editables y composición de matrices conjuntamente sobre los inputs vigentes, conservando otros overrides. Consulta primero IDs, valores y huella. Devuelve antes/después y abre la confirmación; NO guarda. Ante nombres ambiguos pide al usuario elegir las referencias. Para guardar, el propietario debe pulsar Aplicar cambios en el visor; nunca confirmes por él.
| Argument | Type | Description |
|---|---|---|
| version* | integer | Versión documental consultada. |
| operations* | array | Cambios conjuntos por IDs consultados. Para filas usa matrixCatalogId, itemIndex original (base cero) y expected completo de la inspección. Las matrices son compartidas, no ocurrencias aisladas. No inventes IDs ni resuelvas nombres ambiguos. |
| presupuestoId* | string | ID del presupuesto autorizado. |
| readSharePath | string | Enlace vigente que sólo autoriza lectura. |
| conversation_id | string | The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics. |
| expectedDataFingerprint* | string |
Calcula una hipótesis sin modificar ni guardar el presupuesto; funciona sin login. scenario.kind=budget-changes combina cambios de cantidades, precios de recursos y coeficientes en un solo presupuesto y recalcula todos los conceptos y cargos. resource-price y matrix-coefficient afectan todos los usos compartidos. Usa los IDs y valores vigentes: expectedPrice es el costo del catálogo, no el costo calculado de una matriz; matrixCatalogId/itemIndex identifican su renglón. Devuelve el impacto conjunto; includeConceptEffects añade desglose. kind=coefficient limita la hipótesis a una occurrence de un concepto y no equivale a editar globalmente su matriz; exclude-concepts calcula exclusiones del alcance indicado. Alternativas se simulan por separado, nunca se suman. Usa el contexto del presupuesto abierto. El acceso depende de la cuenta propietaria, de que el documento sea público o del enlace de lectura vigente. No guarda cambios ni emite una opinión profesional.
| Argument | Type | Description |
|---|---|---|
| version* | integer | Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor. |
| scenario* | any | Hipótesis económica que quieres probar sobre los datos vigentes del presupuesto. |
| presupuestoId* | string | Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto. |
| readSharePath | string | Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste. |
Vincula explícitamente el presupuesto público reclamable por ID a la cuenta autorizada. First-wins: otra cuenta puede haberlo vinculado antes. Conserva versiones, datos y originales; revoca el enlace compartido. Repetir para el mismo propietario es seguro.
| Argument | Type | Description |
|---|---|---|
| version* | integer | Versión abierta; se conserva al vincular. |
| presupuestoId* | string | ID del documento que el usuario decidió vincular. |
| conversation_id | string | The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"presupuestoId",
"version"
],
"properties": {
"version": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Versión abierta; se conserva al vincular.",
"exclusiveMinimum": 0
},
"presupuestoId": {
"type": "string",
"pattern": "^[0-9a-f]{10}$",
"description": "ID del documento que el usuario decidió vincular."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
},
"additionalProperties": false
}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 14, 2026.
| conversation_id | string | The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"presupuestoId",
"version"
],
"properties": {
"query": {
"type": "string",
"description": "Código o texto del concepto o partida que buscas. Con partidaId puedes recorrer la partida sin texto de búsqueda."
},
"cursor": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Posición desde la que se retoma la lectura. Usa nextCursor de la página anterior."
},
"version": {
"type": "integer",
"minimum": 1,
"description": "Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor."
},
"partidaId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "ID de partida devuelto en mapaPartidas.partidas por obtener_resumen_presupuesto o como wbsNodeId en la tabla presupuesto."
},
"presupuestoId": {
"type": "string",
"pattern": "^[a-f0-9]{10}$",
"description": "Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto."
},
"readSharePath": {
"type": "string",
"maxLength": 100,
"description": "Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
},
"additionalProperties": false
}| Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor. |
| conceptoId | integer | ID de concepto devuelto como conceptoId en buscar_conceptos o conceptId en la tabla presupuesto. Usa el ID interno del mismo documento. |
| conceptoIds | array | Conceptos cuyos APU quieres consultar en lote. Toma los IDs de buscar_conceptos o del campo conceptId de la tabla presupuesto. |
| presupuestoId* | string | Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto. |
| readSharePath | string | Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste. |
| expectedDataFingerprint | string | Huella del estado de los datos económicos que usaste como base. Tómala de context.dataFingerprint en la lectura que sustenta la consulta. |
{
"type": "object",
"oneOf": [
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"conceptoId",
"presupuestoId",
"version"
],
"properties": {
"version": {
"type": "integer",
"minimum": 1,
"description": "Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor."
},
"conceptoId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "ID de concepto devuelto como conceptoId en buscar_conceptos o conceptId en la tabla presupuesto. Usa el ID interno del mismo documento."
},
"presupuestoId": {
"type": "string",
"pattern": "^[a-f0-9]{10}$",
"description": "Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto."
},
"readSharePath": {
"type": "string",
"maxLength": 100,
"description": "Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste."
}
},
"additionalProperties": false
},
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"conceptoIds",
"expectedDataFingerprint",
"presupuestoId",
"version"
],
"properties": {
"compare": {
"type": "boolean",
"description": "Con true devuelve cabeceras sin rows y una comparación alineada por catálogo; textos/unidades una vez, coeficientes/operaciones/costos por concepto. Conserva límites de las filas directas entregadas."
},
"version": {
"type": "integer",
"minimum": 1,
"description": "Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor."
},
"conceptoIds": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"maxItems": 5,
"minItems": 1,
"description": "Conceptos cuyos APU quieres consultar en lote. Toma los IDs de buscar_conceptos o del campo conceptId de la tabla presupuesto."
},
"presupuestoId": {
"type": "string",
"pattern": "^[a-f0-9]{10}$",
"description": "Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto."
},
"readSharePath": {
"type": "string",
"maxLength": 100,
"description": "Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste."
},
"expectedDataFingerprint": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Huella del estado de los datos económicos que usaste como base. Tómala de context.dataFingerprint en la lectura que sustenta la consulta."
}
},
"additionalProperties": false
}
],
"required": [
"presupuestoId",
"version"
],
"properties": {
"compare": {
"type": "boolean",
"description": "Con true devuelve cabeceras sin rows y una comparación alineada por catálogo; textos/unidades una vez, coeficientes/operaciones/costos por concepto. Conserva límites de las filas directas entregadas."
},
"version": {
"type": "integer",
"minimum": 1,
"description": "Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor."
},
"conceptoId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "ID de concepto devuelto como conceptoId en buscar_conceptos o conceptId en la tabla presupuesto. Usa el ID interno del mismo documento."
},
"conceptoIds": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"maxItems": 5,
"minItems": 1,
"description": "Conceptos cuyos APU quieres consultar en lote. Toma los IDs de buscar_conceptos o del campo conceptId de la tabla presupuesto."
},
"presupuestoId": {
"type": "string",
"pattern": "^[a-f0-9]{10}$",
"description": "Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto."
},
"readSharePath": {
"type": "string",
"maxLength": 100,
"description": "Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste."
},
"expectedDataFingerprint": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Huella del estado de los datos económicos que usaste como base. Tómala de context.dataFingerprint en la lectura que sustenta la consulta."
}
},
"additionalProperties": false
}| cursor | integer | Posición desde la que se retoma la lectura. Usa nextCursor de la página anterior. |
| version* | integer | Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor. |
| presupuestoId* | string | Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto. |
| readSharePath | string | Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste. |
| conversation_id | string | The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics. |
| expectedDataFingerprint | string | Fija el estado de los datos mientras recorres la tabla. Al continuar, toma context.dataFingerprint de la primera página. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"table",
"presupuestoId",
"version"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Tamaño de la página en registros de origen. En componentes se cuentan los renglones, aunque pertenezcan a la misma matriz."
},
"table": {
"enum": [
"presupuesto",
"catalogo",
"componentes",
"explosion"
],
"type": "string",
"description": "Elige la vista económica según lo que investigas. La tabla de conceptos permite comparar valores de origen y del visor. La de matrices muestra la composición directa y la explosión acumula consumos e importes por insumo."
},
"cursor": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Posición desde la que se retoma la lectura. Usa nextCursor de la página anterior."
},
"version": {
"type": "integer",
"minimum": 1,
"description": "Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor."
},
"presupuestoId": {
"type": "string",
"pattern": "^[a-f0-9]{10}$",
"description": "Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto."
},
"readSharePath": {
"type": "string",
"maxLength": 100,
"description": "Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
},
"expectedDataFingerprint": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Fija el estado de los datos mientras recorres la tabla. Al continuar, toma context.dataFingerprint de la primera página."
}
},
"additionalProperties": false
}| Identifica un insumo o básico del catálogo. Toma su catalogId de la tabla catalogo o de una fila del APU. |
| catalogIds | array | Insumos o básicos cuya incidencia quieres investigar en conjunto. Toma sus catalogId de la tabla catalogo o de las filas del APU. |
| presupuestoId* | string | Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto. |
| readSharePath | string | Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste. |
| conversation_id | string | The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics. |
| expectedDataFingerprint* | string | Huella del estado de los datos económicos que usaste como base. Tómala de context.dataFingerprint en la lectura que sustenta la consulta. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"expectedDataFingerprint",
"presupuestoId",
"version"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Número de filas de evidencia por página. Los agregados cubren todo el alcance."
},
"scope": {
"oneOf": [
{
"type": "object",
"required": [
"kind"
],
"properties": {
"kind": {
"type": "string",
"const": "presupuesto",
"description": "Incluye todo el presupuesto."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"conceptIds"
],
"properties": {
"kind": {
"type": "string",
"const": "conceptos",
"description": "Investiga en conceptos específicos, aunque estén en partidas distintas."
},
"conceptIds": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"maxItems": 100,
"minItems": 1,
"description": "Conceptos en los que quieres localizar el insumo. Toma los IDs de buscar_conceptos o del campo conceptId de la tabla presupuesto."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"partidaIds"
],
"properties": {
"kind": {
"type": "string",
"const": "partidas",
"description": "Limita los usos a las partidas indicadas y a sus descendientes."
},
"partidaIds": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"maxItems": 100,
"minItems": 1,
"description": "Partidas que delimitan la búsqueda, incluidos sus descendientes. ID de partida devuelto en mapaPartidas.partidas por obtener_resumen_presupuesto o como wbsNodeId en la tabla presupuesto."
}
},
"additionalProperties": false
}
],
"description": "Alcance sobre el que se calculan los agregados y se buscan usos del recurso."
},
"cursor": {
"type": "string",
"description": "Posición desde la que se retoma la lectura. Usa nextCursor de la página anterior."
},
"version": {
"type": "integer",
"minimum": 1,
"description": "Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor."
},
"catalogId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Identifica un insumo o básico del catálogo. Toma su catalogId de la tabla catalogo o de una fila del APU."
},
"catalogIds": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"maxItems": 100,
"minItems": 1,
"description": "Insumos o básicos cuya incidencia quieres investigar en conjunto. Toma sus catalogId de la tabla catalogo o de las filas del APU."
},
"presupuestoId": {
"type": "string",
"pattern": "^[a-f0-9]{10}$",
"description": "Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto."
},
"readSharePath": {
"type": "string",
"maxLength": 100,
"description": "Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
},
"expectedDataFingerprint": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Huella del estado de los datos económicos que usaste como base. Tómala de context.dataFingerprint en la lectura que sustenta la consulta."
}
},
"additionalProperties": false
}| readSharePath | string | Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste. |
| conversation_id | string | The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"conceptoId",
"presupuestoId",
"version"
],
"properties": {
"cursor": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Posición desde la que se retoma la lectura. Usa nextCursor de la página anterior."
},
"version": {
"type": "integer",
"minimum": 1,
"description": "Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor."
},
"conceptoId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "ID de concepto devuelto como conceptoId en buscar_conceptos o conceptId en la tabla presupuesto. Usa el ID interno del mismo documento."
},
"occurrenceId": {
"type": "string",
"minLength": 1,
"description": "sourceId de la fila de una matriz ordinaria devuelta por inspeccionar_componentes_apu. Úsalo para abrir esa rama del concepto."
},
"presupuestoId": {
"type": "string",
"pattern": "^[a-f0-9]{10}$",
"description": "Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto."
},
"readSharePath": {
"type": "string",
"maxLength": 100,
"description": "Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
}
},
"additionalProperties": false
}| Huella efectiva obtenida al consultar el presupuesto. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"presupuestoId",
"version",
"expectedDataFingerprint",
"operations"
],
"properties": {
"version": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Versión documental consultada.",
"exclusiveMinimum": 0
},
"operations": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"required": [
"kind",
"conceptId",
"expected",
"change"
],
"properties": {
"kind": {
"type": "string",
"const": "concept-quantity",
"description": "Operación explícita: concept-quantity."
},
"change": {
"oneOf": [
{
"type": "object",
"required": [
"mode",
"value"
],
"properties": {
"mode": {
"type": "string",
"const": "set",
"description": "Operación explícita: set."
},
"value": {
"type": "number",
"description": "Valor absoluto, incremento o porcentaje según mode."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mode",
"value"
],
"properties": {
"mode": {
"type": "string",
"const": "add",
"description": "Operación explícita: add."
},
"value": {
"type": "number",
"description": "Valor absoluto, incremento o porcentaje según mode."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mode",
"value"
],
"properties": {
"mode": {
"type": "string",
"const": "percent",
"description": "Operación explícita: percent."
},
"value": {
"type": "number",
"description": "Valor absoluto, incremento o porcentaje según mode."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mode"
],
"properties": {
"mode": {
"type": "string",
"const": "restore",
"description": "Operación explícita: restore."
}
},
"additionalProperties": false
}
],
"description": "Cómo modificar o restaurar el input."
},
"expected": {
"type": [
"number",
"null"
],
"description": "Valor vigente consultado; null sólo si no está declarado."
},
"conceptId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "ID canónico devuelto por las herramientas de consulta."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"catalogId",
"expected",
"change"
],
"properties": {
"kind": {
"type": "string",
"const": "resource-price",
"description": "Operación explícita: resource-price."
},
"change": {
"oneOf": [
{
"type": "object",
"required": [
"mode",
"value"
],
"properties": {
"mode": {
"type": "string",
"const": "set",
"description": "Operación explícita: set."
},
"value": {
"type": "number",
"description": "Valor absoluto, incremento o porcentaje según mode."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mode",
"value"
],
"properties": {
"mode": {
"type": "string",
"const": "add",
"description": "Operación explícita: add."
},
"value": {
"type": "number",
"description": "Valor absoluto, incremento o porcentaje según mode."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mode",
"value"
],
"properties": {
"mode": {
"type": "string",
"const": "percent",
"description": "Operación explícita: percent."
},
"value": {
"type": "number",
"description": "Valor absoluto, incremento o porcentaje según mode."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"mode"
],
"properties": {
"mode": {
"type": "string",
"const": "restore",
"description": "Operación explícita: restore."
}
},
"additionalProperties": false
}
],
"description": "Cómo modificar o restaurar el input."
},
"expected": {
"type": [
"number",
"null"
],
"description": "Valor vigente consultado; null sólo si no está declarado."
},
"catalogId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "ID canónico devuelto por las herramientas de consulta."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"matrixCatalogId",
"itemIndex",
"expected",
"item"
],
"properties": {
"item": {
"type": "object",
"required": [
"catalogIdInsumo",
"cantidad",
"op"
],
"properties": {
"op": {
"enum": [
"*",
"/"
],
"type": "string",
"description": "Multiplicación o división del coeficiente."
},
"cantidad": {
"type": "number",
"description": "Coeficiente de la fila."
},
"catalogIdInsumo": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "ID del recurso existente."
}
},
"description": "Fila exacta del contrato BudgetEdits.",
"additionalProperties": false
},
"kind": {
"type": "string",
"const": "matrix-row",
"description": "Operación explícita: matrix-row."
},
"expected": {
"type": "object",
"required": [
"catalogIdInsumo",
"cantidad",
"op"
],
"properties": {
"op": {
"enum": [
"*",
"/"
],
"type": "string",
"description": "Multiplicación o división del coeficiente."
},
"cantidad": {
"type": "number",
"description": "Coeficiente de la fila."
},
"catalogIdInsumo": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "ID del recurso existente."
}
},
"description": "Fila exacta del contrato BudgetEdits.",
"additionalProperties": false
},
"itemIndex": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Índice base cero; nunca posición visual."
},
"matrixCatalogId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "ID canónico devuelto por las herramientas de consulta."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"matrixCatalogId",
"itemIndex",
"expected"
],
"properties": {
"kind": {
"type": "string",
"const": "matrix-remove",
"description": "Operación explícita: matrix-remove."
},
"expected": {
"type": "object",
"required": [
"catalogIdInsumo",
"cantidad",
"op"
],
"properties": {
"op": {
"enum": [
"*",
"/"
],
"type": "string",
"description": "Multiplicación o división del coeficiente."
},
"cantidad": {
"type": "number",
"description": "Coeficiente de la fila."
},
"catalogIdInsumo": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "ID del recurso existente."
}
},
"description": "Fila exacta del contrato BudgetEdits.",
"additionalProperties": false
},
"itemIndex": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Índice base cero; nunca posición visual."
},
"matrixCatalogId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "ID canónico devuelto por las herramientas de consulta."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"matrixCatalogId",
"itemIndex",
"expected",
"toIndex"
],
"properties": {
"kind": {
"type": "string",
"const": "matrix-move",
"description": "Operación explícita: matrix-move."
},
"toIndex": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Índice base cero; nunca posición visual."
},
"expected": {
"type": "object",
"required": [
"catalogIdInsumo",
"cantidad",
"op"
],
"properties": {
"op": {
"enum": [
"*",
"/"
],
"type": "string",
"description": "Multiplicación o división del coeficiente."
},
"cantidad": {
"type": "number",
"description": "Coeficiente de la fila."
},
"catalogIdInsumo": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "ID del recurso existente."
}
},
"description": "Fila exacta del contrato BudgetEdits.",
"additionalProperties": false
},
"itemIndex": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Índice base cero; nunca posición visual."
},
"matrixCatalogId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "ID canónico devuelto por las herramientas de consulta."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"matrixCatalogId",
"itemIndex",
"item"
],
"properties": {
"item": {
"type": "object",
"required": [
"catalogIdInsumo",
"cantidad",
"op"
],
"properties": {
"op": {
"enum": [
"*",
"/"
],
"type": "string",
"description": "Multiplicación o división del coeficiente."
},
"cantidad": {
"type": "number",
"description": "Coeficiente de la fila."
},
"catalogIdInsumo": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "ID del recurso existente."
}
},
"description": "Fila exacta del contrato BudgetEdits.",
"additionalProperties": false
},
"kind": {
"type": "string",
"const": "matrix-insert",
"description": "Operación explícita: matrix-insert."
},
"itemIndex": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Índice base cero; nunca posición visual."
},
"matrixCatalogId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "ID canónico devuelto por las herramientas de consulta."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"matrixCatalogId"
],
"properties": {
"kind": {
"type": "string",
"const": "matrix-restore",
"description": "Operación explícita: matrix-restore."
},
"matrixCatalogId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "ID canónico devuelto por las herramientas de consulta."
}
},
"additionalProperties": false
}
]
},
"maxItems": 100,
"minItems": 1,
"description": "Cambios conjuntos por IDs consultados. Para filas usa matrixCatalogId, itemIndex original (base cero) y expected completo de la inspección. Las matrices son compartidas, no ocurrencias aisladas. No inventes IDs ni resuelvas nombres ambiguos."
},
"presupuestoId": {
"type": "string",
"pattern": "^[0-9a-f]{10}$",
"description": "ID del presupuesto autorizado."
},
"readSharePath": {
"type": "string",
"maxLength": 120,
"description": "Enlace vigente que sólo autoriza lectura."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
},
"expectedDataFingerprint": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Huella efectiva obtenida al consultar el presupuesto."
}
},
"additionalProperties": false
}| conversation_id | string | The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics. |
| includeConceptEffects | boolean | Incluye el desglose por concepto afectado del escenario conjunto. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"scenario",
"presupuestoId",
"version"
],
"properties": {
"version": {
"type": "integer",
"minimum": 1,
"description": "Número de la revisión publicada que quieres consultar. Usa el que acompaña al presupuesto en el contexto del visor."
},
"scenario": {
"oneOf": [
{
"type": "object",
"required": [
"kind",
"dataFingerprint",
"changes"
],
"properties": {
"kind": {
"type": "string",
"const": "budget-changes",
"description": "Evalúa el efecto conjunto en todo el presupuesto, incluidos los usos de recursos y matrices compartidos."
},
"changes": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"required": [
"kind",
"conceptId",
"expectedQuantity",
"quantity"
],
"properties": {
"kind": {
"type": "string",
"const": "concept-quantity",
"description": "Cambia la cantidad de un concepto."
},
"quantity": {
"type": "number",
"description": "Cantidad total que quieres simular en la unidad del concepto."
},
"conceptId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "ID de concepto devuelto como conceptoId en buscar_conceptos o conceptId en la tabla presupuesto. Usa el ID interno del mismo documento."
},
"expectedQuantity": {
"type": "number",
"description": "Cantidad vigente del concepto devuelta por consultar_apu en concept.quantity."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"catalogId",
"expectedPrice",
"price"
],
"properties": {
"kind": {
"type": "string",
"const": "resource-price",
"description": "Cambia el costo de catálogo del recurso en todos sus usos."
},
"price": {
"type": "number",
"description": "Costo unitario que quieres simular para el recurso en la unidad de su catálogo."
},
"catalogId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Identifica un insumo o básico del catálogo. Toma su catalogId de la tabla catalogo o de una fila del APU."
},
"expectedPrice": {
"type": "number",
"description": "Costo unitario vigente de catálogo. Tómalo de costoUnitarioImportado de la tabla catalogo o de declaredUnitPrice de la fuente del recurso."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"matrixCatalogId",
"itemIndex",
"expectedCatalogId",
"expectedCoefficient",
"coefficient"
],
"properties": {
"kind": {
"type": "string",
"const": "matrix-coefficient",
"description": "Cambia el coeficiente de una fila de matriz en todos los usos de esa matriz."
},
"itemIndex": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Índice de la fila en su matriz, devuelto como itemIndex por inspeccionar_componentes_apu o por la tabla componentes."
},
"coefficient": {
"type": "number",
"description": "Coeficiente que quieres simular en la fila. El motor conserva su operación de multiplicación o división."
},
"matrixCatalogId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "ID de catálogo de la matriz que contiene la fila. Tómalo de matrixCatalogId en la inspección o de matrix.catalogId en la tabla componentes."
},
"expectedCatalogId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "ID vigente del recurso en esa fila. Usa catalogId de la inspección o catalogIdInsumo de la tabla componentes."
},
"expectedCoefficient": {
"type": "number",
"description": "Coeficiente vigente de la fila, devuelto como coefficient en la inspección o en la tabla componentes."
}
},
"additionalProperties": false
}
]
},
"maxItems": 100,
"minItems": 1,
"description": "Cambios que se aplican juntos sobre la misma base económica vigente."
},
"dataFingerprint": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Huella del estado de los datos económicos que usaste como base. Tómala de context.dataFingerprint en la lectura que sustenta la consulta."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"dataFingerprint",
"conceptId",
"occurrencePath",
"expectedCoefficient",
"coefficient"
],
"properties": {
"kind": {
"type": "string",
"const": "coefficient",
"description": "Recalcula el concepto con el coeficiente de una sola fila de su estructura."
},
"conceptId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "ID de concepto devuelto como conceptoId en buscar_conceptos o conceptId en la tabla presupuesto. Usa el ID interno del mismo documento."
},
"coefficient": {
"type": "number",
"minimum": 0,
"description": "Coeficiente que quieres simular en la fila. El motor conserva su operación de multiplicación o división."
},
"occurrencePath": {
"type": "array",
"items": {
"type": "object",
"required": [
"catalogId",
"itemIndex"
],
"properties": {
"catalogId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "ID de la matriz de este paso. Cópialo de structure.occurrencePath de la inspección."
},
"itemIndex": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Índice de la fila en su matriz, devuelto como itemIndex por inspeccionar_componentes_apu o por la tabla componentes."
}
},
"additionalProperties": false
},
"maxItems": 40,
"minItems": 1,
"description": "Copia la ruta structure.occurrencePath de la fila que quieres simular en inspeccionar_componentes_apu."
},
"dataFingerprint": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Huella del estado de los datos económicos que usaste como base. Tómala de context.dataFingerprint en la lectura que sustenta la consulta."
},
"expectedCoefficient": {
"type": "number",
"description": "Coeficiente vigente de la fila, devuelto como coefficient en la inspección o en la tabla componentes."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"dataFingerprint",
"scopeConceptIds",
"excludedConceptIds"
],
"properties": {
"kind": {
"type": "string",
"const": "exclude-concepts",
"description": "Compara el alcance original con el mismo alcance sin los conceptos excluidos."
},
"dataFingerprint": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Huella del estado de los datos económicos que usaste como base. Tómala de context.dataFingerprint en la lectura que sustenta la consulta."
},
"scopeConceptIds": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"maxItems": 2000,
"minItems": 1,
"description": "Conceptos que forman el alcance original del escenario. Toma los IDs de buscar_conceptos o del campo conceptId de la tabla presupuesto."
},
"excludedConceptIds": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"maxItems": 100,
"minItems": 1,
"description": "IDs de los conceptos de scopeConceptIds que quieres retirar del escenario."
}
},
"additionalProperties": false
}
],
"description": "Hipótesis económica que quieres probar sobre los datos vigentes del presupuesto."
},
"presupuestoId": {
"type": "string",
"pattern": "^[a-f0-9]{10}$",
"description": "Identifica el documento. Tómalo del contexto que devuelve el visor al importar o abrir el presupuesto."
},
"readSharePath": {
"type": "string",
"maxLength": 100,
"description": "Enlace que da acceso de lectura a un presupuesto compartido. Para un documento privado compartido, toma este valor del contexto con el que lo abriste."
},
"conversation_id": {
"type": "string",
"description": "The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics."
},
"includeConceptEffects": {
"type": "boolean",
"description": "Incluye el desglose por concepto afectado del escenario conjunto."
}
},
"additionalProperties": false
}