vtkapi-mcp
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., "@vtkapi-mcpValidate VTK: vtkSphereSource()"
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.
VTK API Validation via MCP
Post-generation validation of VTK Python code using Model Context Protocol (MCP).
Overview
This module provides automatic validation of generated VTK code to catch API hallucinations:
✅ Direct API lookups - No vector search overhead, exact class/method verification
✅ Method existence validation - Detects when LLM invents non-existent methods
✅ Import validation - Verifies VTK classes are imported from correct modules
✅ Fast in-memory index - Loads ~2,900 VTK classes at startup
✅ Structured error reporting - Clear error messages with suggestions
Related MCP server: mcp-server-analyzer
Quick Start
1. Install the Package
From PyPI (recommended once published):
pip install vtkapi-mcpFor local development we standardize on uv to manage the virtualenv and extras:
uv venv .venv
source .venv/bin/activate
uv sync --extra dev # runtime + pytest + ruffNote: The 64 MB
data/vtk-python-docs.jsonlfile is required at runtime but is not bundled in the wheel. Place it underdata/(or pass--api-docs /path/to/file) before launching the MCP server.
Prefer automation? ./setup.sh now wraps the same uv workflow and accepts --dev to include the testing toolchain.
2. Test MCP Integration (Optional)
uv run python demo_mcp_integration.pyThis runs a complete demo showing how to use vtkapi-mcp as an MCP server (not as standalone Python library). It demonstrates all 18 MCP tools and error detection.
3. Developer Workflow (uv-native)
Task | Command |
Run unit + integration tests |
|
Run tests with coverage report |
|
Run Ruff lint & format checks |
|
These commands automatically reuse the
.venvcreated viauv venv/uv sync. No manual activation is required.
3. Configure MCP Client
Add to your MCP settings (e.g., Claude Desktop config):
{
"mcpServers": {
"vtk-api": {
"command": "python",
"args": [
"-m",
"vtkapi_mcp",
"--api-docs",
"/absolute/path/to/vtkapi-mcp/data/vtk-python-docs.jsonl"
]
}
}
}4. Use VTK Tools
The MCP server provides 18 tools for VTK API validation and lookup. See MCP Tools below.
Project Structure
Package Organization
vtkapi_mcp/
├── core/ # API indexing and data loading
│ └── api_index.py
├── validation/ # Code validation logic
│ ├── models.py
│ ├── validator.py
│ ├── import_validator.py
│ ├── class_validator.py
│ └── method_validator.py
├── server/ # MCP server implementation
│ ├── mcp_server.py
│ └── tools.py
└── utils/ # Utilities for parsing and search
├── extraction.py
└── search.pySupporting Files
File | Purpose |
| Demo showing proper MCP integration (not standalone) |
| Python package configuration and dependencies |
| This file |
Data
File | Purpose | Size |
| VTK API documentation (~2,900 classes) | ~64 MB |
Architecture
VTKAPIIndex (vtkapi_mcp/core/api_index.py)
Fast in-memory index of all VTK classes and methods:
VTKAPIIndex
├── Classes Dict: {class_name → {module, methods, docs}}
├── Modules Dict: {module_name → [class_names]}
└── Load Time: <1 second for ~2,900 classesKey Methods:
get_class_info(class_name)- Get module and documentationsearch_classes(query)- Search by name or keywordget_module_classes(module)- List classes in moduleclass_exists(class_name)- Check if class exists
VTKCodeValidator (vtkapi_mcp/validation/validator.py)
AST-based validation of generated Python code:
VTKCodeValidator
├── Parse Code: Uses Python's ast module
├── Extract VTK Usage:
│ ├── Import statements
│ ├── Class instantiations
│ └── Method calls
├── Validate Against Index:
│ ├── Check classes exist
│ ├── Check imports correct
│ └── Check methods exist
└── Generate Error ReportValidation Types:
Import Validation - Verifies module paths
Class Validation - Checks class existence
Method Validation - Detects hallucinated methods
MCP Tools Provided
When running as MCP server, provides these 18 tools:
1. vtk_get_class_info
Get complete information about a VTK class.
Input:
{
"class_name": "vtkPolyDataMapper"
}Output:
{
"class_name": "vtkPolyDataMapper",
"module": "vtkmodules.vtkRenderingCore",
"content_preview": "vtkPolyDataMapper - map vtkPolyData to graphics primitives..."
}2. vtk_search_classes
Search for VTK classes by name or keyword.
Input:
{
"query": "reader",
"limit": 5
}Output:
[
{
"class_name": "vtkSTLReader",
"module": "vtkmodules.vtkIOGeometry",
"description": "Read ASCII or binary stereo lithography files."
}
]5. vtk_validate_import
Validate and correct VTK import statements.
Input:
{
"import_statement": "from vtkmodules.vtkCommonDataModel import vtkPolyDataMapper"
}Output:
{
"valid": false,
"message": "Incorrect module. 'vtkPolyDataMapper' is in 'vtkmodules.vtkRenderingCore'",
"suggested": "from vtkmodules.vtkRenderingCore import vtkPolyDataMapper"
}6. vtk_get_method_info
Get full information about a specific method including section context.
Input:
{
"class_name": "vtkPolyDataMapper",
"method_name": "SetInputData"
}Output:
{
"class_name": "vtkPolyDataMapper",
"method_name": "SetInputData",
"content": "SetInputData(vtkDataObject) - Set the input data...",
"section": "Methods defined here"
}7. vtk_get_method_doc
Get just the docstring for a specific method.
Input:
{
"class_name": "vtkPolyDataMapper",
"method_name": "SetInputData"
}Output:
{
"class_name": "vtkPolyDataMapper",
"method_name": "SetInputData",
"docstring": "SetInputData(vtkDataObject) - Set the input data...",
"found": true
}8. vtk_get_class_doc
Get the class documentation string.
Input:
{
"class_name": "vtkPolyDataMapper"
}Output:
{
"class_name": "vtkPolyDataMapper",
"class_doc": "vtkPolyDataMapper - map vtkPolyData to graphics primitives. Superclass: vtkMapper",
"found": true
}9. vtk_get_class_synopsis
Get a brief synopsis/summary of what a class does.
Input:
{
"class_name": "vtkPolyDataMapper"
}Output:
{
"class_name": "vtkPolyDataMapper",
"synopsis": "Maps polygonal data (vtkPolyData) to graphics primitives for rendering.",
"found": true
}10. vtk_get_class_action_phrase
Get the action phrase describing what a class does.
Input:
{
"class_name": "vtkPolyDataMapper"
}Output:
{
"class_name": "vtkPolyDataMapper",
"action_phrase": "polygon mapping",
"found": true
}11. vtk_get_class_role
Get the functional role/category of a class.
Input:
{
"class_name": "vtkPolyDataMapper"
}Output:
{
"class_name": "vtkPolyDataMapper",
"role": "rendering",
"found": true
}12. vtk_get_class_visibility
Get the visibility/exposure level of a class.
Input:
{
"class_name": "vtkPolyDataMapper"
}Output:
{
"class_name": "vtkPolyDataMapper",
"visibility": "likely",
"found": true
}13. vtk_get_module_classes
List all classes in a specific module.
Input:
{
"module": "vtkmodules.vtkRenderingCore"
}Output:
{
"module": "vtkmodules.vtkRenderingCore",
"classes": ["vtkActor", "vtkPolyDataMapper", ...],
"count": 42
}14. vtk_get_class_module
Return the vtkmodules.* import path for a given VTK class.
Input:
{
"class_name": "vtkPolyDataMapper"
}Output:
{
"class_name": "vtkPolyDataMapper",
"module": "vtkmodules.vtkRenderingCore",
"found": true
}15. vtk_get_class_input_datatype
Get the input data type for a VTK class.
Input:
{
"class_name": "vtkPolyDataMapper"
}Output:
{
"class_name": "vtkPolyDataMapper",
"input_datatype": "vtkPolyData",
"found": true
}16. vtk_get_class_output_datatype
Get the output data type for a VTK class.
Input:
{
"class_name": "vtkContourFilter"
}Output:
{
"class_name": "vtkContourFilter",
"output_datatype": "vtkPolyData",
"found": true
}17. vtk_get_class_semantic_methods
Get semantically tagged methods for a VTK class (input setters, output getters, configuration methods).
Input:
{
"class_name": "vtkContourFilter"
}Output:
{
"class_name": "vtkContourFilter",
"semantic_methods": {
"input_setters": ["SetInputData", "SetInputConnection"],
"output_getters": ["GetOutput", "GetOutputPort"],
"configuration": ["SetValue", "SetNumberOfContours"]
},
"found": true
}18. vtk_is_a_class
Check if a given name is a valid VTK class.
Input:
{
"class_name": "vtkPolyDataMapper"
}Output:
{
"class_name": "vtkPolyDataMapper",
"is_vtk_class": true
}Benefits Over RAG Retrieval
Aspect | RAG Retrieval | MCP Validation |
Speed | Vector search + reranking | Direct hash lookup (instant) |
Accuracy | Semantic similarity (can drift) | Exact API match (100%) |
Coverage | Top-K only (~10 results) | All ~2,900 classes available |
Tokens | Consumes prompt tokens | Tool calls (minimal cost) |
Errors | Silent hallucinations | Explicit error messages |
Validation Examples
Example 1: Method Hallucination (CAUGHT ✅)
Generated Code:
stencil = vtkImageStencilToImage()
stencil.SetOutputWholeExtent([0, 10, 0, 10, 0, 10]) # ❌ Doesn't exist!Validation Error:
UNKNOWN_METHOD: Method 'SetOutputWholeExtent' not found on class 'vtkImageStencilToImage'
Suggestion: Did you mean SetOutputOrigin or SetOutputSpacing?Example 2: Wrong Import Module (CAUGHT ✅)
Generated Code:
from vtkmodules.vtkCommonDataModel import vtkPolyDataMapper # ❌ Wrong module!Validation Error:
IMPORT_ERROR: 'vtkPolyDataMapper' is not in module 'vtkmodules.vtkCommonDataModel'
Correct import: from vtkmodules.vtkRenderingCore import vtkPolyDataMapperExample 3: Non-existent Class (CAUGHT ✅)
Generated Code:
converter = vtkImageDataToPolyDataConverter() # ❌ Class doesn't exist!Validation Error:
UNKNOWN_CLASS: Class 'vtkImageDataToPolyDataConverter' not found in VTK
Suggestion: Did you mean vtkImageDataGeometryFilter?Data Source
Input: data/vtk-python-docs.jsonl
Each line is a VTK class documentation in JSON format:
{
"class_name": "vtkPolyDataMapper",
"module_name": "vtkmodules.vtkRenderingCore",
"class_doc": "vtkPolyDataMapper - map vtkPolyData to graphics primitives. Superclass: vtkMapper",
"synopsis": "Maps polygonal data (vtkPolyData) to graphics primitives for rendering.",
"action_phrase": "polygon mapping",
"role": "rendering",
"visibility_score": "likely",
"input_datatype": "vtkPolyData",
"output_datatype": "",
"semantic_methods": { "input_setters": [...], "output_getters": [...] },
"structured_docs": { "sections": { ... } }
}Coverage: ~2,900 VTK classes from VTK Python API
Future Enhancements
Method signature validation - Check parameter types and counts
Deprecation warnings - Flag deprecated VTK methods
Pipeline validation - Verify data flow compatibility
Auto-fix suggestions - Generate corrected code automatically
Performance profiling - Track validation overhead
Cache layer - Cache frequent lookups for speed
License
This is a standalone MCP server for VTK API validation. Extracted from the vtk-rag project.
Status: Production ready MCP server for VTK API validation.
Available Tools
18 toolsvtk_get_class_action_phraseB
Get the action phrase describing what a VTK class does (e.g., 'data reading', 'mesh filtering')
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | VTK class name (e.g., 'vtkPolyDataMapper') |
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 does not disclose any behavioral traits such as error handling, performance, or the source of the action phrase. The description is too minimal for a tool with no metadata.
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 a single, front-loaded sentence that directly states the purpose with an example. No unnecessary words.
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 parameter, no output schema), the description is minimally adequate but could explain what an action phrase is and under what circumstances it should be used.
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 schema description for 'class_name' is already clear. The tool description adds no further semantics beyond the schema. With 100% schema coverage, the baseline score of 3 is appropriate.
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 verb 'Get' and the resource 'action phrase'. It provides an example ('data reading', 'mesh filtering') which helps distinguish from sibling tools like vtk_get_class_synopsis.
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 does not provide any guidance on when to use this tool versus the many sibling tools. No context is given about appropriate scenarios or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtk_get_class_docB
Get the class documentation string for a VTK class
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | VTK class name (e.g., 'vtkPolyDataMapper') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavior. It states the action but does not disclose potential failure modes (e.g., if class not found), return format, or side effects. However, the tool's simplicity limits the need for extensive disclosure.
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 a single, clear sentence that is front-loaded and contains no unnecessary words. It is optimally concise.
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 simple tool with one parameter and no output schema, the description adequately covers the essential purpose. However, it could briefly indicate typical return value length or behavior if the class is missing.
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 schema already provides good coverage (100%) for the single parameter. The description adds 'documentation string' context but does not significantly enhance understanding beyond the schema's parameter description.
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 action (Get) and resource (class documentation string), making the purpose clear. It distinguishes from siblings like vtk_get_class_synopsis, though without explicit differentiation.
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 guidance is provided on when to use this tool versus alternatives such as vtk_get_class_synopsis or vtk_get_class_info. The description lacks any context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtk_get_class_infoB
Get complete information about a VTK class including module path, description, and methods
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | VTK class name (e.g., 'vtkPolyDataMapper') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It only states purpose without disclosing behavioral traits like performance or limitations. Minimal addition over verb.
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?
Single sentence with no redundancy. Front-loaded with key information. Every word serves a purpose.
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?
No output schema provided, yet description only vaguely lists included fields without specifying structure or format. Agent cannot predict return shape reliably.
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 coverage is 100% and already documents the class_name parameter with example. Description adds no extra semantic value beyond 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?
Description clearly states it retrieves complete VTK class info including module path, description, and methods. It distinguishes from sibling tools that return only specific aspects like methods or synopsis.
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 explicit guidance on when to use this tool versus siblings. The description implies it's for comprehensive data, but lacks alternative selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtk_get_class_input_datatypeA
Get the input data type for a VTK class (e.g., 'vtkPolyData', 'vtkImageData')
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | VTK class name (e.g., 'vtkPolyDataMapper') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the basic function without revealing what happens on invalid input, error handling, or whether it returns a string or other type. This lack of transparency is a gap.
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?
Single sentence with a parenthetical example. No wasted words and the core purpose is front-loaded. Highly concise and well-structured.
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 simple query tool with one parameter and no output schema, the description covers the basic purpose adequately but omits details on return format or error behavior. It is minimally complete but could be improved.
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 100% as the only parameter has a clear description. The tool description adds no new meaning to the parameter beyond what the schema already provides, so baseline of 3 is appropriate.
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 'Get' and clearly identifies the resource 'input data type for a VTK class' with illustrative examples. It effectively distinguishes this tool from its sibling, vtk_get_class_output_datatype, by specifying 'input' thus differentiating the two.
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 implies usage when needing the input data type but provides no explicit guidance on when to choose this tool over alternatives. Given multiple siblings, such guidance would be valuable but is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtk_get_class_methodsA
List all methods (with signatures) for a VTK class and optionally verify a specific method
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | VTK class name | |
| method_name | No | Optional method to verify existence |
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 states the tool lists methods with signatures, which is a read operation. However, it omits details like error handling, whether inherited methods are included, or output format, leaving some ambiguity.
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 a single, front-loaded sentence that captures the main purpose and optional behavior. It contains no unnecessary words and effectively communicates the tool's function.
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 functional but incomplete. It does not specify whether methods include inherited, protected, or private ones, nor the exact behavior of the method_name verification (e.g., exact match). Given the simplicity of the tool, more context would improve usability.
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 coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema's parameter descriptions ('VTK class name' and 'Optional method to verify existence'). The description itself does not elaborate further.
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 'List' and clearly identifies the resource 'methods (with signatures) for a VTK class'. It also mentions an optional verification function, which distinguishes it from sibling tools like vtk_get_method_signature or vtk_get_method_info that focus on single methods.
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 implies usage scenarios (listing all methods or verifying one), but lacks explicit guidance on when to choose this tool over alternatives, prerequisites like a valid class name, or constraints such as case sensitivity for method verification.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtk_get_class_moduleA
Return the vtkmodules.* import path for a given VTK class
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | VTK class name (e.g., 'vtkPolyDataMapper') |
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 describes a read-only operation (returning an import path) but does not disclose behavior for invalid class names or error conditions. The description is adequate but lacks details on edge cases.
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 a single sentence that is concise and front-loaded with the key action. However, it could be slightly more structured (e.g., clarifying the result format). Still, it is efficient.
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 parameter, no output schema), the description covers the basic purpose. However, it does not explain what a 'vtkmodules.* import path' looks like or how the result is used, leaving some ambiguity. Adequate but not thorough.
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 coverage is 100%, so the schema already documents the class_name parameter. The description adds 'VTK class' context, but this closely mirrors the schema description ('VTK class name'). Minimal added value beyond 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?
The description clearly states the tool returns the vtkmodules.* import path for a given VTK class. It uses a specific verb 'Return' and resource 'import path', effectively distinguishing it from sibling tools that provide documentation, methods, or other class info.
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 implies the tool is used when the import path for a VTK class is needed, but it does not provide explicit guidance on when to use this tool versus siblings like vtk_get_class_doc or vtk_validate_import. No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtk_get_class_output_datatypeA
Get the output data type for a VTK class (e.g., 'vtkPolyData', 'vtkImageData')
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | VTK class name (e.g., 'vtkContourFilter') |
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 only states what the tool does without disclosing behavior such as error handling on invalid class names, return format, or whether the result is a string or object.
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 a single, concise sentence with immediate front-loading of the purpose, containing no extraneous 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 required parameter, no output schema), the description is adequate but does not fully specify the return type or behavior with invalid inputs, leaving some gaps for an 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 coverage is 100%, so baseline is 3. The description adds an example output but does not provide additional semantic meaning beyond what the schema already offers for the 'class_name' parameter.
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 action 'Get' and the resource 'output data type for a VTK class' with concrete examples like 'vtkPolyData', distinguishing it from sibling tools that retrieve other aspects of a class.
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 implies usage for retrieving output data types but provides no explicit guidance on when to prefer this tool over alternatives like vtk_get_class_input_datatype or vtk_get_class_synopsis, nor does it mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtk_get_class_roleA
Get the pipeline role of a VTK class. Returns one of: input, filter, properties, renderer, scene, infrastructure, output, utility, color
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | VTK class name (e.g., 'vtkPolyDataMapper') |
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 the tool returns one of a specific set of roles, which is transparent for a read-only lookup. It does not cover error behavior or performance, but the core behavior is clear.
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 a single sentence followed by a list of possible values. It is front-loaded and concise, containing no unnecessary words.
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 simple tool with one parameter and no output schema, the description adequately explains the purpose and return values. It could mention what happens if the class is not found, but overall it is sufficient.
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?
Only one parameter exists with schema description 'VTK class name (e.g., 'vtkPolyDataMapper')'. The description does not add additional semantics beyond the schema, and schema coverage is 100%, so a baseline score of 3 is appropriate.
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: 'Get the pipeline role of a VTK class.' It lists the possible return values, making it distinct from sibling tools like vtk_get_class_info or vtk_get_class_synopsis.
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 implies usage when needing the pipeline role but does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtk_get_class_semantic_methodsA
Get non-boilerplate callable methods for a VTK class. Excludes dunder methods, private methods, and VTK infrastructure methods.
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | VTK class name (e.g., 'vtkContourFilter') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It clearly discloses that dunder, private, and infrastructure methods are excluded, which is key behavioral information for a retrieval tool.
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 a single, clear sentence that is front-loaded with the verb and resource. Every word adds value, and it is concise without being under-specified.
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 simple retrieval tool with one parameter and no output schema, the description is complete. It explains the return value (non-boilerplate methods) and exclusions, making it sufficient for an agent to select and invoke 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 schema covers 100% of parameters with a description of class_name. The tool's description does not add additional meaning beyond the schema, so baseline score of 3 is appropriate.
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: getting non-boilerplate callable methods for a VTK class. It specifies what is excluded (dunder, private, infrastructure methods), distinguishing it from siblings like vtk_get_class_methods.
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 implies when to use this tool (when only public, meaningful methods are needed) by specifying exclusions. It does not explicitly mention alternatives like vtk_get_class_methods, but the sibling list provides context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtk_get_class_synopsisA
Get a brief synopsis/summary of what a VTK class does
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | VTK class name (e.g., 'vtkPolyDataMapper') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It states that a synopsis/summary is returned, which is correct, but lacks details on error handling or response format.
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?
Single, front-loaded sentence with no extraneous words; every word contributes to purpose clarity.
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 simple read tool with one parameter and no output schema, the description adequately conveys input and output nature; however, it could optionally clarify that the synopsis is brief relative to full documentation.
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 coverage is 100%, providing a clear parameter description. The tool description adds an example but does not significantly extend meaning beyond the schema, placing it at baseline.
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?
Description clearly states the verb 'Get' and resource 'brief synopsis/summary of a VTK class', distinguishing it from siblings that retrieve other specific details.
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 guidance on when to use this tool versus alternatives like vtk_get_class_doc or vtk_get_class_info; explicit usage instructions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtk_get_class_visibilityA
Get the visibility score of a VTK class (0.0-1.0). Higher scores indicate classes more likely to be used directly.
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | VTK class name (e.g., 'vtkPolyDataMapper') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the output range and interpretation, which goes beyond the input schema. Since annotations are absent, this adequately informs the agent of the return value nature, though no error or edge case behavior is mentioned.
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 a single sentence with no extraneous words. It efficiently conveys purpose, range, and interpretation.
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 simple one-parameter tool with no output schema, the description provides essential context (range and meaning). It lacks details on error handling or response format, but given the complexity, it is largely 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?
Schema description coverage is 100% with a clear example for class_name. The description adds no further parameter meaning; baseline 3 is appropriate as the schema already documents the parameter sufficiently.
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 retrieves a visibility score (0.0-1.0) and interprets higher scores as more likely to be used directly. This specific metric differentiates it from sibling tools that return documentation, methods, or synopsis.
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 explicit when-to-use or when-not-to-use guidance is provided. While the purpose is clear, the description does not mention alternatives or contexts where this metric is appropriate, leaving inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtk_get_method_docA
Get just the docstring for a specific method of a VTK class
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | VTK class name | |
| method_name | Yes | Method name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, error handling, or return value behavior. It only states the functional purpose, which is insufficient for full transparency.
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 a single concise sentence that is front-loaded and contains no wasted words. It is appropriately sized for the simple functionality.
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 only two parameters and a straightforward purpose, the description is largely adequate. However, it does not specify the return type (e.g., string) or error behavior, which would improve 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?
Schema description coverage is 100%, so the parameters are already well-described. The description adds no additional meaning beyond the schema, resulting in a baseline score of 3.
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 that the tool retrieves the docstring for a specific method of a VTK class, using a specific verb and resource. It distinguishes itself from sibling tools like vtk_get_method_info and vtk_get_method_signature by emphasizing 'just the docstring'.
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 implies that the tool should be used when only the docstring is needed, but it does not explicitly contrast with sibling tools or provide when-not-to-use guidance. The usage is implied but not fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtk_get_method_infoB
Get documentation for a specific method of a VTK class
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | VTK class name | |
| method_name | Yes | Method name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states the operation is to get documentation, implying read-only behavior. However, it does not disclose specifics like format, scope, or potential errors.
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 a single concise sentence with no redundant information. It is front-loaded and efficient.
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 output schema and many sibling tools, the description does not explain what the output is (e.g., string, JSON) or how this tool differs from similar ones. It leaves the agent without enough context for correct 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 100%, so both parameters are defined in the schema. The description adds no additional meaning beyond what the schema already 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 clearly states the verb (Get) and resource (documentation for a specific method of a VTK class). It distinguishes from siblings like vtk_get_method_doc and vtk_get_method_signature by being more general, though it does not explicitly differentiate.
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 guidance is provided on when to use this tool versus alternative siblings (e.g., vtk_get_method_doc, vtk_get_method_signature). The description lacks context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtk_get_method_signatureA
Return only the canonical signature for a specific method of a VTK class (minimal payload)
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | VTK class name (e.g., 'vtkSphereSource') | |
| method_name | Yes | Method name whose signature should be returned (e.g., 'GetOutput') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies a lightweight, read-only operation returning a signature, but does not disclose specifics like rate limits, authentication needs, or the exact format of the returned signature.
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 single sentence is efficient and front-loaded, though it lacks explicit organization. It is concise but could add a brief note on return format.
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 simple tool with two parameters and no output schema, the description is adequate. It states the purpose and payload size, but omits details about the signature format, which may be inferred from the tool name.
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 coverage is 100% with descriptions, so baseline is 3. The description adds minimal value beyond the schema, only hinting at the return being canonical and minimal.
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 verb 'Return', the resource 'canonical signature for a specific method of a VTK class', and differentiates from siblings like vtk_get_method_doc and vtk_get_method_info by noting 'minimal payload', making it distinct.
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 no guidance on when to use this tool versus alternatives such as vtk_get_method_info or vtk_get_method_doc. There are no when-to-use or when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtk_get_module_classesC
List all VTK classes in a specific module
| Name | Required | Description | Default |
|---|---|---|---|
| module | Yes | Module name (e.g., 'vtkmodules.vtkRenderingCore') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states 'list all VTK classes', omitting whether the operation is read-only, what the output format is (e.g., list of strings), or any side effects. This is insufficient.
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 a single concise sentence that front-loads the core action. It is efficient and avoids unnecessary words, though it could include more detail without becoming verbose.
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 simple tool with one parameter and no output schema, the description is adequate but lacks mention of return format (e.g., list of class names). It is complete enough for basic understanding but could improve.
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 100%, so the baseline is 3. The description adds context by linking the parameter 'module' to the tool's purpose, but provides no additional syntax or formatting details beyond 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?
The description clearly states the verb 'List' and the resource 'all VTK classes' with scope 'in a specific module', which distinguishes it from siblings like vtk_get_class_module. However, it does not explicitly differentiate from similar tools, leaving some ambiguity.
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 guidance is provided on when to use this tool versus alternatives such as vtk_search_classes or vtk_get_class_module. The description does not mention prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtk_is_a_classA
Check if a given name is a valid VTK class. Returns true if it exists in the VTK API, false otherwise.
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | Name to check (e.g., 'vtkPolyDataMapper') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of transparency. It accurately describes the behavior (check validity, return boolean), but it does not disclose potential side effects, performance characteristics, or any authorization requirements. For a simple lookup, this is adequate but not exceptional.
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 a single sentence that is direct and to the point. It contains no extraneous information and effectively communicates the tool's purpose.
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 simple boolean-check tool with one parameter and no output schema, the description is complete. It provides enough context for an agent to understand what the tool does and how to use it 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 input schema provides a clear description for the only parameter 'class_name' with an example. The tool description adds no additional meaning beyond what the schema already provides. Since schema coverage is 100%, the baseline score of 3 is appropriate.
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 verb ('Check'), the resource ('VTK class name'), and the expected result (boolean true/false). It effectively distinguishes this tool from sibling tools that retrieve various class details, as this one is a simple validation check.
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 does not provide any guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. For a validation tool, it would be helpful to suggest using it before calling other vtk tools to ensure the class name is valid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtk_search_classesC
Search for VTK classes by name or keyword
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search term (e.g., 'reader', 'mapper', 'actor') | |
| limit | No | Maximum number of results (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose any behavioral traits such as read-only, side effects, rate limits, or result properties. With no annotations, the description fails to inform the agent about operational behavior.
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?
Single sentence with 8 words, no redundancy. However, it could include more context without becoming verbose. Slightly under-informative for a search 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 simplicity and sibling context, the description lacks details on result ordering, matching behavior, and how it fits into the workflow of using other VTK tools. Incomplete for optimal agent decision-making.
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 coverage is 100%, so parameters are already documented. Description adds minimal value by noting 'by name or keyword', which aligns with the query parameter. Baseline 3 is appropriate.
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?
Description clearly states 'Search for VTK classes by name or keyword' with verb 'search' and resource 'VTK classes'. It distinguishes from sibling tools which retrieve specific class details.
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 guidance on when to use this tool versus alternatives like vtk_get_class_info or vtk_validate_import. Lacks context about prerequisites or recommended order.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vtk_validate_importC
Validate if a VTK import statement is correct and suggest corrections
| Name | Required | Description | Default |
|---|---|---|---|
| import_statement | Yes | Python import statement to validate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states the tool validates and suggests corrections, but does not disclose if it is read-only, whether it requires network access, or what happens on invalid input. The behavioral traits are insufficiently documented.
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 a single concise sentence of 10 words, front-loading the purpose. It is efficient, though could include additional context without being verbose.
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 no output schema and no annotations, the description should explain return values, error handling, and behavioral details. It only mentions validation and suggestion, leaving significant gaps.
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 coverage is 100% with one parameter described. The description adds no extra meaning beyond the schema's 'Python import statement to validate'. For high coverage, baseline 3 is appropriate.
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 validates VTK import statements and suggests corrections. It uses specific verb 'validate' and resource 'import statement', distinguishing it from sibling tools that retrieve class/method info.
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 guidance is provided on when to use this tool versus alternatives, nor any context about prerequisites or typical use cases. The description lacks any 'when to use' or 'when not to use' information.
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.
18 tool updates
v0.1.0- First observed
vtk_get_class_action_phrase - First observed
vtk_get_class_doc - First observed
vtk_get_class_info - First observed
vtk_get_class_input_datatype - First observed
vtk_get_class_methods - First observed
vtk_get_class_module - First observed
vtk_get_class_output_datatype - First observed
vtk_get_class_role - First observed
vtk_get_class_semantic_methods - First observed
vtk_get_class_synopsis - First observed
vtk_get_class_visibility - First observed
vtk_get_method_doc - First observed
vtk_get_method_info - First observed
vtk_get_method_signature - First observed
vtk_get_module_classes - First observed
vtk_is_a_class - First observed
vtk_search_classes - First observed
vtk_validate_import
TDQS
Each tool has a clearly distinct purpose, querying different aspects of VTK classes (e.g., action phrase, doc, methods, module). Overlaps are minimal and well-defined (e.g., three method-query tools differentiate by payload: doc only, doc+signature, signature only).
All tools follow a consistent snake_case pattern with 'vtk_' prefix, verb (mostly 'get', plus 'is_a', 'search', 'validate'), and specific resource. Naming is predictable and uniform.
With 18 tools, the set is well-scoped for a reference API server that provides detailed class metadata. Each tool serves a clear need without clutter.
The tool surface covers all key aspects of VTK class information: identification, documentation, methods, module path, input/output types, role, visibility, search, import validation, and per-module listing. No obvious gaps for the stated purpose.
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
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server that exposes Pyright language server functionality for Python, providing tools for type checking, code completions, and finding definitions. It enables AI models to perform static analysis and code formatting through the Model Context Protocol.7MIT
- AlicenseAqualityAmaintenanceAn MCP server that performs comprehensive Python code analysis using Ruff, ty, and Vulture for linting, type checking, and dead code detection.810MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that fixes, validates, and generates visual text content for AI coding assistants.MIT
- AlicenseBqualityAmaintenanceAn MCP server that validates generated code against project structure and installed dependencies, catching undefined symbols, wrong API calls, dead code, and type mismatches in real time. It provides tools for project indexing, symbol/API checking, sandboxed execution, file scanning, and code analysis.1MIT
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/patrickoleary/vtkapi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server