{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_6pu2vkn9kchz","handle":"onshape-mcp","url":"https://wellknown.network/agents/onshape-mcp","links":{"self":"https://wellknown.network/agents/onshape-mcp/record.json","html":"https://wellknown.network/agents/onshape-mcp","markdown":"https://wellknown.network/agents/onshape-mcp/record.md","api":"https://wellknown.network/api/v1/agents/onshape-mcp","status":"https://wellknown.network/api/v1/agents/onshape-mcp/status","claim":"https://wellknown.network/agents/onshape-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/onshape-mcp/claim.json","badge":"https://wellknown.network/agents/onshape-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/onshape-mcp/history","tools":"https://wellknown.network/api/v1/agents/onshape-mcp/tools"},"ard":{"identifier":"urn:air::server:onshape-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"onshape-mcp","summary":"MCP server that drives the Onshape web UI — sketch, dimension, constrain and extrude from any MCP client.","description":"# onshape-mcp\n\nI wanted a way to drive Onshape from a language model the way I drive it with\nmy hands. Click a face. Draw a sketch. Extrude. Chamfer. The existing Onshape\nMCP wraps the REST API and FeatureScript, which works but feels like coding,\nnot modeling. This server aims at the other 70% of CAD work that lives in\nthe viewport.\n\nIt uses a vision-capable LLM (Gemini web, no API key, my Plus cookies) as\neyes, Playwright as hands, and an MCP surface so any MCP-aware client can\ntalk to it. Every action is journaled, so I can undo, replay, or branch.\n\n## Status\n\n- **M0** done: scaffold, smoke tests, public repo, safety rails.\n- **M1** done: driver primitives, Onshape tool datasheet, 43 MCP tools across\n  sketching, constraints, dimensions, features and feature-tree editing, plus\n  the closed-loop `act(goal)` agent and a deterministic fast path that skips\n  the LLM entirely for parseable goals.\n- **M2** next: pattern, mirror_body, assembly.mate, sketch.constrain flyout,\n  journal-replay undo, a real perceptual-diff for the stuck detector.\n\n## A note on sizes\n\nSizes come from Onshape's dimension solver, not from pixel measurements.\nTools draw a rough shape at a scale derived from the live canvas, then drive\nthe true millimetre value in — so a rectangle or circle is exactly the size\nyou asked for regardless of zoom. All dimension arguments are millimetres\nunless you write a unit (`\"10 cm\"`, `\"2 in\"`); bare numbers are never\nreinterpreted. Polygon radius is currently drawn-to-scale but not\nsolver-driven; see the `ponytail:` note in `ui_actions.py`.\n\n## What it looks like from the client side\n\nTwo ways to drive it:\n\n**Direct tools.** I call individual MCP tools when I want fine control:\n`screenshot`, `describe_view`, `viewport_size`, `journal_tail`, `tool_datasheet`,\n`open_doc`, and the per-tool `onshape_*` ones. Useful when I want to see\neach step and steer.\n\n**Closed-loop `act`.** I just say what I want:\n`act(goal=\"draw a 50x30mm rectangle on the top plane and extrud…","publisher":{"name":"Kayode Williams Olalere","url":null},"homepage":"https://github.com/WilliamSamson/onshape-mcp","repository":"https://github.com/WilliamSamson/onshape-mcp","version":"0.1.0","license":null,"protocols":["mcp"],"tags":["mcp","onshape","cad","model-context-protocol","playwright","automation"],"pricing":null,"endpoints":[{"url":"pypi:onshape-mcp","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi","publisherName":"pypi"}},"derived":{"capabilities":[{"slug":"infra.browser-automation","name":"Browser Automation","confidence":1,"provenance":"declared"},{"slug":"media.3d","name":"3D & Design","confidence":1,"provenance":"declared"}],"categories":["infra","media"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"onshape-mcp","registry":"pypi","observedAt":"2026-11-05T22:26:25.999Z","publishedAt":"2026-09-11T17:56:21.838601Z","latestVersion":"0.1.0"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"onshape-mcp","url":"https://pypi.org/project/onshape-mcp/","firstSeenAt":"2026-09-12T08:20:33.521Z","fetchedAt":"2026-11-05T22:24:56.974Z","normalizedAt":"2026-11-05T22:24:56.974Z"}]},"firstSeenAt":"2026-09-12T08:20:33.521Z","updatedAt":"2026-11-05T22:26:25.999Z"}