EasyGerber: AI PCB design, layout, and routing
REMOTE · WWW.EASYGERBER.COM
AI PCB design, layout, and routing
Available components
Last scanned (19 hours ago)
Scores higher than 53% of remote servers
Reachable. Last reached 4 Nov 2026.
Category IoT and Hardware
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (get_board). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability62
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 5255 tokens (~350/item across 15 items; 15 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management19
- Stability check failed: schema churn in the 18 days we've observed: 2 tool removals, 8 breaking changes, 0 auth/transport breaks, 2 additions. See how to fix → Fail
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 16 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Nov 26 −5
- Stability: 0.53 → fail ▼ security
- A breaking change shipped without a version bump: still 0.1.0 ▼ security
- Tool “claim_guest_board” was removed ▼ security
- Tool “start_guest_session” was removed ▼ security
- The server rewrote its instructions, which are the text every model session reads security
- Tool “check_board_layout” rewrote its description, which is the text the model reads security
- Tool “create_board” rewrote its description, which is the text the model reads security
- Tool “export_board” rewrote its description, which is the text the model reads security
- Tool “generate_layout” rewrote its description, which is the text the model reads security
- Tool “get_board” rewrote its description, which is the text the model reads security
- Tool “get_generation” rewrote its description, which is the text the model reads security
- Tool “get_part” rewrote its description, which is the text the model reads security
- Tool “get_profile” rewrote its description, which is the text the model reads security
- Tool “list_boards” rewrote its description, which is the text the model reads security
- Tool “search_parts” rewrote its description, which is the text the model reads security
- Tool “stop_generation” rewrote its description, which is the text the model reads security
- Tool “update_board” rewrote its description, which is the text the model reads security
- Tool “get_board” is now declared destructive security
- Schema quality: 290 → 350 ▼ functional
- “check_board_layout” added a required parameter “boardRef”, so existing callers break ▼ functional
- “create_board” added a required parameter “boardRef”, so existing callers break ▼ functional
- “delete_board” added a required parameter “boardRef”, so existing callers break ▼ functional
- “export_board” added a required parameter “boardRef”, so existing callers break ▼ functional
- “generate_layout” added a required parameter “boardRef”, so existing callers break ▼ functional
- “get_board” added a required parameter “boardRef”, so existing callers break ▼ functional
- “get_generation” added a required parameter “boardRef”, so existing callers break ▼ functional
- “stop_generation” added a required parameter “boardRef”, so existing callers break ▼ functional
- “update_board” added a required parameter “boardRef”, so existing callers break ▼ functional
- “check_board_layout” dropped the required parameter “boardId” ▼ functional
- “delete_board” dropped the required parameter “boardId” ▼ functional
- “export_board” dropped the required parameter “boardId” ▼ functional
- “generate_layout” dropped the required parameter “boardId” ▼ functional
- “get_board” dropped the required parameter “boardId” ▼ functional
- “get_generation” dropped the required parameter “boardId” ▼ functional
- “stop_generation” dropped the required parameter “boardId” ▼ functional
- “update_board” dropped the required parameter “boardId” ▼ functional
- “get_part” added an optional parameter “boardRef” cosmetic
- “list_boards” added an optional parameter “boardRef” cosmetic
- “search_parts” added an optional parameter “boardRef” cosmetic
- “check_board_layout” dropped the optional parameter “guestToken” cosmetic
- “create_board” dropped the optional parameter “guestToken” cosmetic
- “export_board” dropped the optional parameter “guestToken” cosmetic
- “generate_layout” dropped the optional parameter “guestToken” cosmetic
- “get_board” dropped the optional parameter “guestToken” cosmetic
- “get_generation” dropped the optional parameter “guestToken” cosmetic
- “get_part” dropped the optional parameter “boardId” cosmetic
- “get_part” dropped the optional parameter “guestToken” cosmetic
- “list_boards” dropped the optional parameter “guestToken” cosmetic
- “search_parts” dropped the optional parameter “boardId” cosmetic
- “search_parts” dropped the optional parameter “guestToken” cosmetic
- “stop_generation” dropped the optional parameter “guestToken” cosmetic
- “update_board” dropped the optional parameter “guestToken” cosmetic
- “get_generation” made “generationId” optional cosmetic
- 2 Nov 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “check_board_layout” rewrote its description, which is the text the model reads security
- Tool “export_board” rewrote its description, which is the text the model reads security
- Tool “start_guest_session” rewrote its description, which is the text the model reads security
- 1 Nov 26 +1
- Tool “create_board” rewrote its description, which is the text the model reads security
- Tool “export_board” rewrote its description, which is the text the model reads security
- Tool “update_board” rewrote its description, which is the text the model reads security
- “create_board” reworded the description of “boardEdits” cosmetic
- “get_part” reworded the description of “factOffset” cosmetic
- “get_part” reworded the description of “factQuery” cosmetic
- “get_part” reworded the description of “id” cosmetic
- “search_parts” reworded the description of “capacitance” cosmetic
- “search_parts” reworded the description of “category” cosmetic
- “search_parts” reworded the description of “frequency” cosmetic
- “search_parts” reworded the description of “inductance” cosmetic
- “search_parts” reworded the description of “jlcpcbBasic” cosmetic
- “search_parts” reworded the description of “resistance” cosmetic
- “search_parts” reworded the description of “subcategory” cosmetic
- “search_parts” reworded the description of “voltageRating” cosmetic
- “update_board” reworded the description of “boardEdits” cosmetic
- 30 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.
- 25 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 24 Oct 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “create_board” rewrote its description, which is the text the model reads security
- Tool “generate_layout” rewrote its description, which is the text the model reads security
- Tool “get_part” rewrote its description, which is the text the model reads security
- Tool “search_parts” rewrote its description, which is the text the model reads security
- Tool “start_guest_session” rewrote its description, which is the text the model reads security
- Tool “update_board” rewrote its description, which is the text the model reads security
- Schema quality: 249 → 275 ▼ functional
- “check_board_layout” reworded the description of “expectedRevision” cosmetic
- “delete_board” reworded the description of “expectedRevision” cosmetic
- “generate_layout” reworded the description of “expectedRevision” cosmetic
- “update_board” reworded the description of “expectedRevision” cosmetic
- 23 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Probed https://www.easygerber.com/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=*.easygerber.com | CN=YR2,O=Let's Encrypt,C=US | 7 Sept 2026 | 6 Dec 2026 | RSA 2048 | SHA256-RSA | 50391ba71006f8070f98a22f699ce1a8864 |
| SANs: *.easygerber.com, easygerber.com | ||||||
| CN=YR2,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | 4ebd24947e24d394802d84a52fd5b319 |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of www.easygerber.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| easygerber.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000 |
| x-content-type-options | nosniff |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://www.easygerber.com/api/mcp | Verified | 200 | |
| http (plaintext) | http://www.easygerber.com/api/mcp | HTTPS enforced | 308 | https://www.easygerber.com/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
check_board_layout Check PCB layout for blocking issues ~242
Checks a saved PCB layout at expectedRevision for manufacturing or layout review. Its geometry and applied electrical requirements must both be current. A missing or stale layout requires generate_layout and completion first; electrical_requirements_not_applied also requires regeneration before checking or manufacturing export. Reuses a current assessment or computes and saves one, which requires write access and normal compute capacity. If the board changes during the check, read get_board again. Returns hasBlockingIssues and actionable blockingIssues; no numeric score or deductions.
| Name | Type | Req | Description |
|---|---|---|---|
| boardRef | string | yes | Private board reference. For a new board generate 32 random bytes, encode as unpadded base64url, and prepend egbr1_. Keep this same value for creation retries and every later board operation. Copy re… |
| expectedRevision | integer | yes | Latest saved revision from create_board, update_board or get_board. Reuse it if no intervening change is known. A mismatch returns revision_conflict; read the board again before preparing a new opera… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | yes | – |
No examples provided.
create_board Create board ~824
Creates a saved schematic from published catalog parts and verified pins. Supply a fresh private boardRef, name, requestId and intent. To make boardRef, generate 32 random bytes locally, encode as unpadded base64url and prepend egbr1_. The server uses the connected account when available; otherwise it establishes private board access automatically. Keep this SAME boardRef for all later reads, edits, status and export calls. Store it in this conversation or supported private execution state before submitting; do not discard it between isolated calls. Identical retries with the same boardRef, requestId and arguments recover the original creation. Do not use a new reference to recover existing work. Return the complete private board link to this user after creation so later turns can continue it; never log private references or put them in source files. Omit boardEdits unless physical customization is requested; server defaults supply settings, footprints, models and manufacturing limits. Account boards are personal unless organizationId is specified. Use returned revision as expectedRevision when starting layout. Use update_board for existing work. Thin intent format: each parts entry is an array of strings [id, dbId, value], with an optional fourth designator. Choose id as the design-local part ID; copy dbId from the catalog result's id; value is the required value/display label. Omit the fourth designator when it matches id. Each connections entry is {net, class, pins}; class is power, signal, or ground. Each pins entry is [partId, padId]: use the design-local part ID and copy padId from the catalog result's pins[].number, both as strings. Optional pinCurrentRequirements uses those same partId and padId identities with requiredCurrentA in amperes and direction into, out, or bidirectional relative to the net. Omit the list to retain existing values; a supplied list replaces it, and [] clears it. If validation rejects the proposal, preserve the schematic and valid ca…
| Name | Type | Req | Description |
|---|---|---|---|
| boardEdits | object | – | Physical patch; omitted fields retain existing values. settings changes only supplied app-supported settings (dimensions in mm). outline replaces the outline with a library choice or complete generat… |
| boardRef | string | yes | Private board reference. For a new board generate 32 random bytes, encode as unpadded base64url, and prepend egbr1_. Keep this same value for creation retries and every later board operation. Copy re… |
| intent | object | yes | Complete initial schematic using published catalog IDs and verified pins. Parts and connections use the thin intent format described by this tool. |
| name | string | yes | Display name for the board. |
| organizationId | string | – | Organization ID from list_organizations. Omit for personal account boards; guest sessions cannot use organizations. |
| requestId | string | yes | New UUID for this operation. Reuse it with identical arguments when retrying an uncertain result; use a new UUID for a different operation. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | yes | – |
No examples provided.
delete_board Permanently delete an account board ~240
Permanently deletes the specified saved account board when the user requests its removal. Requires explicit boards:delete authorization and personal ownership or organization owner/admin access; guest boards are unsupported. Read get_board first and pass its current revision. Deletion cancels active generation jobs and cannot be undone. A revision conflict requires reading the board again. Missing, already deleted or inaccessible boards return the same not_found error; this does not confirm that an earlier request succeeded. No requestId or replay receipt is supported.
| Name | Type | Req | Description |
|---|---|---|---|
| boardRef | string | yes | Private board reference. For a new board generate 32 random bytes, encode as unpadded base64url, and prepend egbr1_. Keep this same value for creation retries and every later board operation. Copy re… |
| expectedRevision | integer | yes | Latest saved revision from create_board, update_board or get_board. Reuse it if no intervening change is known. A mismatch returns revision_conflict; read the board again before preparing a new opera… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | yes | – |
No examples provided.
export_board Export board files ~332
Creates a stable private download of a saved board as a manufacturing ZIP or editable .egb project backup. Read get_board for expectedRevision. Use format egb directly for project backups, including empty or incomplete projects and unapplied geometry or electrical changes; no layout generation or check is required. Manufacturing ZIPs require a current saved layout with applied electrical requirements; generate and wait for completion when needed, then read the new revision. Inherited licensing requires changeNote. New exports require current board access. Issued download links have no automatic expiry and retain this exact export after board edits, deletion, guest claim or cleanup. Only explicit download-link revocation or deletion of the exported file ends access. Keep each complete private URL unchanged, including its fragment; anyone with it can download the file.
| Name | Type | Req | Description |
|---|---|---|---|
| boardRef | string | yes | Private board reference. For a new board generate 32 random bytes, encode as unpadded base64url, and prepend egbr1_. Keep this same value for creation retries and every later board operation. Copy re… |
| changeNote | string | – | Description of modifications, required when get_board returns inherited licensing. Added to the exported license notices. |
| expectedRevision | integer | yes | Revision from get_board. A mismatch returns revision_conflict; read the board again before exporting. |
| format | string | yes | manufacturing: ZIP with Gerber, drill, BOM and placement files. egb: editable EasyGerber board file. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | yes | – |
No examples provided.
generate_layout Generate PCB layout ~283
Starts one durable layout job for boardRef at expectedRevision and returns generation.id and generation.status without waiting. Use the latest revision from create_board, update_board or get_board. Read status with get_generation using the same boardRef; do not regenerate to inspect progress. Successful completion replaces the saved layout. A requestId supports IDENTICAL retries only; changed arguments need a new requestId. revision_conflict requires get_board; board_busy identifies the existing job to poll. Subject to normal compute capacity and board complexity limits, without AI credits.
| Name | Type | Req | Description |
|---|---|---|---|
| boardRef | string | yes | Private board reference. For a new board generate 32 random bytes, encode as unpadded base64url, and prepend egbr1_. Keep this same value for creation retries and every later board operation. Copy re… |
| expectedRevision | integer | yes | Latest saved revision from create_board, update_board or get_board. Reuse it if no intervening change is known. A mismatch returns revision_conflict; read the board again before preparing a new opera… |
| requestId | string | yes | New UUID for this operation. Reuse it with identical arguments when retrying an uncertain result; use a new UUID for a different operation. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | yes | – |
No examples provided.
get_board Read board ~262
Reads the current revision, thin schematic, supported settings, physical context, layout freshness and latest layout job from one saved-state snapshot. Use the same boardRef before editing, checking or exporting. A completed older job does not imply a current layout. Use get_generation with boardRef for status, never generate_layout as a status probe. After account connection this read saves private work to the account when permitted; keep the same reference and use the returned revision. includePreview optionally adds a saved-layout image. Account cache misses render and store a private image; guest previews render per request without an image cache. Previewing does not change the board design or revision. Normal compute capacity limits apply.
| Name | Type | Req | Description |
|---|---|---|---|
| boardRef | string | yes | Private board reference. For a new board generate 32 random bytes, encode as unpadded base64url, and prepend egbr1_. Keep this same value for creation retries and every later board operation. Copy re… |
| includePreview | boolean | – | Include an image of the current saved layout; omitted or false skips rendering. Returns preview: null when no current layout is available. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | yes | – |
No examples provided.
get_generation Read generation status ~214
Reads stored layout generation status using the same boardRef. Omit generationId to read the active/latest layout job; supply it only to inspect that exact job. Returns generation:null if no layout job exists. While queued or running, wait pollAfterSeconds; stop polling at completed, failed or cancelled. Read get_board for current saved layout and revision after completion. Never call generate_layout to inspect status. Polling does not save private work to an account.
| Name | Type | Req | Description |
|---|---|---|---|
| boardRef | string | yes | Private board reference. For a new board generate 32 random bytes, encode as unpadded base64url, and prepend egbr1_. Keep this same value for creation retries and every later board operation. Copy re… |
| generationId | string | – | Layout generation ID returned by generate_layout for this same board. Use the exact job ID when polling or stopping it. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | yes | – |
No examples provided.
get_part Get part and pins ~221
Returns a published catalog part and verified pins. Skip this call when search_parts already supplied the needed pins and facts. Use the selected catalog result’s id; returned pins[].number is the padId used in board connections. Use search_parts to find alternatives. factQuery and factOffset select or page cached datasheet facts. An optional boardRef applies that board’s strict Part List restriction, when enabled.
| Name | Type | Req | Description |
|---|---|---|---|
| boardRef | string | – | Private board reference. For a new board generate 32 random bytes, encode as unpadded base64url, and prepend egbr1_. Keep this same value for creation retries and every later board operation. Copy re… |
| factOffset | integer | – | Continue at nextFactOffset with the same factQuery. |
| factQuery | string | – | Terms for relevant facts omitted from the supplied bundle. |
| id | string | yes | Catalog ID returned by search_parts. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | yes | – |
No examples provided.
get_profile Get EasyGerber profile ~40
Returns the connected account identity. Requires account authorization; unauthenticated calls request OAuth. Public catalog browsing and creating a new board do not require probing account identity.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | yes | – |
No examples provided.
list_boards List boards ~242
Lists accessible boards with their private boardRef, most recently updated first. A supplied boardRef selects only that board. Account access returns personal boards unless organizationId is specified. Without access, returns guidance, not a claim that an account has no boards. Continue existing work using its original boardRef or owning account. Continue with nextOffset until null, then use get_board for the selected board.
| Name | Type | Req | Description |
|---|---|---|---|
| boardRef | string | – | Private board reference. For a new board generate 32 random bytes, encode as unpadded base64url, and prepend egbr1_. Keep this same value for creation retries and every later board operation. Copy re… |
| limit | integer | – | Maximum boards to return; defaults to 20. |
| offset | integer | – | Zero-based offset; defaults to 0. Continue with returned nextOffset; null means no further page. |
| organizationId | string | – | Organization ID from list_organizations. Omit for personal account boards; guest sessions cannot use organizations. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | yes | – |
No examples provided.
list_organizations List organizations ~46
Returns the connected account’s organizations and membership roles. Requires account authorization. Use the returned organizationId with list_boards or create_board for organization work; omit organizationId for personal boards.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | yes | – |
No examples provided.
search_parts Search published parts ~527
Searches published catalog components. The first candidate includes verified pins when available; other candidates may omit them. Reuse returned IDs, pins and facts; call get_part only when the selected candidate lacks needed pins or facts. Supplied filters apply together; query ranks matching candidates, while factQuery only selects cached facts for those candidates. An optional boardRef applies that board’s strict Part List restriction, when enabled. Check candidates against the requested component type and specifications. If results are unrelated, make at most two retries for that part using a simpler component name or a relevant category from the input schema. Preserve required specifications and explicit restrictions, including any boardRef Part List restriction, on every retry. If no suitable part is found, report that you could not find a suitable part rather than claiming the catalog lacks it.
| Name | Type | Req | Description |
|---|---|---|---|
| boardRef | string | – | Private board reference. For a new board generate 32 random bytes, encode as unpadded base64url, and prepend egbr1_. Keep this same value for creation retries and every later board operation. Copy re… |
| capacitance | number | – | Exact farads (1e-7 = 100 nF). |
| category | string | – | Catalog category. |
| factQuery | string | – | Cached-fact terms only; requires query. Omit for filter-only searches. It never changes which parts match. |
| frequency | number | – | Hertz (8e6 = 8 MHz). |
| inductance | number | – | Exact henries. |
| jlcpcbBasic | boolean | – | Basic-only when true; otherwise leave unset. |
| limit | integer | – | Maximum catalog candidates to return, from 1 to 20; defaults to 3. |
| mountingType | string | – | smt: surface mount; tht: through-hole; mixed: both. |
| package | string | – | Exact catalog label; use query for package families. |
| query | string | – | PCB selection terms: MPN, manufacturer, description or package family. For exact MPNs omit unverified categories unless user-required. Preserve explicit filters and Part Lists; factQuery does not sel… |
| resistance | number | – | Exact ohms (10000 = 10 kΩ). |
| subcategory | string | – | Subcategory, e.g. chip_resistor, mlcc, ldo. |
| voltageRating | number | – | Rated volts. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | array | yes | – |
No examples provided.
stop_generation Stop generation ~192
Cancels a queued or running layout generation belonging to the specified board; use get_generation when only checking progress. A completed, failed or already cancelled job retains its terminal status. Cancellation cannot be undone; starting again requires a new job. It can update the saved board revision, so read get_board before further edits. A later job is unaffected.
| Name | Type | Req | Description |
|---|---|---|---|
| boardRef | string | yes | Private board reference. For a new board generate 32 random bytes, encode as unpadded base64url, and prepend egbr1_. Keep this same value for creation retries and every later board operation. Copy re… |
| generationId | string | yes | Layout generation ID returned by generate_layout for this same board. Use the exact job ID when polling or stopping it. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | yes | – |
No examples provided.
submit_feedback Submit EasyGerber feedback ~281
Sends a bug report, feature request or general feedback to EasyGerber only when the user asks or agrees to report it. Send only the approved message; never automatically attach private board content, raw diagnostics, transcripts or exports. No account, board or guest session is required. A connected account attributes the report to that account; otherwise an optional existing guestToken attributes it to that guest. Reuse requestId with the identical category and message on retries. Returns a submission receipt, without promising a response. Account feedback is limited to 10/hour and 50/day; guest and anonymous feedback share those limits by network.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | yes | bug reports a problem; feature_request proposes a change; general shares other EasyGerber feedback. |
| guestToken | string | – | Optional existing guest-session capability for attribution when no account is connected. Omit for anonymous or account feedback; never start a session solely to submit feedback or print this token. I… |
| message | string | yes | User-approved feedback, 10–2000 Unicode characters after trimming. Include only what the user agreed to send; do not automatically include private board content, credentials, transcripts or diagnosti… |
| requestId | string | yes | Unique UUID for this report. Reuse it with the identical category and message after an uncertain result; use a new UUID for a different report. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | yes | – |
No examples provided.
update_board Edit board ~716
Edits a saved board at expectedRevision; supply at least one of name, intent or boardEdits. Read get_board first. Omitted fields are preserved; schematic edits require the complete replacement thin intent, while boardEdits is a physical patch. Schematic changes can discard an old layout; physical changes can make it stale. Use generate_layout if a current layout is needed afterward. A stale expectedRevision requires a fresh get_board. Thin intent format: each parts entry is an array of strings [id, dbId, value], with an optional fourth designator. Choose id as the design-local part ID; copy dbId from the catalog result's id; value is the required value/display label. Omit the fourth designator when it matches id. Each connections entry is {net, class, pins}; class is power, signal, or ground. Each pins entry is [partId, padId]: use the design-local part ID and copy padId from the catalog result's pins[].number, both as strings. Optional pinCurrentRequirements uses those same partId and padId identities with requiredCurrentA in amperes and direction into, out, or bidirectional relative to the net. Omit the list to retain existing values; a supplied list replaces it, and [] clears it. If validation rejects the proposal, preserve the schematic and valid catalog parts, correct the returned detailed issues, and keep the same boardRef. Use a new requestId when input changes; reuse the same requestId and arguments for an unchanged retry. Research again only when an issue needs missing part or pin information.
| Name | Type | Req | Description |
|---|---|---|---|
| boardEdits | object | – | Physical patch; omitted fields retain existing values. settings changes only supplied app-supported settings (dimensions in mm). outline replaces the outline with a library choice or complete generat… |
| boardRef | string | yes | Private board reference. For a new board generate 32 random bytes, encode as unpadded base64url, and prepend egbr1_. Keep this same value for creation retries and every later board operation. Copy re… |
| expectedRevision | integer | yes | Latest saved revision from create_board, update_board or get_board. Reuse it if no intervening change is known. A mismatch returns revision_conflict; read the board again before preparing a new opera… |
| intent | object | – | Complete replacement schematic, including every part and connection to retain. Omit for name-only or physical-only edits. |
| name | string | – | Display name for the board. |
| requestId | string | yes | New UUID for this operation. Reuse it with identical arguments when retrying an uncertain result; use a new UUID for a different operation. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | yes | – |
No examples provided.
How do I install the EasyGerber: AI PCB design, layout, and routing MCP server?
EasyGerber: AI PCB design, layout, and routing is a hosted endpoint at https://www.easygerber.com/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · www.easygerber.com
claude mcp add --transport http easygerber-easygerber 'https://www.easygerber.com/api/mcp'
What is the EasyGerber: AI PCB design, layout, and routing MCP server?
EasyGerber: AI PCB design, layout, and routing is an MCP server listed in the public MCP registry as io.github.EasyGerber/easygerber. AI PCB design, layout, and routing. This page covers its hosted endpoint (https://www.easygerber.com/api/mcp).
Is the EasyGerber: AI PCB design, layout, and routing MCP server safe to use?
EasyGerber: AI PCB design, layout, and routing scores 67 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the EasyGerber: AI PCB design, layout, and routing MCP server expose?
EasyGerber: AI PCB design, layout, and routing exposes 15 tools: submit_feedback, get_profile, list_organizations, search_parts, get_part, and 10 more. Their descriptions and schemas cost roughly 4,662 tokens of context every time the server is loaded.
Does the EasyGerber: AI PCB design, layout, and routing MCP server require authentication?
No. We connected to EasyGerber: AI PCB design, layout, and routing without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the EasyGerber: AI PCB design, layout, and routing MCP server still maintained?
EasyGerber: AI PCB design, layout, and routing is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.