Skip to main content
Glama
vilsem-mcp
by bcsnpc

validate_spec

Validates a Vilsem spec's schema references, cycles, and scalar DAX against the connected Power BI model to catch issues before visual preview.

Instructions

Resolve a Vilsem spec without data. With spec.measures, connectionId is required: validates schema references, cycles and scalar DAX using the connected engine. Run before preview_visual.

Input Schema

NameRequiredDescriptionDefault
specYes
connectionIdNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / connectionId
      Added value: +{
      +  "format": "uuid",
      +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +  "type": "string"
      +}
  2. First observedv0.6.0

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does disclose that validation runs against 'the connected engine' and covers references, cycles, and scalar DAX. It does not say whether the call is non-mutating, nor what happens on failure (thrown error vs. returned diagnostics), and there is no output schema to cover that. Adequate but leaves real behavioral gaps.

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?

Two sentences, front-loaded with the core action, then the prerequisite and sequencing. No filler. The 'Resolve a Vilsem spec without data' opener carries domain jargon but is dense with information rather than redundant.

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

Completeness3/5

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

For a tool taking a nested, free-form spec object with zero schema coverage, no annotations, and no output schema, the description covers when and how to invoke it but not what a valid spec looks like or what the result contains. An agent knows when to call it, but not how to interpret the outcome.

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

Parameters2/5

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

Schema description coverage is 0%, and the spec parameter is an unconstrained object with additionalProperties {}, so the schema conveys nothing about its structure. The description compensates for connectionId by stating its conditional requirement, but says nothing about the shape of spec or what 'measures' contains. The most complex parameter remains entirely opaque.

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

Purpose4/5

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

The description states a specific verb and resource (resolve/validate a Vilsem spec) and qualifies it with 'without data', which separates it from the rendering path. It also enumerates what is checked: schema references, cycles, and scalar DAX. It stops short of distinguishing itself from the sibling validate_visuals, leaving some ambiguity about scope.

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?

Explicit lifecycle guidance is given: 'Run before preview_visual', which tells the agent where this fits in the workflow. The conditional prerequisite 'With spec.measures, connectionId is required' is also actionable. However, it never states when to use validate_visuals instead, nor what to do if validation fails.

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