MCP App Store
by KeenEthics
MSDS Chain icon

MSDS Chain

By LAgentBot Pte. Ltd.

Get New App Alerts

Overview

MSDS Chain brings chemical safety intelligence into ChatGPT. Ask about any chemical and get instant, sourced answers: pairwise compatibility, GHS hazards and H-codes, PPE, storage and isolation rules, safe mixing order, waste disposal, occupational exposure limits, UN transport classification, and multi-region regulatory compliance (23 watch lists across 11 regions). Upload an MSDS/SDS PDF to extract structured safety data, or generate an Ed25519-signed audit report for GLP/GMP records. Built for researchers, lab managers, and EHS teams who design experiments with AI and need safety verification in the same conversation. Powered by ChainSDS, a verified, continuously updated chemical safety database.

Tools

ask_chemical_safety

ChatGPT
Ask any chemical safety question in natural language. Handles: storage conditions, spill/exposure emergency procedures, first-aid measures, PPE requirements, disposal guidance, MSDS lookups, GHS label interpretation, and general lab safety questions. Use this as the catch-all when the question doesn't fit neatly into compatibility, risk warnings, or compliance checks. Args: question: Any chemical safety question, e.g. "How should I store acetone and methanol in the same cabinet?" "What PPE is needed when handling concentrated HCl?" "Is it safe to dispose of acetone down the drain?"

batch_safety_check

ChatGPT
Run a comprehensive safety check on a list of chemicals in one call. Returns a combined report with: - Pairwise compatibility matrix (compatible/caution/incompatible) - PPE requirements (merged across all chemicals) - Storage grouping recommendations (which chemicals can share a cabinet) - Key risk warnings This is the recommended first call when reviewing an experiment protocol or Opentrons deck layout — it gives a complete safety picture without needing to call multiple tools separately. Args: chemicals: List of chemical names or CAS numbers (2-20 items), e.g. ["acetone", "sulfuric acid", "sodium hydroxide", "methanol"]

check_chemical_compatibility

ChatGPT
Check pairwise compatibility between a list of chemicals. Returns compatibility status (compatible / caution / incompatible) for each pair, along with specific hazard reasons and storage recommendations. Use this before an experiment to verify it is safe to use the listed chemicals together in the same lab setting. Args: chemicals: List of chemical names or CAS numbers, e.g. ["acetone", "methanol", "ethanol"] or ["67-64-1", "67-56-1"]

check_mixing_order

ChatGPT
Determine the safe order for mixing/adding two chemicals. Returns the recommended addition sequence, the dangerous sequence to avoid, reasoning (exothermic potential, gas evolution, splashing risk), and any required precautions (cooling, dilution rate, inert atmosphere). Classic examples: "acid into water, never water into acid"; "add oxidizer to substrate slowly, not the reverse". Use this when reviewing liquid transfer steps in an Opentrons protocol or any manual procedure involving sequential addition of reagents. Args: chemical_a: First chemical name or CAS number chemical_b: Second chemical name or CAS number context: Optional context about the procedure, e.g. "diluting for titration" or "quenching a reaction"

check_regulatory_compliance

ChatGPT
Check multi-region regulatory compliance status for chemicals. Checks against: EU (SVHC/REACH/CLP/CMR), US (OSHA PEL/TSCA), CN, JP, KR, CA, AU, TW regulations. Use this when preparing export documentation, compliance audits, or when working with chemicals that may be restricted in certain jurisdictions. Args: chemicals: List of chemical names or CAS numbers regions: Optional list of region codes to check, e.g. ["EU", "US", "CN"] Defaults to EU + US if not specified. Valid codes: EU, US, CN, JP, KR, CA, AU, TW

check_regulatory_lists

ChatGPT
Check which international regulatory lists a chemical appears on. Searches across 15+ regulatory databases including: - US: EPA TSCA, OSHA PEL, California Prop 65, CompTox - EU: SVHC Candidate List, REACH Annex XVII, CLP, Seveso III - APAC: China Hazardous Chemicals, Japan CSCL, Australia AIIC, Singapore EPMA - Americas: Canada DSL Returns a summary of all matching lists, helping you understand a chemical's global regulatory footprint at a glance. Args: chemical: Chemical name or CAS number

compare_sds_versions

ChatGPT
Compare two versions of a Safety Data Sheet (SDS) for the same chemical. Identifies what changed between revisions: new hazard classifications, updated exposure limits, revised PPE requirements, changed storage conditions, regulatory status updates, or H-code additions/removals. Useful for tracking regulatory compliance when a supplier issues a new SDS, or for auditing whether a chemical's risk profile has changed over time. Args: chemical: Chemical name or CAS number, e.g. "acetone" or "67-64-1" version_old: Description of the older SDS version — can be a version number ("v7.2"), a date ("January 2022"), or a brief summary of key fields ("NFPA H1/F3/R0, no CMR listing"). version_new: Description of the newer SDS version — same format as version_old, e.g. "v8.1" or "March 2024". Returns: A structured diff report covering: GHS classification changes, H-code additions/removals, PPE updates, exposure limit changes, storage condition changes, regulatory listing changes, and an overall risk-trend assessment (increased / decreased / unchanged).

create_audit_session

ChatGPT
Run a full MSDS safety audit for a list of chemicals and return a session id. Creates a persistent audit session on MSDS Chain, runs pairwise compatibility and risk analysis across all chemicals, and returns a session_id that can later be passed to get_audit_report to fetch the signed PDF report URL. Use this when the user wants an archivable, signed record of a safety review (e.g. for SOPs, compliance audits, or to share with a PI / safety officer), rather than a one-off Q&A. Args: experiment_name: Short human-readable label for the audit, e.g. "Grignard prep — 2026-04-16" or "Solvent screening #3". chemicals: List of chemical names or CAS numbers to include in the audit, e.g. ["acetone", "methanol", "67-64-1"]. Returns: Session id + compatibility summary (compatible/caution/incompatible pair counts + top warnings). An API key must be configured (MSDS_API_KEY) so the session is bound to your account and the report is retrievable.

draft_sds_sections

ChatGPT
Draft Section 8 (exposure controls / PPE) and Section 15 (regulatory information) of an SDS for the user's OWN mixture, from its ingredient list. No LLM: every line carries its source. - Section 8 is assembled per ingredient from a curated supplier SDS for which we hold the original PDF; each block cites supplier + revision date. - Section 15 comes from the government regulatory lists we hold for region, NOT from supplier SDSs. How to present (do not violate): - Show the notice first, verbatim: this is a DRAFT, not a compliant SDS; the SDS issuer must verify every line. - If Section 15 lists_checked is null, the lists could NOT be read: say nothing was checked. Never report that as "not on any list". - List every not_drafted, unresolved and lookup_failed ingredient to the user; that is what they must supply (upload_msds_pdf, or a CAS number). - Show truncation_note / exposure_limits_note next to the Section 8 block they belong to, not only in a summary: users copy one block at a time. - Section 2 (mixture classification) is not drafted by this tool.

get_audit_report

ChatGPT
Get a short-lived signed URL to download the audit report PDF. Use after create_audit_session to retrieve an archivable PDF report containing the chemicals, compatibility matrix, risk warnings, and session metadata. Args: session_id: The session id returned by create_audit_session, e.g. "DEMO-A1B2C3D4". Returns: A signed URL valid for ~5 minutes. The session must be owned by the API key's user (MSDS_API_KEY).

get_chemical_alternatives

ChatGPT
Suggest safer alternatives for a chemical, considering its intended use. Returns 2-4 alternative chemicals with: name, CAS number, why it's safer (lower toxicity, higher flash point, non-CMR, etc.), any trade-offs (cost, availability, performance), and relevant regulatory context (e.g., REACH SVHC substitution requirement). Use this when a chemical is flagged as high-risk, restricted, or when the user is exploring greener chemistry options. Args: chemical: Chemical name or CAS number to find alternatives for use_case: Optional context about how the chemical is being used, e.g. "degreasing solvent", "extraction solvent for organic synthesis", "cleaning agent for labware"

get_chemical_risk_warnings

ChatGPT
Get hazard and risk warnings for one or more chemicals. Returns GHS hazard classification, signal words (Danger/Warning), H-codes, flash point, toxicity, and recommended PPE. Use this to understand the specific dangers of each chemical before handling or storing them. Args: chemicals: List of chemical names or CAS numbers, e.g. ["acetone", "67-56-1"]

get_emergency_response

ChatGPT
Get emergency response guidance for a chemical incident. Returns immediate actions, SDS-specific instructions from Section 4/5/6, and H-code-based guidance for three scenario types. Args: chemical: Chemical name or CAS number, e.g. "hydrochloric acid" scenario: Type of emergency — "spill" (leak/release), "fire", or "exposure" (skin/eye/inhalation first aid). Defaults to "spill".

get_exposure_limits

ChatGPT
Get occupational exposure limits (OEL/TLV/PEL/MAC) for chemicals. Returns TWA, STEL, and Ceiling values from multiple standards: - OSHA PEL (US) - ACGIH TLV (International) - EU SCOEL IOELV - Japan 産衛研 - China GBZ Args: chemicals: List of chemical names or CAS numbers region: Optional filter — "US", "EU", "JP", "CN", or "INT"

get_ppe_recommendation

ChatGPT
Get PPE (Personal Protective Equipment) recommendations for chemicals. Returns specific glove types, eye protection, respiratory protection, and body protection requirements based on MSDS Section 8 data and GHS hazard codes. Args: chemicals: List of chemical names or CAS numbers, e.g. ["acetone", "hydrochloric acid"] or ["67-64-1"]

get_sds_document

ChatGPT
Return a signed download URL for the original SDS/MSDS PDF of a chemical. The URL is valid for approximately 5 minutes and can be opened in a browser or downloaded with curl -O. The response also includes the document's source (supplier, region, revision date) so the provenance is clear. If only parsed text is available (no original PDF on file), the tool says so and suggests using get_sds_section to query specific sections instead. If the chemical is not in the database at all, the tool suggests uploading an SDS PDF via upload_msds_pdf. Args: chemical: Chemical name or CAS number, e.g. "acetone" or "67-64-1"

get_sds_section

ChatGPT
Retrieve a specific SDS (Safety Data Sheet) section for a chemical. The 16 standard GHS-SDS sections are: 1. Identification 2. Hazard(s) identification 3. Composition / ingredients 4. First-aid measures 5. Fire-fighting measures 6. Accidental release measures 7. Handling and storage 8. Exposure controls / PPE 9. Physical and chemical properties 10. Stability and reactivity 11. Toxicological information 12. Ecological information 13. Disposal considerations 14. Transport information 15. Regulatory information 16. Other information Use this when you need detailed data from a specific section rather than a general safety overview. Args: chemical: Chemical name or CAS number section: SDS section number (1-16)

get_storage_guidance

ChatGPT
Get storage and isolation guidance for chemicals. Returns storage class (flammable/oxidizer/corrosive/toxic/general), recommended cabinet type and color code, temperature requirements, incompatible materials for isolation, and specific storage instructions derived from SDS Section 7. Args: chemicals: List of chemical names or CAS numbers, e.g. ["acetone", "sulfuric acid"] or ["67-64-1"]

get_transport_classification

ChatGPT
Get UN transport classification for chemicals (dangerous goods shipping). Returns UN number, proper shipping name, hazard class, packing group, and transport mode details (ADR road, IATA air, IMDG sea). Args: chemicals: List of chemical names or CAS numbers

get_waste_disposal

ChatGPT
Get waste classification and disposal guidance for chemicals. Returns waste category (halogenated/non-halogenated/acidic/alkaline/ heavy metal/oxidizing/reactive), disposal method, container requirements, and incompatible waste streams that must NOT be mixed. Based on SDS Section 13 (Disposal Considerations) data. Use this after an experiment to determine proper waste segregation and disposal procedures for the chemicals used. Args: chemicals: List of chemical names or CAS numbers, e.g. ["dichloromethane", "acetone", "sulfuric acid"]

search_chemical_database

ChatGPT
Search the MSDS Chain database for a specific chemical. Returns structured information: CAS number, chemical name, NFPA ratings (flammability, health, reactivity), GHS classification, and whether full MSDS data is available. Use this to verify a chemical is in the database before running compatibility or risk checks, or to get the canonical CAS number for a chemical name. Args: query: Chemical name, synonym, or CAS number, e.g. "methanol", "wood alcohol", "67-56-1"

search_msds_online

ChatGPT
Look up GHS hazard data for a chemical NOT in the MSDS Chain database, via PubChem. Use this ONLY as a fallback when search_chemical_database returns no result. The data is PubChem's AGGREGATED GHS classification, clearly labelled source="pubchem" — it is NOT a signed supplier SDS. Present it to the user as PubChem-sourced and unverified; prefer uploading a real SDS (upload_msds_pdf) when accuracy matters. Args: chemical_name: Chemical name, e.g. "acetonitrile" cas_number: CAS number, e.g. "75-05-8" (used first if provided)

upload_msds_pdf

ChatGPT
Upload an MSDS/SDS PDF file to MSDS Chain and get AI-parsed safety data. Parses the PDF with GPT-4o-mini to extract: chemical name, CAS number, GHS hazard classification, NFPA ratings, flash point, LD50, H-codes, PPE requirements, storage conditions, incompatibilities, and safety rules. If no session_id is provided, a new audit session is automatically created and its ID is returned so you can call get_audit_report later. Requires MSDS_API_KEY — the parsed data is stored under your account. Args: pdf_source: Either a local file path (e.g. "/tmp/acetone_sds.pdf") or an HTTPS URL pointing to a publicly accessible PDF. session_id: Existing session ID to attach this upload to. If omitted, a new session is created automatically. experiment_name: Label for the auto-created session (ignored if session_id is provided). Defaults to "MCP Upload". Returns: Parsed chemical info (name, CAS, risk level, key fields) and session_id. If parsing partially failed, missing fields are listed so you can follow up with ask_chemical_safety for the gaps.

validate_protocol_chemicals

ChatGPT
Extract and validate chemical names from a protocol or experiment description. Parses free-text or code (e.g., Opentrons Python protocol, lab notebook entry, SOP paragraph) to identify all mentioned chemicals, then checks each against the MSDS Chain database. Returns a structured list with: chemical name as mentioned, canonical name, CAS number (if found), and whether full safety data is available. Use this as the FIRST step before calling batch_safety_check or check_chemical_compatibility — it saves the user from manually listing chemicals. Args: protocol_text: Any text containing chemical names — can be a Python script, a natural language protocol description, or a reagent list. Maximum ~4000 characters.

validate_sds

ChatGPT
Check an SDS the user uploaded for quality problems: contradictions between its own sections (e.g. Section 2 hazards vs Section 3 composition vs Section 14 transport), gaps, age, and US OSHA HazCom format rules. No LLM: rule-based, and every finding quotes the lines of the SDS it is based on. Use it after upload_msds_pdf, when the user wants to know whether a supplier's SDS (or their own) is consistent and up to date. It checks only SDSs uploaded by this user, not records from our library. Jurisdiction: US OSHA HazCom only. How to present (do not violate): - Show the notice first, verbatim. "No issues" means these checks found nothing; it is NOT a statement that the SDS is compliant. Never say "compliant". - Give every issue with its section(s) and its quoted original text, so the user can find it in their document. - Say which checks were skipped (checks_skipped): those could not read their input from this SDS, so they did not look. - It does not rewrite or correct the SDS; it only points at the problems.

Capabilities

InteractiveWrites

Example Prompts

Click any prompt to copy it.

Similar Apps