Productivity
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 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?"
ask_chemical_safety
ChatGPTAsk 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
ChatGPTRun 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"]
batch_safety_check
ChatGPTRun 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
ChatGPTCheck 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_chemical_compatibility
ChatGPTCheck 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
ChatGPTDetermine 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_mixing_order
ChatGPTDetermine 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
ChatGPTCheck 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_compliance
ChatGPTCheck 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
ChatGPTCheck 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
check_regulatory_lists
ChatGPTCheck 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
ChatGPTCompare 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).
compare_sds_versions
ChatGPTCompare 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
ChatGPTRun 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.create_audit_session
ChatGPTRun 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.get_audit_report
ChatGPTGet 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_audit_report
ChatGPTGet 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
ChatGPTSuggest 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_alternatives
ChatGPTSuggest 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
ChatGPTGet 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_chemical_risk_warnings
ChatGPTGet 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
ChatGPTGet 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_emergency_response
ChatGPTGet 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
ChatGPTGet 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_exposure_limits
ChatGPTGet 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
ChatGPTGet 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_ppe_recommendation
ChatGPTGet 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_section
ChatGPTRetrieve 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_sds_section
ChatGPTRetrieve 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
ChatGPTGet 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_storage_guidance
ChatGPTGet 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
ChatGPTGet 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_transport_classification
ChatGPTGet 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
ChatGPTGet 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"]
get_waste_disposal
ChatGPTGet 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
ChatGPTSearch 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_chemical_database
ChatGPTSearch 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"
upload_msds_pdf
ChatGPTUpload 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.upload_msds_pdf
ChatGPTUpload 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
ChatGPTExtract 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_protocol_chemicals
ChatGPTExtract 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.
Capabilities
Writes






