Horizun PBI MCP
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HORIZUN_PBI_MCP_LIBS_DIR | No | Carpeta con las DLLs de ADOMD.NET/TOM | ./libs |
| HORIZUN_PBI_MCP_MAX_ROWS | No | Límite de filas por defecto en DAX | 1000 |
| HORIZUN_PBI_MCP_LOG_LEVEL | No | DEBUG/INFO/WARNING/ERROR | INFO |
| HORIZUN_PBI_MCP_BACKUPS_DIR | No | Backups de .pbip | ./backups |
| HORIZUN_PBI_MCP_OUTPUTS_DIR | No | Documentación y change_log.md | ./outputs |
| HORIZUN_PBI_MCP_DEFAULT_PBIP | No | .pbip a abrir al iniciar | |
| HORIZUN_PBI_MCP_DOTNET_RUNTIME | No | Runtime de pythonnet (netfx o coreclr) | netfx |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pbi_profile_dataA | Perfila los VALORES del modelo abierto y devuelve lo que no cuadra. Complementa a pbi_audit_model, que revisa la estructura: un porcentaje que vale -800 no es un defecto del modelo sino de los datos, y solo se ve consultandolos. Detecta porcentajes fuera de 0-100, columnas vacias, columnas de un solo valor y columnas mayormente vacias. Cada hallazgo trae la consulta que lo demuestra y la consecuencia concreta sobre el tablero. Solo lectura. |
| pbi_audit_projectA | Auditoria integral: modelo semantico + informe + layout. Devuelve puntaje global y por dominio, resumen ejecutivo, hallazgos priorizados con evidencia y recomendacion, y que reglas tienen correccion automatica.
|
| pbi_audit_report_onlyA | Audita solo el informe PBIR (sin las reglas del modelo semantico). Cubre paginas vacias, visuales sin titulo, campos rotos, duplicados, tamanos de lienzo inconsistentes y la geometria de cada pagina. |
| pbi_plan_audit_fixesA | Planifica correcciones para reglas CONCRETAS. No escribe nada. No existe "arreglar todo": hay que indicar |
| pbi_apply_audit_fixesA | Aplica las acciones devueltas por pbi_plan_audit_fixes. Requiere confirm=true. Cada accion se aplica por su propia via segura (transaccion, verificacion y rollback); si una falla, se reporta sin detener las demas y sin ocultarlo. |
| pbi_list_autofix_rulesA | Reglas que tienen correccion automatica, y en que consiste cada una. |
| pbi_diagnose_dataA | Diagnostico de CONTENIDO contra el modelo VIVO: lo que rompe tableros y ningun metadato ve. Cuatro chequeos deterministas, cada uno con la consulta DAX que lo demuestra y muestras de los valores culpables:
No hay heuristicas "inteligentes" de outliers ni escalas: lo generico
es determinista y lo subjetivo viene del brief. Un chequeo que no se
pudo correr sale en Requiere el modelo ABIERTO en Desktop (consulta datos, no archivos).
|
| pbi_define_port_contractA | Escribe el CONTRATO del puerto del ecosistema (pbi-port-contract.json). El puerto NO es un bus de APIs entre Revit/Navisworks/Project —eso es fragil sin arreglo—: es un contrato de datos. Cada herramienta EMITE un dataset normalizado con una llave compartida, y este MCP lo valida y lo consume.
Vive versionado junto al .pbip, como el brief. Se valida con pbi_check_contract: archivos entrantes antes de cargar, y el modelo activo despues. |
| pbi_check_contractA | Valida contra el contrato del puerto: un archivo entrante o el modelo. Con Sin |
| pbi_inspect_pbixA | Radiografia de un .pbix SIN convertirlo ni abrir Power BI Desktop. Dice en que formato esta el informe ('pbir' si ya trae el formato mejorado y solo hay que copiarlo, 'layout' si es el heredado y hay que traducirlo), si lleva modelo de datos propio o es un informe con conexion en vivo, y cuantas paginas, recursos y visuales personalizados tiene. Sirve para saber que esperar antes de lanzar la conversion.
|
| pbi_convert_pbix_to_pbipA | Convierte uno o varios .pbix en proyectos .pbip (PBIR + TMDL). El informe sale del propio archivo: si el .pbix ya guarda PBIR se copia tal cual, y si trae el formato heredado se traduce pagina a pagina. El modelo NO se puede leer del archivo (es un backup comprimido del
motor), asi que se ABRE EL .pbix EN POWER BI DESKTOP y se serializa a
TMDL desde ahi. Cuenta con eso: cada archivo tarda lo que tarde Desktop
en cargarlo. Si el informe ya esta abierto se reutiliza esa sesion; si
lo abre esta tool, lo cierra al terminar (
Devuelve, por archivo, que se escribio y —lo importante— los avisos y
lo que se quedo por el camino ( |
| pbi_list_convertible_pbixA | Lista los .pbix de una carpeta y como se convertiria cada uno. Recorre los archivos sin abrirlos en Desktop y dice, por cada uno, si el informe se copiaria (ya esta en PBIR) o habria que traducirlo, y si hace falta Desktop para sacar el modelo. Es la vista previa del lote.
|
| pbi_list_desktop_modelsA | Lista los modelos de Power BI Desktop abiertos localmente. Detecta el motor de Analysis Services (localhost:) de cada informe abierto y devuelve puerto, connection string, catalogo y nº de tablas. |
| pbi_select_modelA | Selecciona el modelo local activo para futuras operaciones. Si hay un solo modelo abierto no hace falta indicar nada. Si hay varios,
pasa |
| pbi_open_in_desktopA | Abre un .pbip o .pbix en Power BI Desktop y espera a que sirva el modelo. Cierra el ciclo de trabajo: despues de editar un proyecto, esto permite comprobar que ABRE de verdad y consultar sus medidas, sin pedirle al usuario que lo haga a mano. Un TMDL que no carga se manifiesta aqui. Espera a que el motor local aparezca y deje de crecer, identifica cual
de las instancias corresponde a este archivo (el puerto es dinamico) y,
con Si el archivo ya estaba abierto se reutiliza esa sesion y no se toca
nada (
Ojo: un .pbip recien abierto trae el modelo SIN DATOS. Refresca despues con pbi_refresh_model si vas a comprobar valores. |
| pbi_validate_desktop_renderA | Abre un .pbip/.pbix y captura su ventana real sin depender del foco. Es la comprobacion visual automatizable que complementa al validador
PBIR: espera el modelo, identifica la ventana por PID y hora de inicio,
y la renderiza con PrintWindow directamente a
Pase lo que pase, la respuesta lleva
Si la tool tuvo que abrir Desktop, lo cierra al terminar (tambien si la captura falla) y devuelve la seleccion de modelo a como estaba. Si el informe ya estaba abierto, reutiliza esa sesion y nunca cierra la ventana del usuario. |
| pbi_run_daxA | Ejecuta una consulta DAX de SOLO LECTURA contra el modelo activo. Solo se admiten formas reconocidas: EVALUATE, DEFINE...EVALUATE y DMVs de $SYSTEM. Cualquier otra cosa se rechaza (politica fail-closed).
Devuelve columnas, tipos observados, filas, estadisticas de ejecucion y si se trunco (y por que: filas o tamano). Los errores DAX del motor se devuelven tal cual. |
| pbi_test_connectionA | Valida la conexion al modelo activo con una consulta trivial. |
| pbi_validate_measuresA | Valida DAX de medidas SIN modificar el modelo (dry-run con DEFINE MEASURE). Ideal para probar medidas ANTES de crearlas con pbi_create_measure.
|
| pbi_close_desktopA | Cierra la instancia de Power BI Desktop que sirve ESE proyecto. Es la salida que faltaba del ciclo editar-abrir-mirar-editar: escribir el TMDL exige Desktop cerrado, y no habia forma de cerrarlo desde aqui -tocaba matar el proceso a mano en PowerShell-. Cierra SOLO la instancia con ese archivo abierto, verificando la
identidad del proceso (nombre + hora de arranque, nunca el PID a
secas). Al final re-comprueba que el archivo ya no este abierto y lo
dice en DESTRUCTIVA: los cambios SIN GUARDAR de esa ventana se pierden -y en
un .pbip eso incluye los datos refrescados de la sesion-. Por eso
exige
|
| pbi_start_hereA | Por donde empezar. Mira el estado real y dice los siguientes pasos. Ciento treinta y dos tools con buen nombre siguen siendo ciento treinta y dos tools. Esta responde «¿y ahora que?» con tres o cuatro pasos concretos, cada uno con el nombre exacto de la tool y por que toca ahora: si hay proyecto activo, si tiene modelo o solo informe, si esta vacio, y si Power BI Desktop lo tiene abierto —que impide escribir el TMDL—. Devuelve tambien No escribe nada. Empieza por aqui cuando no sepas que sigue. |
| pbi_list_design_systemsA | Sistemas de diseno disponibles: para que sirve cada uno y que trae. Un sistema decide a la vez el tema (color y tipografia, con paletas ya verificadas contra daltonismo), el tamano del lienzo, la rejilla sobre la que se coloca todo y la escala de texto. Son la misma decision: un tablero de sala se lee a cuatro metros y uno en PDF a cuarenta centimetros, y eso no es el mismo diseno con otro color. Eligelo ANTES de la primera pagina; cambiarlo despues obliga a recolocarlo todo. |
| pbi_apply_design_systemA | Aplica el sistema al informe y devuelve su rejilla. Escribe el tema y lo declara en Escribe en el informe (PBIR): conviene tener el proyecto CERRADO en Power BI Desktop. |
| pbi_compose_pageA | Compone una pagina entera sobre la rejilla del sistema de diseno. Se describe la INTENCION y el servidor decide la geometria:
La composicion es siempre la misma de arriba abajo, a proposito: la coherencia entre paginas sale de que ninguna pueda inventarse su propio orden. Si algo no cabe se dice con la cuenta hecha, en vez de encogerlo hasta que no se lea. El COLOR del texto sale del tema que el informe tiene puesto, no del sistema: un informe solo admite un tema, y escribir el color del sistema pintaba el titulo casi invisible en cuanto los dos no coincidian. La geometria si es de la pagina. Si no cuadran se avisa.
|
| pbi_define_briefA | Escribe el BRIEF DE INTENCION del tablero: para que existe. Es la pieza que gobierna a las demas: la propuesta de paginas, el sistema de diseño y las auditorias leen este artefacto para servir a un proposito en vez de deducirlo todo del modelo. Las respuestas son del HUMANO, no tuyas. Antes de llamar, pregunta en conversacion: ¿para que quieres este tablero? ¿quien lo va a mirar? ¿que decisiones debe sostener? ¿como se va a ver (sala, escritorio, PDF, movil)? Un brief inventado por el agente es peor que ninguno: fija en un archivo con autoridad lo que nadie dijo.
Se guarda como |
| pbi_get_briefA | Lee el brief de intencion del proyecto activo. Devuelve |
| pbi_reflow_pagesA | Reescala las paginas ya escritas al lienzo de otro sistema. El camino de vuelta que faltaba. Aplicar un sistema cambia el tema del informe, pero NO reescribe lo ya compuesto: las paginas se quedan con el lienzo anterior —visuales fuera de limites, basura invisible que si viaja al render— y con los colores que se cocieron al componerlas: un titulo compuesto en tema oscuro queda BLANCO SOBRE BLANCO al pasar a claro, sin que falle nada. Esto hace las dos cosas: reescala cada visual proporcionalmente al lienzo nuevo (acotandolo si no cabe) y recalcula el color de texto de los elementos decorativos con el tema del sistema destino. No recompone: no se puede saber que intencion tenia cada visual, y
adivinarla seria peor. Si una pagina necesita otra estructura,
recomponla con
Escribe en el informe (PBIR): requiere el proyecto CERRADO en Desktop. |
| pbi_list_tablesA | Lista tablas con columnas, tipos, visibilidad y conteos.
Empieza por
|
| pbi_list_measuresA | Lista medidas con tabla, expresion DAX, formato, descripcion y carpeta. Empieza por
|
| pbi_list_relationshipsB | Lista relaciones: tablas/columnas, cardinalidad, filtro cruzado y estado. |
| pbi_analyze_model_qualityC | Detecta problemas tipicos del modelo (calidad). Revisa medidas sin carpeta, DAX muy largo, relaciones bidireccionales/ inactivas, columnas calculadas, IDs visibles, ausencia de calendario, etc. |
| pbi_document_modelA | Genera documentacion completa del modelo en Markdown. Incluye resumen, tablas, columnas, medidas, relaciones, jerarquias, roles (RLS) y advertencias de calidad. Guarda el archivo en outputs/. |
| pbi_export_report_contentA | Exporta el CONTENIDO del informe: los datos que muestra el tablero. A diferencia de
Cada consulta se reconstruye a partir de los campos del visual, se
ejecuta en SOLO LECTURA contra el modelo en vivo y sale como una hoja
de Excel ( Necesita el modelo en vivo: los datos solo existen en el motor, no en
el .pbip. Con Cada hoja declara con que filtros se saco y, sobre todo, cuales no se pudieron aplicar. Los visuales sin consulta tabular -textos, imagenes, formas- se listan aparte con el motivo. |
| pbi_export_excelA | Exporta la informacion disponible a un libro Excel verificado. Crea hojas para resumen, tablas, columnas, medidas, relaciones y, si
hay PBIP activo, paginas, visuales y auditoria. El archivo se escribe en |
| pbi_generate_pdf_reportA | Genera un PDF ejecutivo, tecnico o de auditoria con capturas. Compone informacion existente del modelo, paginas, visuales y auditoria.
El PDF se reabre con pypdf y, cuando Poppler esta disponible, su primera
pagina se renderiza a PNG como prueba visual. Se guarda en |
| pbi_sharepoint_list_folderA | Conecta con SharePoint Online y lista una carpeta mediante Graph.
Autenticacion app-only: las credenciales SOLO se leen de las variables
|
| pbi_sharepoint_download_folderA | Descarga una carpeta de SharePoint a outputs/ de forma todo-o-nada. Primero inventaria el lote y valida Es una descarga de solo lectura remota: no sube, mueve ni elimina nada en SharePoint. |
| pbi_model_summaryA | Resumen compacto del modelo, pensado para leerlo de un vistazo. Conteos, tablas con su tamano, medidas por tabla, columnas calculadas,
tablas desconectadas, relaciones bidireccionales y referencias rotas.
Es la primera tool que conviene llamar para orientarse en un modelo.
|
| pbi_search_modelA | Busca objetos del modelo por nombre (y en el DAX de las medidas).
|
| pbi_get_objectA | Devuelve un objeto del modelo con todo su detalle.
|
| pbi_measure_dependenciesA | De que depende una medida y quien depende de ella. Devuelve dependencias directas (medidas, columnas y referencias ROTAS),
el cierre transitivo sobre medidas hasta |
| pbi_column_dependenciesA | Que usa una columna: medidas, columnas calculadas, relaciones y jerarquias. Util antes de ocultar o eliminar una columna: dice si algo se rompe. |
| pbi_list_hierarchiesB | Lista las jerarquias del modelo con sus niveles y columnas. |
| pbi_list_rolesA | Lista los roles de seguridad (RLS) y sus filtros por tabla. |
| pbi_list_perspectivesA | Lista las perspectivas del modelo. Requiere la capa EN VIVO: el lector TMDL de este proyecto no las extrae. Si no hay ninguna, devuelve una lista vacia con la explicacion. |
| pbi_list_partitionsA | Lista las particiones por tabla (modo de almacenamiento y origen). |
| pbi_audit_modelA | Audita el modelo semantico con reglas de identificador estable. Cada hallazgo trae |
| pbi_list_audit_rulesA | Catalogo de reglas de auditoria disponibles, con su dominio y severidad. |
| pbi_create_measureA | Crea (o reemplaza con overwrite=true) una medida DAX. Valida que la tabla exista y que la medida no exista salvo overwrite.
mode='both' esta temporalmente deshabilitado bajo la politica estricta: 'live' necesita Power BI Desktop abierto y 'pbip' lo necesita cerrado, asi que una sola llamada aplicaria solo uno de los dos destinos. Elige 'live' o 'pbip', o usa 'auto' y se mira el estado para elegir. Si estas construyendo desde cero, 'auto' o 'pbip': el defecto es 'live' y exige Desktop abierto. |
| pbi_update_measureA | Actualiza una medida existente. Lo no especificado se conserva. mode='both' esta temporalmente deshabilitado bajo la politica estricta: 'live' necesita Power BI Desktop abierto y 'pbip' lo necesita cerrado, asi que una sola llamada aplicaria solo uno de los dos destinos. Elige 'live' o 'pbip', o usa 'auto' y se mira el estado para elegir. Si estas construyendo desde cero, 'auto' o 'pbip': el defecto es 'live' y exige Desktop abierto. |
| pbi_delete_measureA | Elimina una medida. Operacion destructiva: requiere confirm=true. mode='both' esta temporalmente deshabilitado bajo la politica estricta: 'live' necesita Power BI Desktop abierto y 'pbip' lo necesita cerrado, asi que una sola llamada aplicaria solo uno de los dos destinos. Elige 'live' o 'pbip', o usa 'auto' y se mira el estado para elegir. Si estas construyendo desde cero, 'auto' o 'pbip': el defecto es 'live' y exige Desktop abierto. |
| pbi_rename_measureA | Renombra una medida actualizando TODO lo que la referencia. Renombrar a mano rompe el informe en silencio: cualquier visual o
medida que apuntara al nombre viejo abre y sale VACIO, sin error. Esta
tool compila primero y escribe en UNA transaccion: la cabecera TMDL,
las expresiones DAX de otras medidas que usan Limite honesto: las referencias DAX CALIFICADAS ( Solo |
| pbi_create_calculated_columnB | Crea una columna calculada (DAX) en una tabla del modelo .pbip.
Escribe en TMDL: requiere el proyecto CERRADO en Power BI Desktop. |
| pbi_create_calculated_tableA | Crea una tabla calculada (DAX) en el modelo .pbip. Resuelve el caso tipico de tener diez metricas guardadas en diez COLUMNAS en vez de en filas: con una tabla calculada que las dinamice se obtiene una matriz de verdad, en lugar de escribir una medida por columna. TMDL exige declarar las columnas y no se pueden adivinar leyendo el
DAX: si no pasas Escribe en TMDL: requiere el proyecto CERRADO en Power BI Desktop. |
| pbi_add_table_from_fileA | Carga un archivo al modelo como lo haria una persona: abrir, transformar, cargar. El mismo recorrido de Power Query —Obtener datos, promover encabezados, cambiar tipos, Cargar— pero escrito directo en el proyecto. Los pasos de la consulta se llaman como los pone Power BI ('Origen', 'Encabezados promovidos', 'Tipo cambiado'), asi que se puede abrir y editar en el editor sin que desentone. Admite .csv, .txt, .tsv, .xlsx, .xlsm, .json, .html/.htm y '.xls'.
Sin dependencias nuevas: el .xlsx se lee como lo que es, un zip con
XML, y el HTML con Un '.xls' NO se toma por la extension: se mira la firma real del archivo. En la practica, casi ningun '.xls' que exportan los ERPs es el binario OLE2 que la extension promete -- es una tabla HTML con esa extension porque Excel la abre igual. Si de verdad es OLE2 (Excel 97-2003), se rechaza con un mensaje claro en vez de leerlo mal; si es un .xlsx renombrado, se lee como .xlsx. Para HTML: si el archivo trae varias La cultura se deduce del archivo, mirando como escribe los
decimales, y se emite SIEMPRE explicita en la consulta. Asumir la del
modelo es lo que convierte 10527.52 en diez millones sin que nada
falle: un informe que abre, pinta y miente. Lo escrito se valida antes de darlo por bueno: si el TMDL generado no
pasara Filas de basura antes del encabezado: es el patron de export mas
comun de un ERP -fila 1 con el titulo del reporte y el resto de la
fila vacia, encabezado real en la fila 2-. Por defecto se AUTODETECTA
la primera fila que pueda ser encabezado (sin huecos y sin nombres
repetidos) y se dice cual se eligio en
Escribe en TMDL: requiere el proyecto CERRADO en Power BI Desktop. |
| pbi_set_storage_modeA | Cambia el modo de almacenamiento de una tabla: import | directQuery | dual. Con directQuery el dato se consulta al origen en cada interaccion y desaparece el refresco, pero NO es un interruptor inocuo: la consulta M tiene que ser plegable al origen, las columnas y tablas calculadas dejan de estar disponibles, y cada visual pasa a ser una consulta al servidor. Devuelve el modo anterior y cuantas particiones cambiaron, para poder deshacerlo sabiendo exactamente que se toco. Escribe en TMDL: requiere el proyecto CERRADO en Power BI Desktop. |
| pbi_create_relationshipA | Crea una relacion entre dos columnas del modelo .pbip. Por defecto muchos-a-uno con filtro en un sentido: es lo que crea Power
BI y lo unico que no introduce ambiguedad. Escribe en TMDL: requiere el proyecto CERRADO en Power BI Desktop. |
| pbi_create_hierarchyA | Crea una jerarquia sobre columnas de la misma tabla.
Escribe en TMDL: requiere el proyecto CERRADO en Power BI Desktop. |
| pbi_set_column_visibilityA | Oculta o muestra una columna del modelo (p.ej. ocultar columnas de ID). mode='both' esta temporalmente deshabilitado bajo la politica estricta: 'live' necesita Power BI Desktop abierto y 'pbip' lo necesita cerrado, asi que una sola llamada aplicaria solo uno de los dos destinos. Elige 'live' o 'pbip', o usa 'auto' y se mira el estado para elegir. Si estas construyendo desde cero, 'auto' o 'pbip': el defecto es 'live' y exige Desktop abierto. |
| pbi_hide_columnsA | Oculta/muestra VARIAS columnas como un solo lote.
Valida todas las entradas antes de escribir: si alguna tabla o columna
no existe, no se modifica nada y el error indica el indice. Los archivos
TMDL se escriben en una sola transaccion y el modelo en vivo con un solo
SaveChanges. mode='both' esta temporalmente deshabilitado bajo la politica estricta: 'live' necesita Power BI Desktop abierto y 'pbip' lo necesita cerrado, asi que una sola llamada aplicaria solo uno de los dos destinos. Elige 'live' o 'pbip', o usa 'auto' y se mira el estado para elegir. Si estas construyendo desde cero, 'auto' o 'pbip': el defecto es 'live' y exige Desktop abierto. |
| pbi_set_relationship_directionA | Cambia el filtro cruzado de una relacion.
No confundir |
| pbi_disable_auto_date_timeA | Activa/desactiva 'Auto fecha y hora' (solo modo pbip). Desactivarlo aligera el modelo: al reabrir el .pbip, Power BI elimina las tablas de fecha automaticas (LocalDateTable_*). Requiere proyecto .pbip activo. |
| pbi_add_table_from_sourceA | Crea una tabla apuntando a una BASE DE DATOS o API externa.
La verdad de las credenciales, por delante: la consulta queda escrita y validada, pero el PRIMER refresh lo completa una persona en Desktop —pedira credenciales y nivel de privacidad, que viven en Desktop, no en el .pbip—. Hasta entonces la tabla existe sin datos y este servidor no puede verificar la conexion. Prometer otra cosa seria mentir. Escribe TMDL: requiere el proyecto CERRADO en Desktop. |
| pbi_health_checkA | Estado general del servidor: dependencias, DLLs, sesion y proyecto. Solo lectura. Es lo primero que conviene llamar: dice si la capa EN VIVO esta disponible, si hay un proyecto .pbip abierto y si algo requiere atencion (sesion obsoleta, journals pendientes). |
| pbi_capabilitiesA | Que puede hacerse AHORA MISMO, y que no, con el motivo. Un agente deberia consultarla antes de planificar: dice si la capa en vivo esta disponible, si se puede escribir en el .pbip, y que capacidades dependen de la version del motor. |
| pbi_session_infoA | Detalle de la sesion: modelo activo, proyecto activo y su frescura. Distingue una sesion valida de una obsoleta ( |
| pbi_list_pending_journalsA | Lista los journals del proyecto activo. Un journal |
| pbi_inspect_journalA | Inspecciona un journal y lo compara con el estado ACTUAL del proyecto. Solo lectura: no restaura nada. Por cada archivo dice si sigue como el
original, si hay respaldo disponible y cual fue su desenlace.
|
| pbi_recover_from_journalA | Restaura los originales guardados en un journal. DESTRUCTIVA. Sin Estados: Cada archivo se verifica byte a byte tras restaurarlo, y se recrean los directorios padre que hubieran desaparecido. |
| pbi_purge_backupsA | Aplica la politica de retencion a los backups. DESTRUCTIVA. Sin Se conserva siempre el journal mas reciente y TODOS los pendientes: un journal pendiente guarda los unicos originales de una transaccion que no llego a cerrarse. |
| pbi_plan_changeA | Calcula un PLAN sin aplicar nada, y devuelve un
El plan incluye el diff por archivo y una huella del estado sobre el que se calculo. Si el proyecto cambia despues, pbi_apply_plan lo rechaza. |
| pbi_apply_planA | Aplica un plan calculado con pbi_plan_change o con un dry_run. Verifica que el proyecto siga en el estado sobre el que se planifico; si cambio, rechaza el plan en vez de aplicar algo distinto de lo aprobado.
Exige |
| pbi_propose_dashboardA | Mira el modelo y PROPONE varios diseños distintos, con su porque. A diferencia de pbi_page_building_blocks, que entrega el inventario y deja el diseño en manos de quien pregunta, esto clasifica lo que hay —que columna es un estado, cual una fecha, cuales forman una familia de metricas comparables— y devuelve paginas completas con un spec listo para aplicar. Devuelve tambien Usalo para ofrecer opciones al usuario en vez de decidir por el. |
| pbi_page_building_blocksA | Entrega el material para diseniar una hoja: modelo (tablas/medidas/columnas), catalogo de visuales existentes (reutilizables como plantilla), canvas y paginas. Usa esto ANTES de proponer una hoja: te dice que campos y tipos de visual hay. |
| pbi_preview_spec_htmlA | Genera una MAQUETA HTML de una hoja propuesta (sin escribir nada al .pbip).
|
| pbi_export_page_htmlC | Exporta una MAQUETA HTML de una pagina EXISTENTE (layout + campos de cada visual). |
| pbi_create_page_from_specA | Crea una hoja (pagina) PBIR completa a partir de un spec.
|
| pbi_open_pbip_projectA | Abre un proyecto .pbip y lo marca como proyecto activo. Detecta carpetas .SemanticModel (TMDL) y .Report (PBIR) y devuelve un
resumen con advertencias (p.ej. si el informe no usa PBIR).
|
| pbi_validate_pbip_projectA | Valida a fondo el proyecto .pbip activo (estructura, PBIR, TMDL). Incluye |
| pbi_create_pbip_projectA | Crea un proyecto .pbip vacio pero valido, y lo deja activo. Es el punto de partida para armar un tablero solo con rutas de archivos: crear el proyecto, cargarle los datos con pbi_add_table_from_file y componer las paginas, sin abrir Power BI Desktop hasta el final. Escribe el minimo que Power BI acepta —informe y modelo semantico apuntandose entre si— con la referencia en ruta RELATIVA: una absoluta ataria el proyecto a esta maquina. Incluye una pagina, porque un informe sin ninguna no abre. No declara |
| pbi_validate_tmdlA | Comprueba si un modelo TMDL abrira, sin abrir Power BI Desktop. Dos capas. Un lint estatico que caza las trampas que solo se veian al abrir (una propiedad de tabla colocada despues de sus hijos, un comentario '///' sobre una relacion, una medida que se llama como una columna de su tabla, medidas duplicadas, referencias rotas) y, si estan las DLL, un parseo con el MISMO serializador que usa Power BI. Cada hallazgo trae Hay fallos que NINGUN analisis estatico ve porque dependen de los datos
—un blanco en el lado 'uno' de una relacion, un separador decimal mal
interpretado—. Salen en
|
| pbi_backup_pbip_projectA | Crea un backup con timestamp del proyecto .pbip activo.
|
| pbi_refresh_modelA | Refresca el modelo LOCAL abierto en Power BI Desktop (no el Service).
Devuelve estado, duracion y En un proyecto .pbip los datos NO se guardan: viven en la sesion de Desktop y al reabrir hay que refrescar otra vez. Lo que persiste al guardar es la definicion (TMDL + PBIR). Exige |
| pbi_open_and_refreshA | Abre el proyecto en Power BI Desktop y lo refresca, en una llamada. Es la secuencia real de trabajo y siempre eran dos llamadas de unos
catorce segundos cada una, porque un
Devuelve lo mismo que las dos por separado, incluido Si el refresh falla, la ventana se DEJA ABIERTA: ya cargo bien, y
cerrarla borraria justo el contexto que hace falta para ver por que
fallo. Sale en Exige |
| pbi_add_image_resourceA | Incrusta una imagen en el informe y la deja lista para usar. La copia a StaticResources y la declara en report.json: sin las dos
cosas Power BI no la encuentra y el visual sale vacio sin dar ningun
error. Devuelve
|
| pbi_list_report_resourcesA | Recursos del informe: declarados, en disco y los que no cuadran. Un archivo sin declarar no lo encuentra Power BI; una declaracion sin archivo deja el visual vacio. Los dos casos son invisibles al abrir el informe, asi que se listan aparte. |
| pbi_create_bookmarkA | Crea un marcador: un estado del informe al que volver con un boton. Escribe el archivo del marcador Y lo mete en el indice: sin el indice Power BI no lo muestra aunque el archivo exista.
|
| pbi_list_bookmarksA | Marcadores del informe, y los que no cuadran entre indice y disco. Un marcador que no esta en el indice no se muestra; una entrada del indice sin archivo rompe el panel. Los dos casos son mudos al abrir. |
| pbi_delete_bookmarkA | Borra un marcador y lo quita del indice. Destructiva: confirm=true. |
| pbi_list_themesA | Temas de informe disponibles, con su paleta y para que sirve cada uno. Devuelve, por tema: el escenario de uso, el color de fondo, los colores de serie EN SU ORDEN (el orden es lo que garantiza que dos series contiguas se distingan tambien con daltonismo) y los colores de estado. Usalo para PROPONER un esquema antes de construir, en vez de decidirlo por el usuario. |
| pbi_apply_themeA | Aplica un tema de colores al informe .pbip activo. Escribe el JSON del tema en StaticResources/RegisteredResources y lo declara en report.json (themeCollection + resourcePackages). Sin las tres cosas Power BI Desktop lo ignora en silencio.
Si el informe ya tenia un tema con contenido DISTINTO (p.ej. editado a
mano), se reemplaza avisandolo en Requiere el proyecto CERRADO en Power BI Desktop. |
| pbi_get_visualB | Definicion completa y normalizada de un visual. Devuelve tipo, posicion, orden Z, titulo, campos por rol, medidas y columnas referenciadas, si tiene formato propio, sus filtros, y la definicion cruda por si hace falta inspeccionarla. |
| pbi_report_capabilitiesA | Version PBIR observada, tema, custom visuals y tipos clonables. Solo se pueden crear visuales de tipos ya presentes en el informe: se clona una estructura real en vez de inventarla. Esta tool dice cuales hay disponibles antes de intentarlo. |
| pbi_duplicate_visualA | Duplica un visual conservando campos, formato y filtros. Solo se regenera el identificador, que debe ser unico. La copia se
desplaza |
| pbi_delete_visualA | Elimina un visual. Operacion destructiva: requiere confirm=true. Devuelve la definicion previa, y el journal permite restaurarla. |
| pbi_set_visual_titleA | Cambia u oculta el titulo de un visual PRESERVANDO su formato.
|
| pbi_set_conditional_formatA | Colorea un visual segun el valor de un campo (degradado). Es lo que convierte una matriz de numeros en un mapa de calor, o unas barras planas en una escala de semaforo.
Si el visual ya tenia una regla en ese mismo destino, se sustituye: dos degradados sobre la misma propiedad no se suman, se pisan. |
| pbi_set_color_from_fieldA | Colorea un visual con el color que DEVUELVE una medida. Es el modo "valor de campo" de Power BI: la medida entrega '#D03B3B' o un nombre de color, y el visual lo aplica tal cual. Es el patron tipico de un semaforo calculado en DAX.
|
| pbi_set_visual_z_orderA | Fija el orden Z de los visuales de una pagina.
|
| pbi_replace_visual_fieldA | Sustituye una referencia de campo dentro de un visual.
El destino se valida contra el modelo antes de escribir: si no existe,
es ambiguo o es de otro tipo (medida donde va una columna), se rechaza
con |
| pbi_copy_visual_formatA | Copia el formato de un visual a otros DEL MISMO TIPO. Se copia el formato pero no el texto del titulo, que es contenido. Copiar entre tipos distintos se rechaza: la estructura de formato no es intercambiable y Power BI podria rechazar el informe. |
| pbi_duplicate_pageA | Duplica una pagina con todos sus visuales, en una sola transaccion. Se regeneran los identificadores que deben ser unicos (el de la pagina y el de cada visual) y se conserva todo lo demas. |
| pbi_delete_pageA | Elimina una pagina y actualiza el orden y la pagina activa. Destructiva: requiere confirm=true. Se niega a borrar la ultima pagina del informe, porque un informe sin paginas no abre. |
| pbi_rename_pageA | Cambia el nombre visible de una pagina. El id interno no cambia. |
| pbi_reorder_pagesA | Fija el orden de las paginas del informe. Acepta ids o nombres visibles. Las paginas que no menciones quedan al final, conservando su orden relativo. |
| pbi_detect_layout_issuesA | Diagnostica la geometria de una pagina (o de todas). Solo lectura. Detecta solapamientos, visuales fuera del lienzo, tamanos demasiado pequenos, margenes, separaciones inconsistentes, orden Z duplicado o ausente, paginas vacias y paginas saturadas. Cada hallazgo trae su evidencia geometrica. |
| pbi_align_visualsB | Alinea varios visuales por un borde.
|
| pbi_distribute_visualsA | Reparte visuales con separacion uniforme. Necesita al menos tres visuales: con dos, la separacion ya es la que hay. |
| pbi_normalize_page_layoutA | Corrige lo corregible de una pagina sin reacomodarla entera. Mete dentro del lienzo lo que se sale, sube al minimo lo demasiado
pequeno y respeta los margenes. NO mueve lo que ya esta bien: es una
correccion conservadora. |
| pbi_list_page_presetsA | Presets de pagina disponibles, con los bloques que compone cada uno. Un preset describe la INTENCION de la pagina (KPIs arriba, grafico protagonista, detalle abajo). Los campos concretos los eliges tu. |
| pbi_generate_page_specA | Genera un borrador de spec a partir de un preset y unos campos.
|
| pbi_validate_page_specA | Valida un spec: esquema, referencias contra el modelo y geometria. Los errores traen su JSON path ( |
| pbi_preview_page_specA | Maqueta HTML del spec con las posiciones FINALES. No escribe al .pbip. Lo que muestra el preview es exactamente lo que se escribiria: tipos, titulos, campos, tamanos y posiciones salen del mismo compilado que usa la aplicacion. |
| pbi_diff_page_specA | Compara el spec con una pagina existente antes de aplicarlo. Dice que visuales se anadirian, cuales sobrarian y cuantos quedan igual. Si la pagina no existe, informa que se creara. |
| pbi_apply_page_specA | Materializa el spec como una pagina PBIR, en UNA transaccion. Cuatro desenlaces explicitos:
|
| pbi_validate_generated_pageA | Verifica una pagina YA escrita: referencias rotas y geometria. Se usa despues de aplicar un spec para comprobar que el resultado es valido de verdad, no solo que la escritura no fallo. |
| pbi_list_report_pagesA | Lista las paginas del informe PBIR activo (id, nombre, tamano, nº visuales). |
| pbi_list_visualsA | Lista los visuales de una pagina: id, tipo, posicion, campos, titulo.
|
| pbi_document_report_layoutA | Genera documentacion Markdown del layout del informe (paginas y visuales). |
| pbi_create_visualA | Crea un visual PBIR en una pagina.
Para visuales con datos, valida antes de escribir los roles obligatorios,
la cardinalidad maxima de cada rol y el tipo de campo admitido: dimension
(
El rol se reconoce escrito como sea: el logico ( Un rol que ese tipo de visual no tiene se RECHAZA con la lista de los validos. Antes se descartaba en silencio y el visual salia sin datos.
|
| pbi_add_custom_visualA | Registra un custom visual de AppSource en el informe (publicCustomVisuals). Sin argumentos registra "HTML Content" (renderiza HTML/SVG desde una medida DAX). Power BI Desktop lo descarga de AppSource al abrir el informe. |
| pbi_create_html_visualA | Crea un visual "HTML Content" que renderiza el HTML/SVG devuelto por una medida.
|
| pbi_update_visual_positionB | Mueve/redimensiona un visual existente. |
| pbi_set_visual_filterA | Filtra un visual EXISTENTE sin escribir
Por MEDIDA,
Por defecto REEMPLAZA los filtros del visual, y una lista vacia los
quita todos. Cuidado con los slicers: suelen traer un filtro
|
| pbi_arrange_visualsA | Reorganiza los visuales de una pagina.
|
| pbi_generate_report_pageB | Genera una pagina con visuales propuestos a partir del modelo. Revisa el modelo, valida los campos sugeridos (no inventa campos), crea la pagina, agrega tarjetas para medidas y un grafico por categoria, y acomoda todo con el layout indicado. Devuelve un resumen de lo creado. |
| pbi_build_dashboardA | Construye un dashboard completo desde un objetivo, no desde primitivas. Analiza el modelo, compone el spec segun el preset, calcula el layout,
genera preview, aplica en una transaccion y verifica el resultado.
|
| pbi_build_executive_pageC | Pagina de resumen ejecutivo: fila de KPIs y grafico protagonista. |
| pbi_build_evm_pageA | Pagina EVM (Earned Value Management). Espera medidas del tipo PV, EV, AC, CPI y SPI; si no las reconoce, lo avisa en vez de generar una pagina que no significa nada. |
| pbi_repair_broken_referencesA | Detecta referencias rotas en los visuales y las repara. Sin |
| pbi_normalize_reportA | Normaliza la geometria de TODAS las paginas del informe. Mete dentro del lienzo lo que se sale, sube al minimo lo demasiado pequeno y respeta margenes. No reacomoda lo que ya cumple. Compara el puntaje de auditoria antes y despues. |
| pbi_compare_live_to_pbipA | Compara el modelo EN VIVO con el TMDL del disco. Util para saber si hay cambios en memoria sin guardar: lista tablas y medidas que solo estan en un lado, y medidas cuyo DAX difiere. |
| pbi_prepare_deliveryA | Checklist de pre-entrega con plan de correccion. Audita el proyecto, produce un checklist de bloqueantes y propone las
correcciones automaticas disponibles. Con |
| pbi_generate_technical_documentationA | Documentacion tecnica completa en Markdown, guardada en outputs/. Incluye el modelo (tablas, medidas con su DAX y dependencias), el informe pagina a pagina con los campos de cada visual, y la auditoria con puntaje por dominio. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/HorizunGroup/horizun-pbi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server