MCP Server
https://www.elexess.com/mcp
Elexess runs a Model Context Protocol (MCP) server, so AI assistants and agent tools can work with your account with exactly your permissions. Newmatik's assistant Moth connects this way, and so can any MCP client that supports OAuth.
Connect your assistant
Add the URL above as a remote (HTTP) MCP server. When the assistant first connects, your browser opens Elexess. Sign in, check the Authorize access screen, and choose Allow access. You do not need a client ID or key.
Claude (web and desktop)
Open Settings → Connectors → Add custom connector, paste the URL, then choose Connect. On Team and Enterprise plans an owner adds the connector once for the organization, and each member then connects their own account.
Claude Code
claude mcp add --transport http elexess https://www.elexess.com/mcp
Then run /mcp, pick elexess and choose Authenticate.
ChatGPT
Turn on developer mode under Settings → Apps → Advanced settings. Then create an app with the URL above and choose OAuth as the authentication.
Codex
codex mcp add elexess --url https://www.elexess.com/mcp
codex mcp login elexess
Cursor
Add the server to ~/.cursor/mcp.json, or to .cursor/mcp.json in a project:
{ "mcpServers": { "elexess": { "url": "https://www.elexess.com/mcp" } } }
Then open Cursor Settings, find elexess in the MCP server list and choose Connect.
VS Code
Run MCP: Add Server from the Command Palette, choose HTTP, and paste
the URL. You can also add it to .vscode/mcp.json:
{ "servers": { "elexess": { "type": "http", "url": "https://www.elexess.com/mcp" } } }
VS Code asks you to sign in to Elexess the first time a tool runs.
Scripts and CI
For unattended use, send a team API token in place of signing in, for example
claude mcp add --transport http elexess https://www.elexess.com/mcp --header "Authorization: Bearer el_live_…".
Team API tokens are read-only.
Sign-in and consent
The server accepts two kinds of Bearer credential:
| Credential | Who it represents | What it can do |
|---|---|---|
| Your account (OAuth 2.1 with PKCE) | you | what you can do in the web app, nothing more |
Team API token (el_live_…) | your team | read-only: search, catalog, team watchlist, team part numbers, status |
Assistants register themselves when they first connect, so any standard MCP client can connect. Registering does not give a client any access. Each connection still needs your approval on the Elexess Authorize access screen. The screen shows:
- the name the app gave itself
- the address where access will be sent, with a warning if Elexess does not recognise it
- what the app will be able to do
An app can choose any name, so check the address. Only allow access if you started connecting from that app a moment ago. If your account uses two-factor authentication, you confirm it before the screen appears.
Access tokens expire after an hour. The assistant renews them while your approval stands.
Tools
Read tools only look things up. Write tools change data. Tools marked
needs confirm change nothing unless the call includes confirm: true.
Without it they return a preview of the change. A good assistant shows you the
preview and asks before it confirms.
| Tool | What it does | Type | Team API token |
|---|---|---|---|
whoami | your profile, teams, plan and search limit | Read | yes |
search_parts | live distributor stock and pricing for a part number (uses 1 search credit); with mode: "item", all part numbers of one of your items (1 credit each) | Read | yes |
price_bom | price a whole BOM of up to 500 lines in one call (free from stored data; live searches use 1 credit per part number) | Read, needs confirm to spend credits | yes |
list_parts, get_part, autocomplete | stored catalog data, listings, price breaks, risk | Read | yes |
list_manufacturers, get_manufacturer | manufacturer catalog and timeline | Read | yes |
list_suppliers, get_supplier_status | distributors, availability, incidents | Read | yes |
get_exchange_rates | latest currency rates | Read | yes |
list_watchlist | personal and team watchlists | Read | team only |
list_items, get_item | your team's items with customer part numbers and every linked part number and its approval | Read | yes |
list_team_part_numbers | team items (internal part numbers), notes and part numbers | Read | yes |
get_supply_risk | supply-chain risk and history | Read | yes |
get_team_usage, list_recent_searches | search credits used and search history | Read | yes |
list_team_members | members, roles and status | Read | yes |
list_api_tokens | team API tokens (never the secret) | Read | no |
add_to_watchlist | watch a part | Write | no |
set_team_part_number | create or update a team part number and note | Write | no |
recalculate_supply_risk | recompute a part's supply risk now | Write | no |
update_team | rename the team or change its currency (admins) | Write | no |
remove_from_watchlist | stop watching a part | Write, needs confirm | no |
remove_team_part_number | remove a team part number | Write, needs confirm | no |
invite_team_member | email an invitation to join the team (admins) | Write, needs confirm | no |
update_team_member | change a member's role or status (admins) | Write, needs confirm | no |
create_api_token | create a team API token, shown once, optionally with write scopes (admins) | Write, needs confirm | no |
revoke_api_token | revoke a team API token permanently (admins) | Write, needs confirm | no |
Safety
- Your permissions, nothing more. Every call runs as you. It sees only what you see in Elexess and can change only what your role allows. Plan limits apply as in the web app; for example, team watchlists need Pro or Enterprise.
- Confirm before anything hard to undo. Removing data, inviting people,
changing roles and creating or revoking API tokens all need
confirm: true. Otherwise the tool returns a preview and changes nothing. - No ownership or domain changes. Ownership transfers and email-domain settings are not available over MCP.
- Team API tokens never write. They read your team's data only.
- No secrets in answers. Tool results never include passwords, other teams' data, or existing API token secrets. A new token's secret is shown once, when it is created.
Limits
Each search_parts call uses one search credit from your team's monthly
allowance, the same as a search on the website. An item search
(mode: "item") uses one credit per part number it searches, at most 10; pass
link_ids to search fewer. When an item search needs more than one credit,
search_parts first returns a preview of the part numbers and credits without
searching. Call it again with confirm: true and max_credits set to the
credits the user approved; without max_credits a confirmed search may use up
to 10. If the item needs more than max_credits by then, it returns a new
preview instead of searching. When the
allowance runs out, the tool says so; the
allowance resets at the start of each month. list_items and get_item are
free.
price_bom uses credits only for live searches, one per distinct part
number, and only with confirm: true. Without it, it prices what it can from
stored data and returns a preview with the credits a live run would use. One
call takes at most 500 lines and spends at most max_live_searches credits
(default 100). Live searches stop after the time budget (50 seconds by
default, up to 120) or when the allowance runs out. The answer is then marked
partial and lists the lines still to price under resume. Lists return at most
100 to 200 rows per call; use limit and offset to page.
Revoke access
- Your account: open Profile → Connected apps and revoke the app. Its tokens stop working immediately, and the assistant has to ask for your approval again.
- Team API tokens: team admins revoke them under Dashboard → API Tokens.
Transport
Streamable HTTP in stateless mode: each JSON-RPC request gets a single JSON
response. Supported protocol versions are 2025-11-25, 2025-06-18 and
2025-03-26. The server does not offer session streams; GET with
Accept: text/event-stream answers 405.
Example
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": { "name": "search_parts",
"arguments": { "searchterm": "LM358DR", "quantity": 500 } } }
The result lists offers sorted by unit price at the requested quantity. It
also lists which suppliers answered, returned nothing, or failed.
Pricing a BOM for 250 boards with 2% attrition:
{ "jsonrpc": "2.0", "id": 2, "method": "tools/call",
"params": { "name": "price_bom",
"arguments": { "boards": 250, "attrition_pct": 2, "currency": "EUR",
"lines": [
{ "line_id": "10", "mpn": "LM358DR", "qty_per_board": 2, "designators": "U1, U2" },
{ "line_id": "20", "mpn": "GRM188R71H104KA93D", "manufacturer": "Murata", "qty_per_board": 12 }
] } } }
Each line needs ceil(qty_per_board × boards × (1 + attrition_pct / 100))
pieces. Attrition is 0 unless you set it, for the BOM or per line. For every
line the answer gives the chosen supplier and SKU, unit price at the price
break, extended price, MOQ and order multiple, stock, lead time, lifecycle and
data age. It also lists flags: no_offer, insufficient_stock,
stock_unknown, eol, nrnd, ambiguous_mpn, manufacturer_unmatched,
currency_unconverted, duplicate_mpn, designator_count_mismatch,
stale_data, live_search_failed and not_searched.
Offers with enough stock come first, then the lowest total cost. MOQ, order
multiples and a cheaper larger price break can raise the order quantity; the
cost of the extra pieces is reported as excess_cost. Totals include the BOM
cost per board, the total cost, the excess cost, the number of lines without a
price, the longest lead time and the credits spent.
Support
Questions or problems connecting an assistant: email service@newmatik.com.