Docs

Use Circuit Sherpa with your AI agent

Everything Circuit Sherpa does for you in the browser — search parts across Digi-Key and Mouser, price a BOM at your build quantities, watch a part with a price alert — your own AI agent can do for you too. There are three doors, all opened by one API key from Settings → Agent access: a remote MCP server for Claude, ChatGPT/Codex, Cursor, VS Code and any other MCP client; a REST API with an OpenAPI document; and the circuitsherpa CLI. The agent acts as you, under your plan's limits, and can never place an order or spend money.

1. Get an API key

Sign in and open Settings → Agent access. Name the key after the thing that will use it (“Claude Code on my laptop”) and pick a scope: read for search, part detail, history and listing alerts; write to also price BOMs and create or delete alerts. The key is shown once. Put it in an environment variable — every snippet below reads CIRCUITSHERPA_API_KEY — rather than pasting it into a config file that gets committed.

2. Claude Code, claude.ai and Claude Desktop

Claude Code, from a terminal (the key is sent as a header on every request):

claude mcp add --transport http circuitsherpa https://circuitsherpa.com/mcp \
  --header "Authorization: Bearer $CIRCUITSHERPA_API_KEY"

Or add it to a project's .mcp.json so the whole team gets it; Claude Code expands ${CIRCUITSHERPA_API_KEY} from the environment:

{
  "mcpServers": {
    "circuitsherpa": {
      "type": "http",
      "url": "https://circuitsherpa.com/mcp",
      "headers": { "Authorization": "Bearer ${CIRCUITSHERPA_API_KEY}" }
    }
  }
}

claude.ai and Claude Desktop: Customize → Connectors → Add custom connector. Name it Circuit Sherpa, set the URL to https://circuitsherpa.com/mcp, choose “No sign in”, and under Request headers add Authorization with the value Bearer <your key>. Then enable it in a conversation from the + menu. Claude will ask before running any tool marked destructive.

3. Cursor and VS Code

Cursor — ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):

{
  "mcpServers": {
    "circuitsherpa": {
      "url": "https://circuitsherpa.com/mcp",
      "headers": { "Authorization": "Bearer ${env:CIRCUITSHERPA_API_KEY}" }
    }
  }
}

VS Code — .vscode/mcp.json; the input prompt keeps the key out of the file:

{
  "servers": {
    "circuitsherpa": {
      "type": "http",
      "url": "https://circuitsherpa.com/mcp",
      "headers": { "Authorization": "Bearer ${input:circuitsherpa-key}" }
    }
  },
  "inputs": [{ "id": "circuitsherpa-key", "type": "promptString", "password": true, "description": "Circuit Sherpa API key" }]
}

4. ChatGPT, Codex and the OpenAI API

Codex CLI and the ChatGPT desktop app share one MCP configuration:

[mcp_servers.circuitsherpa]
url = "https://circuitsherpa.com/mcp"
bearer_token_env_var = "CIRCUITSHERPA_API_KEY"

From the OpenAI Responses API, pass the server as an mcp tool. Leave approval on for anything that writes; the read-only tools are safe to run without it:

{
  "model": "gpt-5",
  "tools": [{
    "type": "mcp",
    "server_label": "circuitsherpa",
    "server_url": "https://circuitsherpa.com/mcp",
    "authorization": "<your Circuit Sherpa API key>",
    "require_approval": { "never": { "tool_names": ["search_parts", "get_part", "whoami", "list_price_alerts", "list_bom_history", "get_bom"] } }
  }],
  "input": "Price this BOM at qty 250 and tell me the three most expensive lines"
}

ChatGPT's in-app custom connectors currently require OAuth or no authentication, and cannot send a fixed header. The server also exposes search and fetch in the shape ChatGPT's connectors expect, so the day sign-in with Circuit Sherpa is available there, nothing else changes. Until then, use Codex or the API above.

5. The CLI

Node 18 or newer. No install needed; npx fetches the circuitsherpa package. It talks to the same API with the same key and the same limits, and prints tables for people or JSON for scripts:

# one-time: paste your key when prompted (stored in ~/.config/circuitsherpa/config.json, mode 600)
npx circuitsherpa login

npx circuitsherpa whoami
npx circuitsherpa search "STM32F103C8T6" --limit 5
npx circuitsherpa part NE555PWR --history 30
npx circuitsherpa bom price board.csv --name "Rev C"      # CSV with mpn/qty columns; Pro or Team
npx circuitsherpa bom history
npx circuitsherpa alerts list
npx circuitsherpa alerts create NE555PWR 0.25           # USD per unit
npx circuitsherpa alerts delete <id> --yes               # refuses without --yes

# any command: --json for machine-readable output; CIRCUITSHERPA_API_KEY overrides the saved key

6. The tools

What any MCP client sees from tools/list. “Read-only” and “destructive” are the server's own annotations; Claude and other clients use them to decide when to ask you first. Free-plan limits are stated in each description so the agent can explain a refusal instead of retrying.

ToolScopeKindWhat it does
search_partsreadread-onlySearch electronic components by part number or keyword across Digi-Key and Mouser (and the Nexar network when configured; LCSC is not queried). Returns up to `limit` parts with manufacturer, description, every offer's unit price, stock, MOQ and price breaks, best single-unit price and total stock. Results are cached 24 hours. Counts toward the Free plan's 10 searches/day; unlimited on Pro and Team.
get_partreadread-onlyLive offers for one manufacturer part number plus the price history Circuit Sherpa has recorded for it (newest `historyLimit` points, max 100, oldest first). Does not count toward the Free search quota. Use this after search_parts when the user wants the price trend or every offer for one part.
price_bomwritewritesCost a BOM at the user's build quantities: each line is matched to a part, priced at the price-break tier for its quantity across distributors, with an MOQ warning when the quantity is below the offer's minimum and a match warning when no exact MPN was found. SAVES the result to the user's BOM history (90-day retention; shared with their team by default on the Team plan unless saveToTeam is false). Pro or Team plan; up to 500 lines. If every distributor is unreachable the whole BOM is refused rather than priced at $0.
list_bom_historyreadread-onlyThe user's saved BOMs (and their team's, on the Team plan): id, name, line count, total cost, who uploaded it, when. Pro or Team; Free returns an empty list. Use get_bom for the line items.
get_bomreadread-onlyEvery costed line of one saved BOM by id (from list_bom_history or price_bom). A BOM the user cannot see returns 'not found'.
list_price_alertsreadread-onlyAll of the user's price alerts: id, MPN, target price, last checked price, whether it has already triggered. Alerts are checked once a day at 09:00 UTC against the lowest single-unit price across offers.
create_price_alertwritewritesWatch a part number and email the user (and push to the iOS app) once when its lowest single-unit price is at or below targetPrice (USD). Fires once, then stays as 'triggered' until deleted. Pro or Team plan; up to 20 active alerts. Creates something the user will be notified about, so confirm the MPN and target with them first.
delete_price_alertwritedestructivePermanently delete one of the user's price alerts. DESTRUCTIVE and not undoable. Call once WITHOUT confirm to get the alert's details back for the user to approve, then call again with confirm: true.
whoamireadread-onlyThe account this API key belongs to: email, plan, the plan's limits, and the key's name and scopes. Call this first when unsure what the user can do.
searchreadread-onlySearch parts and return connector-shaped results: id (the MPN), title and url of the public part page. Same quota rules as search_parts. Use fetch(id) for the full record.
fetchreadread-onlyFetch the full record for a search() result id (an MPN): id, title, text (offers and price history as JSON), url, metadata.

Try the endpoint by hand — initialize and tools/list need no key:

curl -s -X POST https://circuitsherpa.com/mcp \
  -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'

7. REST API and OpenAPI

The MCP tools and the CLI are thin layers over /api/v1. The full description is at /openapi.json (OpenAPI 3.1), which any code generator or agent framework can read directly.

curl -s "https://circuitsherpa.com/api/v1/parts?q=NE555PWR&limit=3" \
  -H "Authorization: Bearer $CIRCUITSHERPA_API_KEY"

curl -s -X POST https://circuitsherpa.com/api/v1/bom/price \
  -H "Authorization: Bearer $CIRCUITSHERPA_API_KEY" -H "Content-Type: application/json" \
  -d '{"name":"Rev C","lines":[{"mpn":"NE555PWR","qty":250},{"mpn":"LM358DR","qty":500}]}'

Endpoints: GET /api/v1/me, GET /api/v1/parts?q=, GET /api/v1/parts/{mpn}, POST /api/v1/bom/price, GET /api/v1/bom/history, GET /api/v1/bom/{id}, GET|POST /api/v1/alerts, GET|DELETE /api/v1/alerts/{id}. Team accounts also keep the bulk search endpoint GET /api/v1/search.

8. Safety, limits and logging

  • An API key acts as you. An agent sees only your data and your team's shared BOMs, under your plan's limits.
  • Nothing here can buy parts or move money. Circuit Sherpa links to distributors; it never orders.
  • The one destructive tool, delete_price_alert, needs confirm: true; the first call only shows what would be deleted. The CLI needs --yes.
  • Rate limit: 300 agent calls per key per hour. Free-plan search quota (10/day) is counted through the API exactly as on the website.
  • Every authenticated call is logged (tool, key, outcome, duration) and shown back to you at GET /api/v1/me; rows are kept 30 days.
  • Keys are stored hashed. Revoke one in Settings and it stops working immediately. Deleting your account deletes its keys.
  • If every distributor is unreachable, tools fail with an error that says so; they never answer “no results” or price a BOM at $0.

Questions

Do I need the Team plan to use Circuit Sherpa from an AI agent?
No. API keys, the MCP server and the CLI are available on every plan, and they enforce your plan's limits exactly as the website does: a Free account gets 10 searches a day and no BOM costing or alerts; Pro and Team get unlimited search, BOM costing up to 500 lines and up to 20 active alerts. The Team plan additionally keeps its bulk search endpoint at /api/v1/search, which is not quota-counted.
How do I get an API key?
Sign in, open Settings, and under Agent access create a key with a name and a scope (read, or write). The full key is shown exactly once; copy it then. Keys are stored hashed, so a lost key cannot be recovered, only revoked. You can have up to 10 active keys, and every call made with a key is logged where you can see it (GET /api/v1/me).
What is the difference between a read key and a write key?
A read key can search parts, read a part's offers and price history, list your saved BOMs and list your alerts. A write key can also price and save a BOM, create a price alert, and delete a price alert. Give an agent the smallest scope its job needs; a research assistant rarely needs write.
Can an agent delete something by accident?
The only destructive tool is delete_price_alert, and it is built so an agent cannot delete on the first call: without confirm set to true it returns the alert that would be deleted and asks the agent to confirm with you. It is also marked destructive in its MCP annotations so clients such as Claude ask you before running it. Pricing a BOM saves a record to your history but deletes nothing, and nothing in the MCP server, API or CLI can place an order or spend money.
Which MCP protocol versions does the server speak?
Both the current stateless revision (2026-07-28, with server/discover) and the earlier handshake revisions clients still use today (2025-03-26, 2025-06-18, 2025-11-25). Transport is Streamable HTTP with plain JSON responses; the endpoint is POST https://circuitsherpa.com/mcp. There are no sessions to manage.
Where are prices from, and are they live?
From Digi-Key and Mouser directly and from the Nexar network when configured, in USD, cached for up to 24 hours per search. LCSC is not queried. Circuit Sherpa holds no inventory and processes no orders; purchase links go to the distributor.

Reviewed 2026-10-02. Protocol facts checked against modelcontextprotocol.io on that date.