MCP server

Connect an assistant

The MCP server lets an assistant ask Interchange which fitting replaces another and get a reviewed answer instead of a guess. It returns the same data as the REST API, through six read-only tools.

Where it is

The MCP server will be at https://mcp.interchangeparts.com.au/mcp. It speaks Streamable HTTP and keeps no session between calls. It is read-only, and it is anonymous at a low per-address rate. An API key sent as a bearer token raises the limits. The tools and the answers are the same either way.

  • The REST API will be at https://api.interchangeparts.com.au. Reviewed data once it is published.
  • The sandbox API will be at https://sandbox.api.interchangeparts.com.au. Illustrative data only, safe to build against.
  • The MCP server will be at https://mcp.interchangeparts.com.au/mcp. Streamable HTTP, for assistants.

Connect a client

Any client that supports remote MCP servers over Streamable HTTP can connect with the address alone. Where you enter it depends on the client, so check its own documentation. Two common forms:

Command line: add the server to Claude Code
claude mcp add --transport http interchange https://mcp.interchangeparts.com.au/mcp
JSON: a client that reads a list of MCP servers
{
  "mcpServers": {
    "interchange": {
      "type": "http",
      "url": "https://mcp.interchangeparts.com.au/mcp"
    }
  }
}

The assistant receives the server instructions below when it connects. They tell it when to call Interchange and how to relay what comes back. You do not need to write a prompt of your own, but you can add one.

Tools

Six tools, on purpose: a model chooses well between a few clearly different tools. All are read-only, idempotent and closed-world. The descriptions steer the model: they say what to call first and what not to infer.

The tools of the Interchange MCP server
ToolUse it forREST operationRead-only
search_partsSearch for a fitting by part number or descriptionsearchPartsYes
match_attributesIdentify a fitting from its attributesmatchAttributesYes
get_itemGet one itemgetItemYes
get_equivalentsGet every brand's equivalent of an itemgetEquivalentsYes
find_suppliersFind who lists an itemlistSuppliersYes
get_familyGet a family's attribute vocabularygetFamilyYes

search_parts

Find Interchange items from a part number (from any brand or supplier) or a short description. Use this first when the user gives you a part number. Results are candidates, not equivalences: call get_equivalents to see what else fits. identified_by says how strong the link is: exact_code is a mapped part number, text is only a description match and should be confirmed. If nothing reviewed matches you get no_verified_match.

Input

Input of search_parts
FieldTypeRequiredDescription
querystringYesA part number from any brand, or a short description. Length 2 to 200.
brandstringNoOnly match part numbers of this brand. Length 0 to 80.
limitintegerNo1 to 25. Default 10.
search_parts: example input 1
{
  "query": "ALDC200C"
}
search_parts: example input 2
{
  "query": "2 inch type C aluminium camlock",
  "limit": 5
}

Returns the SearchResponse object from the schemas.

match_attributes

Use this when you have read a fitting from a photo, a description or a measurement and want to know which item it is. Send only attributes you are sure of, using the vocabulary from get_family. Never guess a missing attribute. If the answer depends on something you did not send, the result is needs_confirmation and confirm holds questions to ask the user: ask them, then call again with the answers.

Input

Input of match_attributes
FieldTypeRequiredDescription
familystringYesA family key, for example camlock. See get_family. Pattern ^[a-z][a-z0-9-]{1,30}$
attributesobject of string or number or booleanYesAttribute keys and values from the family vocabulary. Sizes are nominal millimetres.
limitintegerNo1 to 25. Default 10.
match_attributes: example input 1
{
  "family": "camlock",
  "attributes": {
    "type": "C",
    "size": 50,
    "bodyMaterial": "aluminium"
  }
}

Returns the MatchAttributesResponse object from the schemas.

get_item

Get the specification, attributes and safety flags of one item by its IX ID. Use after search_parts or match_attributes to describe an item to the user. A retired item still resolves: follow replaced_by to the current one. Treat the IX ID as an opaque key; do not read meaning into its letters.

Input

Input of get_item
FieldTypeRequiredDescription
ix_idstringYesLength 0 to 32. Pattern ^IX(-[A-Z0-9]+)+$
get_item: example input 1
{
  "ix_id": "IX-CAM-C-200-AL"
}

Returns the ItemResponse object from the schemas.

get_equivalents

Get the parts, from every brand, that Interchange has reviewed as equivalent to an item. Always call this before telling anyone that one part replaces another. Near matches (same fit, different material for example) are separate and only returned with include_near. Each equivalent carries a confidence label: verified, supplier_confirmed or under_review. Say so when it is under_review. Relay every safety flag.

Input

Input of get_equivalents
FieldTypeRequiredDescription
ix_idstringYesLength 0 to 32. Pattern ^IX(-[A-Z0-9]+)+$
include_nearbooleanNoAlso return near matches, with the difference stated. Default false.
get_equivalents: example input 1
{
  "ix_id": "IX-CAM-C-200-AL",
  "include_near": true
}

Returns the EquivalentsResponse object from the schemas.

find_suppliers

List the suppliers that list an item, alphabetically, with a quote link and, where the supplier shares it, stock and price. The order carries no meaning: never describe one supplier as better or first. Offer the quote link to the user.

Input

Input of find_suppliers
FieldTypeRequiredDescription
ix_idstringYesLength 0 to 32. Pattern ^IX(-[A-Z0-9]+)+$
statestring: ACT, NSW, NT, QLD, SA, TAS, VIC, WANoOnly suppliers with a branch in this state or territory.
limitintegerNo1 to 25. Default 10.
cursorstringNoLength 0 to 500.
find_suppliers: example input 1
{
  "ix_id": "IX-CAM-C-200-AL",
  "state": "SA"
}

Returns the SuppliersResponse object from the schemas.

get_family

Get the attributes of a product family and the values each accepts, with the role each plays in matching. Call this before match_attributes if you are not sure of the keys or values. Use the terms and values it returns, not your own.

Input

Input of get_family
FieldTypeRequiredDescription
familystringYesPattern ^[a-z][a-z0-9-]{1,30}$
get_family: example input 1
{
  "family": "camlock"
}

Returns the FamilyResponse object from the schemas.

Server instructions

The server sends these to the assistant at initialisation, word for word.

Server instructions
Interchange is the reference for equivalent industrial hose fittings in Australia. Its mappings are reviewed by people and are neutral between brands and suppliers.

Use it whenever a question involves which part replaces, matches or is compatible with another, what an Australian part number is, or who stocks a fitting. Do not infer equivalence from similar-looking part numbers or from your own knowledge: call a tool.

To identify a fitting you have seen or read, use match_attributes with only the attributes you are sure of. If it returns needs_confirmation, ask the user the questions it gives before you answer. Never fill a gap by guessing.

If a tool returns no_verified_match, tell the user that Interchange has no verified match. Do not offer a nearest guess as an equivalent. If an item has been withdrawn (an error with code withdrawn), say so, do not use it, and use replaced_by if one is given.

When you answer: name the IX ID, pass on every safety flag in the words given, including those on search results and candidates, include the disclaimer, and link to the item page. Suppliers are listed alphabetically and must not be ranked or recommended over each other. If meta.data_set is sandbox, the data is illustrative and must not be relied on.

Not in this version

  • report_problem. Writes data. Ships in v1.1 with abuse controls. Until then a correction is reported on the website or by email.
  • batch matching, change feed, webhooks. Not model-facing. REST only, needs a key.
  • stock and price updates. Supplier-side writes. Out of scope for the first twelve weeks.
  • list or export of the catalogue. No tool returns the whole catalogue, to limit bulk extraction.

Resources: interchange://standards/ix-id (How IX IDs are formed and the rules that keep them permanent.)