Skip to main content
Glama

Server Details

Parametric 3D CAD for AI agents. Claude Code, Cursor or any MCP client can build and edit real OwlCAD projects: primitives, booleans, and generators for gears, threads and Gridfinity. Check a part for printability and interference, then export STL, 3MF, OBJ or STEP. Output is an editable model with named millimetre dimensions, not a mesh, so you can open it in the browser and change any value afterwards. Sign in with OAuth or an access token. Requires OwlCAD Pro.

Ownership verified

The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.

If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.

Status
Unhealthy
Uptime
0.0% over the last 24 hours
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
OwlCAD
Claude
OwlCAD

TDQS

A4/5.0

Scored across 29 tools

Disambiguation4/5

Most tools carve out distinct axes and the descriptions explicitly fence them off — evaluate vs measure vs print_check vs check_interference each state what the others cannot answer, and export/export_step/export_2d are separated by format and job semantics. The residual risk is in the write path: edit_nodes, edit_project, update_project and save_project all mutate geometry and only prose distinguishes 'unsaved inline tree' from 'targeted patch' from 'versioned replace' from 'new project'.

Naming Consistency4/5

The set is overwhelmingly snake_case verb_noun (get_project, save_project, share_project, split_for_printing, check_interference, list_parts). Minor deviations are single-word verbs (evaluate, measure, render, export) and the noun-first job_status, but the convention stays readable and predictable throughout.

Tool Count3/5

The domain is genuinely broad (project CRUD, imports, exports, four distinct analyses, async jobs, docs, parts library, sharing), so most of the 29 earn their place. Still, at 29 tools it sits in the heavy band: the three export tools could plausibly be one format-parameterised tool, and ask_help/read_resource both serve documentation retrieval.

Completeness4/5

Coverage is strong across the whole lifecycle: import (mesh, 2D, upload ticket), parametric editing, evaluation and print analysis, mesh repair, splitting, four export formats, sharing, folders, and async job polling. The notable gaps are duplicating one's own project (the description punts to 'read and save'), version history/rollback beyond update_project's version check, and any collaborator or comment management.

Publisher details

Operator
Spare Matter Corp · Publisher source
Operator website
https://sparematter.com/
Vendor relationship
First-party
Trust center
Not available
Restrictions
Paid plan: Requires an OwlCAD Pro subscription. Admin approval: None. Any Pro user can connect without approval from OwlCAD or an organization admin. Regional limits: None. Custom OAuth app: Not needed. The server supports OAuth 2.1 with Dynamic Client Registration and PKCE (S256), so clients that support remote connectors (e.g. Claude custom connectors) connect by pasting https://mcp.owlcad.com and signing in. You can also use a personal access token (Authorization: Bearer owlcad_pat_…) created under Account → Access tokens. Stdio-only clients need the mcp-remote bridge. Other setup constraints: Scopes: read (default), write, export, ask. You pick them when creating a token or approving the consent screen. Rate limits: 60 calls per minute and 2,000 calls per day per token. Max 10 tokens per user. Per-account daily limits: 100 new projects, 100 delivered exports, 200 uploads. Size limits: 6 MB imported files, 10 MB request body, 60-second request timeout.

Available Tools

29 tools
ask_helpAsk how to do something in OwlCADA
Read-only
Inspect

Ask, in plain language, how to achieve something in OwlCAD and get a prose answer grounded ONLY in the product documentation, with the ids of the help articles it drew on. Use this when you need to know which tool or parameter does a thing — "how do I make a hole an M3 bolt passes through", "what does the clearance modifier do" — rather than guessing at a tool call. It answers from the docs and says so when they do not cover something, so an empty answer is information, not a failure. It changes NOTHING: no project is read or written. Requires a Pro plan and the ask scope, and it draws on the SAME small daily allowance as the in-app assistant, so prefer the schema resources for anything they already answer.

Inputs: question (required), locale, history.

check_interferenceCheck for collisionsA
Read-onlyIdempotent
Inspect

Find which parts physically overlap, and by how much volume. This is the assembly check you cannot do by reasoning about a tree OR by looking at a render — an interference is usually hidden inside the model. Run it on anything with more than one part that is meant to fit together.

Inputs: scad, nodes, projectId, smoothness, +1 more.

create_uploadStart a file uploadAInspect

Get a URL to PUT a local file to, so import_model and import_2d can take it WITHOUT the bytes passing through your context — base64 costs roughly 380,000 tokens per megabyte and most clients cannot produce it at all. PUT the file to uploadUrl with the headers given, then call the importer with ticketId. If you cannot PUT, give the person handoffUrl and they upload it in their browser; poll the importer until it stops answering awaiting_upload. Note the TWO expiries: uploadUrl dies in minutes, the ticket lasts a day — pass ticketId back here for a fresh URL rather than starting over.

Inputs: bytes, format, ticketId.

delete_projectDelete a projectA
DestructiveIdempotent
Inspect

Permanently delete one of your projects and its geometry. Irreversible — there is no trash. Deleting a project you did not create is not possible.

Inputs: projectId (required).

edit_nodesEdit a tree you are holdingA
Read-onlyIdempotent
Inspect

Apply edit ops to a node tree you pass IN, and get the edited tree back. Nothing is saved and no project is touched — this is the unsaved counterpart to edit_project. Use it to change a model you are still working on without re-sending the whole tree every time: add a node, cut a hole, group parts, wrap a modifier, then feed the result straight to evaluate, print_check or export. Target nodes by their id; a node you send keeps the id you gave it, and one you omit an id for gets one back in the result, so a later call can name it. Unlike edit_project this is FORGIVING: an op that cannot be applied is skipped and reported in skipped rather than failing the whole call, because nothing here is written and a nearly-right tree beats none; what your nodes lost the same way is in treeWarnings. Same ops as edit_project — read owlcad://schema/edit-ops for what each op requires (this tool’s ops carry no schema of their own), and owlcad://schema/primitives for the node vocabulary an addNode carries.

Inputs: ops (required), nodes (required).

edit_projectEdit a projectA
Destructive
Inspect

Make a TARGETED change to one of your projects — change a parameter, move a node, add or remove one, group nodes into a boolean, create or set a variable, switch configuration. Prefer this over update_project when you are changing an existing model: it needs only the ids you are touching, not the whole tree, and it does not strand mates the way a wholesale replacement does. Read with get_project authored: true first — those are the ids this accepts. Every op must apply or the whole call is refused and nothing is written. It can also restructure: dissolve a boolean, unwrap a modifier, or turn a selection into a reusable component you place again with addInstance — which is how you build an assembly without paying for every copy against the node cap. owlcad://schema/edit-ops lists what every op requires; the schema below is a flat bag of every field any op takes.

Inputs: ops (required), version (required), projectId (required), name.

evaluateEvaluate a modelA
Read-onlyIdempotent
Inspect

Run a model through the real CSG kernel and report whether it BUILDS: watertight, triangle count, bounding size in mm. Call this before exporting — an empty result usually means boolean operands did not overlap the way you expected. Its warning is only a bounding-box sanity check (a sub-mm feature, or bigger than a typical bed); it does NOT look at overhangs or wall thickness, so a clean evaluate does not mean the part prints — run print_check for that, and measure for material. A node or op in your nodes that could not be built as sent is dropped or changed and named in treeWarnings — fix it and call again.

Inputs: scad, nodes, projectId, smoothness.

exportExport a meshAInspect

Evaluate a model and return it as base64 bytes in STL, 3MF or OBJ. 3MF comes back CARVED — one object per top-level part, named from the scene tree and carrying its colour, so a slicer can arrange and recolour them separately; the result lists the names in objects. STL is one fused mesh (the format has no object concept). For STEP use export_step — it is B-rep, takes minutes, and runs as a job.

Inputs: scad, nodes, format, deliver, +2 more.

export_2dExport a 2D drawingAInspect

Flatten the model to 2D as DXF or SVG, for a laser, vinyl cutter or CNC. The default "silhouette" projects it onto the view plane; "section" cuts through it — how to check an internal wall or bore no render shows.

Inputs: z, cut, arcs, mode, +8 more.

export_stepExport STEP (a job)AInspect

Export a SAVED project as STEP — real B-rep, not a mesh, for CAD interchange. OCCT takes minutes, so this runs as a JOB: call with projectId to get a jobId, then call again with that jobId alone until status is "done", waiting retryAfterMs between polls (polling faster burns your call budget). A poll reports waitingMs; a job still "queued" after a few minutes is stuck, so stop polling and start a new one. Needs a saved project — run save_project first; it cannot export an inline tree. Pro accounts only.

Inputs: fit, jobId, projectId, keepFacets.

get_projectRead a projectA
Read-onlyIdempotent
Inspect

Load one of the authenticated account’s projects and list its nodes with their current parameters — for inspecting or describing an existing model. Reports any variables, components, configurations and mates the project carries beyond its nodes. Pass authored: true before you intend to CHANGE it.

Inputs: projectId (required), authored.

import_2dImport a DXF drawingAInspect

Import a DXF as a new project, extruded into solid geometry. Unlike a mesh import this stays PARAMETRIC — every closed outline becomes an extrude node whose profile and height you can then edit, so a drawing someone sent you becomes a model you can change. The response reports what the file declared its units to be, and names any entity types it contains that were not read.

Inputs: url, name, base64, height, +2 more.

import_modelImport a mesh fileAInspect

Import an STL, OBJ or 3MF file as a new project — for geometry you did not author. STL and OBJ carry no unit, so pass unit if you know it; otherwise it is guessed and the guess is reported back so you can correct it. The response reports whether the mesh is watertight and what is wrong with it if not — a mesh that is not watertight cannot take part in a boolean, so check this before building on it.

Inputs: url, name, unit, base64, +3 more.

job_statusCheck a deferred jobA
Read-onlyIdempotent
Inspect

Report on a job handle you were given. A slow analysis on a SAVED project (evaluate, print_check, measure, check_interference) is finished in the background instead of failing, and answers with a jobId; call this with that id until status is "done", waiting retryAfterMs between polls. The result is exactly what the original tool would have returned. STEP jobs are polled with export_step, not here.

Inputs: jobId (required).

list_foldersList your foldersA
Read-onlyIdempotent
Inspect

List folders you own or belong to, as { folders: [{ folderId, name, role }] }. Pass a folderId to organize_project.

Inputs: no named parameters.

list_partsBrowse the built-in part libraryA
Read-onlyIdempotent
Inspect

The parts OwlCAD ships — brackets, fasteners, spacers, board and motor reference bodies, mechanism pieces. Each is PARAMETRIC and datasheet-dimensioned, so a Raspberry Pi reference body has the real footprint and hole pattern. Insert one with an edit_project addPart op. Reach for this before hand-modelling something that sounds standard.

Inputs: search, category.

list_projectsList your projectsA
Read-onlyIdempotent
Inspect

The authenticated account’s projects, most recently updated first — how to find an id for get_project.

Inputs: after, limit, nameContains.

measureMeasure a modelA
Read-onlyIdempotent
Inspect

Exact volume, surface area, centre of mass and connected-body count, plus an estimate of the filament a print would consume and what it would cost. Use it to answer "how heavy / how much material / how much filament / how much will this cost" — nothing else reports those, and they cannot be derived from a bounding box. Also checks a model is ONE body — two bodies where you expected one means operands that never touched.

Inputs: scad, nodes, infill, shellMm, +3 more.

open_in_editorEditor linkA
Read-onlyIdempotent
Inspect

Return { url }, the editor link for a project you own. It opens only for that account; to hand a model to anyone else, use share_project.

Inputs: projectId (required).

organize_projectFile a project into a folderA
DestructiveIdempotent
Inspect

Move one of your projects into a folder, or out of one. Folders are how a shared workspace is organized — a project filed into one inherits that folder’s members. Call with no folderId to take it out again. Use list_folders to see which folders you can file into.

Inputs: projectId (required), folderId.

read_resourceRead a schema or referenceA
Read-onlyIdempotent
Inspect

Reads an owlcad:// resource as a tool result, for clients that do not let you read MCP resources — any owlcad:// URI these tools tell you to read works here. owlcad://schema/primitives without keys is an index; pass keys for the full parameter ranges of the entries you will use.

Inputs: uri (required), keys.

remix_projectRemix a public projectAInspect

Fork a PUBLIC project into a new one you own, keeping the lineage link back to the original. This is how you start from someone else’s published model instead of from nothing. Only public projects can be remixed; to copy one of your own, read it and save the tree as a new project.

Inputs: projectId (required).

renderSee the modelA
Read-onlyIdempotent
Inspect

Render the model to PNG images you can actually look at, from one or more named views. Use this to CHECK your work — a tree that evaluates cleanly can still be the wrong shape, and this is the only way to notice. Flat-shaded diagnostic render, not a marketing shot.

Inputs: scad, size, nodes, views, +4 more.

repair_projectRepair broken meshes in a projectA
Destructive
Inspect

Find every imported mesh in one of your projects that is not watertight, and weld cracks, close holes and fix face directions. A non-watertight mesh cannot take part in a boolean — the evaluator degrades it to nothing — so a model built on one comes back missing a part with no error anywhere. Run this when a project contains an import and the geometry is not behaving. Pass dryRun to see what is broken without changing it.

Inputs: projectId (required), dryRun, nodeId, version.

save_projectSave as a projectAInspect

Save a model as a project on the authenticated account, returning its id. Pair with open_in_editor to hand a person an editable link — that is usually a better deliverable than a bare mesh file. Each call creates a new project.

Inputs: name, scad, nodes.

share_projectMake a project shareableA
DestructiveIdempotent
Inspect

Turn on (or off) public link sharing for one of your projects and return the link. This is usually the deliverable a person actually wants: open_in_editor’s link only works for the account that owns the project, so it is useless for handing to someone else. A shared link opens read-only — the viewer cannot change your model. Anyone holding the link can open it, so only share what you mean to.

Inputs: projectId (required), public.

split_for_printingCut a model that does not fit the bedA
Destructive
Inspect

Cut one body in a project into two halves at a plane, replacing it, with a joint so they go back together after printing; the reply lists the new bodies. This is the answer to "my model is too big for my printer". Both halves stay fully parametric — each is the original body intersected with a half-space, not a flattened mesh — so they still export as solids and still open for editing. Pick the joint by what the print needs: dowel puts a socket in BOTH halves and prints the pin separately, so neither half has anything standing off its cut face and a wrong fit costs a two-gram reprint instead of a whole half; pin and tenon grow the key out of one half; bolt is the only one that comes apart again. Omit position to cut through the middle of the body on that axis.

Inputs: nodeId (required), projectId (required), fit, gap, +9 more.

update_projectUpdate a projectA
Destructive
Inspect

Replace the geometry of one of your existing projects, keeping its id, link and history. Pass the version you got from get_project — if the project has changed since, the update is refused rather than silently overwriting that change. Use this instead of save_project when iterating, so a person keeps one link.

Inputs: version (required), projectId (required), name, scad, +1 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Remote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
      16
      9 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
      MIT
    Try in Browser

    Glama MCP Gateway

    Add one secure layer between your agents and this server.

    Resources