{"openapi":"3.1.0","info":{"title":"Molecule API","version":"0.1.0","description":"PubChem compounds and GHS safety, periodic table, molar mass, equation balancing, solution, pH and ideal-gas calculators.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://molecule.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/molecule/docs"},"termsOfService":"https://connectorbay.com/molecule/terms"},"servers":[{"url":"https://molecule.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/molecule/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/compound":{"post":{"operationId":"compound","summary":"A compound's identity and properties from PubChem: formula, molecular weight, exact mass, IUPAC name, SMILES,","description":"A compound's identity and properties from PubChem: formula, molecular weight, exact mass, IUPAC name, SMILES,\n    InChIKey, XLogP, TPSA, H-bond counts, description, synonyms, CAS, structure image and link; optionally the GHS\n    hazard summary. Use for \"what is ibuprofen's formula\", \"properties of ethanol\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Name, CAS number, SMILES, InChIKey or PubChem CID.","examples":["caffeine","aspirin","58-08-2","CC(=O)O","2519"],"title":"Query","type":"string"},"include_safety":{"default":false,"description":"Also fetch the GHS classification.","title":"Include Safety","type":"boolean"}},"required":["query"],"title":"compoundArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/compound_search":{"post":{"operationId":"compound_search","summary":"Autocomplete compound names from PubChem — for misspellings or to discover exact names before `compound`.","description":"Autocomplete compound names from PubChem — for misspellings or to discover exact names before `compound`.","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"prefix":{"description":"Start of a compound name (3+ letters).","examples":["aspir","ibupro","sodium bicarb"],"title":"Prefix","type":"string"},"limit":{"default":10,"maximum":25,"minimum":1,"title":"Limit","type":"integer"}},"required":["prefix"],"title":"compound_searchArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/compound_safety":{"post":{"operationId":"compound_safety","summary":"GHS classification for a substance: pictograms, signal word, hazard statements (H-codes with the share of","description":"GHS classification for a substance: pictograms, signal word, hazard statements (H-codes with the share of\n    notifiers reporting them), precautionary codes. Use for \"is toluene dangerous\", \"hazards of bleach\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Compound name, CAS or CID.","examples":["acetone","sodium hydroxide","benzene"],"title":"Query","type":"string"}},"required":["query"],"title":"compound_safetyArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/element":{"post":{"operationId":"element","summary":"Everything about one element: mass, category, period/group/block, electron configuration, electronegativity,","description":"Everything about one element: mass, category, period/group/block, electron configuration, electronegativity,\n    ionisation energies, density, melting and boiling points, appearance, discovery and a summary.","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Symbol, name or atomic number.","examples":["Fe","tungsten","79"],"title":"Query","type":"string"}},"required":["query"],"title":"elementArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/periodic_table":{"post":{"operationId":"periodic_table","summary":"List elements by group, period, category, block or phase — compact rows (number, symbol, name, mass,","description":"List elements by group, period, category, block or phase — compact rows (number, symbol, name, mass,\n    category, electronegativity, melting point). No filter returns all 118. Use for \"noble gases\", \"period 4\n    elements\", \"which elements are liquid at room temperature\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"group":{"anyOf":[{"maximum":18,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Group 1–18.","title":"Group"},"period":{"anyOf":[{"maximum":7,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Period 1–7.","title":"Period"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"e.g. noble gas, alkali metal, alkaline earth metal, transition metal, post-transition metal, metalloid, halogen (diatomic nonmetal), lanthanide, actinide.","title":"Category"},"block":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"s | p | d | f","title":"Block"},"phase":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Solid | Liquid | Gas at STP","title":"Phase"}},"title":"periodic_tableArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/molar_mass":{"post":{"operationId":"molar_mass","summary":"Molar mass and percent composition from a formula. Use for \"molar mass of glucose\", \"percent of copper in","description":"Molar mass and percent composition from a formula. Use for \"molar mass of glucose\", \"percent of copper in\n    CuSO4·5H2O\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"formula":{"description":"Chemical formula; brackets and hydrates allowed.","examples":["H2O","Ca(OH)2","CuSO4·5H2O","C6H12O6"],"title":"Formula","type":"string"}},"required":["formula"],"title":"molar_massArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/balance_equation":{"post":{"operationId":"balance_equation","summary":"Balance a chemical equation and give each species' molar mass. Use for \"balance C3H8 + O2 -> CO2 + H2O\".","description":"Balance a chemical equation and give each species' molar mass. Use for \"balance C3H8 + O2 -> CO2 + H2O\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"equation":{"description":"Reactants = products (or ->), species separated by +.","examples":["Fe + O2 -> Fe2O3","C3H8 + O2 = CO2 + H2O","Al + H2SO4 -> Al2(SO4)3 + H2"],"title":"Equation","type":"string"}},"required":["equation"],"title":"balance_equationArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/solution_calc":{"post":{"operationId":"solution_calc","summary":"Solution arithmetic: mass ↔ moles ↔ molarity for a volume, dilution (M1V1 = M2V2), how much stock to take for","description":"Solution arithmetic: mass ↔ moles ↔ molarity for a volume, dilution (M1V1 = M2V2), how much stock to take for\n    a target, or how much solid to weigh. Use for \"how many grams of NaCl for 500 mL of 0.15 M\", \"dilute 10 mL of\n    2 M HCl to 100 mL\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"solute":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Solute formula (for mass ↔ moles).","examples":["NaCl","NaOH","C6H12O6"],"title":"Solute"},"mass_g":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"title":"Mass G"},"moles":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"title":"Moles"},"volume_ml":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"title":"Volume Ml"},"molarity":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"mol/L of the solution or stock.","title":"Molarity"},"dilute_to_ml":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Final volume for a dilution / preparation.","title":"Dilute To Ml"},"target_molarity":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Wanted concentration of the final solution.","title":"Target Molarity"}},"title":"solution_calcArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/ph_calc":{"post":{"operationId":"ph_calc","summary":"pH of strong or weak acids and bases at a concentration (exact quadratic for weak), buffer pH by","description":"pH of strong or weak acids and bases at a concentration (exact quadratic for weak), buffer pH by\n    Henderson–Hasselbalch, or conversions from a pH. Use for \"pH of 0.01 M HCl\", \"pH of 0.1 M acetic acid\", \"buffer\n    0.1 M acetic acid / 0.2 M acetate\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"species":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Acid/base formula or name: HCl, NaOH, acetic acid, NH3, HF… (built-in pKa/pKb table).","examples":["HCl","acetic acid","NH3","NaOH"],"title":"Species"},"concentration":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"mol/L","title":"Concentration"},"pka":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Override/supply pKa for a weak acid.","title":"Pka"},"pkb":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"description":"Override/supply pKb for a weak base.","title":"Pkb"},"acid_conc":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Buffer: weak acid concentration.","title":"Acid Conc"},"base_conc":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Buffer: conjugate base concentration.","title":"Base Conc"},"given_ph":{"anyOf":[{"maximum":16,"minimum":-2,"type":"number"},{"type":"null"}],"default":null,"description":"Convert a pH to [H+], [OH-], pOH.","title":"Given Ph"}},"title":"ph_calcArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/ideal_gas":{"post":{"operationId":"ideal_gas","summary":"Solve PV = nRT for the missing quantity (give three), with kPa and °C conversions and, with a formula, mass","description":"Solve PV = nRT for the missing quantity (give three), with kPa and °C conversions and, with a formula, mass\n    and density. Use for \"volume of 2 mol gas at STP\", \"moles of CO2 in 5 L at 2 atm and 300 K\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"pressure_atm":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"title":"Pressure Atm"},"volume_l":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"title":"Volume L"},"moles":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"title":"Moles"},"temperature_k":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"title":"Temperature K"},"mass_g":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Instead of moles, with formula.","title":"Mass G"},"formula":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Gas formula for mass/density.","examples":["O2","CO2","N2"],"title":"Formula"}},"title":"ideal_gasArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}