OpenSCAD MCP Server
Server Quality Checklist
Latest release: v1.0.0
- Disambiguation4/5
Most tools target distinct resources and actions (e.g., render_single vs. render_perspectives vs. compare_renders differ in output style). Some overlap exists between get_model, list_models, and get_project_files, but descriptions clarify different scopes (single file vs. workspace vs. project dependency mapping).
Naming Consistency5/5All tool names follow a consistent verb_noun pattern with lowercase snake_case (e.g., create_model, list_models, render_perspectives, clear_cache). There are no mixed conventions or vague verbs.
Tool Count5/515 tools is well within the ideal range for a domain-specific server. Each tool covers a clear function: CRUD operations, rendering, export, validation, analysis, library discovery, project inspection, and cache management, making the set feel appropriately scoped without bloat.
Completeness5/5The tool set provides comprehensive lifecycle coverage for OpenSCAD models (create, read, update, delete, list) and extends to critical workflows like rendering, exporting, validating, analyzing geometry, comparing versions, and managing project dependencies. No obvious missing operations for the stated purpose.
Average 4.4/5 across 15 of 15 tools scored. Lowest: 3.8/5.
See the Tool Scores section below for per-tool breakdowns.
- 4 of 4 community issues answered or closed in the last 6 months
- 8 commits in the last 12 weeks
- Last stable release on
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI status not available
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description is the only source. It discloses the return type and the effect of include_paths, but does not explain what happens if OpenSCAD is not installed or any potential errors. The read-only nature is implied but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with its purpose. The Args/Returns format is structured and free of redundant information. Every sentence contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and an output schema, the description covers purpose, parameter semantics, and return type. Missing details about error behavior when OpenSCAD is absent, which would be relevant for a verification tool, but overall it is sufficient for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains 'include_paths' as 'Include searched paths in response', adding meaningful semantic meaning beyond the boolean schema. This fully clarifies the parameter's effect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Verify OpenSCAD installation and return version info' with a specific verb and resource. This clearly distinguishes it from sibling tools focused on model/render operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given about when to use this tool or alternatives. It does not mention prerequisites, typical use cases, or when to avoid using it. The usage is only implied by the verb 'verify'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the behavioral transparency burden. It does disclose useful traits: .scad extension auto-appending, default workspace directory, and the return dict shape. However, it does not mention overwrite behavior, directory creation, permission requirements, or error conditions, which are notable gaps for a file-creating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, opening with the core purpose followed by a clean Args section and a one-line Returns section. Every part adds useful information without repetition or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a relatively simple create tool, the description covers the necessary invocation details: parameter formats, default workspace, and return values; an output schema exists and the description summarizes the response. It lacks edge-case details like file collision behavior, but the essential selection and invocation information is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the raw schema: name format and allowed characters, automatic .scad extension handling, content as OpenSCAD source, and workspace default. However, it lists a 'ctx' argument that does not appear in the input schema, which could confuse an agent about the exact supported parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action and resource: 'Create a new OpenSCAD model file.' This specific verb-object pairing, especially the word 'new,' differentiates it from sibling tools like update_model and delete_model.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by saying 'Create a new OpenSCAD model file,' but it does not explicitly state when to prefer this tool over update_model, export_model, or other siblings, nor does it provide any 'when not to use' guidance. Usage is inferred rather than clearly delineated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
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 explains the return format (success status, list of model metadata) and the default path for the workspace, but it does not explicitly state that this is a read-only operation, nor does it mention potential errors or lack of side effects. The read-only nature is implied but not disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured with an Args/Returns format. It front-loads the core purpose in a single sentence and provides parameter and return details without unnecessary fluff. Every sentence contributes to understanding the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with a single optional parameter and an output schema available, the description covers the essential behavior: listing all models, the default directory, and the return structure. It lacks explicit error handling or edge-case behavior, but given the tool's simplicity, the coverage is quite complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides only the parameter name 'workspace' with no description, whereas the description explains its meaning (directory to list models from) and its default (configured temp_dir/models). This adds meaningful context beyond the schema, compensating for the 0% schema coverage. The mention of 'ctx' is extra but clearly flagged as logging context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all OpenSCAD model files in the workspace directory, using a specific verb (list), a clear resource (OpenSCAD model files), and scope (workspace directory). This distinguishes it from siblings like get_model (retrieves a single model) and render_single (renders).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives, such as 'use when you need an overview of available models' or 'not for retrieving model content'. The usage context is implied by the wording 'List all', but no exclusions or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
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 adds useful context like the precondition that the file must exist and the return value (deleted_path), but it does not warn about the irreversible nature of deletion, error behavior if the file is missing, or any permission requirements. The description is not contradictory to any annotations (there are none), but it leaves room for more transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with separate Args and Returns sections, and every sentence provides useful information. It is appropriately sized for a tool with two parameters, with no filler or repetition. The format makes it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool and the presence of an output schema-like description in the Returns section, the description covers the essential aspects: action, precondition, input parameters, and return value. It lacks detailed error handling or edge-case behavior, but for a straightforward delete operation, this is nearly complete. The sibling context does not require additional clarification.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description fully compensates by explaining each parameter: 'name' as the file name, 'workspace' with its default directory, and 'ctx' for logging. This adds meaning beyond the bare schema types, especially clarifying the workspace default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Delete') with a clear resource ('an OpenSCAD model file from the workspace'), making the tool's function unambiguous. It also distinguishes itself from sibling tools like get_model, create_model, and list_models by focusing on deletion, which is a unique action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states a key precondition ('The file must exist') and what the tool returns, but it does not explicitly discuss when to use this tool versus alternatives such as export_model or clear_cache. There is no mention of scenarios where deletion should be avoided, so guidance is implied rather than thorough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It discloses that the operation reads a file (implying no mutation) and details the return dict fields (success status, name, content, path, size_bytes), plus the default workspace behavior. This goes beyond a terse statement, though it doesn't cover error handling or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a well-structured docstring with a one-sentence summary followed by concise Args and Returns sections. Every sentence contributes useful information, with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation, the description covers the essential aspects: what the tool does, parameters, and return payload. An output schema exists (context shows true), and the description even summarizes the return fields. It lacks error-handling details but is otherwise complete for typical usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by explaining both parameters: 'name' as file name, 'workspace' as directory with a default to temp_dir/models. This adds meaning beyond the raw schema types and defaults, making parameter usage clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Read') and resource ('OpenSCAD model file'), and specifies the return of file contents. This distinguishes it from sibling tools like list_models (listing) and render_single (rendering), since it targets raw file content retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied by the description: read a model file to get its contents. However, it does not explicitly mention when to prefer this over alternatives (e.g., list_models for names, analyze_model for analysis) or any exclusions, so guidance is only implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description correctly discloses the side-effect behavior: it exports to a temporary STL file and cleans it up after parsing. It also explains the internal process of parsing vertex data. It does not mention failure modes or dependencies, but the key side-effect concern is addressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with a brief overview, an Args section, and a Returns section. It is appropriately sized for the tool's complexity, and every sentence adds meaningful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no annotations, the description covers the main workflow, inputs, outputs, and side effects. It does not state that at least one of scad_content or scad_file is required, nor does it cover error cases, but the provided detail is otherwise sufficient for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description takes on the full burden, and it does so well. It explains scad_content vs scad_file mutual exclusivity, variables passed via -D flags, and include_paths via OPENSCADPATH. This goes well beyond the raw schema and is essential for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool extracts geometric information from an OpenSCAD model and names concrete outputs: bounding box, dimensions, center point, and triangle count. It is distinct enough from siblings, though it does not explicitly contrast itself with related tools like check_openscad or export_model.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is clear: call this tool when you need geometric measurements from OpenSCAD content or a file. It does not explicitly say when not to use it or name alternative tools, but the description's purpose statement is direct and informative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses parallel rendering, use of the render_scad_to_png helper, and QUALITY_PRESETS, but does not cover edge cases like conflicting parameters or error behavior. This is moderate transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with clear sections and front-loaded purpose. It is somewhat lengthy, but every sentence earns its place given the absence of schema descriptions and the need to explain two usage modes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 8-parameter tool with no annotations or output schema, the description is largely complete: it covers modes, all parameters, defaults, and return type. It misses explicit mutual-exclusion details, but overall it is sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description compensates by documenting all 8 parameters with defaults, valid view presets, image_size format options, and quality presets. This adds substantial meaning beyond the bare input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb+resource: 'Render two versions of a model for visual comparison.' It clearly differentiates from sibling tools like render_single and render_perspectives by focusing on comparison of two versions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly documents two distinct usage modes with exact parameter combinations, giving clear context for when to use each. It does not explicitly name alternatives or exclusion conditions, but the mode breakdown is strong enough for an agent to determine appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
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 the read-only nature, that OpenSCAD is not required, that standard paths and OPENSCADPATH are searched, and that it lists subdirectories with file counts, README presence, and main entry files. This covers key behavioral traits without contradicting anything.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with a one-sentence summary. It uses paragraphs effectively and every sentence adds value. The Returns section is somewhat redundant given the output schema, but it does not bloat excessively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple, read-only tool with a rich output schema. The description provides enough context about what paths are searched, what data is returned, and the read-only nature. It lacks edge-case details like error handling, but for this complexity level it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. The description adds that the only argument, ctx, is used for MCP logging, which is meaningful but minimal. No further parameter semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Discover installed OpenSCAD libraries on the system,' using a specific verb and resource. It clearly distinguishes this from sibling tools like check_openscad, rendering, and model management tools. The scope is further clarified by mentioning standard library paths and OPENSCADPATH.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: to discover libraries on the system, including via OPENSCADPATH. It explicitly notes it is read-only and does not require OpenSCAD to be installed, which signals a low-risk discovery operation. However, it does not explicitly name alternatives or exclusions, so it falls short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so well. It discloses that it removes every .png file from the cache directory, that it does nothing yet still reports success when the cache is disabled or the directory does not exist, and it lists the return fields (success, cleared_files, freed_bytes). This gives the agent a clear picture of side effects and 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.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: the first sentence states the action and result. It includes only necessary details about edge cases and return values, structured with Args/Returns sections that are easy to parse. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This simple tool has no parameters and an output schema, so the description need not explain return structure in depth, yet it already does. It covers the action, edge cases, and the return payload (success, cleared_files, freed_bytes), making it fully complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. The description mentions 'ctx: MCP context for logging' in the Args section, which adds context about logging but is not part of the user-facing schema; no additional parameter semantics are needed since there are no parameters to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb and object: 'Delete all cached render files and report freed space.' It clearly distinguishes this tool from siblings like render_single and export_model, which are about generating or exporting models, while this one is about cache maintenance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives, relying instead on the self-explanatory name. It mentions edge cases (cache disabled or directory missing) but no guidance on when to invoke it (e.g., before a re-render) or when not to (e.g., if cached files are needed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses default behavior (temp directory for output_path, 'stl' default format), how variables map to -D flags, include_paths to OPENSCADPATH, and return fields. It stops short of failure modes or prerequisites, leaving room for improvement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well organized with labeled Args and Returns, one line per parameter. It is front-loaded with the main purpose, and every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all six parameters, clarifies their semantics, and specifies the return contract. For a tool with no schema descriptions and no annotations, this is comprehensive, though it could mention error handling or OpenSCAD prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds critical meaning beyond the bare schema: mutual exclusivity of scad_content and scad_file, allowed output_format values, output_path fallback, and the semantic mapping for variables and include_paths. With 0% schema coverage, this is essential and well executed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's action: 'Export OpenSCAD code or file to STL, 3MF, AMF, OFF, DXF, or SVG.' This specific verb and output format list distinguish it from sibling rendering tools like render_single.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use: whenever OpenSCAD code or a file needs conversion to a supported export format. It does not explicitly exclude use cases or reference alternatives, but the scope is evident from the format list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
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 recursion, parsing of include/use statements, validation against security.allowed_paths, and the structured return format. It does not explicitly state that it is read-only, but 'List' and 'map' imply no mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a one-sentence summary, followed by concise elaboration. The Args/Returns structure is clear and every sentence adds value—recursion, parsing, validation, and return details. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity and the presence of an output schema, the description covers all necessary aspects: purpose, parameter semantics, security context, return structure, and behavioral details. It is sufficiently complete 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.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter (project_dir) with no description (0% coverage). The description fully compensates by explaining it as the root directory of the OpenSCAD project and mentioning security validation. It also documents ctx, which is absent from the schema, adding useful context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List all OpenSCAD files in a project directory and map their dependencies.' This clearly differentiates from sibling tools like render_single or export_model, which focus on rendering or model management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it recursively finds .scad files and parses include/use statements, indicating use cases like project analysis or dependency mapping. However, it does not explicitly mention when not to use it or point to alternatives, so it misses the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses parallel rendering, returns all images at once, default behavior for views, quality presets, and the variable override behavior. It does not explicitly state whether the operation is read-only, but 'render' strongly implies no modification.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a one-line summary, detailed Args section, and Returns section. Every sentence provides value, and the length is justified given the 8 parameters and complex behaviors.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and 8 parameters, the description covers all aspects: purpose, parameters, defaults, behaviors, and return type. It omits error handling, but that is not a critical gap for this rendering tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description thoroughly documents all 8 parameters, including mutual exclusivity of scad_content/scad_file, valid view names, accepted image_size formats, default values, and the behavior of variables and include_paths. This fully compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb and resource: 'Render multiple standard views of an OpenSCAD model in a single call.' It clearly distinguishes from sibling render_single by focusing on multiple predefined perspectives in parallel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states it is 'useful for generating a comprehensive visual overview of a 3D model,' giving clear context for when to use it. It does not explicitly mention render_single or alternatives, but the purpose is implied through 'multiple standard views'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It discloses the return format ('List containing the rendered PNG image and metadata'), the mutual exclusivity behavior, and that user-provided variables override quality preset values. It also details accepted input types for camera and image parameters. It does not, however, mention error behavior, file-system access implications, or any side effects beyond what is directly described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but exceptionally well-organized. It leads with a one-sentence summary, then an Args list with each parameter on its own line, followed by a Returns section. Every entry adds meaningful detail, and there is no redundant or filler content. For a tool with 12 parameters, this length is appropriate and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (12 parameters, no annotations, no output schema), the description is remarkably complete. It covers all parameter semantics, default values, return format, mutual exclusivity, and behavioral nuances like quality override rules. The only minor omission is explicit error-handling behavior, but this does not prevent an agent from using the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully compensate. It does this thoroughly, explaining each parameter's purpose, accepted formats, and defaults. For example, camera_position accepts a list, JSON string, or dict; image_size supports list, string 'widthxheight', or tuple; quality presets are enumerated with their trade-offs. This goes far beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Render a single view from OpenSCAD code or file,' using a specific verb and resource. The phrase 'single view' clearly distinguishes this tool from sibling render_perspectives, which would produce multiple views, and from validation or model tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: whenever a single render of OpenSCAD code or a file is needed. It also explains key usage constraints, such as scad_content and scad_file being mutually exclusive, and parameter defaults. However, it does not explicitly name alternative tools for other use cases (e.g., render_perspectives for multiple views), nor offer exclusions beyond the mutual exclusivity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses prerequisites (file must exist), the action (replacing content with new SCAD source), and return values (success status, path, name). It does not explicitly say "overwrites" or cover permissions/error cases, but for a mutation tool with no annotations, this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with Args/Returns sections and each line provides useful information. It is slightly repetitive ("existing" appears twice in the first two sentences) but overall efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with an output schema, the description covers purpose, usage, parameters, and return values, and references the sibling create_model. It does not discuss edge cases like workspace validation or failure behavior, but the tool is straightforward and the description is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions are completely absent (0% coverage), and the description compensates by explaining each parameter: name (file name), content (SCAD source code), and workspace (directory, with default). The mention of ctx, which is not in the schema, is a minor inconsistency but does not detract from the meaning of the actual params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ("Update") and resource ("existing OpenSCAD model file"), and explicitly distinguishes itself from create_model. The purpose is immediately clear and avoids tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states that the file must already exist and directs users to create_model for new files, providing a clear when-to-use rule and named alternative. This covers the key usage scenario and exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavioral details: it runs OpenSCAD with output to /dev/null, captures and categorizes messages from stderr, and returns a structured dict. This goes well beyond basic schema information and gives the agent a clear expectation of side effects and output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a concise summary followed by a clear Args section and return value description. Every sentence adds value, and the length is appropriate for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the description covers all necessary aspects: purpose, usage, parameter semantics, behavioral nuance, and return format. The presence of an output schema does not diminish the completeness, as the description still explains the return dict and edge cases (e.g., message categorization).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description explicitly explains each parameter (scad_content, scad_file, variables, include_paths) and notes the mutual exclusivity of scad_content and scad_file. This fully compensates for the sparse schema and provides operational guidance beyond mere names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Syntax-check OpenSCAD code without performing a full render.' This specific verb+resource pairing distinguishes it from sibling tools like render_single and render_perspectives, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context by contrasting with full renders ('Much faster than a full render') and stating it only parses/evaluates code. However, it does not explicitly name alternative tools or list exclusion scenarios, so it stops short of full alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
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/quellant/openscad-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server