Skip to main content
Glama
HorizunGroup

Horizun PBI MCP

Official
by HorizunGroup

pbi_refresh_model

Destructive

Refreshes the local Power BI Desktop model (not Service), optionally specific tables. Reports status, duration, rows per table, and flags empty results; includes timeout handling for missing credentials.

Instructions

Refresca el modelo LOCAL abierto en Power BI Desktop (no el Service).

type: full | calculate | clear_values (tambien automatic | data_only). tables: lista opcional de tablas a refrescar; si se omite, todo el modelo. Los errores de credenciales/origen se reportan.

timeout_seconds (600 por defecto, 0 lo desactiva): un refresh lanzado por XMLA no puede mostrar el dialogo de credenciales de Desktop, asi que un origen sin credenciales guardadas deja al motor esperando para siempre y no hay ninguna ventana que cerrar. Al agotarse el plazo se pide la cancelacion al motor y se devuelve refresh_timeout enumerando los origenes que REQUIEREN credenciales -no si las tienen: eso Desktop no lo expone- y si la cancelacion se confirmo o el comando pudo quedar corriendo.

Devuelve estado, duracion y rows_by_table: cuantas filas quedaron en cada tabla refrescada. Un refresh puede terminar en 'ok' y haber cargado CERO filas -credenciales que devuelven vacio, un filtro de fecha que no alcanza nada, un origen que cambio de esquema-, asi que las tablas vacias salen ademas en warnings. Si no se pudo contar, se dice; no se inventa el numero.

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 confirm=true desde 2.0.0. Hasta entonces era la unica tool destructiveHint sin confirmacion junto con pbi_open_and_refresh: un agente que decide por «¿tiene confirm?» no veia nada que preguntar.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
typeNofull
tablesNo
confirmNo
request_idNo
timeout_secondsNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With destructiveHint=true and readOnlyHint=false, the description adds rich context well beyond the annotations: the XMLA credential-dialog limitation that causes infinite hangs, the timeout_seconds default/disable semantics, the 'ok with zero rows' gotcha, the warning list behavior, and the critical .pbip data-not-saved persistence fact. It also discloses the confirm=true requirement since 2.0.0. This is exactly the kind of behavioral disclosure a mutation tool with sparse annotations needs — no contradictions found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is substantial (~180 words across three paragraphs) but front-loaded with the core purpose and param summary before diving into edge cases. The timeout/credential paragraph, zero-rows caveat, and .pbip persistence note are all necessary behavioral disclosures. Only the historical note about 'the only destructiveHint tool without confirmation' is somewhat meta/trim-able, but it explains why confirm exists. Dense but every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, credential-sensitive, hang-prone tool with 5 params, 0% schema coverage, and no enums, the description is remarkably complete: it covers type semantics, table selection, the critical timeout failure mode, return value semantics (status, duration, rows_by_table, refresh_timeout, warnings) even though an output schema exists, .pbip persistence behavior, and the confirm requirement. Nothing essential about successful use or failure modes is left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden, and it largely delivers: type's valid values (full | calculate | clear_values | automatic | data_only), tables's optional-omit-means-everything semantics, timeout_seconds's default (600), disable value (0), and hang-prevention rationale, and confirm's mandatory status. Only request_id is left undocumented, which is a modest gap given the otherwise thorough compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states the exact verb-resource-scope: refreshes the LOCAL model in Power BI Desktop, explicitly excluding the Service. This clearly distinguishes it from sibling pbi_open_and_refresh (which opens + refreshes), and the .pbip vs. model distinction further scopes its behavior. Purpose is unambiguous and differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit exclusion context ('not the Service' — so don't use it for cloud refresh) and references sibling pbi_open_and_refresh by name, implying when a different tool applies. It also explains important contextual behavior (confirm=true requirement, .pbip data-not-saved persistence) that informs when a refresh is meaningful. It stops short of a full when/when-not decision framework for all alternatives, but the local-vs-Service and refresh-vs-open-and-refresh contrasts are substantive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

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