Tool Reference
Every tool the Duro MCP server exposes. You never call these by name — you describe what you want and the assistant chooses. They're listed here so you know what's possible, and so you can tell what happened after the fact.
Read tools only look. Write tools change something in your library, attributed to you.
Library
duro_library_get
Read
Which library the connection is scoped to, and its organization
duro_category_list
Read
Every category in the library — Resistor, PCBA, Fastener, and so on
duro_status_list
Read
Lifecycle statuses and what each maps to (Design, Production, Obsolete…)
Categories and statuses are per-library and configurable, so the assistant reads them rather than assuming. If you ask for "parts in production" and your library calls that status something else, this is how it finds out.
Search
Three tools, in descending order of how often they're the right one.
duro_component_search
Read
Natural language. "Resistors in production changed this month"
duro_component_list
Read
Exact name, CPN, category, status, or type
duro_component_search is the default. It handles anything conversational, resolves names of people and statuses and categories for you, and understands relative dates.
duro_component_query is for when the search is already precise — type:part status:Design modifiedBy:"Sarah Chen". It parses deterministically, so it's faster and doesn't cost an AI call. A bare word is a text search across name, CPN, and description.
duro_component_list is the cheapest of the three, for when you already have a CPN or a category name in hand.
Reading a search result
Search results carry a search block describing what was actually searched, separate from the rows themselves. It matters more than it sounds like it should.
Both search backends widen a query they can't fully resolve rather than failing it. Ask for parts modified by someone who isn't a member of the library and you don't get an error — you get every part, with a note that the name went unmatched. Ask with a typo in a status name and that condition is dropped, silently returning more than you meant.
So the block reports:
interpretation— how the query was read, in plain Englishapplied— the filters that actually rannotice— present only when part of your question didn't land, saying so in words
A good assistant relays the notice before presenting the rows. If yours doesn't, applied is the ground truth: compare it against what you asked for.
Components
duro_component_get
Read
Full record for one component, by CPN
duro_component_create
Write
Create a component. Needs a category name
duro_component_update
Write
Update name, description, status, category, attributes, or thumbnail
duro_validate
Read
Run Duro's own validation rules without saving anything
duro_validate runs the same checks the web app runs — field limits, category and status existence, attribute types, name uniqueness, revision format — and returns every problem at once, each with a field path and a fix. Worth asking for explicitly before a bulk change: "validate these 40 rows against duro before creating anything."
Assemblies
duro_assembly_list
Read
Components that have a BOM
duro_assembly_bom
Read
Bill of materials for an assembly, with nesting
duro_assembly_link_children
Write
Add child components to an assembly's BOM
Assemblies are components, so everything in the Components section applies to them too. duro_assembly_bom walks the hierarchy — ask for a specific depth if you don't want the whole tree.
Change orders
duro_change_order_template_list
Read
The workflow templates this library offers
duro_change_order_list
Read
Change orders, by status or resolution
duro_change_order_get
Read
Full detail — stages, reviewers, items, submission status
duro_change_order_create
Write
Create a change order, in DRAFT
duro_change_order_add_items
Write
Add components to a change order
duro_change_order_submit
Write
Submit for review — DRAFT to OPEN
Files and documents
duro_file_upload_request
Write
Request signed upload URLs, singly or in batch
duro_file_upload_execute
Write
Upload the file to the signed URL
duro_file_upload_confirm
Write
Confirm the upload completed
duro_document_link_create
Write
Link a document component to a part or assembly
duro_step_file_parse
Read
Read a STEP file's assembly structure, parts, and quantities
Uploading is three steps, and the assistant runs them in order — you just say what to attach. Batches upload in parallel.
duro_step_file_parse reads the file without uploading it, which makes "what's in this STEP file?" answerable before you commit to importing anything.
What isn't here
The MCP server covers component, assembly, change order, and document workflows. Sourcing, webhooks, RBAC administration, and library configuration are API-only for now — see Core Concepts and Advanced Topics.
Anything the assistant can do here, you can do directly against the GraphQL API. The MCP server is a front end to the same API, with the same permissions.
Last updated
Was this helpful?