Skip to main content
Glama
sethski

tinkercad-mcp-server

by sethski

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

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-server

2. Install and build

npm install
npx playwright install chromium
npm run build

npm run build creates dist/index.js. That file is what Cursor, Claude, and Codex will launch.

3. Sign in to Tinkercad

npm start

A 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.js

  • macOS / 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

  1. Open Cursor Settings → MCP

  2. Or create .cursor/mcp.json in this project (a template is already there)

  3. Paste:

{
  "mcpServers": {
    "tinkercad-circuits": {
      "command": "node",
      "args": ["REPLACE_WITH_FULL_PATH_TO_dist/index.js"]
    }
  }
}
  1. Save, then reload MCP servers (or restart Cursor)

  2. Confirm tinkercad-circuits is on and lists tools

Claude Desktop

  1. Open the Claude Desktop config file:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

  2. Merge the mcpServers block from clients/claude-desktop.json

  3. Put your real dist/index.js path in args

  4. Restart Claude Desktop

Codex

  1. Open ~/.codex/config.toml (or your project Codex config)

  2. Copy clients/codex-config.toml

  3. Put your real dist/index.js path in args

  4. Restart Codex

6. Check that it works

From this folder:

npm run list-tools

You 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?

tinkercad_login_status

Open or create a circuit

tinkercad_open_circuit (target = URL, thing id, or new)

See parts, wires, code

tinkercad_get_circuit

Screenshot the editor

tinkercad_screenshot

Known part names

tinkercad_list_components

Add / move / delete a part

tinkercad_add_component, tinkercad_move_component, tinkercad_delete_component

Wire or unwire

tinkercad_connect_pins, tinkercad_delete_wire

Resistance, color, etc.

tinkercad_set_component_attribute

Read or write Arduino code

tinkercad_get_code, tinkercad_set_code

Run / stop sim, read serial

tinkercad_start_simulation, tinkercad_stop_simulation, tinkercad_read_serial

Place, wire, and code in one go

tinkercad_build_circuit

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

TINKERCAD_PROFILE_DIR

Chrome profile folder (default: .browser-profile/ in this repo)

TINKERCAD_SCREENSHOT_DIR

Where screenshots are saved

TINKERCAD_HEADED=0

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 UI

How it works

Cursor / Claude / Codex
        │  stdio
        ▼
tinkercad-mcp-server (Node)
        │  Playwright
        ▼
Chrome (saved login) → tinkercad.com Circuits editor

Details 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 tools
tinkercad_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

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoDrop X on the breadboard canvas, pixels from the left
yNoDrop Y on the breadboard canvas, pixels from the top
componentYesCatalog id or search text. Examples: arduino_uno_r3, led, resistor
response_formatNoOutput format: markdown for humans, json for machine processingmarkdown

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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" } ]

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNo
titleNo
wiresNo
start_newNoIf true, open a new circuit before building
componentsYes
response_formatNoOutput format: markdown for humans, json for machine processingmarkdown

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 pinsA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesDestination pin as componentId.pinName, e.g. led-1.anode
fromYesSource pin as componentId.pinName, e.g. arduino_uno_r3.D13 or led-1.anode
response_formatNoOutput format: markdown for humans, json for machine processingmarkdown

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 componentA
DestructiveIdempotent

Select a component and delete it from the open circuit.

Args:

  • component_id (string)

  • response_format

This removes the part and its attached wires.

ParametersJSON Schema
NameRequiredDescriptionDefault
component_idYesId from tinkercad_get_circuit
response_formatNoOutput format: markdown for humans, json for machine processingmarkdown

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 wireB
DestructiveIdempotent

Select a wire by id and delete it.

Args:

  • wire_id (string): Id from tinkercad_get_circuit

  • response_format

ParametersJSON Schema
NameRequiredDescriptionDefault
wire_idYesWire id from tinkercad_get_circuit
response_formatNoOutput format: markdown for humans, json for machine processingmarkdown

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 circuitA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_codeNoInclude Arduino sketch text
include_pinsNoInclude pin coordinates for each component
include_serialNoInclude serial monitor text if visible
response_formatNoOutput format: markdown for humans, json for machine processingmarkdown

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 codeA
Read-onlyIdempotent

Open the Code panel, switch to Text mode, and return the sketch.

Args:

  • response_format

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNoOutput format: markdown for humans, json for machine processingmarkdown

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 componentsA
Read-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')

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional filter such as led, arduino, resistor
response_formatNoOutput format: markdown for humans, json for machine processingmarkdown

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 statusA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNoOutput format: markdown for humans, json for machine processingmarkdown

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 componentB
Idempotent

Drag an existing component to a new canvas position.

Args:

  • component_id (string): Id from tinkercad_get_circuit

  • x, y (number)

  • response_format

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
component_idYesId from tinkercad_get_circuit
response_formatNoOutput format: markdown for humans, json for machine processingmarkdown

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 circuitA
Idempotent

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:

Error Handling:

  • Login wall: sign in in Chrome, then retry

  • Non-Tinkercad URLs are rejected

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesCircuit URL, Tinkercad thing id, or 'new' to create a circuit from the dashboard
response_formatNoOutput format: markdown for humans, json for machine processingmarkdown

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 monitorA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
wait_msNoHow long to wait for serial output before reading
response_formatNoOutput format: markdown for humans, json for machine processingmarkdown

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 editorA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 codeA
DestructiveIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesFull Arduino sketch to write into the Text code panel

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 attributeB
Idempotent

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesInspector field, e.g. resistance, color, value
valueYesNew value, e.g. 220 or red
component_idYes
response_formatNoOutput format: markdown for humans, json for machine processingmarkdown

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 simulationB
Idempotent

Press Stop Simulation in the open editor.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 17 tool updatesv1.0.0
    • First observedtinkercad_add_component
    • First observedtinkercad_build_circuit
    • First observedtinkercad_connect_pins
    • First observedtinkercad_delete_component
    • First observedtinkercad_delete_wire
    • First observedtinkercad_get_circuit
    • First observedtinkercad_get_code
    • First observedtinkercad_list_components
    • First observedtinkercad_login_status
    • First observedtinkercad_move_component
    • First observedtinkercad_open_circuit
    • First observedtinkercad_read_serial
    • First observedtinkercad_screenshot
    • First observedtinkercad_set_code
    • First observedtinkercad_set_component_attribute
    • First observedtinkercad_start_simulation
    • First observedtinkercad_stop_simulation

TDQS

A3.7/5.0
Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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,165
    Apache 2.0
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables 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.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to fully control Google Chrome: navigate, click, fill forms, inspect DevTools, and manage tabs with parallel execution and session isolation.
    13
    MIT

Latest Blog Posts

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