Skip to main content
Glama
verdonz

Verdonz MCP

Official
by verdonz

Verdonz MCP

Connect AI assistants to governed business data with Verdonz.

Verdonz MCP is an open-source Model Context Protocol server that lets compatible AI clients work with governed metrics, datasets, investigations, and supporting evidence through Verdonz. It runs over stdio and keeps stdout reserved for MCP protocol traffic.

What is Verdonz MCP?

It is a small Node.js server that translates MCP tool calls into governed Verdonz API requests. The underlying Verdonz identity remains the authority for access, permissions, and data visibility.

Related MCP server: Intellify Remote Power BI MCP Server

Why use it?

  • Give AI assistants a governed path to business data.

  • Keep metric definitions and source context close to answers.

  • Use the same tool surface locally with fictional demo data.

Features

Six tools cover metric discovery, dataset discovery, questions, investigations, and evidence. Production capabilities depend on the connected Verdonz API contract and permissions.

Installation

npm install -g @verdonz/mcp
npx @verdonz/mcp

Quick start

export VERDONZ_API_KEY="your-key"
export VERDONZ_BASE_URL="https://your-verdonz-api.example"
npx @verdonz/mcp

VERDONZ_BASE_URL is required in production mode; this package does not invent a default host.

MCP client configuration

{
  "mcpServers": {
    "verdonz": {
      "command": "npx",
      "args": ["-y", "@verdonz/mcp"],
      "env": {
        "VERDONZ_API_KEY": "YOUR_API_KEY",
        "VERDONZ_BASE_URL": "YOUR_VERDONZ_API_URL"
      }
    }
  }
}

Available tools

  • verdonz_list_metrics — search accessible governed metrics.

  • verdonz_get_metric — retrieve a metric definition and metadata.

  • verdonz_list_datasets — list accessible data sources.

  • verdonz_ask — ask a governed business question.

  • verdonz_investigate — investigate metric movement when supported by the provider.

  • verdonz_get_evidence — retrieve source/lineage evidence when supported.

Example questions

“What changed in revenue last month?” “Which region contributed most to the decline?” “Show me the definition of net revenue.” “What datasets can I access?” “Investigate the drop in conversion rate.” “What evidence supports that conclusion?” Actual capabilities depend on the connected Verdonz environment.

Mock/demo mode

Run VERDONZ_MOCK=true npx @verdonz/mcp to use fictional revenue, conversion rate, active customer, region, and product data without a network connection. No real customer data is included.

Authentication

Set VERDONZ_API_KEY and VERDONZ_BASE_URL as environment variables. The production adapter sends the key as X-Verdonz-API-Key and never logs it.

Architecture

The MCP transport and tool schemas are isolated from a typed VerdonzClient interface. MockClient supplies the local demo; VerdonzApiClient maps confirmed semantic HTTP routes; future API changes stay behind that adapter.

Security

Read SECURITY.md. Use least-privilege keys, keep credentials out of source control, and remember that the MCP server can expose whatever the configured Verdonz identity can access.

Development

npm ci
npm run lint
npm run typecheck
npm test
npm run build
npm pack --dry-run

See docs/VERDONZ_API_INTEGRATION.md for adapter details.

Contributing

See CONTRIBUTING.md.

Roadmap

Validate the production API gateway contract, add a first-class investigation adapter, expand evidence normalization, and add integration tests against a safe Verdonz environment.

License

MIT. See LICENSE.

About Verdonz

Verdonz builds governed AI agents for your business. It connects business data and context so teams and AI can ask questions, understand what changed, and investigate the evidence behind an answer.

Available Tools

6 tools
verdonz_askC

Ask a business question through Verdonz governed semantic data.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNo
questionYes
datasetIdNo
timeRangeNo

TDQS

C2.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioural disclosure and fails to meet it. It does not say whether the call is read-only, whether it requires an existing datasetId, whether the question must reference listed metrics, or whether any state is created, so an agent cannot predict the operation's side effects.

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

Conciseness3/5

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

It is a single short sentence with no wasted words, so it is concise, but the brevity comes from under-specification rather than tight editing. There is no front-loaded guidance and no structural separation of purpose from usage.

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

Completeness2/5

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

For a four-parameter tool with a nested object, no annotations, no output schema, and five sibling tools, the description is not complete enough to invoke correctly. It omits the parameter contract and any result expectations, which nothing else in the definition compensates for.

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

Parameters1/5

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

Four parameters including a nested timeRange object at 0% schema description coverage, and the description mentions none of them. In particular, context, datasetId, and timeRange are entirely undocumented in both places, leaving semantics like format, required pairing, and nesting keys unknown.

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

Purpose3/5

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

The description gives a verb ('Ask') and a resource ('business question') but the mechanism phrase 'through Verdonz governed semantic data' is marketing-flavoured rather than specifying the data domain. It does not distinguish this tool from siblings like verdonz_investigate or verdonz_get_evidence, which sound like equally plausible entry points for a question.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus verdonz_investigate, verdonz_list_datasets, or verdonz_get_metric, and no prerequisites or exclusions. The agent is left to guess whether 'ask' is the top-level entry point or a follow-up to another tool.

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

verdonz_get_evidenceC

Retrieve source/lineage evidence for a Verdonz result when supported.

ParametersJSON Schema
NameRequiredDescriptionDefault
metricNo
resultIdNo
datasetIdNo

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and largely drops it. The only behavioral hint is 'when supported,' which implies the evidence may be unavailable, but it never says what happens in that case, what permissions are required, or what form the evidence takes.

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

Conciseness3/5

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

A single front-loaded sentence with no waste, which is structurally sound. But the brevity stems from under-specification rather than efficient communication, so it earns only a baseline score.

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

Completeness2/5

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

For a tool with 3 optional parameters, no output schema, and no annotations, the description is too thin. It should at least clarify which identifier drives the lookup and what 'evidence' contains; instead the agent is left guessing how to form a valid call.

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?

Three parameters (metric, resultId, datasetId) have 0% schema description coverage and the description explains none of them. It implies a 'result' is the target, vaguely pointing at resultId, but gives no meaning for metric or datasetId or how they should be combined, despite none being required.

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?

States a specific verb and resource: 'Retrieve source/lineage evidence for a Verdonz result.' An agent understands this returns provenance data for a result. However, it does not distinguish itself from siblings like verdonz_investigate or verdonz_get_metric, and the trailing hedge 'when supported' muddies the scope.

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

Usage Guidelines2/5

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

The phrase 'when supported' hints at a condition but gives no actionable criteria for when this tool should be chosen over verdonz_investigate, verdonz_ask, or verdonz_get_metric. No prerequisites, no alternatives, no when-not-to-use guidance.

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

verdonz_get_metricC

Get the definition and metadata for a governed metric.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
metricIdNo
datasetIdNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It implies a read operation but says nothing about permissions, what 'metadata' includes, error behavior when the metric is not found, or whether an output is returned.

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?

A single front-loaded sentence with no filler. It is efficient, though the brevity is partly under-specification rather than disciplined concision.

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

Completeness2/5

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

With no output schema, no annotations, and three undocumented parameters, the description should disambiguate identification and return content. It leaves the identifier question (name vs metricId vs datasetId) entirely unanswered.

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

Parameters1/5

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

Three parameters with 0% schema description coverage, yet the description never mentions name, metricId, or datasetId. Crucially, it does not say whether the metric is identified by name, id, or a dataset-scoped pair, leaving the caller unable to choose the right input.

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?

It states a specific verb ('Get') and resource ('definition and metadata for a governed metric'), so the operation is unambiguous. It does not, however, distinguish itself from sibling 'verdonz_list_metrics' or explain what 'governed' adds.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus verdonz_list_metrics, verdonz_ask, or verdonz_investigate. The agent must infer from the names alone that this is the single-item lookup counterpart to the list tool.

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

verdonz_investigateC

Investigate why a governed metric changed. Production availability depends on the connected Verdonz API.

ParametersJSON Schema
NameRequiredDescriptionDefault
metricYes
datasetIdNo
timeRangeNo
dimensionsNo
comparisonPeriodNo

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure, and it mostly does not: it never states whether the operation is read-only, whether it requires auth or specific permissions, what it returns, or how long it may take. The one behavioral fact given — 'Production availability depends on the connected Verdonz API' — is a vaguely worded deployment caveat rather than actionable operational context.

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 short sentences, front-loaded with the purpose, with no filler or repetition. It is efficient, though the second sentence is vague enough that it barely earns its place.

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

Completeness2/5

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

For a five-parameter tool with nested objects, no annotations, and no output schema, the description is far too thin: it omits parameter meaning, return behavior, and any concrete detail about the availability dependency. An agent has almost nothing beyond the tool name to construct a correct call.

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

Parameters1/5

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

Five parameters at 0% schema description coverage means the schema contributes nothing, and the description mentions only the implicit 'metric'. Nothing explains what datasetId, timeRange, dimensions, or comparisonPeriod expect, even though two of them are nested objects whose shape an agent must guess.

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?

States a specific verb and resource: 'Investigate why a governed metric changed' tells the agent this is root-cause analysis of a metric, which is more precise than a generic 'investigate'. It does not, however, distinguish itself from siblings like verdonz_ask or verdonz_get_evidence, which sound equally applicable to metric questions.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no reference to any sibling, so an agent cannot tell whether to call this versus verdonz_ask or verdonz_get_evidence. The only contextual sentence concerns API availability, which is a prerequisite note rather than routing guidance.

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

verdonz_list_datasetsC

List governed datasets/data sources available to the identity.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
searchNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden and delivers very little. It hints at identity-scoped access but says nothing about pagination behavior, search semantics, result ordering, or what 'governed' implies for returned data. For a listing tool with zero annotation coverage this is thin.

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?

A single front-loaded sentence with no filler or redundancy. It is well-structured, though arguably too terse given the documentation gaps it leaves behind.

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

Completeness2/5

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

With no annotations, no output schema, and 0% parameter coverage, the description is the only documentation and it covers just the resource being listed. An agent cannot determine result shape, filtering behavior, or result-size limits from this definition.

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

Parameters1/5

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

Schema description coverage is 0% and the description makes no mention of the two parameters (limit, search). The agent gets no explanation of what 'search' filters on or that 'limit' caps results at 100, despite low coverage requiring the description to compensate.

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?

States a specific verb ('List') and resource ('governed datasets/data sources') with an access scope ('available to the identity'). This is a clear discovery operation, though it never names or contrasts with the sibling list/get tools (list_metrics, get_metric), so sibling differentiation is left to inference.

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

Usage Guidelines2/5

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

No statement of when to use this tool versus verdonz_list_metrics, verdonz_get_metric, or the investigate/ask siblings. The purpose implies a discovery step, but no conditions, prerequisites, or exclusions are given.

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

verdonz_list_metricsC

List governed metric definitions the identity can access.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
searchNo
datasetIdNoOptional Verdonz datasource id.

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses that results are access-scoped to the calling identity, which is genuinely useful, but says nothing about pagination, default/max result counts, ordering, or what fields a governed metric definition contains.

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?

A single front-loaded sentence with zero filler. It is efficient, though its brevity is partly a symptom of under-specification rather than disciplined editing.

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

Completeness2/5

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

With no output schema, no annotations, and two of three parameters undocumented, the description is too thin for the agent to call this correctly. It should at minimum cover paging defaults, what search matches, and the shape of a returned metric definition.

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 only 33% — datasetId is documented in the schema while limit and search are bare. The description adds no parameter meaning at all, so it fails to compensate for the coverage gap and leaves the agent guessing at search semantics and paging behavior.

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?

States a specific verb (List) and a specific resource (governed metric definitions) with a scope qualifier (what the identity can access). It is distinguishable from verdonz_get_metric by the plural-list framing, though it never names the sibling to make the distinction explicit.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as verdonz_get_metric for single lookups or verdonz_list_datasets for the datasource catalogue. The 'identity can access' clause hints at permission scoping but does not tell the agent when this tool is the right choice.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.1.0
    • First observedverdonz_ask
    • First observedverdonz_get_evidence
    • First observedverdonz_get_metric
    • First observedverdonz_investigate
    • First observedverdonz_list_datasets
    • First observedverdonz_list_metrics

TDQS

B3/5.0

Scored across 6 tools

Disambiguation4/5

list_metrics/get_metric and list_datasets are clearly distinct, and get_evidence is a well-separated retrieval role. verdonz_ask and verdonz_investigate are the closest pair, but the descriptions (business question vs. root-cause investigation) give enough signal to separate them.

Naming Consistency4/5

All tools share the verdonz_ prefix and use a consistent verb-first style (list_, get_, ask, investigate). Minor deviation: ask and investigate omit the noun object that the other four include, but the pattern remains readable and predictable.

Tool Count5/5

Six tools is well-scoped for a governed semantic-data Q&A surface, with each tool earning its place (two listers, two getters, one ask, one investigate). Nothing feels padded or missing at this granularity.

Completeness4/5

Covers the core read lifecycle: discover datasets and metrics, ask questions, investigate metric changes, and pull evidence/lineage. Minor gaps around deeper lineage traversal or metric comparison exist, but agents can work around them via ask/investigate.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI clients to discover datasets and author dashboards in Dashboard Builder through natural language, while preserving per-user permissions and audit trails via a secure API-key gated gateway.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables authorized AI agents to inspect, query, create, modify, validate, refresh, and manage eligible cloud semantic models in Microsoft Fabric and Power BI through stateless Streamable HTTP.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables an AI application to connect to Power BI Desktop semantic models, discover their tables, columns, measures, and metadata, and validate and execute DAX queries so users can ask analytical questions in natural language and receive explained results.
    -