protogrid

Search / io.github.EasyGerber/easygerber

EasyGerber: AI PCB design, layout, and routing

R0· no sign-in

AI PCB design, layout, and routing

v0.1.1 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality87new
Trust96of 100
Uptime, 30 days100%
Latency p50448 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "easygerber": {
      "type": "http",
      "url": "https://www.easygerber.com/api/mcp"
    }
  }
}
claude mcp add --transport http easygerber https://www.easygerber.com/api/mcp
[mcp_servers.easygerber]
url = "https://www.easygerber.com/api/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "easygerber": {
      "type": "remote",
      "url": "https://www.easygerber.com/api/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "easygerber": {
      "type": "http",
      "url": "https://www.easygerber.com/api/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=easygerber&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vd3d3LmVhc3lnZXJiZXIuY29tL2FwaS9tY3AifQ%3D%3D"
}
{
  "servers": {
    "easygerber": {
      "type": "http",
      "url": "https://www.easygerber.com/api/mcp"
    }
  }
}
{
  "mcpServers": {
    "easygerber": {
      "httpUrl": "https://www.easygerber.com/api/mcp"
    }
  }
}
extensions:
  "easygerber":
    enabled: true
    name: "easygerber"
    type: streamable_http
    uri: "https://www.easygerber.com/api/mcp"
    timeout: 300

Quality 87 / 100new

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene86 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length1 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations17 of 17 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • warn
    tools.token_costabout 12,889 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stabilityn/a · weight 15
  • n/a
    stability.changes, stability.rug_pulltool history recorded for 1 of the 7 days needed
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

17 tools, about 12,889 tokens to load them all · tool set a0e99b766c33 · tools last changed 2026-10-18 · checked 2026-10-19 15:48 UTC

Tool changes

  • start_guest_sessionchangeddescription
    before

    Creates a private session for one board without an account. 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.

    after · 68% of words in common

    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.

  • export_boardchangeddescription, input schema
    before

    Exports a fresh saved layout as a manufacturing ZIP or .egb file. Licensing restrictions and any required changeNote are enforced. Download links expire in 15 minutes. Guest access uses guestToken and excludes organization access.

    after · 50% of words in common

    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.

  • check_board_layoutchangeddescription, input schemameaning changed
    before

    Checks the authoritative saved PCB layout at expectedRevision for blocking design issues subject to normal compute capacity limits. Returns hasBlockingIssues and actionable blockingIssues; no numeric score or deductions. Guest access uses guestToken and excludes organization access.

    after · 44% of words in common

    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.

  • stop_generationchangeddescription, input schemameaning changed
    before

    Requests cancellation of the specified generation. Cancellation cannot be undone; starting again requires a new job. A later job is unaffected. Guest access uses guestToken and excludes organization access.

    after · 40% of words in common

    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.

  • get_generationchangeddescription, input schemameaning changed
    before

    Returns the status and progress of the specified generation ID on its board, the saved board revision, and a polling interval while the job is active. Guest access uses guestToken and excludes organization access.

    after · 25% of words in common

    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.

  • generate_layoutchangeddescription, input schema
    before

    Starts a durable layout job for the saved expectedRevision and returns its generation ID without waiting for completion. Successful completion replaces the saved layout. A unique requestId identifies the operation and supports identical retries. Subject to normal compute capacity and board complexity limits, without AI credits. Guest access uses guestToken and excludes organization access.

    after · 67% of words in common

    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.

  • delete_boardadded

    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.

  • update_boardchangeddescription, input schema
    before

    Edits a saved board at expectedRevision. Schematic edits require the complete replacement thin intent. A unique requestId identifies the operation and 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.

    after · 70% of words in common

    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.

  • create_boardchangeddescription, input schema
    before

    Creates a personal board, or an organization board when organizationId is specified, from published catalog parts, verified pins and supported physical settings. 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.

    after · 77% of words in common

    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.

  • get_boardchangeddescription, input schemameaning changed
    before

    Returns the current revision, thin schematic, supported settings, physical context and layout freshness. includePreview optionally adds a saved-layout preview image. Account previews are cached privately; guest previews are rendered per request. Normal compute capacity limits apply. Guest access uses guestToken and excludes organization access.

    after · 49% of words in common

    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.

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 96 / 100

provenance85
liveness100
freshness100
hygiene100

+repository +namespace-matches-repo +website -thin-description +reachable +uptime-100% +updated-2d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://www.easygerber.com/api/mcp streamable-httpnoneyes100%448 ms2026-07-282026-10-19

Tools (17)

check_board_layoutChecks 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.
claim_guest_boarddestructiveTransfers a guest board to the connected account using its original 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.
create_boardCreates 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.
delete_boarddestructivePermanently 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.
export_boardCreates 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.
generate_layoutdestructiveStarts 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.
get_boardReads 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.
get_generationread-onlyPolls 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.
get_partread-onlyReturns 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.
get_profileread-onlyReturns 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.
list_boardsread-onlyLists 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.
list_organizationsread-onlyReturns 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.
search_partsread-onlySearches 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. Guest access uses guestToken and excludes organization access.
start_guest_sessionCreates 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.
stop_generationdestructiveCancels 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.
submit_feedbackSends 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.
update_boarddestructiveEdits 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.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.github.EasyGerber/easygerber",
  "title": "EasyGerber: AI PCB design, layout, and routing",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://www.easygerber.com/api/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "0.1.1",
  "repository": {
    "url": "https://github.com/EasyGerber/easygerber-agent-plugin",
    "source": "github"
  },
  "websiteUrl": "https://www.easygerber.com/agents",
  "description": "AI PCB design, layout, and routing"
}