← Back to search

io.github.littleblakew/msds-chain

littleblakew Scanned 5d ago

Chemical safety intelligence — 18 tools for compatibility, hazard, PPE, storage, and compliance

D
51.5 / 100

Versions

1.0.0latest
first seen Jun 5, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 23

check_chemical_compatibility
annotations: none low

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

lang Lang intent Intent chemicals ChemicalList
get_chemical_risk_warnings
annotations: none low

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. DRILL-DOWN tool: use this only when the user explicitly wants the raw structured hazard fields. For a broad "what are the hazards / is X dangerous / what PPE" question, prefer `ask_chemical_safety` — it returns one sourced answer instead of forcing you to chain several tools. Args: chemicals: List of chemical names or CAS numbers, e.g. ["acetone", "67-56-1"]

lang Lang intent Intent chemicals ChemicalList
check_regulatory_compliance
annotations: none low

Check multi-region regulatory status for chemicals. Answers TWO separate questions per region — do not collapse them (CI-493): 1. `status` — is it on a RESTRICTION list (SVHC / REACH Annex XVII / CLP Annex VI / Prop 65 / China Catalogue of Hazardous Chemicals / JP CSCL / SG EPMA)? `restricted` on at least one restriction list, or a CMR hazard code `detected` only indirect evidence (occupational exposure limit, or an SDS Section 15 mention). 🔴 NOT a clearance and NOT a violation. `not_restricted` we DID check that region's restriction lists and it is not on them. `details` names which lists were checked. Lists we do not hold were not checked, so this is not a clearance either. `unverified` no check was performed — we hold no restriction list for that region (KR, TW, CA, AU), or the source could not be read. 🔴 Never report this as "not regulated". 2. `inventory` — is it on that region's EXISTING-SUBSTANCE inventory (TSCA / IECSC / KECL / DSL / AIIC / REACH registered)? Here the polarity is REVERSED: `on_inventory: true` registered there — about registration, not restriction `on_inventory: false` 🔴 the direction that needs attention: a substance absent from the inventory typically needs new-substance notification before import `on_inventory: null` we hold no inventory for that region Use this when preparing export documentation, compliance audits, or when working with chemicals that may be restricted in certain jurisdictions. 🔴 No result from this tool is ever, on its own, an import/export clearance. In particular an exposure limit (OSHA PEL) answers "how much exposure is allowed", not "is this substance permitted" — report it as evidence, never as compliance. 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

lang Lang intent Intent regions string chemicals ChemicalList
ask_chemical_safety
annotations: none low

PREFERRED first tool for any general chemical-safety question — hazards, PPE, first aid, spill/exposure response, storage, disposal, "is X safe", "what do I need to handle Y", GHS interpretation, MSDS lookup. Returns ONE answer grounded in a specific supplier SDS, with the source (supplier + revision date) cited and any general knowledge clearly separated from what the SDS actually says. Use this FIRST for broad questions instead of chaining search_chemical_database + get_chemical_risk_warnings + get_ppe_recommendation — those are slower, produce a fragmented answer, and lose the single sourced citation. Reach for the granular tools only when the user explicitly wants just that one structured field. When presenting the answer, cite the returned source and do not add hazard, medical, or regulatory claims that are not in the tool output. A question may name more chemicals than one turn checks. When the result carries a non-empty `unchecked` list, you MUST say so before any conclusion and MUST NOT state or imply whether data exists for those — this turn did not look them up. Tell the user to ask about them separately. Args: question: Any chemical safety question, e.g. "What are the main hazards and PPE for TMAH?" "How should I store acetone and methanol in the same cabinet?" "A worker got hydrofluoric acid on their skin — first aid?"

lang Lang question string
get_ppe_recommendation
annotations: none low

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. DRILL-DOWN tool: use this only when the user explicitly wants a standalone PPE list. A broad "what are the hazards and what PPE" question is answered in one sourced call by `ask_chemical_safety` — prefer that over chaining tools. Args: chemicals: List of chemical names or CAS numbers, e.g. ["acetone", "hydrochloric acid"] or ["67-64-1"]

lang Lang intent Intent chemicals ChemicalList
get_storage_guidance
annotations: none low

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

lang Lang intent Intent chemicals ChemicalList
get_emergency_response
annotations: none low

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". 🔴 Person first: material that reached a person is "exposure" even when the user says "spilled" — only "exposure" returns the substance-specific antidote protocol (CI-579).

lang Lang intent Intent chemical Chemical scenario string
get_exposure_limits
annotations: none low

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"

intent Intent region string chemicals ChemicalList
get_transport_classification
annotations: none low

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

intent Intent chemicals ChemicalList
create_audit_session
annotations: none low

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.

intent Intent chemicals ChemicalList experiment_name string
get_audit_report
annotations: none low

Get a short-lived signed URL to download an archivable PDF safety report. Two ways to call it: - **No arguments** — builds the report from the chemicals this user has analysed over the last 7 days (compatibility / risk / regulatory / protocol checks). Use this whenever the user asks for "a report", "something for the file", "a document for my PI / safety officer" and you do not already hold a session id. You do NOT need to ask them to list the chemicals again. - **With a session_id** — the classic path, for a session you just created with `create_audit_session`. The PDF contains the chemicals, compatibility matrix, risk warnings and session metadata, and is signed, so it can be filed as a compliance record. Args: session_id: Optional. The session id returned by `create_audit_session`, e.g. "DEMO-A1B2C3D4". Omit to report on recent analyses. Returns: A signed URL valid for ~5 minutes. The session must be owned by the API key's user (MSDS_API_KEY).

session_id string
search_chemical_database
annotations: none low

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"

query string intent Intent
search_msds_online
annotations: none low

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)

intent Intent cas_number string chemical_name string
get_sds_section
annotations: none low

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)

lang Lang intent Intent section string chemical Chemical
get_chemical_alternatives
annotations: none low

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"

lang Lang chemical Chemical use_case string
validate_protocol_chemicals
annotations: none low

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. A protocol routinely names more chemicals than one turn checks. The result carries an `unchecked` list of the ones this turn did NOT look up. When it is non-empty you MUST report those chemicals as "not checked" before any conclusion, and you MUST NOT say or imply that we lack data or a record for them — nothing was looked up. Tell the user to re-send them separately or in smaller batches. 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.

lang Lang protocol_text string
check_mixing_order
annotations: none low

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"

lang Lang context string chemical_a string chemical_b string
get_waste_disposal
annotations: none low

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

intent Intent chemicals ChemicalList
compare_sds_versions
annotations: none low

Compare a chemical's two most recent SDS versions and report whether its hazard data changed (and whether the change is relevant to safety verdicts). Identifies H-code additions/removals between the latest two on-record SDS revisions, and flags whether the change could affect a prior compatibility or risk conclusion. Use when a user asks if a chemical's safety data has been updated, or to check whether a past safety conclusion might be affected by an SDS revision. Args: chemical: Chemical name or CAS number, e.g. "hydrogen peroxide" or "7722-84-1". supplier: Optional SDS supplier/manufacturer to disambiguate (e.g. "Sigma-Aldrich"). region: Optional region code to narrow the lookup (e.g. "US", "EU", "JP", "CN"). version_old / version_new: DEPRECATED and ignored — an arbitrary version pair cannot be compared. Supplying them adds an explicit note to the reply saying the request was not honoured; they never change what is compared.

intent Intent region string chemical Chemical supplier string version_new string version_old string
upload_msds_pdf
annotations: none low

Upload an MSDS/SDS PDF file to MSDS Chain and get AI-parsed safety data. Parses the PDF with an LLM 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: One of, tried in this order: 1. A publicly reachable HTTPS URL of the PDF (fetched server-side). 2. **Inline file bytes, base64-encoded** — use this when you already have the PDF's bytes in this conversation (e.g. the user just uploaded a PDF to you and you can read/attach it), which is the common case for remote clients like ChatGPT or claude.ai where the file lives in YOUR sandbox with no public URL. Pass either a data URI (`data:application/pdf;base64,<...>`) or a bare base64 string of the raw PDF bytes. Max 10 MB decoded. 3. A local file path (e.g. "/tmp/acetone_sds.pdf") — works ONLY for a self-hosted stdio server running on the same machine as the file. Do NOT pass a path from the user's machine or a client-side sandbox to the hosted server; it will not exist there. If you cannot get a URL or the raw bytes, send the user to the web uploader instead. Rule of thumb: if you (the model) can see/hold the PDF's bytes right now, base64-encode them and pass that — don't go looking for a local path that only exists on the user's machine, not the server's. 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". filename: Optional display filename, used when pdf_source is inline base64 content (which has no filename of its own). Defaults to "upload.pdf" if omitted. 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.

filename string pdf_source string session_id string experiment_name string
batch_safety_check
annotations: none low

Run a comprehensive safety check on a list of chemicals in one call. Returns a combined report with: - Pairwise compatibility matrix (compatible/caution/incompatible) - Key risk warnings per chemical, with the source SDS for each It does NOT return PPE or storage grouping — for those call `get_ppe_recommendation` / `get_storage_guidance`. (This list previously advertised both; the description is what you read when choosing a tool, so naming an output that never arrives invites answering from nothing.) Good first call when reviewing an experiment protocol or Opentrons deck layout: it covers the pairwise interactions in one round-trip. Args: chemicals: List of chemical names or CAS numbers (2-20 items), e.g. ["acetone", "sulfuric acid", "sodium hydroxide", "methanol"]

lang Lang intent Intent chemicals string
check_regulatory_lists
annotations: none low

Check which international regulatory lists a chemical appears on. Searches 23 lists — 8 jurisdictions plus 3 international conventions: - US: EPA TSCA Inventory, OSHA PEL, California Prop 65 - EU: SVHC Candidate List, REACH Annex XVII, REACH Annex XIV, REACH registered substances, CLP Annex VI, Seveso III, Water Framework Directive priority substances - APAC: China Catalogue of Hazardous Chemicals, China IECSC, Japan CSCL, Korea KECL, Australia AIIC, Singapore EPMA - Americas: Canada DSL - Conventions: Rotterdam PIC, Stockholm POPs, Montreal Protocol - Dual-use / export control: CWC Schedules 1/2/3, Australia Group precursors It also reports presence in the EPA CompTox Dashboard, which is an identifier resource rather than a regulatory list. Coverage limits, so the answer is not over-read: - There is NO Taiwan and NO IARC coverage. Do not infer either from this tool. - The lists are a curated snapshot, not a live regulatory feed. A chemical missing from a list means "not found in our copy of that list", never "not regulated". 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

lang Lang intent Intent chemical Chemical
get_sds_document
annotations: none low

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"

intent Intent chemical Chemical

Permissions 4

network medium
Server uses network capabilities via: httpx, urllib
filesystem low
Server uses filesystem capabilities via: open(), os, pathlib, shutil
shell high
Server uses shell capabilities via: subprocess
env_vars low
Server uses env_vars capabilities via: os.environ

Scan Findings 325

low
Tool 'check_chemical_compatibility' has no annotations annotation_checker · 100%
low
Tool 'get_chemical_risk_warnings' has no annotations annotation_checker · 100%
low
Tool 'check_regulatory_compliance' has no annotations annotation_checker · 100%
low
Tool 'ask_chemical_safety' has no annotations annotation_checker · 100%
low
Tool 'get_ppe_recommendation' has no annotations annotation_checker · 100%
low
Tool 'get_storage_guidance' has no annotations annotation_checker · 100%
low
Tool 'get_emergency_response' has no annotations annotation_checker · 100%
low
Tool 'get_exposure_limits' has no annotations annotation_checker · 100%
low
Tool 'get_transport_classification' has no annotations annotation_checker · 100%
low
Tool 'create_audit_session' has no annotations annotation_checker · 100%
low
Tool 'get_audit_report' has no annotations annotation_checker · 100%
low
Tool 'search_chemical_database' has no annotations annotation_checker · 100%
low
Tool 'search_msds_online' has no annotations annotation_checker · 100%
low
Tool 'get_sds_section' has no annotations annotation_checker · 100%
low
Tool 'get_chemical_alternatives' has no annotations annotation_checker · 100%
low
Tool 'validate_protocol_chemicals' has no annotations annotation_checker · 100%
low
Tool 'check_mixing_order' has no annotations annotation_checker · 100%
low
Tool 'get_waste_disposal' has no annotations annotation_checker · 100%
low
Tool 'compare_sds_versions' has no annotations annotation_checker · 100%
low
Tool 'upload_msds_pdf' has no annotations annotation_checker · 100%
low
Tool 'batch_safety_check' has no annotations annotation_checker · 100%
low
Tool 'check_regulatory_lists' has no annotations annotation_checker · 100%
low
Tool 'get_sds_document' has no annotations annotation_checker · 100%
medium
OAuth implementation without PKCE auth_checker · 75%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Vulnerable dependency: starlette@0.38.0 (GHSA-2c2j-9gv5-cj73) dependency_analyzer · 95%
medium
Vulnerable dependency: starlette@0.38.0 (GHSA-82w8-qh3p-5jfq) dependency_analyzer · 95%
medium
Vulnerable dependency: starlette@0.38.0 (GHSA-86qp-5c8j-p5mr) dependency_analyzer · 95%
medium
Vulnerable dependency: starlette@0.38.0 (GHSA-f96h-pmfr-66vw) dependency_analyzer · 95%
medium
Vulnerable dependency: starlette@0.38.0 (GHSA-jp82-jpqv-5vv3) dependency_analyzer · 95%
medium
Vulnerable dependency: starlette@0.38.0 (GHSA-wqp7-x3pw-xc5r) dependency_analyzer · 95%
medium
Vulnerable dependency: starlette@0.38.0 (GHSA-x746-7m8f-x49c) dependency_analyzer · 95%
medium
Vulnerable dependency: starlette@0.38.0 (PYSEC-2026-161) dependency_analyzer · 95%
medium
Vulnerable dependency: starlette@0.38.0 (PYSEC-2026-1941) dependency_analyzer · 95%
medium
Vulnerable dependency: starlette@0.38.0 (PYSEC-2026-1943) dependency_analyzer · 95%
medium
Vulnerable dependency: starlette@0.38.0 (PYSEC-2026-2280) dependency_analyzer · 95%
medium
Vulnerable dependency: starlette@0.38.0 (PYSEC-2026-2281) dependency_analyzer · 95%
medium
Vulnerable dependency: starlette@0.38.0 (PYSEC-2026-248) dependency_analyzer · 95%
medium
Vulnerable dependency: starlette@0.38.0 (PYSEC-2026-249) dependency_analyzer · 95%
medium
High-entropy string (6.63 bits/char) in littleblakew-msds-chain-mcp-7be0b48/live_coverage_cases.py:150 entropy_analyzer · 64%
medium
High-entropy string (6.99 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tool_surface.py:1 entropy_analyzer · 69%
medium
High-entropy string (5.74 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tool_surface.py:32 entropy_analyzer · 51%
medium
High-entropy string (5.92 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tool_surface.py:52 entropy_analyzer · 53%
medium
High-entropy string (5.77 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:159 entropy_analyzer · 51%
medium
High-entropy string (6.78 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:259 entropy_analyzer · 66%
medium
High-entropy string (6.44 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:300 entropy_analyzer · 61%
medium
High-entropy string (5.96 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:308 entropy_analyzer · 54%
medium
High-entropy string (5.77 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:410 entropy_analyzer · 51%
medium
High-entropy string (6.37 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:476 entropy_analyzer · 60%
medium
High-entropy string (7.25 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:512 entropy_analyzer · 73%
medium
High-entropy string (6.11 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:540 entropy_analyzer · 56%
medium
High-entropy string (6.18 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:593 entropy_analyzer · 57%
medium
High-entropy string (5.82 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:600 entropy_analyzer · 52%
medium
High-entropy string (6.02 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:646 entropy_analyzer · 55%
medium
High-entropy string (6.92 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:691 entropy_analyzer · 68%
medium
High-entropy string (6.08 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:782 entropy_analyzer · 56%
medium
High-entropy string (6.82 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:861 entropy_analyzer · 67%
medium
High-entropy string (6.14 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:875 entropy_analyzer · 57%
medium
High-entropy string (6.10 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:901 entropy_analyzer · 56%
medium
High-entropy string (6.81 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:911 entropy_analyzer · 67%
medium
High-entropy string (5.72 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:977 entropy_analyzer · 50%
medium
High-entropy string (5.71 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:1033 entropy_analyzer · 50%
medium
High-entropy string (6.36 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:1159 entropy_analyzer · 60%
medium
High-entropy string (5.93 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:1171 entropy_analyzer · 53%
medium
High-entropy string (5.84 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:1184 entropy_analyzer · 52%
medium
High-entropy string (6.37 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:1190 entropy_analyzer · 60%
medium
High-entropy string (6.67 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:1215 entropy_analyzer · 65%
medium
High-entropy string (6.27 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:1307 entropy_analyzer · 59%
medium
High-entropy string (6.22 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:1387 entropy_analyzer · 58%
medium
High-entropy string (6.20 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:1408 entropy_analyzer · 58%
medium
High-entropy string (6.70 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:1422 entropy_analyzer · 65%
medium
High-entropy string (6.43 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:1541 entropy_analyzer · 61%
medium
High-entropy string (6.66 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:1682 entropy_analyzer · 64%
medium
High-entropy string (5.93 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:1714 entropy_analyzer · 53%
medium
High-entropy string (6.13 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:1911 entropy_analyzer · 56%
medium
High-entropy string (6.60 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:2008 entropy_analyzer · 63%
medium
High-entropy string (6.38 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:2045 entropy_analyzer · 60%
medium
High-entropy string (6.08 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:2081 entropy_analyzer · 56%
medium
High-entropy string (5.83 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:2090 entropy_analyzer · 52%
medium
High-entropy string (6.44 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:2310 entropy_analyzer · 61%
medium
High-entropy string (5.92 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:2674 entropy_analyzer · 53%
medium
High-entropy string (6.34 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:2681 entropy_analyzer · 60%
medium
High-entropy string (5.97 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:2716 entropy_analyzer · 54%
medium
High-entropy string (5.87 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:2737 entropy_analyzer · 53%
medium
High-entropy string (5.76 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:3306 entropy_analyzer · 51%
medium
High-entropy string (5.73 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:3397 entropy_analyzer · 50%
medium
High-entropy string (6.07 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:3931 entropy_analyzer · 55%
medium
High-entropy string (6.36 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:4118 entropy_analyzer · 60%
medium
High-entropy string (6.93 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:4216 entropy_analyzer · 68%
medium
High-entropy string (5.95 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:4247 entropy_analyzer · 54%
medium
High-entropy string (5.76 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:4327 entropy_analyzer · 51%
medium
High-entropy string (6.46 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:4395 entropy_analyzer · 61%
medium
High-entropy string (6.43 bits/char) in littleblakew-msds-chain-mcp-7be0b48/server.py:4463 entropy_analyzer · 61%
medium
High-entropy string (6.73 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci529_chemicals_backfill.py:1 entropy_analyzer · 65%
medium
High-entropy string (6.31 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci666_no_hazard_basis_rendering.py:1 entropy_analyzer · 59%
medium
High-entropy string (6.08 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci666_no_hazard_basis_rendering.py:41 entropy_analyzer · 56%
medium
High-entropy string (5.80 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci666_no_hazard_basis_rendering.py:96 entropy_analyzer · 52%
medium
High-entropy string (6.40 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci356_lang_param.py:1 entropy_analyzer · 60%
medium
High-entropy string (6.53 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci356_lang_param.py:6 entropy_analyzer · 63%
medium
High-entropy string (5.81 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci356_lang_param.py:32 entropy_analyzer · 52%
medium
High-entropy string (6.07 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci356_lang_param.py:56 entropy_analyzer · 55%
medium
High-entropy string (5.83 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci356_lang_param.py:76 entropy_analyzer · 52%
medium
High-entropy string (6.18 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci356_lang_param.py:203 entropy_analyzer · 57%
medium
High-entropy string (6.03 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci356_lang_param.py:235 entropy_analyzer · 55%
medium
High-entropy string (5.90 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci553_precursor_disclosure_rendering.py:94 entropy_analyzer · 53%
medium
High-entropy string (5.71 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci553_precursor_disclosure_rendering.py:103 entropy_analyzer · 50%
medium
High-entropy string (6.12 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci553_precursor_disclosure_rendering.py:114 entropy_analyzer · 56%
medium
High-entropy string (5.86 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci553_precursor_disclosure_rendering.py:160 entropy_analyzer · 52%
medium
High-entropy string (5.74 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci553_precursor_disclosure_rendering.py:223 entropy_analyzer · 51%
medium
High-entropy string (5.93 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci137_alternatives_direct.py:46 entropy_analyzer · 53%
medium
High-entropy string (5.92 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci137_alternatives_direct.py:80 entropy_analyzer · 53%
medium
High-entropy string (6.31 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci137_alternatives_direct.py:161 entropy_analyzer · 59%
medium
High-entropy string (6.80 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci410_422_reason.py:3 entropy_analyzer · 67%
medium
High-entropy string (5.75 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci410_422_reason.py:82 entropy_analyzer · 51%
medium
High-entropy string (6.35 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci578_logged_params_not_reassigned.py:1 entropy_analyzer · 60%
medium
High-entropy string (5.85 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci578_logged_params_not_reassigned.py:37 entropy_analyzer · 52%
medium
High-entropy string (5.91 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci578_logged_params_not_reassigned.py:71 entropy_analyzer · 53%
medium
High-entropy string (5.88 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci578_logged_params_not_reassigned.py:141 entropy_analyzer · 53%
medium
High-entropy string (6.05 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci578_logged_params_not_reassigned.py:214 entropy_analyzer · 55%
medium
High-entropy string (5.86 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci714_unresolved_not_asserted_as_absence.py:15 entropy_analyzer · 52%
medium
High-entropy string (6.33 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci714_unresolved_not_asserted_as_absence.py:22 entropy_analyzer · 59%
medium
High-entropy string (6.02 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci714_unresolved_not_asserted_as_absence.py:156 entropy_analyzer · 55%
medium
High-entropy string (5.78 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci714_unresolved_not_asserted_as_absence.py:236 entropy_analyzer · 51%
medium
High-entropy string (5.84 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci714_unresolved_not_asserted_as_absence.py:257 entropy_analyzer · 52%
medium
High-entropy string (6.31 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci848_deprecated_version_args.py:18 entropy_analyzer · 59%
medium
High-entropy string (5.76 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci848_deprecated_version_args.py:95 entropy_analyzer · 51%
medium
High-entropy string (5.82 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci848_deprecated_version_args.py:113 entropy_analyzer · 52%
medium
High-entropy string (6.39 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci322_no_cas_rendering.py:1 entropy_analyzer · 60%
medium
High-entropy string (5.78 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci322_no_cas_rendering.py:95 entropy_analyzer · 51%
medium
High-entropy string (6.13 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci322_no_cas_rendering.py:109 entropy_analyzer · 56%
medium
High-entropy string (6.93 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci977_response_kind.py:1 entropy_analyzer · 68%
medium
High-entropy string (5.89 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci977_response_kind.py:21 entropy_analyzer · 53%
medium
High-entropy string (6.07 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci977_response_kind.py:63 entropy_analyzer · 55%
medium
High-entropy string (6.28 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci493_compliance_two_axes.py:1 entropy_analyzer · 59%
medium
High-entropy string (5.84 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci493_compliance_two_axes.py:56 entropy_analyzer · 52%
medium
High-entropy string (6.02 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci493_compliance_two_axes.py:98 entropy_analyzer · 55%
medium
High-entropy string (7.05 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci987_no_incident_narrative_in_public_repo.py:1 entropy_analyzer · 70%
medium
High-entropy string (6.46 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci987_no_incident_narrative_in_public_repo.py:15 entropy_analyzer · 61%
medium
High-entropy string (5.90 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci987_no_incident_narrative_in_public_repo.py:24 entropy_analyzer · 53%
medium
High-entropy string (5.79 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci987_no_incident_narrative_in_public_repo.py:107 entropy_analyzer · 51%
medium
High-entropy string (6.17 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci987_no_incident_narrative_in_public_repo.py:164 entropy_analyzer · 57%
medium
High-entropy string (6.38 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci987_no_incident_narrative_in_public_repo.py:167 entropy_analyzer · 60%
medium
High-entropy string (5.76 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci906_no_real_corpus_in_fixtures.py:68 entropy_analyzer · 51%
medium
High-entropy string (6.36 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci906_no_real_corpus_in_fixtures.py:72 entropy_analyzer · 60%
medium
High-entropy string (5.85 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci906_no_real_corpus_in_fixtures.py:156 entropy_analyzer · 52%
medium
High-entropy string (6.93 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci488_unavailable_disclosure.py:1 entropy_analyzer · 68%
medium
High-entropy string (5.78 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci470_unresolved_reasons.py:81 entropy_analyzer · 51%
medium
High-entropy string (6.58 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci333_response_logging.py:1 entropy_analyzer · 63%
medium
High-entropy string (6.36 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci914_timeout_is_error.py:127 entropy_analyzer · 60%
medium
High-entropy string (6.27 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci914_timeout_is_error.py:143 entropy_analyzer · 59%
medium
High-entropy string (6.14 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci914_timeout_is_error.py:165 entropy_analyzer · 57%
medium
High-entropy string (6.32 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci914_timeout_is_error.py:196 entropy_analyzer · 59%
medium
High-entropy string (5.95 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci914_timeout_is_error.py:233 entropy_analyzer · 54%
medium
High-entropy string (6.42 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci342_structured_passthrough.py:1 entropy_analyzer · 61%
medium
High-entropy string (6.44 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci868_auth_failure_message.py:1 entropy_analyzer · 61%
medium
High-entropy string (6.71 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci868_auth_failure_message.py:6 entropy_analyzer · 65%
medium
High-entropy string (5.92 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci868_auth_failure_message.py:88 entropy_analyzer · 53%
medium
High-entropy string (6.09 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci868_auth_failure_message.py:100 entropy_analyzer · 56%
medium
High-entropy string (6.27 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci868_auth_failure_message.py:146 entropy_analyzer · 59%
medium
High-entropy string (5.81 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci868_auth_failure_message.py:188 entropy_analyzer · 52%
medium
High-entropy string (5.84 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci868_auth_failure_message.py:192 entropy_analyzer · 52%
medium
High-entropy string (6.31 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci868_auth_failure_message.py:213 entropy_analyzer · 59%
medium
High-entropy string (6.21 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci868_auth_failure_message.py:259 entropy_analyzer · 58%
medium
High-entropy string (5.73 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci868_auth_failure_message.py:278 entropy_analyzer · 50%
medium
High-entropy string (5.71 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci592_unchecked_structured.py:56 entropy_analyzer · 50%
medium
High-entropy string (5.86 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci592_unchecked_structured.py:91 entropy_analyzer · 52%
medium
High-entropy string (6.17 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci592_unchecked_structured.py:116 entropy_analyzer · 57%
medium
High-entropy string (6.08 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci592_unchecked_structured.py:139 entropy_analyzer · 56%
medium
High-entropy string (6.54 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci842_841_new_disclosure_rendering.py:1 entropy_analyzer · 63%
medium
High-entropy string (5.83 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci842_841_new_disclosure_rendering.py:84 entropy_analyzer · 52%
medium
High-entropy string (6.06 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci842_841_new_disclosure_rendering.py:102 entropy_analyzer · 55%
medium
High-entropy string (6.02 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci842_841_new_disclosure_rendering.py:203 entropy_analyzer · 55%
medium
High-entropy string (6.27 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci842_841_new_disclosure_rendering.py:221 entropy_analyzer · 59%
medium
High-entropy string (5.93 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci842_841_new_disclosure_rendering.py:267 entropy_analyzer · 53%
medium
High-entropy string (6.43 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci842_841_new_disclosure_rendering.py:320 entropy_analyzer · 61%
medium
High-entropy string (6.09 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci842_841_new_disclosure_rendering.py:339 entropy_analyzer · 56%
medium
High-entropy string (6.02 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci842_841_new_disclosure_rendering.py:371 entropy_analyzer · 55%
medium
High-entropy string (5.91 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci842_841_new_disclosure_rendering.py:397 entropy_analyzer · 53%
medium
High-entropy string (6.21 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci842_841_new_disclosure_rendering.py:413 entropy_analyzer · 58%
medium
High-entropy string (5.77 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci842_841_new_disclosure_rendering.py:457 entropy_analyzer · 51%
medium
High-entropy string (6.19 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci905_session_survives_402.py:1 entropy_analyzer · 57%
medium
High-entropy string (6.31 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci905_session_survives_402.py:12 entropy_analyzer · 59%
medium
High-entropy string (5.91 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci905_session_survives_402.py:126 entropy_analyzer · 53%
medium
High-entropy string (5.73 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci905_session_survives_402.py:143 entropy_analyzer · 51%
medium
High-entropy string (6.80 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_commit_msg_hook.py:1 entropy_analyzer · 66%
medium
High-entropy string (6.38 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_commit_msg_hook.py:45 entropy_analyzer · 60%
medium
High-entropy string (5.89 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_commit_msg_hook.py:98 entropy_analyzer · 53%
medium
High-entropy string (6.09 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_commit_msg_hook.py:145 entropy_analyzer · 56%
medium
High-entropy string (5.88 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_commit_msg_hook.py:164 entropy_analyzer · 53%
medium
High-entropy string (6.09 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_commit_msg_hook.py:184 entropy_analyzer · 56%
medium
High-entropy string (6.00 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_commit_msg_hook.py:277 entropy_analyzer · 54%
medium
High-entropy string (5.85 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_commit_msg_hook.py:370 entropy_analyzer · 52%
medium
High-entropy string (6.01 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_commit_msg_hook.py:398 entropy_analyzer · 55%
medium
High-entropy string (5.72 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_commit_msg_hook.py:434 entropy_analyzer · 50%
medium
High-entropy string (6.08 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_commit_msg_hook.py:520 entropy_analyzer · 56%
medium
High-entropy string (5.85 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_commit_msg_hook.py:549 entropy_analyzer · 52%
medium
High-entropy string (6.34 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_commit_msg_hook.py:566 entropy_analyzer · 60%
medium
High-entropy string (6.02 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_commit_msg_hook.py:623 entropy_analyzer · 55%
medium
High-entropy string (5.79 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_commit_msg_hook.py:651 entropy_analyzer · 51%
medium
High-entropy string (6.19 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_commit_msg_hook.py:670 entropy_analyzer · 57%
medium
High-entropy string (5.97 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_commit_msg_hook.py:704 entropy_analyzer · 54%
medium
High-entropy string (5.93 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci245_live_coverage_cases.py:41 entropy_analyzer · 53%
medium
High-entropy string (5.85 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci245_live_coverage_cases.py:81 entropy_analyzer · 52%
medium
High-entropy string (5.89 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci245_live_coverage_cases.py:121 entropy_analyzer · 53%
medium
High-entropy string (5.82 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci937_tail_not_exposed.py:115 entropy_analyzer · 52%
medium
High-entropy string (5.95 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci937_tail_not_exposed.py:172 entropy_analyzer · 54%
medium
High-entropy string (6.22 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci611_order_not_a_clearance.py:3 entropy_analyzer · 58%
medium
High-entropy string (6.81 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci408_section_gap_rendering.py:6 entropy_analyzer · 67%
medium
High-entropy string (6.01 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci615_preparation_text.py:1 entropy_analyzer · 55%
medium
High-entropy string (6.20 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci615_preparation_text.py:41 entropy_analyzer · 57%
medium
High-entropy string (5.73 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci615_preparation_text.py:79 entropy_analyzer · 50%
medium
High-entropy string (5.76 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci615_preparation_text.py:124 entropy_analyzer · 51%
medium
High-entropy string (6.30 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci360_insufficient_rendering.py:1 entropy_analyzer · 59%
medium
High-entropy string (6.06 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci360_insufficient_rendering.py:67 entropy_analyzer · 55%
medium
High-entropy string (6.02 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci979_cas_mismatch_rendering.py:127 entropy_analyzer · 55%
medium
High-entropy string (5.75 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci979_cas_mismatch_rendering.py:160 entropy_analyzer · 51%
medium
High-entropy string (6.68 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci347_form_disclosure_rendering.py:1 entropy_analyzer · 65%
medium
High-entropy string (5.94 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci347_form_disclosure_rendering.py:54 entropy_analyzer · 54%
medium
High-entropy string (6.36 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci977_no_unlisted_pytest_plugin.py:1 entropy_analyzer · 60%
medium
High-entropy string (6.06 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci977_no_unlisted_pytest_plugin.py:43 entropy_analyzer · 55%
medium
High-entropy string (6.01 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci977_no_unlisted_pytest_plugin.py:91 entropy_analyzer · 55%
medium
High-entropy string (6.84 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci365_citation_divergence_rendering.py:1 entropy_analyzer · 67%
medium
High-entropy string (6.27 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci365_citation_divergence_rendering.py:44 entropy_analyzer · 59%
medium
High-entropy string (5.91 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci919_mcp_surface_adapter.py:66 entropy_analyzer · 53%
medium
High-entropy string (6.84 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci242_body_limit.py:1 entropy_analyzer · 67%
medium
High-entropy string (6.52 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci596_pair_names_not_identity.py:1 entropy_analyzer · 62%
medium
High-entropy string (5.85 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci613_mixing_order_fallback.py:36 entropy_analyzer · 52%
medium
High-entropy string (6.18 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci613_mixing_order_fallback.py:78 entropy_analyzer · 57%
medium
High-entropy string (5.94 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci613_mixing_order_fallback.py:138 entropy_analyzer · 54%
medium
High-entropy string (6.85 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci570_batch_truncation.py:1 entropy_analyzer · 67%
medium
High-entropy string (5.79 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci570_batch_truncation.py:18 entropy_analyzer · 51%
medium
High-entropy string (5.89 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci570_batch_truncation.py:128 entropy_analyzer · 53%
medium
High-entropy string (6.40 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci523_regulatory_lists_direct.py:5 entropy_analyzer · 61%
medium
High-entropy string (5.77 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci523_regulatory_lists_direct.py:57 entropy_analyzer · 51%
medium
High-entropy string (6.34 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci523_regulatory_lists_direct.py:126 entropy_analyzer · 60%
medium
High-entropy string (5.86 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci523_regulatory_lists_direct.py:155 entropy_analyzer · 52%
medium
High-entropy string (5.85 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci523_regulatory_lists_direct.py:177 entropy_analyzer · 52%
medium
High-entropy string (6.24 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_cron_alert_coverage.py:22 entropy_analyzer · 58%
medium
High-entropy string (6.11 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_cron_alert_coverage.py:60 entropy_analyzer · 56%
medium
High-entropy string (6.06 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci336_invariant_smoke.py:120 entropy_analyzer · 55%
medium
High-entropy string (6.41 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci336_invariant_smoke.py:136 entropy_analyzer · 61%
medium
High-entropy string (6.27 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_server_tools.py:1404 entropy_analyzer · 59%
medium
High-entropy string (6.21 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_server_tools.py:1418 entropy_analyzer · 58%
medium
High-entropy string (6.63 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci595_raw_appendix_keeps_verdicts.py:1 entropy_analyzer · 64%
medium
High-entropy string (5.75 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci595_raw_appendix_keeps_verdicts.py:123 entropy_analyzer · 51%
medium
High-entropy string (5.88 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci595_raw_appendix_keeps_verdicts.py:138 entropy_analyzer · 53%
medium
High-entropy string (5.78 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci595_raw_appendix_keeps_verdicts.py:163 entropy_analyzer · 51%
medium
High-entropy string (5.75 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci595_raw_appendix_keeps_verdicts.py:177 entropy_analyzer · 51%
medium
High-entropy string (6.78 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci904_unknown_balance.py:1 entropy_analyzer · 66%
medium
High-entropy string (6.15 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci904_unknown_balance.py:25 entropy_analyzer · 57%
medium
High-entropy string (6.00 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci904_unknown_balance.py:134 entropy_analyzer · 54%
medium
High-entropy string (7.11 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci567_568_emergency_priority_rendering.py:1 entropy_analyzer · 71%
medium
High-entropy string (5.73 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci567_568_emergency_priority_rendering.py:33 entropy_analyzer · 50%
medium
High-entropy string (5.83 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci567_568_emergency_priority_rendering.py:88 entropy_analyzer · 52%
medium
High-entropy string (5.91 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci567_568_emergency_priority_rendering.py:109 entropy_analyzer · 53%
medium
High-entropy string (6.73 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci515_cache_hints.py:1 entropy_analyzer · 65%
medium
High-entropy string (6.17 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci515_cache_hints.py:53 entropy_analyzer · 57%
medium
High-entropy string (5.84 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci515_cache_hints.py:63 entropy_analyzer · 52%
medium
High-entropy string (5.98 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci515_cache_hints.py:77 entropy_analyzer · 54%
medium
High-entropy string (6.10 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci848_tool_surface_drift.py:43 entropy_analyzer · 56%
medium
High-entropy string (5.79 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci848_tool_surface_drift.py:99 entropy_analyzer · 51%
medium
High-entropy string (6.59 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci848_tool_surface_drift.py:112 entropy_analyzer · 63%
medium
High-entropy string (6.15 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci848_tool_surface_drift.py:143 entropy_analyzer · 57%
medium
High-entropy string (5.95 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci572_form_disclosure_text.py:40 entropy_analyzer · 54%
medium
High-entropy string (5.91 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci572_form_disclosure_text.py:91 entropy_analyzer · 53%
medium
High-entropy string (6.10 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci572_form_disclosure_text.py:123 entropy_analyzer · 56%
medium
High-entropy string (6.02 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci572_form_disclosure_text.py:139 entropy_analyzer · 55%
medium
High-entropy string (6.11 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci892_report_billing.py:7 entropy_analyzer · 56%
medium
High-entropy string (5.78 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci892_report_billing.py:109 entropy_analyzer · 51%
medium
High-entropy string (6.52 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci521_param_descriptions.py:1 entropy_analyzer · 62%
medium
High-entropy string (6.26 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci521_param_descriptions.py:70 entropy_analyzer · 58%
medium
High-entropy string (6.30 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci521_param_descriptions.py:86 entropy_analyzer · 59%
medium
High-entropy string (6.04 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci823_intent_param.py:29 entropy_analyzer · 55%
medium
High-entropy string (6.03 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci823_intent_param.py:101 entropy_analyzer · 55%
medium
High-entropy string (5.94 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci823_intent_param.py:205 entropy_analyzer · 54%
medium
High-entropy string (6.52 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci770_empty_reason_passthrough.py:4 entropy_analyzer · 62%
medium
High-entropy string (6.52 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci174_report_without_session.py:1 entropy_analyzer · 62%
medium
High-entropy string (5.86 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci174_report_without_session.py:103 entropy_analyzer · 52%
medium
High-entropy string (5.72 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci174_report_without_session.py:122 entropy_analyzer · 50%
medium
High-entropy string (5.94 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci174_report_without_session.py:150 entropy_analyzer · 54%
medium
High-entropy string (5.78 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_ci174_report_without_session.py:160 entropy_analyzer · 51%
medium
High-entropy string (6.55 bits/char) in littleblakew-msds-chain-mcp-7be0b48/tests/test_storage_insufficient_disclosure.py:63 entropy_analyzer · 63%
medium
High-entropy string (6.49 bits/char) in littleblakew-msds-chain-mcp-7be0b48/scripts/export_tool_surface.py:2 entropy_analyzer · 62%
medium
High-entropy string (6.42 bits/char) in littleblakew-msds-chain-mcp-7be0b48/scripts/live_tool_coverage.py:68 entropy_analyzer · 61%
medium
High-entropy string (6.50 bits/char) in littleblakew-msds-chain-mcp-7be0b48/scripts/smoke_mcp.py:38 entropy_analyzer · 62%
medium
High-entropy string (5.83 bits/char) in littleblakew-msds-chain-mcp-7be0b48/scripts/mcp_surface_replay.py:42 entropy_analyzer · 52%
medium
High-entropy string (6.26 bits/char) in littleblakew-msds-chain-mcp-7be0b48/scripts/mcp_surface_replay.py:64 entropy_analyzer · 58%
medium
High-entropy string (6.59 bits/char) in littleblakew-msds-chain-mcp-7be0b48/scripts/mcp_surface_adapter.py:8 entropy_analyzer · 63%
medium
High-entropy string (6.47 bits/char) in littleblakew-msds-chain-mcp-7be0b48/scripts/ci/send_alert_email.py:97 entropy_analyzer · 62%
info
package.json metadata manifest_parser · 100%
info
Tool: check_chemical_compatibility manifest_parser · 90%
info
Tool: get_chemical_risk_warnings manifest_parser · 90%
info
Tool: check_regulatory_compliance manifest_parser · 90%
info
Tool: ask_chemical_safety manifest_parser · 90%
info
Tool: get_ppe_recommendation manifest_parser · 90%
info
Tool: get_storage_guidance manifest_parser · 90%
info
Tool: get_emergency_response manifest_parser · 90%
info
Tool: get_exposure_limits manifest_parser · 90%
info
Tool: get_transport_classification manifest_parser · 90%
info
Tool: create_audit_session manifest_parser · 90%
info
Tool: get_audit_report manifest_parser · 90%
info
Tool: search_chemical_database manifest_parser · 90%
info
Tool: search_msds_online manifest_parser · 90%
info
Tool: get_sds_section manifest_parser · 90%
info
Tool: get_chemical_alternatives manifest_parser · 90%
info
Tool: validate_protocol_chemicals manifest_parser · 90%
info
Tool: check_mixing_order manifest_parser · 90%
info
Tool: get_waste_disposal manifest_parser · 90%
info
Tool: compare_sds_versions manifest_parser · 90%
info
Tool: upload_msds_pdf manifest_parser · 90%
info
Tool: batch_safety_check manifest_parser · 90%
info
Tool: check_regulatory_lists manifest_parser · 90%
info
Tool: get_sds_document manifest_parser · 90%
info
Transport: streamable-http manifest_parser · 80%
info
Required env vars (30) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
medium
Permission: network access detected permission_analyzer · 90%
low
Permission: filesystem access detected permission_analyzer · 90%
high
Permission: shell access detected permission_analyzer · 95%
low
Permission: env_vars access detected permission_analyzer · 90%
critical
Tool poisoning in 'ask_chemical_safety': Directive language: 'you must' poisoning · 85%
critical
Tool poisoning in 'validate_protocol_chemicals': Directive language: 'you must' poisoning · 85%
critical
Tool poisoning in 'batch_safety_check': Cross-tool prerequisite: 'first call/use' poisoning · 85%
info
SBOM generated: 4 components sbom_generator · 100%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%