OpenSCAD Design MCP
This server lets an AI assistant create, edit, validate, preview, export, analyze, and version 3D OpenSCAD models for 3D printing.
Check system status – detect OpenSCAD, verify PNG rendering, and report dependency versions/limits.
Manage projects – create, list, inspect, and delete projects while retaining version history and trashed data.
Read and edit model code – load the current SCAD snapshot and atomically update it with version-conflict protection.
Validate SCAD – compile the model to STL and detect empty or invalid geometry.
Render previews – generate PNG images from standard views (isometric, front, back, left, right, top, bottom) or custom cameras, including multi-view sets.
Export models – output STL, 3MF, OFF, AMF, DXF, or SVG files.
Inspect meshes – analyze the mesh of current exports or temporary STLs for quality and structure.
Compare dimensions – verify X/Y/Z sizes against expected values with absolute or percentage tolerances.
Check printability – test watertightness and build-volume fit; wall thickness/supports/clearance are noted as unknown.
Finalize a model – run validation, rendering, export, and mesh inspection in one workflow, only succeeding when all required gates pass.
Manage versions – list immutable snapshots with timestamps, summaries, and SHA-256 checksums; restore historical snapshots as new versions.
Organize outputs – produce structured previews, exports, reports, and version folders for easy review and slicer use.
Provides tools for creating, updating, rendering, and validating OpenSCAD 3D models, including multi-view previews, mesh inspection, version snapshots, and export to 3D and 2D formats.
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., "@OpenSCAD Design MCPDesign a 3D printable enclosure for an Arduino Uno and verify it's watertight."
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.
OpenSCAD Design MCP
Nhờ AI tạo mô hình 3D, xem trước và xuất tệp để chuẩn bị in.
Hướng dẫn cho Windows 10/11 · Không cần biết lập trình để bắt đầu sử dụng
Bạn mô tả vật muốn tạo bằng lời, chẳng hạn “tạo một hộp không nắp, dài 60 mm, rộng 40 mm, cao 25 mm”. Ứng dụng AI dùng OpenSCAD Design MCP để dựng mô hình, tạo ảnh xem trước và kiểm tra kích thước. Bạn xem ảnh, yêu cầu sửa rồi lấy tệp để mở trong phần mềm in 3D.
Đây là công cụ bổ sung cho ứng dụng AI, không có cửa sổ trò chuyện riêng. MCP là cách để ứng dụng AI gọi các công cụ trên máy của bạn. Bạn chỉ cần kết nối một lần theo hướng dẫn dưới đây.
Bắt đầu từ đâu?
Nếu gặp lỗi, xem cách xử lý. Nếu đã cài dự án ở D:\Code\openscad-design-mcp, mở PowerShell, chạy cd D:\Code\openscad-design-mcp rồi bắt đầu từ bước chạy thử.
Related MCP server: ai-cad-workbench
1. Cài đặt lần đầu
Cài ba phần mềm sau bằng bộ cài dành cho Windows:
Phần mềm | Dùng để làm gì? | Lưu ý |
Chạy công cụ này | Phiên bản 3.11 trở lên; nếu bộ cài có Add Python to PATH, hãy chọn | |
Dựng mô hình và tạo ảnh | Có thể dùng vị trí cài mặc định | |
Tải dự án từ GitHub | Có thể giữ các lựa chọn mặc định của bộ cài |
Bạn cũng cần một ứng dụng AI hỗ trợ MCP, ví dụ Antigravity, Codex, OpenCode hoặc Claude Desktop. Tài khoản và chi phí sử dụng AI tùy ứng dụng; dự án này không cung cấp tài khoản AI.
Nhấn phím Windows, tìm PowerShell và mở nó. Nếu vừa cài phần mềm, đóng cửa sổ PowerShell cũ rồi mở cửa sổ mới.
Cách dùng các khung lệnh: sao chép phần bên trong khung, dán vào PowerShell, nhấn Enter và chờ chạy xong. Không sao chép dấu ba gạch ngược. Khi xuất hiện lại dòng bắt đầu bằng PS ...>, bạn có thể chạy bước tiếp theo. Nếu có lỗi, xử lý lỗi trước khi tiếp tục.
Kiểm tra Python và Git:
python --version
git --versionTải dự án vào thư mục người dùng Windows:
cd $env:USERPROFILE
git clone https://github.com/tomyrese/openscad-design-mcp.git
cd openscad-design-mcpNếu Git báo thư mục đã tồn tại, hãy mở bản đã tải trước đó; không cần xóa thư mục để cài lại.
Tạo môi trường riêng và cài công cụ:
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ..venv là thư mục chứa Python và thư viện riêng cho dự án. Các lệnh dưới đây dùng trực tiếp Python trong thư mục này, nên bạn không cần chạy lệnh “activate”. Lần cài đầu cần Internet để tải thư viện.
2. Chạy thử trước khi kết nối AI
Trong PowerShell đang mở tại thư mục dự án, chạy:
.\.venv\Scripts\python.exe examples\cube_workflow.pyChương trình tự tạo một khối 20 × 20 × 10 mm, tạo ảnh xem trước, xuất STL và chạy kiểm tra. Hãy chờ đến khi lệnh kết thúc. Kết quả thành công có trường "success": true; nhiều dòng dữ liệu trong cửa sổ là bình thường.
Mở thư mục kết quả:
explorer .\workspace\projectsMở thư mục dự án vừa tạo, rồi mở thư mục previews để xem ảnh PNG. Mỗi lần chạy mẫu sẽ tạo một dự án mới. Nếu bước này lỗi, xem xử lý sự cố trước khi cấu hình AI.
3. Kết nối với ứng dụng AI
Đầu tiên, tạo tệp cấu hình mẫu có đường dẫn đúng trên máy bạn:
.\.venv\Scripts\python.exe examples\client_configs.py
explorer .\workspace\client-configsLệnh này chỉ tạo mẫu, chưa thay đổi thiết lập của ứng dụng AI. Mở mẫu bằng Notepad rồi làm theo hướng dẫn tương ứng:
Bạn đang dùng | Mẫu cần mở | Hướng dẫn |
Antigravity IDE |
| |
Antigravity CLI |
| |
Codex app hoặc CLI |
| |
OpenCode |
| |
Claude Desktop |
|
Nếu ứng dụng đã có cấu hình, chỉ thêm mục openscad-design; đừng thay toàn bộ tệp và làm mất thiết lập cũ. Nếu đổi vị trí thư mục dự án hoặc cài lại Python/OpenSCAD, hãy tạo lại mẫu và cập nhật trong ứng dụng.
Khởi động lại ứng dụng AI, mở cuộc trò chuyện mới và gửi:
Dùng công cụ openscad-design gọi get_system_status. Cho tôi biết có tìm thấy OpenSCAD và có tạo được ảnh PNG hay không. Hãy gọi công cụ thật, không chỉ hướng dẫn tôi chạy lệnh.
Ứng dụng AI sẽ tự khởi chạy MCP khi cần. Bạn không cần giữ PowerShell chạy máy chủ mỗi lần sử dụng.
4. Tạo mô hình đầu tiên
Thử gửi yêu cầu này trong ứng dụng AI đã kết nối:
Tạo một hộp chữ nhật không nắp, kích thước bên ngoài 60 × 40 × 25 mm, thành và đáy dày 2 mm. Dùng openscad-design, tạo ảnh từ 6 góc để tôi xem. Kiểm tra kích thước bên ngoài và độ kín của mô hình trước khi xuất STL. Cho tôi đường dẫn ảnh, tệp STL và kết quả kiểm tra.
Xem ảnh rồi yêu cầu chỉnh sửa, ví dụ:
Giữ chiều dài và chiều rộng, tăng chiều cao lên 30 mm. Lưu thành phiên bản mới, tạo lại ảnh và kiểm tra lại kích thước.
Để kết quả sát nhu cầu, nêu rõ đơn vị, kích thước bên ngoài hay bên trong, độ dày, lỗ bắt vít và những phần cần lắp với nhau. Nếu chưa biết kích thước, hãy yêu cầu AI hỏi bạn trước khi thiết kế.
Với khung drone, hãy phân biệt đường kính động cơ với đường kính cánh quạt, và khoảng cách chéo giữa tâm động cơ với kích thước bao ngoài. Những con số này không thể dùng thay cho nhau.
5. Ảnh và tệp nằm ở đâu?
Mặc định, các mẫu cấu hình lưu dữ liệu tại workspace bên trong thư mục dự án. Mỗi thiết kế có thư mục riêng trong workspace\projects.
Thư mục hoặc tệp | Nội dung | Cách sử dụng |
| Ảnh PNG của mô hình | Nhấp đúp để xem |
| Tệp mô hình đã xuất, như STL hoặc 3MF | Mở bằng phần mềm chuẩn bị in của bạn |
| Kết quả kiểm tra dạng JSON | Có thể yêu cầu AI giải thích bằng lời |
| Các phiên bản đã lưu | Yêu cầu AI khôi phục một phiên bản cũ |
Bạn có thể hỏi AI: “Cho tôi đường dẫn đầy đủ của ảnh và STL mới nhất”. Sao lưu cả thư mục workspace nếu muốn giữ thiết kế và lịch sử. Khi xóa dự án bằng công cụ, dữ liệu được chuyển sang workspace\trash.
STL/3MF chưa phải lệnh chạy máy in. Bạn cần mở tệp trong phần mềm slicer của máy in, chọn vật liệu và thông số in, xem trước các lớp rồi mới gửi sang máy in.
Khi gặp lỗi
Hiện tượng | Cách xử lý |
Không nhận lệnh | Kiểm tra đã cài phần mềm, mở PowerShell mới rồi thử lại |
Không tìm thấy | Mở đúng thư mục dự án; nếu chưa có |
| Chạy lại |
| Cài OpenSCAD hoặc chỉ rõ đường dẫn như ví dụ bên dưới |
Chạy máy chủ nhưng không thấy cửa sổ nào | Bình thường: MCP chờ ứng dụng AI gửi yêu cầu; nhấn Ctrl+C để dừng nếu đã mở thủ công |
AI không thấy công cụ | Kiểm tra đúng tệp cấu hình của ứng dụng, lưu tệp, khởi động lại và thử |
Báo lỗi JSON hoặc TOML | Dùng mẫu được tạo sẵn; kiểm tra dấu phẩy, ngoặc và mục bị trùng khi ghép vào cấu hình cũ |
Xuất được STL nhưng ảnh PNG lỗi | Gọi |
| Yêu cầu AI đọc lại dự án và cập nhật dựa trên phiên bản hiện tại |
| Thử mô hình đơn giản trước; giảm độ chi tiết và số góc ảnh, rồi xem tài liệu kỹ thuật |
Nếu OpenSCAD ở vị trí khác, thay đường dẫn trong lệnh sau bằng vị trí openscad.exe thật trên máy:
$env:OPENSCAD_PATH = 'C:\Program Files\OpenSCAD\openscad.exe'
.\.venv\Scripts\python.exe examples\cube_workflow.py
.\.venv\Scripts\python.exe examples\client_configs.pyBiến trên có hiệu lực trong cửa sổ PowerShell hiện tại. Mẫu cấu hình mới sẽ ghi lại đường dẫn để ứng dụng AI dùng được sau này; nhớ cập nhật mẫu đó vào thiết lập ứng dụng.
Hiểu đúng kết quả kiểm tra
“Hoàn thiện” nghĩa là mô hình đã vượt qua các bước kiểm tra được yêu cầu, không bảo đảm mọi máy in đều in được. Kiểm tra hiện tại không chứng nhận đầy đủ độ dày thành, vùng cần chống đỡ, độ bền hay dung sai lắp ghép. Hãy xem ảnh, kiểm tra kích thước và xem trước trong slicer trước khi in.
OpenSCAD chạy trên máy bạn. Công cụ có giới hạn đường dẫn và chặn một số thao tác đọc tệp trong mã mô hình, nhưng không phải môi trường cách ly ở cấp hệ điều hành: chỉ chạy mã từ nguồn bạn tin cậy. Ứng dụng AI có thể gửi nội dung hoặc kết quả công cụ đến nhà cung cấp AI tùy thiết lập của ứng dụng.
Tìm hiểu thêm
Available Tools
17 toolscheck_printabilityCheck PrintabilityA
Check mesh and build extents; wall thickness, supports and clearance stay unknown.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| build_volume | No | ||
| require_watertight | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| tool | Yes | |
| errors | No | |
| success | No | |
| warnings | No | |
| artifacts | No | |
| project_id | No | |
| duration_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. 'Check' implies a read-only operation, and the explicit caveat about wall thickness, supports, and clearance honestly discloses what the tool will not report. It does not overstate capabilities, though it could be more explicit about side effects or operational constraints.
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 compact sentence with no filler. It front-loads the core action and resource, then adds an important limitation in the second clause. Every word contributes meaningful 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?
The output schema exists, so return-value details are not required. Still, with no annotations and minimal description, the definition is only minimally viable: it gives the core purpose and a key limitation, but it lacks guidance about when to use this tool instead of related inspection or validation tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no parameter-level guidance. While parameter names like project_id, build_volume, and require_watertight are somewhat self-explanatory, the description does not clarify how they relate to 'check mesh and build extents' or how require_watertight affects the check.
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' and the resources 'mesh and build extents', and it further clarifies scope by listing what remains unknown. It is specific enough to distinguish from siblings like inspect_mesh, though it does not explicitly name an alternative.
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 limitation statement 'wall thickness, supports and clearance stay unknown' implies this is a basic printability check and suggests other tools would be needed for those aspects. However, it does not explicitly state when to use this tool versus alternatives like inspect_mesh or validate_scad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_dimensionsCompare DimensionsB
Compare X/Y/Z in project units; null skips an axis, tolerances use the larger bound.
| Name | Required | Description | Default |
|---|---|---|---|
| tolerance | No | ||
| project_id | Yes | ||
| percent_tolerance | No | ||
| expected_dimensions | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| tool | Yes | |
| errors | No | |
| success | No | |
| warnings | No | |
| artifacts | No | |
| project_id | No | |
| duration_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose useful behavior: null values skip an axis and tolerances use the larger bound. However, it does not state whether this is read-only, whether it compares against actual project data, what happens on mismatch, or any authorization requirements.
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 with no filler. Every clause adds meaningful information: comparison target, units, null handling, and tolerance behavior.
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?
Despite having an output schema and nested input structure, the description omits key context: the object of comparison, how to determine pass/fail, and how the two tolerance modes interact. With no annotations and zero parameter descriptions, this is not enough for a reliable call site.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions null axis behavior and the tolerance rule, which helps, but it never explains project_id, the relationship between tolerance and percent_tolerance, or what expected_dimensions represents beyond the schema. The parameter semantics are therefore only minimally clarified.
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 ('Compare') and resource ('X/Y/Z in project units'), and the tolerance/null details make the intended operation fairly clear. However, it never states what the dimensions are compared against (e.g., actual model dimensions), so the core comparison target is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, and no mention of related operations like check_printability or validate_scad. The agent must infer usage from the name and context rather than from explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectCreate ProjectA
Create and validate version 1; invalid geometry remains saved and editable.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| units | No | mm | |
| description | Yes | ||
| requirements | Yes | ||
| initial_scad_code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| tool | Yes | |
| errors | No | |
| success | No | |
| warnings | No | |
| artifacts | No | |
| project_id | No | |
| duration_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It goes beyond 'create' by disclosing that validation happens during creation and that invalid geometry is still saved and editable, which is a non-obvious side effect.
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?
One tight sentence with the key caveat in front; no filler. It is concise, though its brevity leaves parameter semantics to the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The create flow and validation behavior are covered, and an output schema exists, so return details are not required. However, with no parameter descriptions and no guidance on how this validation differs from validate_scad, a fully autonomous agent would still have to guess at some inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%; the description adds almost no parameter-level meaning. 'Invalid geometry' hints at initial_scad_code, but units, requirements, name, and description semantics are left entirely to inference from parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Create and validate version 1') on a clear resource via the title, and the validation caveat distinguishes it from update/finalize/validate-only tools. No ambiguity about what operation this performs.
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 use when creating a new project and its first version ('Create and validate version 1'), but it does not explicitly say when not to use it or point to alternatives such as update_model or validate_scad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_projectDelete ProjectA
Move a project to trash only when the confirmation ID matches exactly.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| confirm_project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| tool | Yes | |
| errors | No | |
| success | No | |
| warnings | No | |
| artifacts | No | |
| project_id | No | |
| duration_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral transparency burden. It usefully discloses that deletion is a move to trash rather than a permanent erase, and that an exact confirmation match is required. It does not cover auth or cascading effects, but the core behavior is clear and not contradicted by any annotation.
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 filler. The action and resource appear first, followed by the safety condition, making it easy to parse and directly useful.
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 required string parameters and an output schema, the description is nearly sufficient. The main gaps are the ambiguous confirmation parameter semantics and the absence of any usage or permission context, which matter for an agent deciding whether it can safely invoke this deletion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning by explaining that a confirmation ID must match exactly, which gives context to confirm_project_id. However, it never explicitly states that confirm_project_id must equal project_id or explains where the confirmation ID comes from, leaving some ambiguity.
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 states a specific action ('move to trash') on a specific resource ('a project') and adds a critical condition (confirmation ID matches exactly). This clearly distinguishes the tool from siblings like create_project, get_project, and restore_version.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'only when the confirmation ID matches exactly' gives a condition for safe invocation, implying the tool should not be used without that confirmation. However, it does not explicitly describe when to prefer this tool over alternatives, nor does it mention exclusion cases or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_modelExport ModelB
Export STL, 3MF, OFF, AMF, DXF or SVG with fixed CLI arguments.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| output_format | No | stl |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| tool | Yes | |
| errors | No | |
| success | No | |
| warnings | No | |
| artifacts | No | |
| project_id | No | |
| duration_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only adds the vague phrase 'fixed CLI arguments' and does not explain side effects, output destination, permissions, or whether the export creates files or returns data.
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 with no wasted words. The phrase 'fixed CLI arguments' is somewhat ambiguous, but the overall structure is appropriately 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 tool with only two parameters and an output schema, a long description is not necessary. Still, the description omits project_id semantics and any indication of what the export operation produces or where the output goes, leaving the agent to infer important context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate. It does list the output formats, which mirrors the output_format enum, but it does not clarify the meaning of project_id or explain how 'fixed CLI arguments' affects parameter behavior. The added value over the schema is 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 names a specific action (Export) and resource (model), and enumerates the supported output formats (STL, 3MF, OFF, AMF, DXF, SVG). It is clear, but it does not explicitly differentiate this from sibling tools such as read_model or render_preview.
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 should be used when a model needs to be exported in one of the listed formats. However, it provides no explicit when-to-use or when-not-to-use guidance and does not mention any alternative sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
finalize_modelFinalize ModelB
Validate, render, export and inspect one revision; finalize only if all gates pass.
| Name | Required | Description | Default |
|---|---|---|---|
| tolerance | No | ||
| project_id | Yes | ||
| build_volume | No | ||
| render_views | No | ||
| output_format | No | stl | |
| require_watertight | No | ||
| expected_dimensions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| tool | Yes | |
| errors | No | |
| success | No | |
| warnings | No | |
| artifacts | No | |
| project_id | No | |
| duration_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that finalization is conditional and that the tool performs multiple operations, but it does not state whether finalization is irreversible, locks the revision, requires special permissions, or what happens when any gate fails.
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?
One tightly packed sentence with a front-loaded verb list and a compact conditional clause. Every word contributes either to the composite scope or the gating condition, with no filler or repetition.
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 7-parameter composite tool with no annotations, the description is too thin. It omits gate definitions, finalization semantics, parameter effects, and failure behavior. An output schema exists, which helps with return values, but it does not compensate for the missing behavioral and parameter context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage and the tool description names no parameters. The verbs hint at possible mappings (render to render_views, export to output_format, validate to require_watertight/expected_dimensions), but the description gives no concrete meaning, constraints, or defaults for any of the 7 parameters.
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 uses specific action verbs ('Validate, render, export and inspect') and a conditional 'finalize only if all gates pass,' making the composite purpose reasonably clear. It also distinguishes itself from siblings like render_preview or export_model by bundling multiple gates into one finalization action, though it never defines what 'finalize' means in state terms.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'finalize only if all gates pass' implies this is the final step after validation, rendering, export, and inspection succeed. However, it never explicitly names alternatives or says when not to use this tool instead of calling validate_scad, render_preview, or export_model individually, so usage guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectGet ProjectA
Read metadata, current code, exports, and the latest finalization report.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| tool | Yes | |
| errors | No | |
| success | No | |
| warnings | No | |
| artifacts | No | |
| project_id | No | |
| duration_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden, and 'Read' explicitly signals a non-mutating operation. It also names the exact data categories accessed, giving the agent a concrete scope of what the tool does; it does not discuss auth or error behavior, but the read-only intent 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?
A single, front-loaded sentence that omits filler; every element identifies an action or a returned category. It is short but not 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 one-parameter read with an output schema, the description names the major returned categories and the read-only nature, which is adequate at a basic level. It lacks guidance on how to obtain a project_id or when to prefer this over read_model/export_model, leaving moderate ambiguity in a sibling-heavy context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, but it never mentions project_id or how the parameter maps to the returned project. The parameter name is self-explanatory and the tool name implies it, but no semantic detail is added beyond the raw 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 begins with 'Read', a specific action, and names the project-level resources it returns: metadata, current code, exports, and the latest finalization report. This distinguishes get_project from siblings like list_projects (enumeration), read_model (single model), and get_system_status (system health).
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 given about when to use get_project instead of related tools such as read_model or export_model, and no exclusions or prerequisites are stated. The description only defines what the tool reads, leaving selection among project/model-level siblings to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_statusGet System StatusA
Detect OpenSCAD, probe real PNG rendering, and report dependency versions and limits.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| tool | Yes | |
| errors | No | |
| success | No | |
| warnings | No | |
| artifacts | No | |
| project_id | No | |
| duration_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it discloses non-obvious behavior: it does not just read version metadata; it actually probes real PNG rendering. It also mentions reporting versions and limits. It is a read-only diagnostic in spirit, though it does not explicitly state that it has no side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one tight sentence with three parallel clauses that are front-loaded with the most important actions. Every part adds distinct information and no filler is present.
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 parameterless status probe with an output schema, the description is complete: it states what is checked, that a real render is exercised, and what is reported. The output schema can handle return details, so nothing critical 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 tool has zero parameters, so the description does not need to document parameter meaning. The baseline of 4 applies.
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 names a specific resource (system/dependency environment) and concrete actions: detect OpenSCAD, probe real PNG rendering, and report versions/limits. None of the sibling tools cover system-level status, so it is clearly distinguishable from project/model operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended context is implied: call this to verify the OpenSCAD/rendering environment before relying on it. However, there is no explicit when-to-use or when-not-to-use guidance, nor any naming of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_meshInspect MeshB
Inspect a current verified STL/3MF export or create a temporary STL automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| tool | Yes | |
| errors | No | |
| success | No | |
| warnings | No | |
| artifacts | No | |
| project_id | No | |
| duration_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose a key behavior: it inspects an existing verified export or automatically creates a temporary STL. However, it does not clarify side effects, error cases, or whether the temporary STL is persisted or only used in-memory.
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 with no filler or redundant information. It is concise and readable, though it omits some useful details that would have made it more complete.
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 single-parameter tool with an output schema, the description covers the core action and provides a behavioral fallback. But it lacks alternatives/usage context and leaves ambiguity around what 'inspect' returns and what creating a temporary STL implies for the project state.
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 has 0% description coverage and the description does not mention project_id at all. While the parameter name is reasonably self-explanatory, the description adds no meaning beyond the schema, failing to compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('inspect') and resource ('mesh'), and adds meaningful context about inspecting a verified STL/3MF export or creating a temporary STL. It does not explicitly distinguish itself from sibling tools like read_model or check_printability, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives, nor any stated conditions or exclusions. The description implies it is used for mesh inspection but does not explain when an agent should choose it over read_model, export_model, or render_preview.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsList ProjectsA
List projects with UTC timestamps and latest status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| tool | Yes | |
| errors | No | |
| success | No | |
| warnings | No | |
| artifacts | No | |
| project_id | No | |
| duration_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It transparently indicates that results include UTC timestamps and latest status, and 'List' implies a read-only operation, but it does not mention ordering, pagination, whether deleted or archived projects are included, or any other operational constraints.
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 states the action, resource, and relevant output attributes. There is no filler or redundant phrasing; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list operation with an output schema available, the description covers the essential behavior and output characteristics. The main missing piece is guidance distinguishing it from related tools, but the low complexity and self-explanatory name keep this from being a major gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so there are no parameters to explain. The description appropriately avoids inventing parameter details, and the zero-parameter case gets the baseline score of 4.
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 ('List') and resource ('projects'), and adds the key output fields (UTC timestamps, latest status). It does not explicitly differentiate it from siblings like get_project or list_versions, but the plural resource and list action make the core purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as get_project, list_versions, or get_system_status. There is no mention of filters, prerequisites, or intended use cases, so the agent must infer usage purely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_versionsList VersionsB
List immutable versions, UTC timestamps, summaries and SHA-256 checksums.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| tool | Yes | |
| errors | No | |
| success | No | |
| warnings | No | |
| artifacts | No | |
| project_id | No | |
| duration_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that the operation is read-only ('List') and that versions are immutable, and it enumerates return fields. However, it doesn't address practical behaviors like ordering, pagination, errors, or handling of unknown project_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the action and resource, and every remaining phrase adds useful detail (immutable, UTC, summaries, SHA-256). No filler or redundancy.
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 low complexity (one required parameter) and that an output schema exists, the description is largely adequate: it names the resource and output fields. It loses a point because the parameter relationship is left implicit and there is no usage guidance, but nothing critically blocks a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain project_id. Although 'project_id' is fairly self-explanatory and required, the description never connects it to the version listing or states that the versions are scoped to that project.
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 opens with a specific verb ('List') and resource ('versions'), and adds precisely what kind of data versions contain (immutable, UTC timestamps, summaries, SHA-256 checksums). This clearly distinguishes it from sibling tools like list_projects or restore_version, though it doesn't explicitly name them.
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 choose this tool over alternatives like restore_version or list_projects. There is no mention of prerequisites, ordering/pagination, or what a caller should do before invoking it. The usage context is only implied by the word 'list'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_modelRead ModelB
Read the checksum-verified current SCAD snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| tool | Yes | |
| errors | No | |
| success | No | |
| warnings | No | |
| artifacts | No | |
| project_id | No | |
| duration_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral transparency burden. It does add useful traits: the operation reads only ('Read'), operates on the 'current' snapshot, and is 'checksum-verified,' implying integrity checking. However, it does not disclose failure behavior, access requirements, or effects of invalid project_id, so transparency remains adequate but incomplete.
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 with no filler. 'Checksum-verified' and 'current' are meaningful modifiers, and every word contributes to conveying the tool's scope and behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple—one required parameter—and an output schema exists, which reduces the need to describe return values. Even so, the lack of usage guidance relative to many siblings and the absence of project_id semantics leave minor but real gaps for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention project_id at all. The parameter name is reasonably self-explanatory, but the description fails to compensate for the missing schema documentation by explaining how project_id relates to the snapshot or what format is expected.
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 states a specific verb ('Read') and a clear resource ('checksum-verified current SCAD snapshot'), which makes the core action easy to grasp. It does not explicitly differentiate from siblings like get_project or render_preview, but the 'SCAD snapshot' language narrows the resource enough to avoid major confusion.
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 gives no guidance on when to choose this tool over siblings such as get_project, validate_scad, or render_preview. There are no explicit exclusions, prerequisites, or alternative routing, so the agent is left to infer usage from the name and resource.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_previewRender PreviewC
Render a verified PNG for a named view or a numeric 6/7-value custom camera.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | isometric | |
| width | No | ||
| camera | No | ||
| height | No | ||
| version | No | ||
| project_id | Yes | ||
| projection | No | orthographic | |
| colorscheme | No | Cornfield | |
| render_mode | No | preview |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| tool | Yes | |
| errors | No | |
| success | No | |
| warnings | No | |
| artifacts | No | |
| project_id | No | |
| duration_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It adds useful detail by saying the output is a verified PNG and that the camera is a numeric 6/7-value array, but it does not explain output behavior, failure modes, side effects, or interpretation of camera values.
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 well-structured sentence with a front-loaded action and minimal wasted words. It is concise without being vague in its core purpose, though that brevity does trade away parameter guidance.
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 9 parameters, no annotations, and no schema coverage in the description, the one-line description leaves significant context gaps. It does not explain what the render_mode preview/render distinction means, how sizing works, how colorscheme affects output, or how the custom camera values are consumed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needs to compensate. It adds meaning for 'view' and 'camera', but the other seven parameters—width, height, version, projection, colorscheme, render_mode, and project_id—receive no semantic explanation beyond their schema names and enums.
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 identifies the action ('Render a verified PNG') and the resource scope: a named view or a numeric 6/7-value custom camera. This gives the agent a concrete sense of what the tool does, though it does not explicitly distinguish the tool from the closely named sibling render_preview_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives like render_preview_set or export_model. The description states what it does but not which scenarios call for it or when it should be avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_preview_setRender Preview SetB
Render six default views, or 1–12 requested named views, in parallel preserving order.
| Name | Required | Description | Default |
|---|---|---|---|
| views | No | ||
| width | No | ||
| height | No | ||
| version | No | ||
| project_id | Yes | ||
| render_mode | No | preview |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| tool | Yes | |
| errors | No | |
| success | No | |
| warnings | No | |
| artifacts | No | |
| project_id | No | |
| duration_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full disclosure burden. It does add genuine behavioral facts: parallel execution, preserved ordering, and a six-default-view behavior when views is null, plus a 1–12 cardinality limit. However, it leaves key behaviors unexplained, including the semantic difference between render_mode 'preview' and 'render', the meaning of a 'custom' view, and how version affects the output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 14-word sentence front-loads the verb and the central default-vs-requested distinction, then compresses two behavioral traits ('in parallel', 'preserving order') without waste. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six parameters, zero annotations, and 0% schema coverage, this description is too thin for reliable invocation. An agent cannot determine which views constitute the six defaults, what 'custom' names refer to, or what render_mode 'render' changes relative to 'preview'. The presence of an output schema mitigates the return-value gap, but not these parameter-level and mode-level holes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only partially explains the views parameter (null → six defaults, provided → 1–12 named views). Width, height, version, render_mode, and project_id receive no semantic explanation in either the schema or the description, leaving an agent to guess at their roles.
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 names a specific verb ('Render') and resource (project views) with a precise scope: six default views or 1–12 named views, executed in parallel with order preserved. This is clear and specific, but it never distinguishes itself from the near-twin sibling render_preview, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. With the sibling render_preview almost certainly covering the single-view case, the description offers no condition or cue that would route an agent to one tool over the other.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_versionRestore VersionB
Restore a historical snapshot as a new version, retaining the complete history.
| Name | Required | Description | Default |
|---|---|---|---|
| version | Yes | ||
| project_id | Yes | ||
| expected_version | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| tool | Yes | |
| errors | No | |
| success | No | |
| warnings | No | |
| artifacts | No | |
| project_id | No | |
| duration_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose an important non-destructive trait: the restore creates a new version rather than overwriting history. However, it does not mention potential side effects, permission requirements, or failure behavior such as what happens when expected_version does not match.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with a clear action, object, and outcome. It is front-loaded and contains no filler 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?
Although an output schema exists so return values need not be described, the description is incomplete for a mutating operation with three required parameters and no annotations. The critical semantics of expected_version, plus any concurrency or failure behavior, are 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?
Schema description coverage is 0%, so the description must compensate. It gives some meaning to 'version' as the historical snapshot to restore, but it does not explain project_id and especially expected_version, whose purpose is non-obvious and which is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Restore a historical snapshot as a new version') and a key behavioral guarantee ('retaining the complete history'). This distinguishes it from sibling tools like list_versions, update_model, and finalize_model without 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 given about when to use this tool versus alternatives, nor when not to use it. The intended context is only implied by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_modelUpdate ModelA
Atomically update code if expected_version matches, invalidating previous results.
| Name | Required | Description | Default |
|---|---|---|---|
| scad_code | Yes | ||
| project_id | Yes | ||
| change_summary | Yes | ||
| expected_version | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| tool | Yes | |
| errors | No | |
| success | No | |
| warnings | No | |
| artifacts | No | |
| project_id | No | |
| duration_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden — and it delivers substantive disclosures: atomicity ('Atomically'), conditional gating ('if expected_version matches'), and the side effect of 'invalidating previous results.' The main gap is the failure mode when expected_version does not match (error vs. no-op), but the most critical mutation behaviors are transparently disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 12-word sentence with zero filler. The verb and atomicity qualifier are front-loaded, and every phrase — atomic, version-match condition, invalidation side effect — earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with no annotations, the description covers the headline behaviors but leaves real gaps: the result or error when expected_version mismatches, what 'previous results' actually refers to (renders, validation, exports), and routing guidance relative to siblings. The presence of an output schema means return values need not be described, which slightly mitigates the incompleteness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies expected_version's role as the gate for the update and implicitly identifies scad_code as the new code, but it says nothing about project_id or change_summary, which an agent still needs to understand to invoke the tool correctly. Only partial compensation for the coverage gap.
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 states a specific action ('Atomically update code') on a specific resource, and adds the governing condition ('if expected_version matches'). The core purpose is unmistakable. It falls short of 5 because it doesn't explicitly distinguish this tool from siblings like create_project or finalize_model, though the version-gated semantics are distinctive.
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 offered on when to use update_model versus its siblings (create_project, finalize_model, restore_version, read_model). The version-match condition hints at a concurrency/edit scenario, but this is never stated explicitly, leaving the agent to infer the appropriate context from sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_scadValidate ScadA
Compile to a temporary STL and inspect for empty geometry, recording diagnostics.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| tool | Yes | |
| errors | No | |
| success | No | |
| warnings | No | |
| artifacts | No | |
| project_id | No | |
| duration_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It does disclose the temporary nature of the STL and the recording of diagnostics, but it does not state whether the project is modified, what occurs on compile failure, or what the diagnostics contain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with no filler; 'temporary' signals the side-effect profile and 'recording diagnostics' indicates the outcome. Every word contributes.
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 single-parameter tool with an output schema, the description captures the core workflow (compile, inspect, record) and the output schema can cover return details. It is slightly incomplete in not stating explicit outcome/error behavior, but not severely so.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never mentions project_id or its required format/meaning. The parameter name is self-explanatory, but the description adds no semantic value beyond what the schema already shows.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific mechanism — compile SCAD to a temporary STL and inspect for empty geometry — which clearly defines what validate_scad does and distinguishes it from siblings like render_preview and inspect_mesh. The title and description align on the resource and action.
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 gives no when-to-use guidance, prerequisites, or comparison to alternatives such as check_printability or inspect_mesh. It does not state when validation should be run or when another tool would be more appropriate.
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.
17 tool updates
v0.1.0- First observed
check_printability - First observed
compare_dimensions - First observed
create_project - First observed
delete_project - First observed
export_model - First observed
finalize_model - First observed
get_project - First observed
get_system_status - First observed
inspect_mesh - First observed
list_projects - First observed
list_versions - First observed
read_model - First observed
render_preview - First observed
render_preview_set - First observed
restore_version - First observed
update_model - First observed
validate_scad
TDQS
Most tools target clearly distinct actions and resources, such as project lifecycle, model editing, validation, rendering, and export. The closest overlaps are get_project vs. read_model and validate_scad vs. check_printability, but the descriptions separate metadata/snapshot reading and geometry validation/printability clearly enough for reliable selection.
Tool names overwhelmingly follow a verb_noun snake_case pattern, which is easy to predict and scan. The main inconsistency is mixing synonyms like get_project and read_model for similar retrieval operations, and compound names like render_preview_set, but these are minor and do not obscure the pattern.
At 17 tools, the server is slightly above the ideal 3-15 range, but the extra tools support a rich design workflow: versioning, rendering sets, mesh inspection, and finalization. Each tool addresses a distinct stage of the OpenSCAD pipeline, so the count feels justified rather than bloated.
The server covers the full OpenSCAD design lifecycle: project CRUD, code snapshot editing with optimistic concurrency, validation, printability checks, rendering, exporting, mesh inspection, finalization, and version restore. There are no obvious dead ends; even finalization is supported by an explicit gate-passing workflow.
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
Agent-first CAD: editable .kcad.ts source, deterministic review, OpenCASCADE kernel.
AI Hub for AEC — 50+ 3D formats, clash detection, ACC integration via Autodesk Platform Services.
DXF and PDF/X-4 for AI agents: structured facts, PNG renders, an interactive in-chat viewer.
Real 3D-print slicing, quoting, DFM, orientation & material/settings advisors. Free personal tier.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceGive your AI assistant the ability to inspect, measure, and compare 3D CAD models by dropping in a STEP file and asking engineering questions. Runs entirely on your machine with no cloud, no CAD license, and no setup.884MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for AI-driven CAD operations, enabling parametric modeling, build, inspection, measurement, rendering, and diff comparison with STEP, DXF, and GLB export.MIT
- FlicenseNot gradedqualityBmaintenanceEnables agent-assisted CAD engineering, allowing users to create, validate, and export CAD designs through natural language, with a deterministic engine that has zero LLM runtime dependency.-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents and software to create, edit, inspect, validate, and export CAD geometry through MCP using backend-neutral typed operations, with FreeCAD/OpenCascade as the authoritative B-rep backend and JSCAD preview.Apache 2.0
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/tomyrese/openscad-design-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server