Verdonz MCP
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Verdonz MCPwhat changed in revenue last month, and which region drove the decline?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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/mcpQuick start
export VERDONZ_API_KEY="your-key"
export VERDONZ_BASE_URL="https://your-verdonz-api.example"
npx @verdonz/mcpVERDONZ_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-runSee 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 toolsverdonz_askC
Ask a business question through Verdonz governed semantic data.
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | ||
| question | Yes | ||
| datasetId | No | ||
| timeRange | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| metric | No | ||
| resultId | No | ||
| datasetId | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| metricId | No | ||
| datasetId | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| metric | Yes | ||
| datasetId | No | ||
| timeRange | No | ||
| dimensions | No | ||
| comparisonPeriod | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| search | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| search | No | ||
| datasetId | No | Optional Verdonz datasource id. |
TDQS
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.
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.
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.
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.
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.
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.
6 tool updates
v0.1.0- First observed
verdonz_ask - First observed
verdonz_get_evidence - First observed
verdonz_get_metric - First observed
verdonz_investigate - First observed
verdonz_list_datasets - First observed
verdonz_list_metrics
TDQS
Scored across 6 tools
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.
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.
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.
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
Related MCP Connectors
- BasedashOAuthcom.basedash
Governed BI MCP. Ask questions of live company data and list workspace sources via OAuth.
Find governed AI capabilities and verify signed receipts. Read-only, no account.
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables 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.-
- FlicenseNot gradedqualityBmaintenanceEnables 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.-
- FlicenseNot gradedqualityCmaintenanceEnables AI applications to discover and connect to Power BI Desktop semantic models, inspect tables, columns, and measures, and validate or execute DAX queries through MCP.-
- FlicenseNot gradedqualityCmaintenanceEnables 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.-