MCP App Store
Productivity
MSDS Chain icon

MSDS Chain

by LAgentBot Pte. Ltd.

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?"

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"]

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_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_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_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

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).

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.

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.

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_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_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_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_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_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_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_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_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_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_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"]

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_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"

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.

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_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.

Capabilities

Writes

App Stats

42

Tools

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily