EasyGerber: AI PCB design, layout, and routing
by EasyGerber · remote · no sign-in to list tools · v0.1.1 · published by GitHub user EasyGerber
AI PCB design, layout, and routing
17 tools: 5 can delete or cancel things, 1 do something that can't be undone, 5 change things and 6 only read.
Scanned Oct 21, 2026
- Deletes or cancels5Claude Code: deny: see these tools
- Can't be undone1Claude Code: ask: see these tools
- Changes things5Claude Code: ask: see these tools
- Only reads6Claude Code: allow: see these tools
2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http easygerber https://www.easygerber.com/api/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnget_board
The server marks "get_board" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "get_board" says "get": a word for reading.
- Infosubmit_feedback
The input schema at properties.message.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.message.description: "...atically include private board content, credentials, transcripts or diagnostics."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
17 tools
Deletes or cancels 5Claude Code: deny
claim_guest_boardTransfers an existing guest board to the connected account using its original guestToken.No findings
Why it is in this group
- The description's first verb is "transfer": a word for a change that another call does not undo.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Transfers an existing guest board to the connected account using its original guestToken. An empty guest session has nothing to transfer; continue with the connected account without guestToken. Requires account authorization and an idle board. The transfer preserves the design, returns a new account board ID and retires guest access. Within 24 hours, repeating a successful claim with the same token and account returns the existing account board ID while that board remains owned by the account and available.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
- title: Save the guest board after account sign-in
delete_boardPermanently deletes the specified saved account board when the user requests its removal.No findings
Why it is in this group
- The name "delete_board" says "delete": a word for removing or ending something.
- The description says "Permanently deletes".
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
- title: Permanently delete an account board
generate_layoutStarts a durable layout job for a saved board at expectedRevision and returns without waiting for completion.No findings
Why it is in this group
- The name "generate_layout" says "generate": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Starts a durable layout job for a saved board at expectedRevision and returns without waiting for completion. Use after creating or editing a schematic; poll its exact generation ID with get_generation. Successful completion replaces the saved layout. A unique requestId supports identical retries. revision_conflict requires a fresh get_board; board_busy identifies an already active job to poll. Subject to normal compute capacity and board complexity limits, without AI credits. Guest access uses guestToken and excludes organization access.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
- title: Generate PCB layout
stop_generationCancels a queued or running layout generation belonging to the specified board; use get_generation when only checking progress.No findings
Why it is in this group
- The name "stop_generation" says "stop": a word for a change.
- The description's first verb is "cancel": a word for removing or ending something.
- The description says "cannot be undone".
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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. Guest access uses guestToken and excludes organization access.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
- title: Stop generation
update_boardEdits a saved board at expectedRevision; supply at least one of name, intent or boardEdits.No findings
Why it is in this group
- The name "update_board" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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 unique requestId supports identical retries. A stale expectedRevision causes a revision conflict. Thin intent format: each parts entry is an array of strings [id, dbId, value], with an optional fourth designator. id is the design-local part ID; dbId is the published catalog ID; value is the required value/display label. The optional designator overrides the printed id label. Each connections entry is an object {net, class, pins}; class is power, signal, or ground, and each pins entry is [partId, padId], using the design-local part ID and verified catalog pad ID as strings. Guest access uses guestToken and excludes organization access.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
- title: Edit board
Can't be undone 1Claude Code: ask
submit_feedbackSends a bug report, feature request or general feedback to EasyGerber only when the user asks or agrees to report it.1 finding
Why it is in this group
- The name "submit_feedback" says "submit": a word for a change.
- The description's first verb is "send": a word for sending, and what is sent cannot be taken back.
Findings
- Info
The input schema at properties.message.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.message.description: "...atically include private board content, credentials, transcripts or diagnostics."
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Submit EasyGerber feedback
Changes things 5Claude Code: ask
check_board_layoutChecks a current saved PCB layout at expectedRevision before export or review.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Checks a current saved PCB layout at expectedRevision before export or review. A missing or stale layout requires generate_layout first. 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. Guest access uses guestToken and excludes organization access.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Check PCB layout for blocking issues
create_boardCreates a new saved schematic from published catalog parts, verified pins and supported physical settings.No findings
Why it is in this group
- The name "create_board" says "create": a word for a change.
Description, as the server wrote it Creates a new saved schematic from published catalog parts, verified pins and supported physical settings. Account boards are personal unless organizationId is specified; a guest session supports one board. Use update_board for an existing board and generate_layout after creation to produce its PCB layout. A unique requestId identifies the operation and supports identical retries. Server hydration supplies footprints, models and manufacturing limits. Thin intent format: each parts entry is an array of strings [id, dbId, value], with an optional fourth designator. id is the design-local part ID; dbId is the published catalog ID; value is the required value/display label. The optional designator overrides the printed id label. Each connections entry is an object {net, class, pins}; class is power, signal, or ground, and each pins entry is [partId, padId], using the design-local part ID and verified catalog pad ID as strings. Guest access uses guestToken and excludes organization access.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Create board
export_boardCreates a private download of a fresh saved layout as a manufacturing ZIP or editable .egb file.No findings
Why it is in this group
- The description's first verb is "create": a word for a change.
Description, as the server wrote it Creates a private download of a fresh saved layout as a manufacturing ZIP or editable .egb file. Read get_board for expectedRevision; a missing or stale layout requires generate_layout and completion first. Inherited licensing requires changeNote. Each call creates a download artifact; links expire in 15 minutes. Guest access uses guestToken and excludes organization access.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- title: Export board files
get_boardReads the current revision, thin schematic, supported settings, physical context and layout freshness before editing, checking or exporting.1 finding
Why it is in this group
- The name "get_board" says "get": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "get_board" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "get_board" says "get": a word for reading.
Description, as the server wrote it Reads the current revision, thin schematic, supported settings, physical context and layout freshness before editing, checking or exporting. Use get_generation to poll an active job and check_board_layout to refresh validation. 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. Guest access uses guestToken and excludes organization access.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Read board
start_guest_sessionCreates a private session for one board without an account; use its guestToken with create_board to create the board.No findings
Why it is in this group
- The name "start_guest_session" says "start": a word for a change.
Description, as the server wrote it Creates a private session for one board without an account; use its guestToken with create_board to create the board. Reuse this task’s existing guest session or authorized account when available. Use claim_guest_board to save an existing guest board after sign-in. Returns guestToken, viewerUrl, limits and expiresAt; a null expiresAt means no scheduled expiration. Edits, layouts, checks, previews and both export formats have no lifetime count limits. Normal request-rate, compute-capacity and board-complexity limits apply. Starting a new session does not recover an earlier session.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- title: Start a guest board session
Only reads 6Claude Code: allow
get_generationPolls the exact layout generation ID returned by generate_layout for the same board.No findings
Why it is in this group
- The name "get_generation" says "get": a word for reading.
Description, as the server wrote it Polls the exact layout generation ID returned by generate_layout for the same board. While queued or running, wait pollAfterSeconds before polling again. Stop polling at completed, failed or cancelled; read get_board after completion before editing, checking or exporting. Use stop_generation to cancel rather than starting a replacement job. Guest access uses guestToken and excludes organization access.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Read generation status
get_partReturns a published catalog part, its catalog ID and verified pad IDs.No findings
Why it is in this group
- The name "get_part" says "get": a word for reading.
Description, as the server wrote it Returns a published catalog part, its catalog ID and verified pad IDs. Use a catalog ID from search_parts when needed pins or facts are missing; use search_parts to find alternatives. factQuery and factOffset select or page cached datasheet facts. An optional boardId applies that board’s strict Part List restriction, when enabled. Guest access uses guestToken and excludes organization access.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Get part and pins
get_profileReturns the connected account identity.No findings
Why it is in this group
- The name "get_profile" says "get": a word for reading.
Description, as the server wrote it Returns the connected account identity. Requires account authorization; unauthenticated calls request OAuth. For a new guest board, use start_guest_session instead of probing account identity.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Get EasyGerber profile
list_boardsLists accessible boards, most recently updated first.No findings
Why it is in this group
- The name "list_boards" says "list": a word for reading.
Description, as the server wrote it Lists accessible boards, most recently updated first. Account access returns personal boards unless organizationId is specified; guest access returns that session’s board. Continue with nextOffset until null, then use get_board for a selected board’s editable state. Guest access uses guestToken and excludes organization access.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: List boards
list_organizationsReturns the connected account’s organizations and membership roles.No findings
Why it is in this group
- The name "list_organizations" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: List organizations
search_partsSearches published catalog components to find IDs for board authoring or get_part.No findings
Why it is in this group
- The name "search_parts" says "search": a word for reading.
Description, as the server wrote it Searches published catalog components to find IDs for board authoring or get_part. Supplied filters apply together; query ranks matching candidates, while factQuery only selects cached facts for those candidates. An optional boardId 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 boardId 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. Guest access uses guestToken and excludes organization access.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Search published parts
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.1.1. Values in angle brackets are yours to fill in.
claude mcp add --transport http easygerber https://www.easygerber.com/api/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__easygerber__get_profile",
"mcp__easygerber__list_organizations",
"mcp__easygerber__search_parts",
"mcp__easygerber__get_part",
"mcp__easygerber__list_boards",
"mcp__easygerber__get_generation"
],
"ask": [
"mcp__easygerber__submit_feedback",
"mcp__easygerber__get_board",
"mcp__easygerber__create_board",
"mcp__easygerber__check_board_layout",
"mcp__easygerber__export_board",
"mcp__easygerber__start_guest_session"
],
"deny": [
"mcp__easygerber__update_board",
"mcp__easygerber__delete_board",
"mcp__easygerber__generate_layout",
"mcp__easygerber__stop_generation",
"mcp__easygerber__claim_guest_board"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as easygerber. Review it before you use it.
