Search excessionlabs.ai, the site of Excession Labs, a security lab, and request a security test.
- Passed: Handshake
- Passed: Tools listed
- Passed: Updated recently
Median latency 71 ms · Last checked
Explore
Evidence for your next connection.
Independent measurements of remote MCP servers. Every observation has a timestamp.
Read-only probesMCP server · Data access / search
Dangerous goods packaging calculators plus search and quote tools for Fortitude21's container range
1 failed · 8 not measured
Median of successful probes over 7 days
Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.
Tool definitions returned by this server
Independent monitoring
Outdated check
Last connection measurement is over 24 hours old. Current availability is unknown.
Last checked| Test area | Passed | Failed | Unmeasured |
|---|---|---|---|
ConnectionCan a client connect and discover tools? | 5 | 0 | 0 |
Reliability & speedDoes it respond consistently and quickly? | 0 | 0 | 4 |
Access & authenticationWhat is required to use this server? | 1 | 0 | 2 |
Tool qualityAre the tool definitions usable by an agent? | 4 | 0 | 0 |
Publisher identityCan the publisher be traced to its source? | 3 | 1 | 2 |
Unmeasured means there is not enough evidence to decide. How these checks work
Start using Fortitude21 Dangerous Goods and Packaging Tools
Choose your client, copy the configuration, then enable the server in your client’s MCP settings.
Run this command in your terminal, then restart Claude Code.
Claude Code
claude mcp add --transport http fortitude21-dangerous-goods-and-packaging-tools https://fortitude21.com/mcpCapabilities
Total the ADR 1.1.3.6 points for a road load of dangerous goods and say whether it stays within the small-load exemption, and what still applies if it does. Use when: the user asks whether a vehicle load needs full ADR. Instead: un_number_packaging for container rules; bund_size for storage. Inputs: one line per substance and package size, so the same UN number in two package sizes is two lines. packing_group matters only where a UN number has entries in more than one transport category, such as UN 1263 paint; without it those lines are refused with the entries to choose from. Points are quantity_per_package times packages times the category multiplier: 50 for category 1, 3 for category 2, 1 for category 3 and 0 for category 4. A category 0 substance needs full ADR at any quantity. Behaviour: covers 92 UN numbers. If any line cannot be read, the whole load is refused with a reason per line and never totalled without it. An exempt load still carries duties, listed in still_required. Unknown arguments are ignored and named in assumed. Constraints: no authentication, key or headers. At most 10 requests per 10 seconds per IP address; above that HTTP 429, so space out repeated calls.
DiscoveredWork out the minimum sump capacity for a bund or spill pallet under the containment rule where the containers are stored, and name the rule. Use when: sizing a spill pallet, bund or drip tray. Instead: ibc_inspection_dates for IBC tests; un_number_packaging for container approval. Inputs: count only the containers stored together over one bund; size separate stores in separate calls. Give at least one count: drums, ibcs, small and other add up, and small and other each need their size. liquid and mode=tray can change which rule applies. With no region the rule for England is used; a country without its own rule gets the common 110% and 25% rule; both are noted in assumed. Behaviour: the rule comes labelled as law, code, guidance or practice, so say which when advising. A region it cannot read returns ok:false with the 16 region codes, and a count without its size returns ok:false naming the size. Unknown arguments are ignored and named in assumed. Constraints: no authentication, key or headers. At most 10 requests per 10 seconds per IP address; above that HTTP 429, so space out repeated calls.
DiscoveredReport what Fortitude21 publishes about one product's certification: the exact scope of any UN status, its cautions, the documents that exist and what a quotation still needs. Use when: about to quote or ship a specific product. Instead: un_number_packaging, adr_1000_points, bund_size or decode_un_packaging_mark for the regulations themselves; the response names them. Inputs: only sku is required, read as in get_product_details. destination_market and intended_contents only shorten information_still_needed, since each one left out is listed there; neither is checked against any rule. To learn whether the contents are dangerous goods, call un_number_packaging with their UN number. Behaviour: it states what the publisher says, not what a market requires, and does not confirm that Fortitude21 holds a certificate: UN approval is granted per design type and plant. An unknown sku returns ok:false. Constraints: no authentication, key or headers. At most 10 requests per 10 seconds per IP address; above that HTTP 429, so space out repeated calls.
DiscoveredCompare two to six Fortitude21 products on the attributes they publish. Use when: the user is choosing between products already found with search_products. Instead: get_product_details for one product in full. Inputs: each entry in skus may be a slug, a product part number or the part number of one size, mixed freely; a size stands for its whole product. Products come back in the order given. Behaviour: rows every product has a value for go in comparable; rows some products lack go in partial, naming them, so a blank is never read as a worse figure. It does not rank or recommend: which product suits depends on the contents, the destination market and the order. Fewer than two skus or more than six returns ok:false, and an unknown one returns ok:false with not_found. Constraints: no authentication, key or headers. At most 10 requests per 10 seconds per IP address; above that HTTP 429, so space out repeated calls.
DiscoveredSend a quotation request for one or more Fortitude21 products to a person who prices it, and get a reference back. Use when: the buyer wants a quotation and has agreed to share their contact details. Instead: get_product_pricing for indicative terms without contacting anyone. Inputs: consent must be true and means the buyer agreed, not the agent. A quantity under the minimum order is recorded, not refused. Without a destination (delivery_destination or country) or incoterms the request is still sent, and the gaps come back in missing_information. A required_date not written as YYYY-MM-DD refuses the request. Behaviour: writes and is not idempotent. Each call stores an enquiry and emails it to Fortitude21's sales team, who reply by email, usually within one working day, so two calls send two requests. It never creates an order or accepts a price. An unknown sku or missing consent refuses the whole request. Constraints: no authentication, key or headers. At most 10 requests per 10 seconds per IP address; above that HTTP 429, so space out repeated calls.
DiscoveredDecode a UN packaging mark part by part: packaging code, performance level, density or gross mass, test pressure, year, state and maker, for packagings, IBCs, large packagings, salvage and reconditioned marks. Use when: the user has read a mark off a drum, jerrican, box or IBC. Instead: un_number_packaging to find which codes a substance may use; ibc_inspection_dates for an IBC's test dates. Inputs: mark alone decodes. Adding un also checks, against ADR 2025 Table A, whether that container may carry that substance, using the density limit printed in the mark. A bare code such as 3H1 decodes to its meaning only. If the user has not read the mark, ask for it rather than describing the container. Behaviour: text it cannot read as a mark returns ok:false, and only the first 120 characters are read. If un is not one of the 157 covered numbers, the mark still decodes and check carries the error. Unknown arguments are ignored and named in assumed. Constraints: no authentication, key or headers. At most 10 requests per 10 seconds per IP address; above that HTTP 429, so space out repeated calls.
DiscoveredList the twelve Fortitude21 product categories with their slugs, taglines and product counts, in two families. Use when: you need a category slug for search_products, or want to show the user the range. Instead: search_products to list the products themselves. Inputs: family limits the list to one family; any other value returns ok:false with valid_families. Behaviour: the list changes only when the catalogue does. Each product has one home category and may be cross-listed into others, so listed_count can exceed product_count. Constraints: no authentication, key or headers. At most 10 requests per 10 seconds per IP address; above that HTTP 429, so space out repeated calls.
DiscoveredGet the complete published record for one Fortitude21 product. Use when: the user needs the specifications, sizes, part numbers or images of one product, usually after search_products. Instead: get_product_pricing for commercial terms; get_product_documents for certificates; check_product_requirements for what a quotation still needs. Inputs: sku takes the product slug, with or without its product- prefix, the product part number, or the part number of one size, which returns the whole product that size belongs to. Letter case is ignored. Returns: product with identity, typed specifications and the source of each figure, the spec table, orderable units with their part numbers, size and model tables, images, documents available on request and pricing. Behaviour: a figure the factory has not supplied comes back as available on request, never left out, so an absent value is not read as zero. Any price in the record is indicative, never a quotation. An unknown sku returns ok:false with example ids and a search link. Constraints: no authentication, key or headers. At most 10 requests per 10 seconds per IP address; above that HTTP 429, so space out repeated calls.
DiscoveredList which documents exist for one Fortitude21 product and how to request them. Use when: the user asks for a certificate, test report, mill certificate, food-contact declaration, specification sheet or drawing. Instead: check_product_requirements for the scope of a UN status and what a quotation needs; get_product_details for specifications. Inputs: sku is read as in get_product_details; the part number of one size returns the documents for its whole product. Behaviour: it requests nothing itself; following request_url is the buyer's step. hosted is usually empty, because documents are issued against a specific design and production run. Each document says when it applies: a UN certificate only where the design carries one, a mill certificate for a stainless grade, a food-contact declaration where the product is specified for food or drinking water. An unknown sku returns ok:false with example ids. Constraints: no authentication, key or headers. At most 10 requests per 10 seconds per IP address; above that HTTP 429, so space out repeated calls.
DiscoveredGet the published commercial terms for one Fortitude21 product: pricing type, currency, minimum order, quantity bands with any approved indicative unit price, validity, Incoterms and lead time. Use when: the user asks about price, minimum order or lead time for a known product. Instead: create_quote_request for an actual quotation; search_products with pricing_type to find products by pricing model. Inputs: sku is read as in get_product_details. Without quantity it returns every band. With quantity it also returns the band that covers it; below the minimum order no unit price is given and assumed says so; a quantity in the top band returns a quotation band rather than a price. A quantity under 1 returns ok:false. Behaviour: any price is indicative, never a quotation: binding is always false, and prices exclude freight, duty and taxes. Products priced on request return no number. An unknown sku returns ok:false with example ids. Constraints: no authentication, key or headers. At most 10 requests per 10 seconds per IP address; above that HTTP 429, so space out repeated calls.
DiscoveredWork out when an IBC (intermediate bulk container) is due for its leakproofness test and its 2.5-year and 5-year inspections, the last month it may be filled and, for plastic and composite IBCs, the end of its five-year life. Use when: the user asks whether an IBC is in date or may still be filled. Instead: decode_un_packaging_mark to read the rest of an IBC mark; bund_size to size spill containment under IBCs. Inputs: mark alone is enough, since the code and month of manufacture are read from it. Otherwise send made, plus code if known; without code a composite 31HA1 tote is assumed. leak and insp move the due dates on from the last test; without them every date counts from manufacture. bottle restarts the five-year life of a remanufactured composite. A full date is read only when its day cannot be mistaken for the month. regime=us has no five-year life. Behaviour: dates are judged against the current month, so the same IBC moves from ok to soon to overdue as time passes. Every default is listed in assumed; an unreadable date or code returns ok:false. Constraints: no authentication, key or headers. At most 10 requests per 10 seconds per IP address; above that HTTP 429, so space out repeated calls.
DiscoveredWork out how much water or fuel to hold, with a margin, and how many jerry cans and 20 ft containers that takes. Use when: planning an emergency water store, or fuel for a trip, boat, generator or machinery. Instead: un_number_packaging for transport rules. Water (the default): people times days times the scenario's litres a person a day. Rates: relief 15 (Sphere minimum, the default); acute 7.5; protracted 50; survival 3; national advice nl, se and dk 3, no 2.86, fi and de 2; custom takes rate. National scenarios also supply a household of 4 and their own days when those are left out. Fuel (mode=fuel, or set by any fuel input): road and overland work from distance and consumption, and returnTrip=1 adds the way back on overland. marine, agri and generator work from hours and consumption; generator also takes kva and load instead of consumption. Hours or kva with no scenario selects generator. units=us switches to miles, mpg and US gallons. Either mode: volume with no scenario is the amount to hold. reserve sets the margin; by default 10% for water and 0 to 50% by fuel scenario. Behaviour: a missing people, days, distance or hours returns ok:false with needs naming it; no demo figure is substituted. A defaulted consumption, household or period is noted in assumed, and so are unknown arguments. Constraints: no authentication, key or headers. At most 10 requests per 10 seconds per IP address; above that HTTP 429, so space out repeated calls.
DiscoveredSearch the Fortitude21 catalogue of liquid containment: jerry cans, pails, tins, drums, spill pallets, closures and handling equipment in steel, stainless, aluminium, tinplate and UN-rated HDPE. Use when: finding products that fit a need. Then: get_product_details for one record, compare_products for two to six, get_product_pricing for terms, create_quote_request to ask for a price. Inputs: q and every filter combine with AND, so each one narrows the result. q expands synonyms, such as bund for spill pallet, and words no product mentions are named in query.terms_no_product_mentions so they can be dropped. category also takes the exact category name. application matches words in the product's listed uses. certification=UN matches any product with a UN status that is not excluded; a design code must appear in that status. sort defaults to relevance with q and to name without. Behaviour: a product with no recorded value for a filtered attribute is left out rather than assumed to match, so an empty result means nothing meets every condition: drop a filter and search again. An unknown category, pricing_type or sort returns ok:false listing the valid values. Results are summaries; get_product_details has the full record. Constraints: no authentication, key or headers. At most 10 requests per 10 seconds per IP address; above that HTTP 429, so space out repeated calls.
DiscoveredFind which UN-approved packagings may carry a dangerous liquid under ADR 2025 Table A and its packing instructions. Use when: the user has a UN number from section 14 of a safety data sheet, or a substance name, and asks what it can travel in and how large. Instead: decode_un_packaging_mark to read a mark already on a container; adr_1000_points to test a vehicle load. Inputs: send un or name. If both arrive, un wins and name is not read. name is a case-insensitive substring search over proper shipping names and common names and needs at least 3 characters, so a broad word such as "acid" returns up to 20 candidates to choose from. Where one candidate is the everyday meaning (petrol: UN 1203, paint: UN 1263), that entry is answered and the other matches are listed in assumed. Behaviour: covers 157 liquids for road transport under ADR; sea (IMDG Code) and air (IATA) rules can differ. An uncovered number returns ok:false with covered_un_numbers, and a name with no match returns ok:false asking for the number. A number with several Table A rows (packing groups or variants) returns each as its own entry, so choose by the packing group on the safety data sheet. Unknown arguments are ignored and named in assumed. Constraints: no authentication, key or headers. At most 10 requests per 10 seconds per IP address; above that HTTP 429, so space out repeated calls.
DiscoveredRecent measurements
| Checked | Result | Response | Tools |
|---|---|---|---|
| Connected | 188 ms | 14 |