prosuite-mcp
OfficialThis server acts as an MCP gateway for Dira ProSuite geospatial quality verification, enabling AI assistants to perform automated GIS data quality checks through natural language interaction.
Load and manage QA specs: Load a
.qa.xmlspec file at runtime (load_spec), inspect its contents including specifications, workspace definitions, and datasets (describe_spec).Search and discover conditions: Search the loaded spec using natural language queries in English, German, French, or Italian (
search_spec), or list all available quality conditions filtered by keyword (list_conditions).Inspect conditions: Retrieve detailed documentation for specific quality conditions, including parameter types and whether they expect dataset names or primitive values (
describe_condition).Run quality verifications: Execute a named
QualitySpecificationfrom a loaded XML spec with workspace path substitutions (run_xml_verification), or perform ad-hoc verifications by specifying a workspace, datasets, and conditions directly (run_verification).Preview and test: Preview the XML representation of a condition (
condition_to_xml), see how adding a condition would modify a spec (add_condition_to_spec), and preview the execution results of a proposed condition before committing (preview_condition_run).Spatial and output filtering: Optionally restrict verifications to a bounding box and direct output (Issues.gdb, HTML report) to a server-side directory.
Click on "Install 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., "@prosuite-mcpCheck road connectivity in C:/data/tlm.sde"
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.
prosuite-mcp
MCP server that exposes Dira ProSuite quality verification to AI assistants (Claude, etc.).
Prerequisites
A running ProSuite Quality Verification Server reachable from the host where this server runs.
Related MCP server: QGIS MCP
Configuration
Environment variable | Default | Description |
|
| ProSuite service host |
|
| ProSuite service port |
| (none) | Path to PEM certificate for TLS |
Usage
Windows users: start at docs/windows-setup.md.
CLI coding agents (Claude Code, Copilot CLI, opencode): see docs/cli-clients.md
Any other MCP client (Claude Desktop, other GUI apps, or anything else): see docs/gui-clients.md
No coding agent permitted? An experimental example drives the same tools from any OpenAI-compatible LLM, local or hosted: see docs/local-llm.md
Tools
Every tool is defined in src/prosuite_mcp/tools.py: its docstring is the authoritative description, the same one your MCP client shows the LLM.
Example
Once connected, you talk to the assistant in plain language:
Check road connectivity in
C:/data/tlm.sde.
With a spec loaded, the assistant calls describe_spec to see which specifications and workspaces it defines, then run_xml_verification to run one against your data, and returns a summary of errors per condition. The spec goes to the ProSuite service as-is, so per-condition filters and defaults are applied exactly as your domain experts configured them. search_spec browses the conditions in a spec by keyword.
list_datasets and describe_dataset read the geodatabase itself, so the assistant can pick conditions from the actual geometry type, feature count and field names rather than from a dataset's name. These read the path on the machine running this server, which need not be the one the ProSuite service resolves paths on.
list_conditions and describe_condition are enriched with the ProSuite QA Quick Reference: each test gains the readable description and the test family it belongs to, and searches match that wording rather than only the API docstring. The document is downloaded in the background when the server starts, and a lookup never waits for it, so calls made before it lands, or on a host that cannot reach it, return the same output as before without the enrichment.
Without a spec, the assistant uses list_conditions and describe_condition to find and configure conditions from scratch, then run_verification to run them ad-hoc. Datasets take a filter_expression here too, but only one per dataset per run, so a spec that filters the same feature class differently in two conditions cannot be reproduced this way.
Development
See docs/development.md.
Available Tools
9 toolsadd_condition_to_specA
Preview adding a new QualityCondition to a spec, reusing an existing descriptor.
Builds the condition through the same prosuite factory as run_verification, resolves a matching (never synthesizes one), and returns the full updated spec XML with the condition appended and wired into target_specification_name. Preview only: never writes to a file. Call describe_spec first for valid specification/workspace/dataset names.
Args: target_specification_name: QualitySpecification to wire the condition into. name: Human-readable condition name; must not already exist in the spec. condition_request: {condition: method name from list_conditions, params: dict}. datasets: Feature classes/tables used by condition_request, each with 'name' and an optional 'filter_expression'. workspace_id: Logical workspace id to bind datasets to (e.g. "DATA_OSM"). allow_errors: Whether issues from this condition are tolerated. description: Optional description element. spec_xml: Spec XML text; defaults to reading the active spec (the one load_spec was last called with, otherwise PROSUITE_SPEC_PATH). category: Which category to file the condition under. Only needed when the spec nests QualityConditions under more than one.
Returns 'status': 'ok' with 'spec_xml' holding the updated spec, ready to review and persist yourself, or 'status': 'error'.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| category | No | ||
| datasets | Yes | ||
| spec_xml | No | ||
| description | No | ||
| allow_errors | No | ||
| workspace_id | Yes | ||
| condition_request | Yes | ||
| target_specification_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the transparency burden. It discloses critical behavior: it 'never synthesizes' a descriptor, 'never writes to a file', defaults spec_xml to the active spec or PROSUITE_SPEC_PATH, and returns structured status. It also warns that the name 'must not already exist' and that category is only needed for multi-category specs.
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?
The description is appropriately verbose for 9 parameters and a complex preview operation. It front-loads the core purpose in the first sentence, then organizes details into a clear Args block. No extraneous fluff; every sentence contributes value.
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?
Given the tool's complexity, no annotations, and the existence of an output schema, the description is complete. It explains return values, side-effect-free behavior, prerequisites, and parameter semantics. It even mentions how to persist the result ('ready to review and persist yourself'), fulfilling the contextual needs for safe invocation.
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%, but the Args section compensates entirely by adding semantic meaning to every parameter. For example, condition_request is explained as '{condition: method name from list_conditions, params: dict}', datasets are described as 'Feature classes/tables', and spec_xml's default behavior is fully specified. This exceeds what the schema alone provides.
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 opens with a specific verb and resource: 'Preview adding a new QualityCondition to a spec, reusing an existing descriptor.' It clearly distinguishes itself from siblings by stating it is 'Preview only: never writes to a file' and referencing run_verification for context, making the tool's scope unambiguous.
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 description advises to 'Call describe_spec first for valid specification/workspace/dataset names' and clearly states this is a preview that returns XML for the user to persist. However, it stops short of explicitly naming alternative tools (like preview_condition_run or run_verification) and explaining when to use them instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_conditionA
Describe the parameters of a ProSuite quality condition.
Returns the full docstring and parameter list with types. Dataset parameters expect a dataset name string (must match a name in the datasets list you will pass to run_verification). Primitive parameters take their direct value (number, bool, string).
Parameters marked optional may be left out of run_verification's params: ProSuite applies its own default. Everything else must be supplied.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the tool returns a docstring and parameter list with types, explains parameter types (dataset names must match, primitives take direct values), and notes that optional parameters get defaults. No mention of auth or rate limits, but appropriate for a describing tool. No contradiction.
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?
The description is front-loaded with the purpose and returns overview. It then adds relevant usage details about parameter interpretation for run_verification. While efficient, the extra details could be considered tangential, preventing a perfect 5.
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?
The tool has one input parameter and an output schema. The description covers what the tool returns (docstring, parameter list) and provides crucial context for using those parameters with run_verification. However, it omits an explicit definition of the 'name' parameter, leaving a minor gap in completeness.
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?
The sole input parameter 'name' (string required) is not explained in the description. Despite 0% schema description coverage, the description does not compensate for this parameter. It instead discusses parameters of the condition being described, which are not part of the input schema.
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 clearly states 'Describe the parameters of a ProSuite quality condition' and mentions 'Returns the full docstring and parameter list with types.' This explicitly differentiates from siblings like list_conditions (lists conditions) and describe_spec (describes a spec).
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 description provides clear context for usage: it returns parameter information needed for run_verification, with details on how to interpret dataset vs primitive parameters and optional defaults. However, no explicit when-not-to-use or comparison with alternative tools, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_specA
Describe the loaded QA spec file: available specifications, workspace definitions, and per-specification summary of conditions, workspace IDs, and dataset names.
Call this before run_xml_verification to learn:
Which specification_name values exist in the spec (pass one to run_xml_verification)
Which workspace_id values need to be replaced with real paths
Which datasets each specification expects (useful for sanity-checking the workspace)
Describes whichever spec is active: the one load_spec was last called with, otherwise PROSUITE_SPEC_PATH. Returns 'status': 'ok' or 'error'.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It mentions that it describes the active spec and returns 'ok' or 'error', but does not explicitly state that it is a read-only operation or discuss potential errors beyond status. Adequate but could be more transparent.
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?
Concise description with purpose front-loaded. Four sentences efficiently convey purpose, usage context, and return status without extraneous detail.
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?
Given zero parameters and no output schema, the description sufficiently covers the tool's role within the sibling set, especially its relationship to run_xml_verification. Lacks error details but is otherwise complete for its complexity.
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?
No parameters exist, so baseline 4. The description explains what the tool does without schema reliance, adding value by clarifying the scope of description (specifications, workspaces, datasets).
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 clearly states the tool's purpose: describing the loaded QA spec file, including available specifications, workspace definitions, and per-specification summary. This distinguishes it from siblings like list_conditions (individual conditions) and describe_condition (specific condition).
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?
Explicitly advises calling this before run_xml_verification to learn specification names, workspace IDs, and dataset names. It also clarifies which spec is described (active from load_spec or default path). Lacks explicit when-not-to-use or alternative tools, but the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_conditionsA
List available ProSuite quality conditions.
Returns condition names and their one-line description. Use search to filter by keyword (matched against name and description). Pass a result name to describe_condition to get full parameter details before building a run_verification call.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description effectively communicates the read-only nature of listing conditions and the return format (names and descriptions). It could be slightly more explicit about being non-destructive, but the behavior is clear. No annotations exist, so the description carries the full burden adequately.
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?
Three concise sentences with no wasted words. The purpose is front-loaded, and follow-up actions are efficiently described.
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?
The description is complete given the tool's simplicity (1 optional parameter with default, no required fields, output schema exists). It provides enough context for an AI agent to correctly select and invoke the tool among siblings.
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?
The only parameter 'search' is explained in the description: it filters by keyword matched against name and description. This adds significant meaning beyond the schema name 'Search' alone, compensating for 0% schema description coverage.
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 clearly states the tool lists available ProSuite quality conditions, providing condition names and one-line descriptions. It distinguishes from siblings like describe_condition which provides full parameter details, and run_verification for execution.
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?
Explicitly mentions using the search parameter to filter by keyword, and advises passing a result name to describe_condition for full details before building a run_verification call, guiding proper usage and tool chaining.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_specA
Load a .qa.xml spec file at runtime.
Replaces any previously loaded spec, and takes precedence over PROSUITE_SPEC_PATH, so every subsequent spec tool (search_spec, describe_spec, add_condition_to_spec, run_xml_verification) uses the new file. Use this when the spec path is only known at conversation time (e.g. a file on OneDrive or a network share) instead of pre-configuring PROSUITE_SPEC_PATH.
Args: path: Absolute path to the .qa.xml spec file on the local machine.
Returns 'status': 'ok' with 'conditions_loaded', or 'status': 'error'.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behaviors: replaces any previously loaded spec, takes precedence over PROSUITE_SPEC_PATH, and returns status with conditions_loaded or error. It does not explicitly mention file access permissions or error handling details, but covers the essential behavioral traits.
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?
The description is concise and well-structured: first sentence states purpose, second paragraph explains side effects and precedence, third gives usage guidance, and then a clear bullet for the argument and return value. No redundant information.
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?
Given the tool's simplicity (one param, no output schema, no annotations), the description is complete. It covers the action, side effects, usage context, parameter details, and return value. It also mentions which sibling tools will use the loaded spec, providing full context.
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?
The input schema has 0% description coverage for the single parameter 'path'. The description compensates fully by specifying that the path must be an absolute path to a .qa.xml file on the local machine, adding meaning beyond the schema's type and title.
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 clearly states the tool loads a .qa.xml spec file at runtime, using a specific verb and resource. It distinguishes from sibling tools (which operate on an already-loaded spec) by emphasizing that this tool replaces any previously loaded spec and sets the file for subsequent spec operations.
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 description provides explicit guidance on when to use this tool: when the spec path is only known at conversation time (e.g., a file on OneDrive) instead of pre-configuring PROSUITE_SPEC_PATH. It also explains that subsequent spec tools use the new file, implying when not to use (if the path is already configured).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_condition_runA
Run a single proposed condition ad-hoc and show what it actually flags.
Tier-2 confirmation for spec authoring: add_condition_to_spec only confirms a condition builds and references an existing descriptor. This runs it for real against model_catalog_path and returns the same engine-confirmed summary as run_verification (engine_confirmed, total_errors, sample_features with the actual flagged issues), so a proposed condition can be judged by what it flags before it's merged into a spec. Scope envelope to a small extent to keep this a preview, not a full run.
Args: model_catalog_path: Workspace path on the server, e.g. 'C:/data/mydb.gdb' or a .sde connection file. condition_request: {condition: method name from list_conditions, params: dict}. datasets: Feature classes/tables used by condition_request, each with 'name' and an optional 'filter_expression'. workspace_id: Logical name for the data model (arbitrary, used in generated condition names). output_dir: Optional server-side directory for Issues.gdb and HTML report. Omitted, a local runs/ directory is used only when PROSUITE_HOST is local, since the service resolves the path. envelope: Optional spatial filter {x_min, y_min, x_max, y_max}.
| Name | Required | Description | Default |
|---|---|---|---|
| datasets | Yes | ||
| envelope | No | ||
| output_dir | No | ||
| workspace_id | Yes | ||
| condition_request | Yes | ||
| model_catalog_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that this runs the condition for real, returns engine-confirmed summary like run_verification, and describes output_dir behavior based on local vs server. This adds significant behavioral context beyond the schema.
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?
The description is front-loaded with purpose and guidelines, then uses a bulleted 'Args' section for parameters. While slightly verbose, every sentence adds value; the structure aids readability.
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?
Given no annotations, 6 parameters, and an output schema (not shown), the description comprehensively covers purpose, usage, parameters, and return value (referencing run_verification output). It leaves minimal gaps for the agent to infer.
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%, so the description must compensate. It provides detailed explanations for all 6 parameters, including path examples, the structure of condition_request, envelope format, and output_dir behavior. This far exceeds minimal requirements.
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 clearly states the tool runs a proposed condition ad-hoc and shows what it flags. It distinguishes itself from add_condition_to_spec (which only confirms build/descriptor) and run_verification (which runs full verification), establishing a unique purpose as a preview tool.
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 description explicitly says this is 'Tier-2 confirmation for spec authoring' to be used after add_condition_to_spec, and contrasts with run_verification. It advises to scope envelope to keep it a preview, providing clear when-to-use and limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_verificationA
Run a ProSuite quality verification.
Build an ad-hoc condition-list specification and run it against the given workspace. The ProSuite service (prosuite-qa-microservice) must be reachable at the host/port configured via PROSUITE_HOST / PROSUITE_PORT environment variables (default: localhost:5151).
Args: model_catalog_path: Workspace path on the server, e.g. 'C:/data/mydb.gdb' or a .sde connection file. model_name: Logical name for the data model (arbitrary, used in generated condition names). datasets: Feature classes or tables to make available for conditions. Each entry has a 'name' (feature class name) and an optional 'filter_expression' (SQL WHERE clause). conditions: Conditions to run. Each entry has: - condition: method name from list_conditions (e.g. 'qa_min_length_0') - params: dict mapping parameter names to values. Dataset parameters take a string matching a name in 'datasets'; primitive parameters take their direct value. output_dir: Optional server-side directory for Issues.gdb and HTML report; the service process must have write access. Omitted, a local runs/ directory is used only when PROSUITE_HOST is local, since the path is resolved on the service's machine. envelope: Optional spatial filter {x_min, y_min, x_max, y_max}. Omit for full-extent verification.
Returns a summary with status, total_errors, and per-condition breakdown. Check 'status': 'error' for connection or parameter failures.
| Name | Required | Description | Default |
|---|---|---|---|
| datasets | Yes | ||
| envelope | No | ||
| conditions | Yes | ||
| model_name | Yes | ||
| output_dir | No | ||
| model_catalog_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully covers behavioral traits: it explains the output format including status, total_errors, and per-condition breakdown, error handling via 'status': 'error', and special behavior for output_dir (only defaults to local runs/ when PROSUITE_HOST is local). Also discloses the envelope spatial filter.
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?
The description is well-structured with paragraphs and bullet points, using clear labels like 'Args:' and 'Returns:'. Every sentence provides necessary detail without redundancy. It is concise yet comprehensive for a complex tool.
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?
Given the tool's complexity (6 parameters, nested objects, output schema not shown), the description covers prerequisites, all parameters with special cases, return format, and error handling. It leaves no critical gaps for an AI agent to invoke the tool correctly.
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?
The description adds substantial meaning beyond the input schema, which has 0% coverage. It explains each parameter's purpose, format, and examples: model_catalog_path as server workspace path, datasets with optional filter_expression, conditions with method names and params, output_dir with server-side write access caveat, and envelope as spatial filter.
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 uses a specific verb 'Run' and resource 'ProSuite quality verification', clearly stating its purpose. It differentiates from siblings like list_conditions and preview_condition_run by focusing on executing an ad-hoc condition list against a workspace.
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 description explains the prerequisite environment variables (PROSUITE_HOST/PROSUITE_PORT) and the service reachability requirement. It does not explicitly state when to avoid this tool or suggest alternatives, but the context of building an ad-hoc condition list vs. running pre-defined specs is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_xml_verificationA
Run a ProSuite quality verification directly from the loaded XML spec file.
Unlike run_verification, this tool sends the XML spec to the ProSuite service as-is, without decomposing it into individual conditions and datasets. This preserves per-condition dataset filters, default scalar values, and all other spec details exactly as configured.
Use search_spec (with empty query) to discover available specification_name values and workspace_id keys that need to be replaced.
Args: specification_name: Name of the QualitySpecification element inside the XML file to run (e.g. 'Copy of DATA_OSM_10_Demo'). data_source_replacements: Maps each workspace_id in the XML to the actual workspace path on the ProSuite server. Example: [{"workspace_id": "DATA_OSM", "workspace_path": "C:/data/osm.sde"}] output_dir: Optional server-side directory for Issues.gdb and HTML report. Omitted, a local runs/ directory is used only when PROSUITE_HOST is local, since the service resolves the path. envelope: Optional spatial filter {x_min, y_min, x_max, y_max}.
Returns a summary with status, total_errors, and per-condition breakdown. Runs whichever spec is active: the one load_spec was last called with, otherwise PROSUITE_SPEC_PATH.
| Name | Required | Description | Default |
|---|---|---|---|
| envelope | No | ||
| output_dir | No | ||
| specification_name | Yes | ||
| data_source_replacements | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool runs from the loaded XML spec file, preserves per-condition dataset filters and defaults, and details the behavior of output_dir and spec active selection (last loaded or PROSUITE_SPEC_PATH). No contradictions.
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?
Well-structured with an overview, differentiation, prerequisite guidance, and a clear 'Args' section. Efficient use of language without unnecessary words. Could be slightly more concise but overall effective.
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?
Covers purpose, behavior, usage, parameter meanings, and output summary. Given that an output schema exists (context indicates true), the description appropriately mentions the return format without over-specifying. Sufficient for a tool with complex parameters and nested objects.
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%, but the description explains all four parameters in detail, including examples for data_source_replacements and envelope format. Fully compensates for the missing schema descriptions.
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?
Clearly states 'Run a ProSuite quality verification directly from the loaded XML spec file.' Differentiates from sibling tool run_verification by explaining that this tool sends the XML as-is without decomposing, preserving details like filters and defaults.
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?
Explicitly contrasts with run_verification, telling when to use this tool over the alternative. Provides a prerequisite hint: 'Use search_spec (with empty query) to discover available specification_name values and workspace_id keys.' Lacks explicit when-not-to-use or other sibling exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_specA
Search the loaded QA spec for conditions matching a natural-language query.
Returns up to max_results conditions whose name, description, or category contains the query string (case-insensitive, literal substring match, not semantic). Spec content may be in English, German, French, or Italian -- query in the same language as the spec to find matches.
Each result includes:
name: the full condition name (human-readable rule statement)
category: domain grouping from the spec
allow_errors: False means a hard failure, True means tolerated
condition_request: ready to pass directly into run_verification's conditions list (includes condition method name and pre-filled params)
required_datasets: dataset names and filter expressions to include in run_verification's datasets list
A result carrying 'unsupported': True has neither of those last two: the programmatic path cannot rebuild it (transformer preprocessing, or no factory method). It is listed so browsing sees the whole spec, and it still runs normally under run_xml_verification, which reads the spec as written.
Searches whichever spec is active: the one load_spec was last called with, otherwise PROSUITE_SPEC_PATH. Returns 'status': 'ok' or 'error'.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses key behaviors: case-insensitive literal matching, max_results cutoff, the meaning of allow_errors, the 'unsupported' flag and its implications for run_verification vs run_xml_verification, and the active spec resolution. This goes well beyond a simple summary.
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?
The description is organized into clear sections: purpose, matching behavior, result fields, unsupported note, and active spec context. Each sentence adds information without redundancy; it is appropriately sized for a tool with no output schema.
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?
The description covers output structure (result fields, status), edge cases (unsupported), and environmental dependence (active spec), which is sufficient for an agent to invoke correctly. There is no output schema, so this level of detail is necessary and complete.
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?
Although the schema only provides titles, the description explains query as a natural-language string matched against name, description, or category, and max_results as the cap on returned results. It also clarifies the language requirement, which is not evident from the schema.
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?
Clearly states 'Search the loaded QA spec for conditions matching a natural-language query.' It specifies the resource (QA spec), the action (search), and the output type (conditions). The subsequent details about literal substring matching and language support further distinguish it from sibling tools like list_conditions.
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 description explains the search semantics (literal substring, not semantic) and notes the active spec selection behavior, giving users context for when to invoke it. It does not explicitly name alternatives, but the behavior description implies it is for finding specific conditions, as opposed to listing or describing.
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. Dates show when Glama detected each change.
1 tool update
v0.2.2- Changed
add_condition_to_spec1 field changed- added
Input schema / properties / categoryAdded value: +{ + "default": "", + "title": "Category", + "type": "string" +}
2 tool updates
- Changed
add_condition_to_spec4 fields changed- added
Output schema / additionalPropertiesAdded value: +true - removed
Output schema / propertiesRemoved value: -{ - "result": { - "title": "Result", - "type": "string" - } -} - removed
Output schema / requiredRemoved value: -[ - "result" -] - changed
Output schema / titlePrevious value: -"add_condition_to_specOutput"New value: +"add_condition_to_specDictOutput"
- Removed
condition_to_xml
1 tool update
v0.1.1- Added
add_condition_to_spec
2 tool updates
- Added
condition_to_xml - Added
preview_condition_run
7 tool updates
v0.1.0- First observed
describe_condition - First observed
describe_spec - First observed
list_conditions - First observed
load_spec - First observed
run_verification - First observed
run_xml_verification - First observed
search_spec
TDQS
Most tools have clearly distinct purposes: listing/describing conditions versus describing/searching/loading specs versus running verifications. However, run_verification and run_xml_verification both execute verifications and could be confused if an agent doesn't carefully read the parameter differences, and preview_condition_run partially overlaps with run_verification.
All tool names follow a consistent snake_case verb_noun pattern: list_conditions, describe_condition, describe_spec, search_spec, load_spec, add_condition_to_spec, run_verification, preview_condition_run, run_xml_verification. The only slight outlier is preview_condition_run, but it still fits the pattern well.
With 9 tools, the server is well-scoped for its purpose. Each tool addresses a distinct stage in the QA workflow—discovery, spec management, ad-hoc running, and XML-based running—without unnecessary bulk or gaps that would require extra tools.
The toolset covers the core lifecycle: listing conditions, describing them, loading/describing/searching specs, previewing condition additions, and running verifications (both ad-hoc and XML). The main gaps are the lack of a persistent save/update operation for specs (add_condition_to_spec only previews) and no tool for retrieving past verification results or reports.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Geospatial AI MCP server — satellite imagery, embeddings, weather, GNS governance
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Official Microsoft MCP Server to query Microsoft Entra data using natural language
AI governance MCP server for EU AI Act compliance and jurisdiction verification
Related MCP Servers
- AlicenseAqualityBmaintenanceA Model Context Protocol server that connects Large Language Models to the GeoServer REST API, enabling AI assistants to query and manipulate geospatial data through natural language.988MIT
- AlicenseBqualityAmaintenanceAn MCP server that enables AI assistants to directly control QGIS for tasks like layer management, feature editing, and map rendering. It provides a suite of 50 tools to execute processing algorithms and manage GIS projects through natural language commands.118267GPL 2.0
- AlicenseNot gradedqualityDmaintenanceMCP server for interacting with Google Earth Engine, enabling geospatial analysis such as dataset visualization, statistics computation, and search via AI assistants.14MIT
- AlicenseNot gradedqualityBmaintenanceA Model Context Protocol (MCP) server that exposes GeoServer REST API functionality for natural language interaction through AI assistants like Claude, VS Code Copilot, and other MCP-compatible clients.BSD 2-Clause "Simplified"
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/ProSuite/prosuite-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server