tinkercad-mcp-server
Allows creating and editing circuits in Tinkercad Circuits, including placing and wiring components, writing Arduino code, running simulations, and reading the serial monitor.
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., "@tinkercad-mcp-serverBuild a blink circuit in Tinkercad with an Arduino Uno, LED, and resistor, then start the simulation."
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.
Tinkercad Circuits MCP
Let Cursor, Claude, or Codex build circuits in Tinkercad Circuits: place parts, wire pins, write Arduino code, run the simulator, and read the serial monitor.
Tinkercad has no public API. This server opens a real Chrome window, keeps you logged in, and drives the editor for the AI.
What you need
A free Tinkercad / Autodesk account
Git, if you are cloning this repo
Related MCP server: Chrome DevTools MCP
Setup (do this once)
1. Get the code
git clone https://github.com/sethski/tinkercad-mcp-server.git
cd tinkercad-mcp-server2. Install and build
npm install
npx playwright install chromium
npm run buildnpm run build creates dist/index.js. That file is what Cursor, Claude, and Codex will launch.
3. Sign in to Tinkercad
npm startA Chrome window opens. Sign in with your Autodesk account, then close the terminal with Ctrl+C.
You only do this once. The login is saved in .browser-profile/ (not committed to git). Later, the MCP server reuses that session.
If npm start says you are not logged in, leave Chrome open, finish sign-in, and run npm start again. Or from the AI, call tinkercad_login_status.
4. Copy your server path
You need the full path to dist/index.js.
Windows example:
C:/Users/you/tinkercad-mcp-server/dist/index.jsmacOS / Linux example:
/Users/you/tinkercad-mcp-server/dist/index.js
In the configs below, replace REPLACE_WITH_FULL_PATH_TO_dist/index.js with that path. Use forward slashes even on Windows.
5. Connect an AI client
Pick the app you use. You can add more than one.
Cursor
Open Cursor Settings → MCP
Or create
.cursor/mcp.jsonin this project (a template is already there)Paste:
{
"mcpServers": {
"tinkercad-circuits": {
"command": "node",
"args": ["REPLACE_WITH_FULL_PATH_TO_dist/index.js"]
}
}
}Save, then reload MCP servers (or restart Cursor)
Confirm
tinkercad-circuitsis on and lists tools
Claude Desktop
Open the Claude Desktop config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Merge the
mcpServersblock fromclients/claude-desktop.jsonPut your real
dist/index.jspath inargsRestart Claude Desktop
Codex
Open
~/.codex/config.toml(or your project Codex config)Put your real
dist/index.jspath inargsRestart Codex
6. Check that it works
From this folder:
npm run list-toolsYou should see 17 tools, including tinkercad_login_status and tinkercad_build_circuit.
Then in Cursor / Claude / Codex, ask:
Check Tinkercad login status, then open a new circuit.
If login is missing, sign in in the Chrome window that appears and ask again.
First circuit to try
Ask the AI:
Build a blink circuit in Tinkercad: Arduino Uno, red LED, 220 ohm resistor. Wire D13 to the LED anode, LED cathode to the resistor, resistor to GND. Write blink code that also prints HIGH/LOW to serial, start the simulation, and read the serial monitor.
That uses tinkercad_open_circuit, tinkercad_build_circuit (or the smaller tools), tinkercad_start_simulation, and tinkercad_read_serial.
Keep Chrome visible the first few times so you can see parts land on the canvas.
Tools
What you want | Tool |
Am I signed in? |
|
Open or create a circuit |
|
See parts, wires, code |
|
Screenshot the editor |
|
Known part names |
|
Add / move / delete a part |
|
Wire or unwire |
|
Resistance, color, etc. |
|
Read or write Arduino code |
|
Run / stop sim, read serial |
|
Place, wire, and code in one go |
|
Pin names look like uno.D13 or led1.anode. Call tinkercad_get_circuit after placing parts so you use real ids.
Optional settings
Variable | Meaning |
| Chrome profile folder (default: |
| Where screenshots are saved |
| Hide Chrome after you have already logged in. First login should stay headed. |
Extra commands
npm test # unit tests, no Tinkercad login
npm run list-tools # stdio handshake, same as Cursor/Claude/Codex
npm run spike # dump what the live page exposes
npm run e2e # live blink circuit (needs login)
npm run inspector # MCP Inspector UIHow it works
Cursor / Claude / Codex
│ stdio
▼
tinkercad-mcp-server (Node)
│ Playwright
▼
Chrome (saved login) → tinkercad.com Circuits editorDetails of what is scriptable: docs/spike-findings.md.
Autodesk can change the editor HTML. Selector updates stay in src/services/editor-bridge.ts and src/injected/.
Limits
Circuits only (3D design and Codeblocks are not in this version)
You must stay logged in; there is no official Autodesk API key
Place and wire are UI automation, so they can break when Tinkercad ships a new editor
One Chrome profile at a time; do not commit
.browser-profile/
Evaluations
Read-only questions live in evaluations/tinkercad-circuits.xml. Catalog questions work with no circuit open. Circuit questions assume evaluations/SAMPLE_CIRCUIT.md.
License
MIT. See LICENSE.
Available Tools
17 toolstinkercad_add_componentAdd Circuits componentA
Search the Circuits parts panel and drop a component onto the canvas.
Args:
component (string): Catalog id or search text (led, resistor, Arduino Uno R3)
x (number): Canvas X in pixels (default 320)
y (number): Canvas Y in pixels (default 240)
response_format
Returns: Updated circuit snapshot. Prefer ids from the returned components list for later wiring.
Error Handling:
Unknown part: call tinkercad_list_components
Editor closed: call tinkercad_open_circuit first
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Drop X on the breadboard canvas, pixels from the left | |
| y | No | Drop Y on the breadboard canvas, pixels from the top | |
| component | Yes | Catalog id or search text. Examples: arduino_uno_r3, led, resistor | |
| response_format | No | Output format: markdown for humans, json for machine processing | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey readOnly=false, destructive=false, and openWorld=true. The description adds valuable behavioral context by stating that the tool returns an updated circuit snapshot and recommending that returned component ids be reused for later wiring. It also discloses two error conditions. This goes meaningfully beyond the annotation-only view, though it does not discuss auth, rate limits, or coordinate behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-organized into Args, Returns, and Error Handling. The opening sentence is immediately informative, and every section earns its place without redundant prose or schema repetition beyond a terse arg list.
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 moderate complexity, full schema coverage, and presence of annotations, the description is sufficiently complete. It covers the core action, return behavior, prerequisite failure handling, and gives a practical follow-up hint about using returned component ids for wiring. An agent has enough information to invoke this tool correctly in 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 100%, so the input schema already documents all four parameters with defaults, ranges, and examples. The description mostly summarizes these instead of adding new semantic insight. It does note in the Returns section that ids from the updated snapshot should be used later, which is useful but not param-specific.
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 opens with a concrete action: 'Search the Circuits parts panel and drop a component onto the canvas.' This clearly identifies the tool's verb, resource, and purpose. It is naturally distinguishable from siblings like tinkercad_move_component, tinkercad_delete_component, and tinkercad_connect_pins.
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 Error Handling section gives explicit conditional guidance: unknown parts should route to tinkercad_list_components, and a closed editor should route to tinkercad_open_circuit first. This tells an agent when prerequisites are needed and provides alternatives for failure cases, though it does not exhaustively contrast against every sibling such as move or delete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tinkercad_build_circuitBuild circuit from netlistA
Place components, set attributes, wire pins, and optionally write Arduino code in one call.
This is a convenience workflow over the primitive tools. Prefer primitives when you need to recover from a single failed step.
Args:
start_new (boolean): Open a new circuit first
components: [{ ref, type, x?, y?, attributes? }]
wires: [{ from, to }] using ref.pin (example: uno.D13 -> led1.anode)
code (string, optional)
response_format
Example: components: [ { "ref": "uno", "type": "arduino_uno_r3", "x": 220, "y": 220 }, { "ref": "led1", "type": "led", "x": 520, "y": 220, "attributes": { "color": "red" } }, { "ref": "r1", "type": "resistor", "x": 520, "y": 340, "attributes": { "resistance": "220" } } ] wires: [ { "from": "uno.D13", "to": "led1.anode" }, { "from": "led1.cathode", "to": "r1.pin1" }, { "from": "r1.pin2", "to": "uno.GND" } ]
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| title | No | ||
| wires | No | ||
| start_new | No | If true, open a new circuit before building | |
| components | Yes | ||
| response_format | No | Output format: markdown for humans, json for machine processing | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (non-readonly, openWorld, non-idempotent, non-destructive), the description discloses that this is a multi-step workflow rather than a single operation, which suggests non-atomic behavior. The recovery caveat ('Prefer primitives when you need to recover') adds useful operational context. It does not spell out failure modes or what happens to existing circuits when start_new is true.
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 core behavior is front-loaded in the first sentence and the prose is efficient. The args list and example are useful for a tool with six parameters, though the args list duplicates some schema properties. Overall, every section earns its place without excessive verbiage.
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 complex and has no output schema, so the description carries a responsibility to explain invocation and expected outcome. It covers invocation well with args and example, but it does not state what the tool returns (e.g., succcess message, errors, circuit state) or describe partial-failure outcomes beyond implying recovery is hard. That leaves a meaningful 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?
With only 33% schema description coverage, the description should compensate, and it partially does by restating the args and providing a concrete components/wires example. However, it does not explain some parameters (e.g., title) or deeply describe attributes, coordinates, or return behavior. The wire format 'ref.pin (example: uno.D13 -> led1.anode)' mirrors the schema rather than adding new meaning.
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 opens with a specific, multi-verb statement of what the tool does: 'Place components, set attributes, wire pins, and optionally write Arduino code in one call.' This clearly identifies the resource (a circuit) and action (building/editing it). It also distinguishes itself from sibling primitives by defining itself as a 'convenience workflow over the primitive tools'.
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?
Gives explicit when-not/alternative guidance: 'Prefer primitives when you need to recover from a single failed step.' This tells an agent that for granular recovery, the lower-level sibling tools are better, while implying this tool is for bulk, one-shot construction. It does not enumerate which primitives or specify all use cases, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tinkercad_connect_pinsWire two pinsAIdempotent
Click-to-wire two pins on the open circuit.
Args:
from (string): componentId.pinName (example: uno.D13)
to (string): componentId.pinName (example: led1.anode)
response_format
Call tinkercad_get_circuit first so pin names match what the editor actually exposed.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Destination pin as componentId.pinName, e.g. led-1.anode | |
| from | Yes | Source pin as componentId.pinName, e.g. arduino_uno_r3.D13 or led-1.anode | |
| response_format | No | Output format: markdown for humans, json for machine processing | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and openWorldHint=true. The description adds value beyond these by disclosing the interaction style ('Click-to-wire') and the dependency on live editor state for pin names. This explains why the open-world hint matters in practice. No contradiction with annotations.
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 core behavior is front-loaded in the first sentence, and the prerequisite warning is placed last where it reinforces the main guidance. The Args block is somewhat redundant with the fully-covered schema, but it is compact and includes useful example strings, so the overall size is appropriate.
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 two-required-parameter action tool, the description covers the core operation, the parameter format, and the critical prerequisite. There is no output schema, and the description does not state what happens on success (e.g., wire appears in circuit or return payload), but the tool's simplicity and the rich annotation set make this a minor gap rather than a blocking one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description's Args section largely restates what the schema already documents. It repeats examples like uno.D13 and led1.anode that closely mirror the schema's own examples, adding minimal new semantic meaning.
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 and resource: 'Click-to-wire two pins on the open circuit.' This clearly communicates the operation and context. However, it does not explicitly differentiate from siblings like tinkercad_delete_wire or tinkercad_build_circuit, though the meaning is unambiguous enough that an agent would not confuse 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?
The description gives an explicit sequencing instruction: 'Call tinkercad_get_circuit first so pin names match what the editor actually exposed.' This is clear, actionable usage context that prevents a realistic failure mode. It does not explicitly name alternatives or state when not to use the tool, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tinkercad_delete_componentDelete Circuits componentADestructiveIdempotent
Select a component and delete it from the open circuit.
Args:
component_id (string)
response_format
This removes the part and its attached wires.
| Name | Required | Description | Default |
|---|---|---|---|
| component_id | Yes | Id from tinkercad_get_circuit | |
| response_format | No | Output format: markdown for humans, json for machine processing | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations carry destructiveHint=true and readOnly=false; description adds the important side-effect that attached wires are also removed. This isvaluable beyond annotations and helps agent predict consequences.
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?
Compact and front-loaded with the action; the final sentence adds a key behavioral note. The Args list duplicates the schema but is short anddoesn't create excessive noise.
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?
Sufficient for a destructive operation: identifies irget, scope, and wire side-effect. No output schema exists, but description mentions response_format which implies a response is produced; no major gaps for calling correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and parameters already have descriptions. Description repeats argument names but adds no material meaning beyond 'Id from tinkercad_get_circuit' and response_format enum.
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?
Purpose clear: verb 'delete', resource 'component', scope 'open circuit' distinguishes from sibling delete_wire. 'Select a component and delete it" is specific and actionable.
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?
Implied usage: use when you want to remove a component and its attached wires. No explicit alternatives or when-not conditions, ut component-vs-wire distinction is inferrable from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tinkercad_delete_wireDelete a wireBDestructiveIdempotent
Select a wire by id and delete it.
Args:
wire_id (string): Id from tinkercad_get_circuit
response_format
| Name | Required | Description | Default |
|---|---|---|---|
| wire_id | Yes | Wire id from tinkercad_get_circuit | |
| response_format | No | Output format: markdown for humans, json for machine processing | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey destructiveHint=true and readOnlyHint=false, so the operation's safety profile is clear. The description adds that the wire is the destroyed object and that deletion is by id, but it does not disclose side effects, irreversibility, or behavior when the wire is missing. No annotation contradiction exists.
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 opening sentence is concise and front-loaded. However, the Args block largely duplicates schema information and the response_format entry is incomplete, so not every element 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 simple deletion tool with two fully described parameters and annotations that already indicate destructiveness, the description is mostly sufficient. The remaining gap is lack of detail about return values or side effects, but the schema and response_format parameter cover the necessary calling contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both wire_id and response_format described in the input schema. The description merely repeats parameter names and the wire_id source without adding additional semantic value, so baseline 3 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?
Description states a clear action, 'Select a wire by id and delete it', with a specific resource (wire) and method (by id). It is distinguishable from sibling tools like tinkercad_delete_component because it explicitly targets wires.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance about when to use this tool versus alternatives such as tinkercad_delete_component or tinkercad_move_component. The only implicit hint is that wire_id must come from tinkercad_get_circuit, which is a prerequiste, not a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tinkercad_get_circuitInspect open circuitARead-onlyIdempotent
Read the currently open Circuits editor: components, pins, wires, code, serial, and simulation flag.
Call this after every build step so later tools use real component ids.
Args:
include_code (boolean, default true)
include_serial (boolean, default true)
include_pins (boolean, default true)
response_format ('markdown' | 'json')
Returns: Structured circuit state. Component ids from this tool are required by move/delete/wire tools.
| Name | Required | Description | Default |
|---|---|---|---|
| include_code | No | Include Arduino sketch text | |
| include_pins | No | Include pin coordinates for each component | |
| include_serial | No | Include serial monitor text if visible | |
| response_format | No | Output format: markdown for humans, json for machine processing | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is well covered. The description adds useful behavioral context beyond annotations: it is a read of the full editor state, should be called after every build step, and its component ids are dependencies for later mutation tools. No contradiction with annotations.
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 front-loaded with the core purpose, gives the one critical usage instruction, then lists parameters and returns. Every sentence earns its place, and nothing is redundant or padded.
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 read-only introspection tool with rich annotations and fully documented parameters, the description covers what it returns at a useful level and explains why the return values matter. It does not detail the exact return schema, but the first sentence enumerates the main state categories, which is sufficient for an agent to know what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description's Args section largely repeats the schema's parameter documentation. It adds no meaning beyond what the schema already provides for include_code, include_serial, include_pins, or response_format. Baseline 3 applies because the schema carries the full parameter semantics.
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 ('Read') and names the exact resource ('currently open Circuits editor') plus the covered contents: components, pins, wires, code, serial, and simulation flag. This is clear and distinct from sibling tools like list_components or get_code, even though it does not 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?
The description gives explicit usage guidance: 'Call this after every build step so later tools use real component ids.' It also explains why the results matter by stating component ids are required by move/delete/wire tools. It does not explicitly contrast with alternatives like list_components, but the guidance is concrete enough for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tinkercad_get_codeRead Arduino codeARead-onlyIdempotent
Open the Code panel, switch to Text mode, and return the sketch.
Args:
response_format
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format: markdown for humans, json for machine processing | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds useful behavioral context by disclosing that it opens the Code panel and switches to Text mode, which is a UI state change that an agent should know about. No annotation contradiction.
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 compact: one procedural sentence followed by an Args line. It is front-loaded with the primary action and contains no filler, repetition, or unnecessary caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one optional parameter and no output schema, the description covers the essential action and return value. It could be slightly more explicit about operating on the active circuit's sketch, but the tool name and Tinkercad context make this reasonably clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description does not need to add much. The sole parameter response_format is fully documented in the schema with enum values and a clear description, and the tool description merely lists the arg name without adding new meaning.
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 verb and resource: open the Code panel, switch to Text mode, and return the sketch. This distinguishes it from sibling tools like tinkercad_set_code, and the title 'Read Arduino code' reinforces the read-only retrieval purpose.
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 the agent needs to read the current Arduino sketch, but it does not explicitly state when to use this tool versus alternatives such as tinkercad_set_code. There is no direct mention of exclusions or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tinkercad_list_componentsList known Circuits componentsARead-onlyIdempotent
List the local catalog of Tinkercad Circuits parts this server knows how to search for.
This does not scrape Autodesk. It is the allowed vocabulary for tinkercad_add_component and tinkercad_build_circuit.
Args:
query (string, optional): Filter by id, label, or alias
response_format ('markdown' | 'json')
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional filter such as led, arduino, resistor | |
| response_format | No | Output format: markdown for humans, json for machine processing | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, idempotentHint, and destructeHint, so the bar is lower. The description adds meaningful behavioral context: the catalog is local, the tool does not scrape Autodesk, and it defines the accepted vocabulary for other operations. No contradiction with annotations.
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 compact and front-loaded: first sentence states what it does, second sentence removes a likely misconception about scraping Autodesk, and the args list is brief yet informative. Every line 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 simple read-only list tool with two optional parameters and a rich annotation set, the description is largely complete. It could have mentioned that omitting query returns the full catalog, but this is easily inferred from the optional filter parameter and the list semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining query filters by id, label, or alias, which is more specific than the schema's example filter list. The response_format mention aligns with the schema's enum and default.
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 and resource: 'List the local catalog of Tinkercad Circuits parts this server knows how to search for.' It also clarifies that it does not scrape Autodesk, and identifies itself as the allowed vocabulary for two sibling tools, making it easy to distinguish from other circuit-building tools.
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?
It provides clear context by naming tinkercad_add_component and tinkercad_build_circuit as consumers of this vocabulary, so an agent can infer when to call it. It does not explicitly state 'use before adding components' or give exclusion cases, but the intended role is strongly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tinkercad_login_statusTinkercad login statusARead-onlyIdempotent
Check whether the persistent Chrome profile is signed in to Tinkercad.
Use this first on a new machine. If it reports not logged in, complete Autodesk sign-in in the opened Chrome window, then call this tool again.
Args:
response_format ('markdown' | 'json'): Output format
Returns: loggedIn, current URL, and the next action to take.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format: markdown for humans, json for machine processing | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds valuable context: the check is tied to a persistent Chrome profile, a Chrome window may be opened for sign-in, and the tool returns a next-action recommendation. No contradiction exists.
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 compact and well-structured: purpose first, then usage guidance, then args and returns. Every sentence contributes information, and the key workflow instruction is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description is complete. It states what is returned (loggedIn, current URL, next action) and explains the action to take based on the result, leaving no critical gap for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; the single parameter response_format is fully documented with an enum, default, and description. The description restates the parameter but adds no new semantic meaning beyond what the schema already provides, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Check whether the persistent Chrome profile is signed in to Tinkercad.' This clearly identifies the tool's unique purpose and distinguishes it from the other Tinkercad sibling tools, none of which perform login-status checking.
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 explicitly states when to use the tool: 'Use this first on a new machine.' It also provides follow-up guidance—if not logged in, complete Autodesk sign-in and call the tool again—which gives the agent a clear operational flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tinkercad_move_componentMove Circuits componentBIdempotent
Drag an existing component to a new canvas position.
Args:
component_id (string): Id from tinkercad_get_circuit
x, y (number)
response_format
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| component_id | Yes | Id from tinkercad_get_circuit | |
| response_format | No | Output format: markdown for humans, json for machine processing | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey readOnly=false, idempotent=true, and destructive=false. The description adds a small behavioral detail by framing the operation as dragging on the canvas, but it does not disclose side effects, failure modes, or any constraints beyond what the annotations and schema already offer.
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 short and front-loaded with the primary action. The Args list repeats some schema information but is compact and does not introduce unnecessary prose.
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 move operation, the description plus schema and annotations are sufficient to call the tool correctly: required params, bounds, response format options, and non-destructive/idempotent behavior are available. However, the expected return value and any prerequisite like having an open circuit are left implicit.
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 documents component_id and response_format, while x and y are only typed numbers with min/max bounds. The description clarifies that x and y are the new canvas position, which adds some meaning, but it does not explain units, origin, or coordinate interpretation in detail.
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 ('Drag') and resource ('component') with a clear target ('new canvas position'). It is unambiguous on its own, though it does not explicitly contrast with sibling tools such as tinkercad_set_component_attribute or tinkercad_delete_component.
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, and no exclusions or prerequisites are stated. The only implicit clue is 'existing component', which suggests the component should already be present, but this is not made actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tinkercad_open_circuitOpen Tinkercad circuitAIdempotent
Open an existing Circuits design or start from the Circuits dashboard.
Args:
target (string): Full tinkercad.com URL, a thing id, or 'new'
response_format ('markdown' | 'json')
Returns: Circuit snapshot after the editor is ready.
Examples:
target="new"
target="abc123"
Error Handling:
Login wall: sign in in Chrome, then retry
Non-Tinkercad URLs are rejected
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Circuit URL, Tinkercad thing id, or 'new' to create a circuit from the dashboard | |
| response_format | No | Output format: markdown for humans, json for machine processing | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, and destructive hints, and the description adds real behavioral context: it returns a circuit snapshot after the editor is ready, can encounter a login wall requiring Chrome sign-in, and rejects non-Tinkercad URLs. No contradiction with annotations.
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 one-line purpose is front-loaded, and the Args/Returns/Examples/Error Handling sections make the content easy to scan. It is slightly longer than necessary because it repeats schema parameter descriptions, but each section still 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?
The description covers target formats, the return summary, and known errors, which is enough for a basic call. However, there is no output schema and only a vague 'Circuit snapshot' return description, leaving the snapshot structure and fields underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already fully describes target and response_format. The description mostly restates the schema, though the concrete examples of URL, thing id, and 'new' add a little practical disambiguation. This is the expected baseline when the schema carries most of the parameter meaning.
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 first line names a concrete action, 'Open', on a specific resource, Circuits designs, with a clear second branch for starting from the dashboard. This distinguishes it functionally from read-style siblings like tinkercad_get_circuit, but it does not explicitly name a sibling, so it does not fully earn 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?
The description gives usable context: open an existing design or start from the dashboard, with examples of target values and login-wall retry guidance. However, it does not explicitly state when to prefer this tool over alternatives such as get_circuit or build_circuit, leaving the selection logic to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tinkercad_read_serialRead serial monitorARead-onlyIdempotent
Read text currently shown in the Circuits serial monitor.
Args:
wait_ms (number, default 1500): Delay before reading so the sketch can print
response_format
The Code panel is opened if needed. Empty output usually means the sketch never called Serial.begin / Serial.println, or simulation is stopped.
| Name | Required | Description | Default |
|---|---|---|---|
| wait_ms | No | How long to wait for serial output before reading | |
| response_format | No | Output format: markdown for humans, json for machine processing | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructve. The description adds valuable behavioral context beyond those: opening the Code panel if needed, and explaining that empty output likely means Serial.begin/Serial.println was never called or the simulation is stopped. No contradiction with annotations.
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 concise and front-loaded with the main purpose. The Args section is a bit redundant with the schema, but the troubleshooting note and side-effect disclosure are useful and earned. Overall it is well-structured for an agent to parse quickly.
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 only two optional parameters and no output schema, the description covers the key operational concerns: what is returned, when to expect empty output, and a notable side effect. It would be slightly richer if it explicitly stated the simulation must be started first, but that is implicitly covered by the empty-output note.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents wait_ms and response_format. The description adds only a small extra nuance—that the delay exists 'so the sketch can print'—which is helpful but not a major semantic contribution.
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 ('Read text') on a specific resource ('Circuits serial monitor'), and distinguishes it from sibling tools like tinkercad_get_code and tinkercad_screenshot. The phrase 'currently shown' adds precision about the snapshot semantics of the serial monitor.
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 this is used to inspect runtime serial output from a simulated circuit, and it gives a useful troubleshooting hint about empty output. However, it never explicitly says when to use this tool rather than a sibling such as tinkercad_get_code or tinkercad_start_simulation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tinkercad_screenshotScreenshot Circuits editorARead-onlyIdempotent
Capture the visible Circuits editor as a PNG.
Use when SVG scrape is incomplete and you need to see placement, wiring, or LED state.
Returns: An image plus the temp file path.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds that only the visible portion is captured and that the result is an image plus a temporary file path, which are useful return-behavior details beyond the annotations.
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 compact: one action sentence, one usage-condition sentence, and one return-value block. Every sentence earns its place and the primary purpose is front-loaded.
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, read-only tool, the description provides everything an agent needs to invoke it correctly: what it captures, when to use it, and what to expect in return. The lack of an output schema is compensated by the clear 'Returns' line.
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 and schema coverage is 100%, so there are no parameter details for the description to add. Baseline 4 is appropriate for a no-parameter tool.
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 (capture), a specific resource (visible Circuits editor), and the output format (PNG). This clearly distinguishes it from the sibling tools, none of which capture screen images.
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?
It gives an explicit trigger: use when SVG scrape is incomplete and visual placement/wiring/LED state is needed. This implies the alternative is SVG data, but it does not name a sibling tool explicitly, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tinkercad_set_codeWrite Arduino codeADestructiveIdempotent
Replace the entire Text-mode Arduino sketch.
Args:
code (string): Full sketch, including setup() and loop()
Switching from Blocks to Text is done automatically when the dropdown is present.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Full Arduino sketch to write into the Text code panel |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include destructiveHint=true, and the description adds what gets destroyed: the entire Text-mode Arduino sketch. It also discloses non-obvious behavior around automatic Blocks-to-Text switching. No contradiction with annotations.
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?
Very compact: one purpose sentence, a small args block, and one behavioral note. Information is front-loaded and every sentence earns its place 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 one-parameter seter, the description is sufficiently complete: it states the scope of the operation, the required sketch structure, and the automatic mode-switching behavior. It omits return/error details, but no output schema exists and this is a straightforward set-code operation.
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?
Input schema coverage is 100%, so baseline is 3. The description adds the requirement 'including setup() and loop()', which is meaningful beyond the schema's generic 'Full Arduino sketch' text.
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 ('Replace') and a specific resource ('entire Text-mode Arduino sketch'), which clearly distinguishes it from siblings like tinkercad_get_code. The title 'Write Arduino code' is expanded into a precise, scoped statement.
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?
Clearly indicates this is for full-sketch replacement, not partial modifications, via the word 'entire'. It also gives a concrete precondition: automatic Blocks-to-Text switching happens when the dropdown is present. It does not explicitly name alternatives, but the purpose is clear enough to route an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tinkercad_set_component_attributeSet component attributeBIdempotent
Change an inspector field on a selected component (resistance, color, value).
Args:
component_id (string)
name (string): Field label, e.g. resistance or color
value (string): e.g. 220 or red
response_format
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Inspector field, e.g. resistance, color, value | |
| value | Yes | New value, e.g. 220 or red | |
| component_id | Yes | ||
| response_format | No | Output format: markdown for humans, json for machine processing | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a mutation (readOnlyHint=false), non-destructive (destructiveHint=false), and idempotent (idempotentHint=true). The description adds the precondition that the component is selected and shows common fields, but does not disclose side effects on the simulation, reversibility, or what response to expect.
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 opening sentence is specific and front-loaded, and the Args block is compact. Some argument information is redundant with the schema, and response_format has no explanatory detail, but there is no wasted prose.
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?
This is minimally usable for a straightforward setter tool, but it does not describe the response/confirmation behavior, what happens if the component_id is invalid, or how 'selected component' relates to component_id. No output schema compensates for these gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes name, value, and response_format; the Args list mostly restates those descriptions without adding new meaning. component_id remains thinly documented in both the schema and the description, relying on the parameter name and 'selected component' wording for interpretation.
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 lead sentence names a concrete action ('Change'), the target ('inspector field on a selected component'), and common fields like resistance, color, and value. It is clearly distinct from sibling tools such as add, delete, move, or connect, though it does not explicitly name alternatives.
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 this tool is used when an inspector field on a component needs modification. It does not state when to prefer another tool, when not to use this one, or mention prerequisites like the component needing to be selected or identified first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tinkercad_start_simulationStart Circuits simulationA
Press Start Simulation in the open editor.
After starting, wait and call tinkercad_read_serial or tinkercad_screenshot to observe results.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly=false, idlepotent=false, and destructive=false, and the description does not contradict them. It adds a useful behavioral cue that results are observed after a wait via serial or screenshot, but it does not disclose side effects, restart behavior, or what happens when called without an open circuit.
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?
Two short sentences, no filler. The primary action is front-loaded and the follow-up observation step is stated directly. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool, this is mostly adequate: it says what to press and what to do after. However, it omits prerequisites, such as requiring an open circuit, and does not address edge cases like already-running simulations or how to stop. These gaps keep it below a 4.
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 parameters, so there is no parameter semantics burden for the description. The schema coverage is effectively complete, and the description correctly avoids inventing parameter details.
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 action phrase, 'Press Start Simulation', and identifies the target resource as 'the open editor'. Combined with the title 'Start Circuits simulation', this clearly indicates the tool's purpose and distinguishes it from siblings like tinkercad_stop_simulation.
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 useful post-invocation guidance by telling the agent to wait and then call tinkercad_read_serial or tinkercad_screenshot. However, it does not explicitly state when to use this tool versus alternatives such as tinkercad_stop_simulation, nor mention prerequisites like having a circuit already open.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tinkercad_stop_simulationStop Circuits simulationBIdempotent
Press Stop Simulation in the open editor.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey idempotent and non-destructive behavior, and the description adds the 'open editor' context. However, it does not explain side effects on the circuit/code or what happens when no simulation is running. There is no contradction with the annotations.
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 short sentence, front-loaded and free of filler. It is concise, though some of its wording repeats the title rather than adding new behavioral 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?
For a no-param operation it is mostly adequate, but it omits preconditions and failure/no-op behavior, and there is no output schema to fall back on. The missing usage context is more than a minor edge.
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?
There are zero parameters and schema coverage is effective 100%, so the description has no obligation to explain 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 identifies the action 'Press Stop Simulation' and scopes it to the open editor, and the title names the resource (simulation). It is clear enough to deflect from start_simulation, though phrased as a UI instruction rather than a declarative effect.
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 call this vs tinkercad_start_simulation or read_serial; no mention that a simulation must be running or that calling while stopped is safe/no-op. The only contextual clue is 'open editor'.
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
v1.0.0- First observed
tinkercad_add_component - First observed
tinkercad_build_circuit - First observed
tinkercad_connect_pins - First observed
tinkercad_delete_component - First observed
tinkercad_delete_wire - First observed
tinkercad_get_circuit - First observed
tinkercad_get_code - First observed
tinkercad_list_components - First observed
tinkercad_login_status - First observed
tinkercad_move_component - First observed
tinkercad_open_circuit - First observed
tinkercad_read_serial - First observed
tinkercad_screenshot - First observed
tinkercad_set_code - First observed
tinkercad_set_component_attribute - First observed
tinkercad_start_simulation - First observed
tinkercad_stop_simulation
TDQS
Each tool targets a clear editor action, and the descriptions make the intended usage explicit. Minor ambiguity exists between tinkercad_get_circuit (which can include code) and tinkercad_get_code, and between tinkercad_build_circuit and the primitive tools it wraps, but the documentation explains these relationships.
All tools share the tinkercad_ prefix and almost all use snake_case verb_noun names like open_circuit, add_component, and delete_wire. A couple of names deviate from the strict verb_noun pattern, such as tinkercad_login_status and tinkercad_screenshot, so the consistency is strong but not perfect.
With 17 tools, the set is slightly above the ideal 3-15 range, but every tool maps to a meaningful step in the Cireuits workflow: opening, inspecting, placing, wiring, coding, simulating, and observing. The convenience build_circuit tool adds some redundancy, but it is justified as a higher-level workflow over the primitives.
The tool surface covers the main build/edire/simulate lifecycle well: open, read, add, move, delete, wire, set attributes, write code, run simulation, read serial, and capture screenshots. Notable non-critical gaps include serial input, explicit save/export, undo/redo, and project-level operations like deleting or renaming circuits.
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
Run multi-step tasks in a real Chrome browser: persistent environments, live view, human takeover.
Live browser debugging for AI assistants — DOM, console, network via MCP.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser through Chrome DevTools. Provides browser automation, performance analysis, debugging capabilities, and network request monitoring.3,288,16550,932Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser for automation, debugging, performance analysis, network monitoring, and DOM interaction through Chrome DevTools Protocol.3,288,165Apache 2.0
- -licenseNot gradedqualityNot gradedmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser for automated debugging, performance analysis, and web interaction. It leverages Puppeteer and Chrome DevTools to provide capabilities like network monitoring, console logging, and automated browser actions.-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to fully control Google Chrome: navigate, click, fill forms, inspect DevTools, and manage tabs with parallel execution and session isolation.13MIT
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/sethski/tinkercad-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server