MCP server
An assistant asked “can I ship this on FedEx” should not answer from memory. The Classify7 MCP server exposes the classification engine as agent-callable tools running entirely locally against the bundled ruleset — no API key, no network call.
Install
Clone the repository and point your client at the server file.
{
"mcpServers": {
"classify7": {
"command": "npx",
"args": ["-y", "tsx", "/path/to/classify7/mcp/server.ts"]
}
}
}Or run it directly: npm run mcp. It speaks JSON-RPC over stdio.
Tools
classify_productThe main tool. Takes a description, a composition list with CAS numbers, SDS text or a UN number to verify, and returns the full determination with evidence, reasoning and citations.
lookup_un_numberCheck a UN number someone has already asserted, with or without the prefix. Returns the proper shipping name, class, packing group, labels, air acceptance and shipper notes.
check_carrier_eligibilityWhat UPS, FedEx, USPS and Amazon FBA accept for a class or a specific UN number, ground and air separately, with the governing publication.
classify_lithium_batteryResolve PI965 to PI970 and the section, with the marks, labels, documents and aircraft acceptance that follow.
get_ruleset_infoThe ruleset version, its content hash, which editions it encodes and how current they are. Call this to state how authoritative an answer is.
What an agent should do with the answer
Every tool description tells the model the same thing this page does: needs_review means the tool declined to decide. Do not fill in a UN number it withheld. Read missingData, ask the user for that one figure, and call again.
// classify_product { "description": "nail polish, 15 ml glass bottle" }
{
"determination": "needs_review",
"isHazmat": null,
"unNumber": "UN1263",
"packingGroup": null,
"missingData": [{ "field": "flashPointC", "decides": "The Class 3 packing group…" }]
}A miss on lookup_un_number behaves the same way: it returns found: falseand says “not encoded”, which is not the same as “not a dangerous good”.
Prefer HTTP?
The same engine is behind the JSON API, and the whole ruleset is published at /api/reference if you would rather reason over it directly. There is an llms.txt at the root describing the whole surface, including the thresholds models most often get wrong.
Server version tracks the ruleset: 2026.08.1, hash f31c40d32828554081ce3e567617cd8c. Source at https://classify7.com.