Server definition
- Hash
- sha256:f5be29e6b879895dca17f3f9e3ac739e213e424923a51b2c650559218bb8131d
- What it is
- What a remote MCP server returned when asked what it offers: 10 tools
The blob, as servednamed by its sha256
{
"instructions": "Use the pubchem_* tools to query PubChem's chemical database. Compounds are addressed by CID, assays by AID. Most flows start at `pubchem_search_compounds` (name, SMILES, InChIKey, formula, substructure, superstructure, or 2D similarity → CIDs), then call per-CID tools for details, safety, image, cross-references, bioactivity, interactions (drug-drug/drug-food/target), or 3D structure. To find assays for a biological target, chain `pubchem_search_assays` (gene/protein → AIDs) into `pubchem_get_summary` (`entityType: assay`) per AID; to check whether a compound is active against a target, call `pubchem_get_bioactivity` with a `cid` plus `targetGeneId`/`targetAccession`. `pubchem_get_summary` covers assay/gene/protein/taxonomy entity lookups. Compound and assay records are also exposed as URI-addressable resources (e.g. `pubchem://compound/{cid}`, `pubchem://assay/{aid}`).",
"tools": [
{
"description": "Get a compound's bioactivity profile: which assays tested it, activity outcomes (Active/Inactive/Inconclusive), target identifiers (NCBI Gene ID, UniProt/GenBank accession), and quantitative values (IC50, EC50, Ki, etc.). Filter by outcome and/or a specific molecular target (NCBI Gene ID or protein accession) to focus the profile — e.g. \"is this compound active against target T?\".",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"cid": {
"description": "PubChem Compound ID. Resolve from name/SMILES with pubchem_search_compounds.",
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
},
"maxResults": {
"default": 20,
"description": "Max assay results to return per page (1-100). Well-studied compounds have thousands of records; use offset to reach the ones past this page. Default: 20.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"offset": {
"default": 0,
"description": "Zero-based index of the first assay to return, applied after the outcome and target filters. Pass the nextOffset from a previous call to read the following page. Default: 0.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"outcomeFilter": {
"default": "all",
"description": "Filter by activity outcome. \"active\" shows only assays where the compound showed activity — most useful for understanding biological profile. Default: \"all\".",
"enum": [
"active",
"inactive",
"all"
],
"type": "string"
},
"targetAccession": {
"description": "Filter to assays against this target protein accession (UniProt/GenBank), e.g. \"P35354\". Obtain accessions from pubchem_search_assays or the targetAccession field of an unfiltered result here.",
"type": "string"
},
"targetGeneId": {
"description": "Filter to assays against this NCBI Gene ID. Obtain Gene IDs from pubchem_search_assays or the targetGeneId field of an unfiltered result here. Combine with outcomeFilter=\"active\" to answer \"is this compound active against target T?\".",
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
}
},
"required": [
"cid"
],
"type": "object"
},
"name": "pubchem_get_bioactivity",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"cid",
"totalAssays",
"activeCount",
"inactiveCount",
"results",
"outcomeFilter",
"filteredCount",
"returnedCount",
"offset"
]
},
{
"required": [
"error"
]
}
],
"properties": {
"activeCount": {
"description": "Assays with \"Active\" outcome.",
"type": "number"
},
"cap": {
"description": "The maxResults cap that was applied.",
"type": "number"
},
"cid": {
"description": "PubChem Compound ID.",
"type": "number"
},
"error": {
"additionalProperties": {},
"description": "Present when the call failed. Absent on success.",
"properties": {
"code": {
"description": "JSON-RPC error code for this failure.",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"data": {
"additionalProperties": {},
"properties": {
"reason": {
"description": "Machine-readable failure mode.",
"type": "string"
},
"recovery": {
"additionalProperties": {},
"description": "Actionable next step for the caller.",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"type": "object"
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"type": "object"
},
"message": {
"description": "Human-readable description of what went wrong.",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
},
"filteredCount": {
"description": "Exact number of assays matching the outcome and target filters, across all pages.",
"type": "number"
},
"inactiveCount": {
"description": "Assays with \"Inactive\" outcome.",
"type": "number"
},
"nextOffset": {
"description": "Offset to pass on the next call to continue past this page. Omitted when no further assays match.",
"type": "number"
},
"notice": {
"description": "Recovery guidance when the filter yields no results or the compound has no bioactivity data.",
"type": "string"
},
"offset": {
"description": "Zero-based index of the first assay returned.",
"type": "number"
},
"outcomeFilter": {
"description": "Outcome filter applied: active, inactive, or all.",
"type": "string"
},
"results": {
"description": "Assay results matching the filter.",
"items": {
"additionalProperties": false,
"description": "Assay result entry.",
"properties": {
"activityValues": {
"description": "Quantitative activity measurements.",
"items": {
"additionalProperties": false,
"description": "Quantitative activity measurement entry.",
"properties": {
"name": {
"description": "Measurement name (e.g. IC50, EC50, Ki). Omitted when not reported.",
"type": "string"
},
"unit": {
"description": "Unit of measurement (e.g. uM, nM). Omitted when not reported.",
"type": "string"
},
"value": {
"description": "Measured value.",
"type": "number"
}
},
"required": [
"value"
],
"type": "object"
},
"type": "array"
},
"aid": {
"description": "PubChem Assay ID.",
"type": "number"
},
"assayName": {
"description": "Assay name/title.",
"type": "string"
},
"outcome": {
"description": "Activity outcome: Active, Inactive, Inconclusive, Unspecified.",
"type": "string"
},
"targetAccession": {
"description": "Target protein accession (UniProt/GenBank).",
"type": "string"
},
"targetGeneId": {
"description": "Target NCBI Gene ID.",
"type": "number"
}
},
"required": [
"aid",
"assayName",
"outcome",
"activityValues"
],
"type": "object"
},
"type": "array"
},
"returnedCount": {
"description": "Assays returned on this page.",
"type": "number"
},
"shown": {
"description": "Assays returned on this page.",
"type": "number"
},
"targetFilter": {
"description": "Target filter applied (gene ID and/or protein accession), when set.",
"type": "string"
},
"totalAssays": {
"description": "Total unique assays for this compound.",
"type": "number"
},
"truncated": {
"description": "True when matching assays remain past this page.",
"type": "boolean"
}
},
"type": "object"
}
},
{
"description": "Get a compound's default 3D conformer — atomic coordinates and bonds — for one CID. format=\"json\" (default) returns atoms and bonds parsed into structured fields; format=\"sdf\" returns the raw V2000 SDF text for passthrough to docking, rendering, or conformer tools. Optionally lists alternate conformer IDs. Not every compound has computed 3D coordinates (large molecules, mixtures, and some salts do not).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"cid": {
"description": "PubChem Compound ID. Resolve from name/SMILES with pubchem_search_compounds.",
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
},
"format": {
"default": "json",
"description": "Output format. \"json\" (default) returns parsed atoms and bonds. \"sdf\" returns the raw V2000 SDF text for passthrough to other tools.",
"enum": [
"sdf",
"json"
],
"type": "string"
},
"includeAlternateConformerIds": {
"default": false,
"description": "List the IDs of additional computed conformers beyond the default. Slower than the default response. Default: false.",
"type": "boolean"
},
"includeRawSdf": {
"default": false,
"description": "For format=\"sdf\", return the complete raw V2000 SDF even when it exceeds the safe line cap. Default false: an SDF longer than 500 lines is line-capped with disclosure. No effect when format=\"json\".",
"type": "boolean"
},
"maxAtoms": {
"description": "Cap the atoms returned in the format=\"json\" preview. atomCount always reports the full total; omitted rows are disclosed via the truncated/shownAtoms enrichment. Defaults to the first 200 atoms.",
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
},
"maxBonds": {
"description": "Cap the bonds returned in the format=\"json\" preview. bondCount always reports the full total; omitted rows are disclosed via the truncated/shownBonds enrichment. Defaults to the first 200 bonds.",
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
}
},
"required": [
"cid"
],
"type": "object"
},
"name": "pubchem_get_compound_3d_structure",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"cid",
"atomCount",
"bondCount"
]
},
{
"required": [
"error"
]
}
],
"properties": {
"alternateConformerIds": {
"description": "Conformer IDs beyond the default. Present when includeAlternateConformerIds is set and alternates exist.",
"items": {
"type": "string"
},
"type": "array"
},
"atomCap": {
"description": "The atom cap applied (explicit maxAtoms or the safe default), when the atom list was capped.",
"type": "number"
},
"atomCount": {
"description": "Number of atoms in the conformer.",
"type": "number"
},
"atoms": {
"description": "Parsed atoms. Populated when format=\"json\".",
"items": {
"additionalProperties": false,
"description": "Atom with 3D Cartesian coordinates.",
"properties": {
"element": {
"description": "Element symbol (e.g. \"C\", \"O\", \"N\").",
"type": "string"
},
"x": {
"description": "X coordinate (Angstroms).",
"type": "number"
},
"y": {
"description": "Y coordinate (Angstroms).",
"type": "number"
},
"z": {
"description": "Z coordinate (Angstroms).",
"type": "number"
}
},
"required": [
"element",
"x",
"y",
"z"
],
"type": "object"
},
"type": "array"
},
"bondCap": {
"description": "The bond cap applied (explicit maxBonds or the safe default), when the bond list was capped.",
"type": "number"
},
"bondCount": {
"description": "Number of bonds in the conformer.",
"type": "number"
},
"bonds": {
"description": "Parsed bonds. Populated when format=\"json\".",
"items": {
"additionalProperties": false,
"description": "Bond between two atoms.",
"properties": {
"a1": {
"description": "First atom index (1-based).",
"type": "number"
},
"a2": {
"description": "Second atom index (1-based).",
"type": "number"
},
"order": {
"description": "Bond order (1=single, 2=double, 3=triple, 4=aromatic).",
"type": "number"
}
},
"required": [
"a1",
"a2",
"order"
],
"type": "object"
},
"type": "array"
},
"cid": {
"description": "PubChem Compound ID.",
"type": "number"
},
"conformerId": {
"description": "Default (primary) conformer ID. Present when includeAlternateConformerIds is set.",
"type": "string"
},
"error": {
"additionalProperties": {},
"description": "Present when the call failed. Absent on success.",
"properties": {
"code": {
"description": "JSON-RPC error code for this failure.",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"data": {
"additionalProperties": {},
"properties": {
"reason": {
"description": "Machine-readable failure mode. Declared by this tool: `no_3d_structure`: PubChem has no computed 3D conformer for the requested CID. Other values are possible when a failure originates below the handler.",
"examples": [
"no_3d_structure"
],
"type": "string"
},
"recovery": {
"additionalProperties": {},
"description": "Actionable next step for the caller.",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"type": "object"
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"type": "object"
},
"message": {
"description": "Human-readable description of what went wrong.",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
},
"notice": {
"description": "Guidance naming which lists were capped and how to widen them.",
"type": "string"
},
"sdf": {
"description": "Raw V2000 SDF text. Populated when format=\"sdf\".",
"type": "string"
},
"shownAtoms": {
"description": "Atoms returned after the cap, when fewer than atomCount. Raise maxAtoms for more.",
"type": "number"
},
"shownBonds": {
"description": "Bonds returned after the cap, when fewer than bondCount. Raise maxBonds for more.",
"type": "number"
},
"shownSdfLines": {
"description": "SDF lines returned when format=\"sdf\" and the raw text was line-capped. Set includeRawSdf for the full record.",
"type": "number"
},
"truncated": {
"description": "True when the atom list, bond list, or raw SDF was capped below its total. atomCount/bondCount always report the full totals.",
"type": "boolean"
}
},
"type": "object"
}
},
{
"description": "Get detailed compound information by CID. Returns physicochemical properties (molecular weight, SMILES, InChIKey, XLogP, TPSA, etc.), optionally with a textual description (pharmacology, mechanism, therapeutic use), known synonyms, drug-likeness assessment (Lipinski/Veber rules), and/or pharmacological classification (FDA classes, MeSH classes, ATC codes). Accepts up to 100 CIDs per call.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"cids": {
"description": "PubChem Compound IDs to fetch (1-100). Resolve from names/SMILES with pubchem_search_compounds.",
"items": {
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
},
"maxItems": 100,
"minItems": 1,
"type": "array"
},
"descriptionOffset": {
"default": 0,
"description": "Zero-based index of the first description to return within each compound's description list. The same offset is applied to every compound in the batch. Pass the nextDescriptionOffset from a previous call to read the following page. Default: 0.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"includeClassification": {
"default": false,
"description": "Include pharmacological classification: FDA Established Pharmacologic Classes, mechanisms of action, MeSH classes, and ATC codes. Fetched only for the first 10 CIDs in the batch; remaining CIDs return without classification and are listed in the response's skippedCids.",
"type": "boolean"
},
"includeDescription": {
"default": false,
"description": "Include textual descriptions (pharmacology, mechanism, therapeutic use) attributed by source. Well-studied compounds have many overlapping summaries — paged via descriptionOffset/maxDescriptions. Fetched only for the first 10 CIDs in the batch; remaining CIDs return without descriptions and are listed in the response's skippedCids.",
"type": "boolean"
},
"includeDrugLikeness": {
"default": false,
"description": "Compute drug-likeness assessment: Lipinski Rule of Five (MW, XLogP, HBD, HBA) and Veber rules (TPSA, rotatable bonds). Computed from the returned properties, so it adds no latency.",
"type": "boolean"
},
"includeSynonyms": {
"default": false,
"description": "Fetch known names and synonyms (trade names, systematic names, registry numbers), paged via synonymOffset/maxSynonyms. Fetched for every found CID in the batch. Slower for large CID lists.",
"type": "boolean"
},
"maxDescriptions": {
"default": 3,
"description": "Max number of distinct description entries per compound per page (1-20). PubChem returns near-duplicate summaries from many depositors; duplicates are collapsed before this cap applies. Default: 3.",
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"maxSynonyms": {
"default": 20,
"description": "Max synonyms returned per compound per page (1-100). PubChem lists hundreds for common drugs; use synonymOffset to reach the ones past this page. Default: 20.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"properties": {
"description": "Properties to retrieve. Defaults to a core set: MolecularFormula, MolecularWeight, IUPACName, CanonicalSMILES, IsomericSMILES, InChIKey, XLogP, TPSA, HBondDonorCount, HBondAcceptorCount, RotatableBondCount, HeavyAtomCount, Charge, Complexity.",
"items": {
"enum": [
"MolecularFormula",
"MolecularWeight",
"CanonicalSMILES",
"IsomericSMILES",
"InChI",
"InChIKey",
"IUPACName",
"Title",
"XLogP",
"ExactMass",
"MonoisotopicMass",
"TPSA",
"Complexity",
"Charge",
"HBondDonorCount",
"HBondAcceptorCount",
"RotatableBondCount",
"HeavyAtomCount",
"IsotopeAtomCount",
"AtomStereoCount",
"DefinedAtomStereoCount",
"UndefinedAtomStereoCount",
"BondStereoCount",
"DefinedBondStereoCount",
"UndefinedBondStereoCount",
"CovalentUnitCount",
"Volume3D"
],
"type": "string"
},
"type": "array"
},
"synonymOffset": {
"default": 0,
"description": "Zero-based index of the first synonym to return within each compound's synonym list. The same offset is applied to every compound in the batch. Pass the nextSynonymOffset from a previous call to read the following page. Default: 0.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
}
},
"required": [
"cids"
],
"type": "object"
},
"name": "pubchem_get_compound_details",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"compounds",
"truncated"
]
},
{
"required": [
"error"
]
}
],
"properties": {
"compounds": {
"description": "Compound detail records.",
"items": {
"additionalProperties": false,
"description": "Per-CID compound detail record.",
"properties": {
"cid": {
"description": "PubChem Compound ID.",
"type": "number"
},
"classification": {
"additionalProperties": false,
"description": "Pharmacological classification (FDA, MeSH, ATC).",
"properties": {
"atcCodes": {
"description": "ATC codes with hierarchical descriptions.",
"items": {
"additionalProperties": false,
"description": "ATC code entry with hierarchical description.",
"properties": {
"code": {
"description": "ATC code.",
"type": "string"
},
"description": {
"description": "ATC code description.",
"type": "string"
}
},
"required": [
"code",
"description"
],
"type": "object"
},
"type": "array"
},
"fdaClasses": {
"description": "FDA Established Pharmacologic Classes.",
"items": {
"type": "string"
},
"type": "array"
},
"fdaMechanisms": {
"description": "FDA Mechanisms of Action.",
"items": {
"type": "string"
},
"type": "array"
},
"meshClasses": {
"description": "MeSH pharmacological class descriptions.",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"atcCodes",
"fdaClasses",
"fdaMechanisms",
"meshClasses"
],
"type": "object"
},
"descriptions": {
"description": "Textual descriptions on this page, deduplicated then windowed by descriptionOffset/maxDescriptions. Each entry carries optional source attribution. Empty when descriptionOffset runs past descriptionsTotal.",
"items": {
"additionalProperties": false,
"description": "Description entry with optional source attribution.",
"properties": {
"source": {
"description": "Depositor source (e.g. \"DrugBank\", \"Wikipedia\", \"ChEBI\").",
"type": "string"
},
"text": {
"description": "Description text.",
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"type": "array"
},
"descriptionsTotal": {
"description": "Total distinct descriptions available for this compound, across all pages. Larger than descriptions.length when more sources exist — raise maxDescriptions or page with descriptionOffset to see them.",
"type": "number"
},
"drugLikeness": {
"additionalProperties": false,
"description": "Drug-likeness assessment. lipinski.violations ≤ 1 and veber.violations = 0 → pass.",
"properties": {
"lipinski": {
"additionalProperties": false,
"description": "Lipinski Rule of Five evaluation.",
"properties": {
"hba": {
"additionalProperties": false,
"description": "HBond acceptor count rule (≤10).",
"properties": {
"limit": {
"description": "Rule threshold.",
"type": "number"
},
"pass": {
"description": "Whether the rule passes (null if value unavailable).",
"type": [
"boolean",
"null"
]
},
"value": {
"description": "Measured value (null if unavailable).",
"type": [
"number",
"null"
]
}
},
"required": [
"limit",
"pass",
"value"
],
"type": "object"
},
"hbd": {
"additionalProperties": false,
"description": "HBond donor count rule (≤5).",
"properties": {
"limit": {
"description": "Rule threshold.",
"type": "number"
},
"pass": {
"description": "Whether the rule passes (null if value unavailable).",
"type": [
"boolean",
"null"
]
},
"value": {
"description": "Measured value (null if unavailable).",
"type": [
"number",
"null"
]
}
},
"required": [
"limit",
"pass",
"value"
],
"type": "object"
},
"mw": {
"additionalProperties": false,
"description": "Molecular weight rule (≤500 g/mol).",
"properties": {
"limit": {
"description": "Rule threshold.",
"type": "number"
},
"pass": {
"description": "Whether the rule passes (null if value unavailable).",
"type": [
"boolean",
"null"
]
},
"value": {
"description": "Measured value (null if unavailable).",
"type": [
"number",
"null"
]
}
},
"required": [
"limit",
"pass",
"value"
],
"type": "object"
},
"violations": {
"description": "Number of Lipinski violations (0-4).",
"type": "number"
},
"xLogP": {
"additionalProperties": false,
"description": "XLogP rule (≤5; calculated logP).",
"properties": {
"limit": {
"description": "Rule threshold.",
"type": "number"
},
"pass": {
"description": "Whether the rule passes (null if value unavailable).",
"type": [
"boolean",
"null"
]
},
"value": {
"description": "Measured value (null if unavailable).",
"type": [
"number",
"null"
]
}
},
"required": [
"limit",
"pass",
"value"
],
"type": "object"
}
},
"required": [
"hba",
"hbd",
"mw",
"violations",
"xLogP"
],
"type": "object"
},
"pass": {
"description": "Overall drug-likeness pass. Null when insufficient properties were available.",
"type": [
"boolean",
"null"
]
},
"veber": {
"additionalProperties": false,
"description": "Veber rules evaluation.",
"properties": {
"rotatableBonds": {
"additionalProperties": false,
"description": "Rotatable bond count rule (≤10).",
"properties": {
"limit": {
"description": "Rule threshold.",
"type": "number"
},
"pass": {
"description": "Whether the rule passes (null if value unavailable).",
"type": [
"boolean",
"null"
]
},
"value": {
"description": "Measured value (null if unavailable).",
"type": [
"number",
"null"
]
}
},
"required": [
"limit",
"pass",
"value"
],
"type": "object"
},
"tpsa": {
"additionalProperties": false,
"description": "Topological polar surface area rule (≤140 Ų).",
"properties": {
"limit": {
"description": "Rule threshold.",
"type": "number"
},
"pass": {
"description": "Whether the rule passes (null if value unavailable).",
"type": [
"boolean",
"null"
]
},
"value": {
"description": "Measured value (null if unavailable).",
"type": [
"number",
"null"
]
}
},
"required": [
"limit",
"pass",
"value"
],
"type": "object"
},
"violations": {
"description": "Number of Veber violations (0-2).",
"type": "number"
}
},
"required": [
"rotatableBonds",
"tpsa",
"violations"
],
"type": "object"
}
},
"required": [
"lipinski",
"pass",
"veber"
],
"type": "object"
},
"found": {
"description": "False when the CID does not exist in PubChem (properties, description, etc. are empty).",
"type": "boolean"
},
"properties": {
"additionalProperties": {},
"description": "Physicochemical properties keyed by name (echoes input.properties or the default core set; drug-likeness inputs are appended automatically when includeDrugLikeness is true).",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"synonyms": {
"description": "Known names and synonyms on this page, windowed by synonymOffset/maxSynonyms. Empty when synonymOffset runs past synonymsTotal.",
"items": {
"type": "string"
},
"type": "array"
},
"synonymsTotal": {
"description": "Total synonyms available for this compound, across all pages. Larger than synonyms.length when more exist — raise maxSynonyms or page with synonymOffset to see them.",
"type": "number"
}
},
"required": [
"cid",
"found",
"properties"
],
"type": "object"
},
"type": "array"
},
"descriptionOffset": {
"description": "Zero-based index of the first description returned within each compound's list. Present when includeDescription is true.",
"type": "number"
},
"enrichedCids": {
"description": "CIDs whose descriptions and classification were fetched. Present only when the batch exceeded the per-call fan-out limit and other CIDs were skipped.",
"items": {
"type": "number"
},
"type": "array"
},
"error": {
"additionalProperties": {},
"description": "Present when the call failed. Absent on success.",
"properties": {
"code": {
"description": "JSON-RPC error code for this failure.",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"data": {
"additionalProperties": {},
"properties": {
"reason": {
"description": "Machine-readable failure mode.",
"type": "string"
},
"recovery": {
"additionalProperties": {},
"description": "Actionable next step for the caller.",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"type": "object"
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"type": "object"
},
"message": {
"description": "Human-readable description of what went wrong.",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
},
"nextDescriptionOffset": {
"description": "descriptionOffset to pass on the next call to continue past this page. Omitted when no compound in the batch has further descriptions.",
"type": "number"
},
"nextSynonymOffset": {
"description": "synonymOffset to pass on the next call to continue past this page. Omitted when no compound in the batch has further synonyms.",
"type": "number"
},
"notice": {
"description": "Recovery guidance covering the skipped CIDs, an offset that runs past every compound, and pages that remain. Absent when nothing was skipped or truncated.",
"type": "string"
},
"skippedCids": {
"description": "CIDs found in PubChem whose descriptions and classification were NOT fetched because the batch exceeded the per-call fan-out limit. Their absence from a record means \"not requested\", not \"PubChem has none\" — re-request these CIDs in a follow-up call. Present only when CIDs were skipped.",
"items": {
"type": "number"
},
"type": "array"
},
"synonymOffset": {
"description": "Zero-based index of the first synonym returned within each compound's list. Present when includeSynonyms is true.",
"type": "number"
},
"truncated": {
"description": "True when this response is not the whole picture: a compound has further synonyms or descriptions past this page, or CIDs were skipped by the per-call fan-out limit. Per-compound totals are in compounds[].synonymsTotal / compounds[].descriptionsTotal; the skipped CIDs are in skippedCids.",
"type": "boolean"
}
},
"type": "object"
}
},
{
"description": "Fetch a 2D structure diagram (PNG image) for a compound by CID.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"cid": {
"description": "PubChem Compound ID. Resolve from name/SMILES with pubchem_search_compounds.",
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
},
"size": {
"default": "large",
"description": "Image size: \"small\" (100x100) or \"large\" (300x300). Default: \"large\".",
"enum": [
"small",
"large"
],
"type": "string"
}
},
"required": [
"cid"
],
"type": "object"
},
"name": "pubchem_get_compound_image",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"cid",
"imageBase64",
"mimeType",
"width",
"height"
]
},
{
"required": [
"error"
]
}
],
"properties": {
"cid": {
"description": "PubChem Compound ID.",
"type": "number"
},
"error": {
"additionalProperties": {},
"description": "Present when the call failed. Absent on success.",
"properties": {
"code": {
"description": "JSON-RPC error code for this failure.",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"data": {
"additionalProperties": {},
"properties": {
"reason": {
"description": "Machine-readable failure mode. Declared by this tool: `cid_not_found`: PubChem returned 404 for the requested CID. Other values are possible when a failure originates below the handler.",
"examples": [
"cid_not_found"
],
"type": "string"
},
"recovery": {
"additionalProperties": {},
"description": "Actionable next step for the caller.",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"type": "object"
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"type": "object"
},
"message": {
"description": "Human-readable description of what went wrong.",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
},
"height": {
"description": "Image height in pixels.",
"type": "number"
},
"imageBase64": {
"description": "Base64-encoded PNG image data.",
"type": "string"
},
"mimeType": {
"description": "MIME type — always \"image/png\".",
"type": "string"
},
"width": {
"description": "Image width in pixels.",
"type": "number"
}
},
"type": "object"
}
},
{
"description": "Get a compound's interaction data: drug-drug interactions (DrugBank), drug-food interactions, and chemical-target interactions (binding/activity from BindingDB, ChEMBL, and others). Each entry carries its originating source. Results are paged per kind, with the source-record total and the next offset reported for each. Richest for approved drugs; many compounds have no deposited interaction records.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"cid": {
"description": "PubChem Compound ID. Resolve from name/SMILES with pubchem_search_compounds.",
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
},
"kinds": {
"default": [
"drug-drug"
],
"description": "Interaction kinds to fetch. \"drug-drug\" (interactions with other drugs), \"drug-food\" (dietary interactions), \"target\" (binding/activity against molecular targets). Default: [\"drug-drug\"].",
"items": {
"enum": [
"drug-drug",
"drug-food",
"target"
],
"type": "string"
},
"minItems": 1,
"type": "array"
},
"maxEntries": {
"default": 10,
"description": "Max entries per kind per page (1-50). Well-studied drugs have a long tail of interactions; use offset to reach the ones past this page. Default: 10.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"offset": {
"default": 0,
"description": "Zero-based start position within each requested kind, counted in source records rather than returned entries. The same offset applies to every kind in the call, and the kinds advance at different rates — when paging past the first page, request one kind per call and pass that kind's nextOffset. Default: 0.",
"maximum": 2147483646,
"minimum": 0,
"type": "integer"
}
},
"required": [
"cid"
],
"type": "object"
},
"name": "pubchem_get_compound_interactions",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"cid",
"entries",
"paging",
"requestedKinds",
"returnedCount",
"truncated",
"offset"
]
},
{
"required": [
"error"
]
}
],
"properties": {
"cid": {
"description": "PubChem Compound ID.",
"type": "number"
},
"entries": {
"description": "Interaction entries across the requested kinds.",
"items": {
"additionalProperties": false,
"description": "A single interaction entry.",
"properties": {
"kind": {
"description": "Interaction category.",
"enum": [
"drug-drug",
"drug-food",
"target"
],
"type": "string"
},
"partner": {
"description": "Interacting compound, food, or target name as the source reports it.",
"type": "string"
},
"source": {
"description": "Originating source (e.g. \"DrugBank\", \"BindingDB\").",
"type": "string"
},
"text": {
"description": "The interaction statement.",
"type": "string"
}
},
"required": [
"kind",
"source",
"text"
],
"type": "object"
},
"type": "array"
},
"error": {
"additionalProperties": {},
"description": "Present when the call failed. Absent on success.",
"properties": {
"code": {
"description": "JSON-RPC error code for this failure.",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"data": {
"additionalProperties": {},
"properties": {
"reason": {
"description": "Machine-readable failure mode.",
"type": "string"
},
"recovery": {
"additionalProperties": {},
"description": "Actionable next step for the caller.",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"type": "object"
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"type": "object"
},
"message": {
"description": "Human-readable description of what went wrong.",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
},
"failedKinds": {
"description": "Interaction kinds that could not be retrieved (comma-separated). The returned entries cover the kinds that succeeded; retry to re-attempt the failed ones.",
"type": "string"
},
"nextOffset": {
"description": "Offset to pass on the next call, reported when exactly one requested kind has records remaining. Omitted when none do, and when several do — those advance to different positions, so read paging[].nextOffset instead.",
"type": "number"
},
"notice": {
"description": "Guidance when a kind failed, when no interaction data was found, when the offset runs past every requested kind, or when further pages remain. Absent when this page is complete and every kind resolved.",
"type": "string"
},
"offset": {
"description": "Zero-based start position read within each requested kind.",
"type": "number"
},
"paging": {
"description": "Per-kind page position, one entry per requested kind that was retrieved. A kind listed in failedKinds is absent — its position is unknown, not exhausted.",
"items": {
"additionalProperties": false,
"description": "Page position for one interaction kind.",
"properties": {
"kind": {
"description": "Interaction category this page covers.",
"enum": [
"drug-drug",
"drug-food",
"target"
],
"type": "string"
},
"nextOffset": {
"description": "Offset to pass on the next call to continue this kind past the current page. Omitted when no records remain.",
"type": "number"
},
"returnedCount": {
"description": "Interaction entries returned for this kind.",
"type": "number"
},
"totalRecords": {
"description": "Source records available for this kind, across all pages. Entries are derived from these records and can be fewer: a \"target\" record naming no molecular target and a \"drug-drug\" record carrying no statement both yield nothing, and duplicate measurements collapse within a page. Pages divide the records, not the entries, so a duplicate split across two pages is reported on both.",
"type": "number"
},
"truncated": {
"description": "True when source records remain for this kind past the current page.",
"type": "boolean"
}
},
"required": [
"kind",
"returnedCount",
"totalRecords",
"truncated"
],
"type": "object"
},
"type": "array"
},
"requestedKinds": {
"description": "Interaction kinds requested (comma-separated).",
"type": "string"
},
"returnedCount": {
"description": "Total interaction entries returned across all kinds.",
"type": "number"
},
"truncated": {
"description": "True when at least one requested kind has source records remaining past this page. Which kinds, and how many records each holds, is in paging[].truncated / paging[].totalRecords.",
"type": "boolean"
}
},
"type": "object"
}
},
{
"description": "Get GHS (Globally Harmonized System) hazard classification and safety data for one or more compounds by CID. Returns signal word, pictograms, hazard statements (H-codes), and precautionary statements (P-codes) per compound. Data sourced from PubChem depositors — source attribution included.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"cids": {
"description": "PubChem Compound IDs to fetch safety data for (1-25). Resolve from names/SMILES with pubchem_search_compounds.",
"items": {
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
},
"maxItems": 25,
"minItems": 1,
"type": "array"
}
},
"required": [
"cids"
],
"type": "object"
},
"name": "pubchem_get_compound_safety",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"results",
"requestedCount",
"withDataCount"
]
},
{
"required": [
"error"
]
}
],
"properties": {
"error": {
"additionalProperties": {},
"description": "Present when the call failed. Absent on success.",
"properties": {
"code": {
"description": "JSON-RPC error code for this failure.",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"data": {
"additionalProperties": {},
"properties": {
"reason": {
"description": "Machine-readable failure mode.",
"type": "string"
},
"recovery": {
"additionalProperties": {},
"description": "Actionable next step for the caller.",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"type": "object"
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"type": "object"
},
"message": {
"description": "Human-readable description of what went wrong.",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
},
"notice": {
"description": "Recovery guidance when one or more CIDs returned no GHS data, listing the unrecognized CIDs to verify separately from the CIDs that exist but carry no deposited classification.",
"type": "string"
},
"requestedCount": {
"description": "CIDs requested.",
"type": "number"
},
"results": {
"description": "Safety results, one per requested CID (input order preserved).",
"items": {
"additionalProperties": false,
"description": "Per-CID safety result.",
"properties": {
"cid": {
"description": "PubChem Compound ID.",
"type": "number"
},
"ghs": {
"additionalProperties": false,
"description": "GHS classification data.",
"properties": {
"hazardStatements": {
"description": "GHS hazard statements.",
"items": {
"additionalProperties": false,
"description": "GHS hazard statement entry.",
"properties": {
"code": {
"description": "H-code (e.g. \"H225\").",
"type": "string"
},
"statement": {
"description": "Hazard statement text.",
"type": "string"
}
},
"required": [
"code",
"statement"
],
"type": "object"
},
"type": "array"
},
"pictograms": {
"description": "GHS pictogram labels (e.g. \"Flammable\", \"Toxic\").",
"items": {
"type": "string"
},
"type": "array"
},
"precautionaryStatements": {
"description": "GHS precautionary statements.",
"items": {
"additionalProperties": false,
"description": "GHS precautionary statement entry.",
"properties": {
"code": {
"description": "P-code (e.g. \"P210\").",
"type": "string"
},
"decoded": {
"description": "Whether \"statement\" carries the standard text. False for codes needing label-specific fill text the depositor must supply (disposal method, firefighting agent, first-aid reference) and for codes outside the decoder table; the code itself is still authoritative.",
"type": "boolean"
},
"statement": {
"description": "Standard precautionary statement text for the code. Empty string when \"decoded\" is false — PubChem deposits P-codes without text, so a blank statement means the code was not decoded, never that the depositor supplied an empty statement.",
"type": "string"
}
},
"required": [
"code",
"statement",
"decoded"
],
"type": "object"
},
"type": "array"
},
"signalWord": {
"description": "GHS signal word: \"Danger\" or \"Warning\".",
"type": "string"
}
},
"required": [
"pictograms",
"hazardStatements",
"precautionaryStatements"
],
"type": "object"
},
"hasData": {
"description": "Whether GHS safety data is available for this compound.",
"type": "boolean"
},
"source": {
"description": "Data source attribution.",
"type": "string"
},
"status": {
"description": "Outcome for this CID. \"ok\": GHS data returned. \"no_ghs_data\": the compound exists in PubChem but has no deposited GHS classification. \"cid_not_found\": PubChem has no record for this CID at all — the identifier is wrong, so verify it with pubchem_search_compounds rather than concluding the compound is unclassified.",
"enum": [
"ok",
"no_ghs_data",
"cid_not_found"
],
"type": "string"
}
},
"required": [
"cid",
"hasData",
"status"
],
"type": "object"
},
"type": "array"
},
"withDataCount": {
"description": "CIDs with GHS safety data available.",
"type": "number"
}
},
"type": "object"
}
},
{
"description": "Get external database cross-references for a compound: PubMed citations, patent IDs, gene/protein associations, registry numbers, and taxonomy IDs. Results are paged per type — capped at maxPerType with the total count reported; reach the IDs past a page with offset.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"cid": {
"description": "PubChem Compound ID. Resolve from name/SMILES with pubchem_search_compounds.",
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
},
"maxPerType": {
"default": 50,
"description": "Max IDs to return per xref type per page (1-500). A compound may have thousands of PubMed references; use offset to reach the ones past this page. Total count always reported. Default: 50.",
"maximum": 500,
"minimum": 1,
"type": "integer"
},
"offset": {
"default": 0,
"description": "Zero-based index of the first ID to return within each xref type. The same offset is applied to every requested type. Pass the nextOffset from a previous call to read the following page. Default: 0.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"xrefTypes": {
"description": "Cross-reference types to retrieve. String IDs: RegistryID (DSSTox/EPA registry numbers), RN (CAS numbers), PatentID. Numeric IDs: PubMedID, GeneID (NCBI Gene), ProteinGI (legacy NCBI Protein GI), TaxonomyID.",
"items": {
"enum": [
"RegistryID",
"RN",
"PubMedID",
"PatentID",
"GeneID",
"ProteinGI",
"TaxonomyID"
],
"type": "string"
},
"minItems": 1,
"type": "array"
}
},
"required": [
"cid",
"xrefTypes"
],
"type": "object"
},
"name": "pubchem_get_compound_xrefs",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"cid",
"xrefs",
"offset",
"truncated"
]
},
{
"required": [
"error"
]
}
],
"properties": {
"cid": {
"description": "PubChem Compound ID.",
"type": "number"
},
"error": {
"additionalProperties": {},
"description": "Present when the call failed. Absent on success.",
"properties": {
"code": {
"description": "JSON-RPC error code for this failure.",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"data": {
"additionalProperties": {},
"properties": {
"reason": {
"description": "Machine-readable failure mode.",
"type": "string"
},
"recovery": {
"additionalProperties": {},
"description": "Actionable next step for the caller.",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"type": "object"
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"type": "object"
},
"message": {
"description": "Human-readable description of what went wrong.",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
},
"nextOffset": {
"description": "Offset to pass on the next call to continue past this page. Omitted when no requested type has further IDs.",
"type": "number"
},
"notice": {
"description": "Recovery guidance when every requested xref type returned zero IDs, when the offset runs past every type, or when further pages remain. Absent when this page is complete and non-empty.",
"type": "string"
},
"offset": {
"description": "Zero-based index of the first ID returned within each type.",
"type": "number"
},
"truncated": {
"description": "True when at least one requested type has IDs remaining past this page. Which types, and how many IDs each holds in total, is in xrefs[].truncated / xrefs[].totalAvailable.",
"type": "boolean"
},
"xrefs": {
"description": "Cross-references grouped by type.",
"items": {
"additionalProperties": false,
"description": "Cross-reference group for one type.",
"properties": {
"ids": {
"description": "Cross-reference IDs on this page (window of offset + maxPerType).",
"items": {
"anyOf": [
{
"description": "String-form cross-reference ID (e.g. CAS number, patent).",
"type": "string"
},
{
"description": "Numeric cross-reference ID (e.g. PubMed ID, Gene ID).",
"type": "number"
}
],
"description": "Cross-reference identifier — string or number depending on type."
},
"type": "array"
},
"totalAvailable": {
"description": "Total IDs available for this type, across all pages.",
"type": "number"
},
"truncated": {
"description": "True when IDs for this type remain past the current page.",
"type": "boolean"
},
"type": {
"description": "Cross-reference type: RegistryID, RN, PubMedID, PatentID, GeneID, ProteinGI, or TaxonomyID.",
"type": "string"
}
},
"required": [
"type",
"ids",
"totalAvailable",
"truncated"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"description": "Get descriptive summaries for PubChem entities by ID. Supports assays (AID), genes (Gene ID), proteins (UniProt accession), and taxonomy (Tax ID). Up to 10 per call.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"entityType": {
"description": "Entity type. Determines ID format and returned fields.",
"enum": [
"assay",
"gene",
"protein",
"taxonomy"
],
"type": "string"
},
"identifiers": {
"description": "Entity identifiers (1-10). Type depends on entityType:\n- assay: AID (number), e.g. [1000]\n- gene: Gene ID (number), e.g. [1956]\n- protein: UniProt accession (string), e.g. [\"P00533\"]\n- taxonomy: Tax ID (number), e.g. [9606]",
"items": {
"anyOf": [
{
"description": "String identifier (e.g. UniProt accession).",
"type": "string"
},
{
"description": "Numeric identifier (e.g. AID, Gene ID, Tax ID).",
"type": "number"
}
],
"description": "Entity identifier — string or number depending on entityType."
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
},
"required": [
"entityType",
"identifiers"
],
"type": "object"
},
"name": "pubchem_get_summary",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"entityType",
"summaries",
"requestedCount",
"foundCount"
]
},
{
"required": [
"error"
]
}
],
"properties": {
"entityType": {
"description": "Entity type queried.",
"type": "string"
},
"error": {
"additionalProperties": {},
"description": "Present when the call failed. Absent on success.",
"properties": {
"code": {
"description": "JSON-RPC error code for this failure.",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"data": {
"additionalProperties": {},
"properties": {
"reason": {
"description": "Machine-readable failure mode.",
"type": "string"
},
"recovery": {
"additionalProperties": {},
"description": "Actionable next step for the caller.",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"type": "object"
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"type": "object"
},
"message": {
"description": "Human-readable description of what went wrong.",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
},
"foundCount": {
"description": "Identifiers resolved to a summary.",
"type": "number"
},
"notice": {
"description": "Recovery guidance when one or more identifiers were not found.",
"type": "string"
},
"requestedCount": {
"description": "Identifiers requested.",
"type": "number"
},
"summaries": {
"description": "Summary results.",
"items": {
"additionalProperties": false,
"description": "Per-identifier summary result.",
"properties": {
"data": {
"additionalProperties": false,
"description": "Entity summary data. Populated fields depend on entityType.",
"properties": {
"aid": {
"description": "Assay ID — present on assay summaries.",
"type": "number"
},
"commonName": {
"description": "Common name (taxonomy summaries).",
"type": "string"
},
"description": {
"description": "Descriptive text when available.",
"type": "string"
},
"geneId": {
"description": "NCBI Gene ID (gene summaries).",
"type": "number"
},
"lineage": {
"description": "Taxonomic lineage ordered from the most inclusive rank to the most specific, e.g. [\"Eukaryota\", \"Metazoa\", \"Chordata\"] (taxonomy summaries). Ranks that do not apply to the entity are omitted.",
"items": {
"type": "string"
},
"type": "array"
},
"name": {
"description": "Primary display name.",
"type": "string"
},
"numActive": {
"description": "Substances marked active (assay summaries).",
"type": "number"
},
"numSubstances": {
"description": "Substances tested (assay summaries).",
"type": "number"
},
"proteinAccession": {
"description": "Protein accession (protein summaries).",
"type": "string"
},
"rank": {
"description": "Taxonomic rank (taxonomy summaries).",
"type": "string"
},
"scientificName": {
"description": "Scientific name (taxonomy summaries).",
"type": "string"
},
"sourceName": {
"description": "Data source attribution (assay summaries).",
"type": "string"
},
"symbol": {
"description": "Gene symbol (gene summaries).",
"type": "string"
},
"synonyms": {
"description": "Known synonyms / other names.",
"items": {
"type": "string"
},
"type": "array"
},
"taxonomy": {
"description": "Taxonomy scientific name (gene/protein summaries).",
"type": "string"
},
"taxonomyId": {
"description": "NCBI Taxonomy ID (gene/protein/taxonomy summaries).",
"type": "number"
}
},
"type": "object"
},
"found": {
"description": "Whether the entity was found.",
"type": "boolean"
},
"identifier": {
"anyOf": [
{
"description": "String identifier (e.g. UniProt accession).",
"type": "string"
},
{
"description": "Numeric identifier (e.g. AID, Gene ID, Tax ID).",
"type": "number"
}
],
"description": "Queried identifier."
}
},
"required": [
"identifier",
"found"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
{
"description": "Find PubChem bioassays associated with a biological target. Search by gene symbol (e.g. \"EGFR\"), protein name, NCBI Gene ID, or UniProt accession. Returns a page of assay IDs (AIDs) — page past maxResults with offset — which can be explored further with pubchem_get_summary.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"maxResults": {
"default": 50,
"description": "Max AIDs to return per page (1-200). Popular targets may have thousands of assays; use offset to reach the ones past this page. Default: 50.",
"maximum": 200,
"minimum": 1,
"type": "integer"
},
"offset": {
"default": 0,
"description": "Zero-based index of the first AID to return. Pass the nextOffset from a previous call to read the following page. Default: 0.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"targetQuery": {
"description": "Target identifier. Examples: \"EGFR\" (genesymbol), \"Epidermal growth factor receptor\" (proteinname), \"1956\" (geneid), \"P00533\" (proteinaccession).",
"type": "string"
},
"targetType": {
"description": "Target identifier type. \"genesymbol\" and \"proteinname\" accept text names. \"geneid\" accepts NCBI Gene IDs. \"proteinaccession\" accepts UniProt accessions.",
"enum": [
"genesymbol",
"proteinname",
"geneid",
"proteinaccession"
],
"type": "string"
}
},
"required": [
"targetType",
"targetQuery"
],
"type": "object"
},
"name": "pubchem_search_assays",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"aids",
"targetType",
"targetQuery",
"totalFound",
"offset"
]
},
{
"required": [
"error"
]
}
],
"properties": {
"aids": {
"description": "PubChem Assay IDs.",
"items": {
"type": "number"
},
"type": "array"
},
"cap": {
"description": "The maxResults cap that was applied.",
"type": "number"
},
"error": {
"additionalProperties": {},
"description": "Present when the call failed. Absent on success.",
"properties": {
"code": {
"description": "JSON-RPC error code for this failure.",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"data": {
"additionalProperties": {},
"properties": {
"reason": {
"description": "Machine-readable failure mode. Declared by this tool: `blank_target_query`: targetQuery is empty or whitespace-only. `invalid_geneid_query`: targetType is \"geneid\" but targetQuery is not a positive integer. Other values are possible when a failure originates below the handler.",
"examples": [
"blank_target_query",
"invalid_geneid_query"
],
"type": "string"
},
"recovery": {
"additionalProperties": {},
"description": "Actionable next step for the caller.",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"type": "object"
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"type": "object"
},
"message": {
"description": "Human-readable description of what went wrong.",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
},
"nextOffset": {
"description": "Offset to pass on the next call to continue past this page. Omitted when no further AIDs match.",
"type": "number"
},
"notice": {
"description": "Recovery guidance when no assays matched, when the offset runs past the result set, or when further pages remain. Absent when this page is complete and non-empty.",
"type": "string"
},
"offset": {
"description": "Zero-based index of the first AID returned.",
"type": "number"
},
"shown": {
"description": "AIDs returned on this page.",
"type": "number"
},
"targetQuery": {
"description": "Target identifier searched.",
"type": "string"
},
"targetType": {
"description": "Target identifier type used: genesymbol, proteinname, geneid, or proteinaccession.",
"type": "string"
},
"totalFound": {
"description": "Total AIDs found for this target, across all pages.",
"type": "number"
},
"truncated": {
"description": "True when matching AIDs remain past this page.",
"type": "boolean"
}
},
"type": "object"
}
},
{
"description": "Search PubChem for chemical compounds by identifier (name, SMILES, or InChIKey, batched up to 25), molecular formula in Hill notation, substructure or superstructure containment, or 2D Tanimoto similarity. Returns a page of CIDs — reach matches past maxResults with offset. Optionally hydrate results with properties to avoid a follow-up pubchem_get_compound_details call.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"allowOtherElements": {
"default": false,
"description": "Formula search only. When true, includes compounds with additional elements beyond the formula.",
"type": "boolean"
},
"formula": {
"description": "Required for formula search. Molecular formula in Hill notation (e.g. \"C6H12O6\", \"CaH2O2\").",
"type": "string"
},
"identifierType": {
"description": "Required for identifier search. Type of chemical identifier: \"name\", \"smiles\", or \"inchikey\".",
"enum": [
"name",
"smiles",
"inchikey"
],
"type": "string"
},
"identifiers": {
"description": "Required for identifier search. Array of identifiers to resolve (1-25). Examples: [\"aspirin\", \"ibuprofen\"] for name, [\"CC(=O)OC1=CC=CC=C1C(=O)O\"] for SMILES, [\"BSYNRYMUTXBXSQ-UHFFFAOYSA-N\"] for inchikey (27-char block format).",
"items": {
"type": "string"
},
"maxItems": 25,
"minItems": 1,
"type": "array"
},
"maxResults": {
"default": 20,
"description": "Maximum CIDs to return per page (1-200). Use offset to reach matches past this page. Default: 20.",
"maximum": 200,
"minimum": 1,
"type": "integer"
},
"offset": {
"default": 0,
"description": "Zero-based index of the first CID to return. Pass the nextOffset from a previous call to read the following page. Identifier lookups resolve every match up front, so paging them is free; formula, substructure, superstructure, and similarity searches have to ask PubChem for offset + maxResults records to reach a page, so deep pages cost progressively more upstream — hence the 10000 ceiling. Default: 0.",
"maximum": 10000,
"minimum": 0,
"type": "integer"
},
"properties": {
"description": "Optional: fetch these properties for each result, avoiding a follow-up details call. E.g. [\"MolecularFormula\", \"MolecularWeight\", \"CanonicalSMILES\"].",
"items": {
"enum": [
"MolecularFormula",
"MolecularWeight",
"CanonicalSMILES",
"IsomericSMILES",
"InChI",
"InChIKey",
"IUPACName",
"Title",
"XLogP",
"ExactMass",
"MonoisotopicMass",
"TPSA",
"Complexity",
"Charge",
"HBondDonorCount",
"HBondAcceptorCount",
"RotatableBondCount",
"HeavyAtomCount",
"IsotopeAtomCount",
"AtomStereoCount",
"DefinedAtomStereoCount",
"UndefinedAtomStereoCount",
"BondStereoCount",
"DefinedBondStereoCount",
"UndefinedBondStereoCount",
"CovalentUnitCount",
"Volume3D"
],
"type": "string"
},
"type": "array"
},
"query": {
"description": "Required for substructure/superstructure/similarity searches. A SMILES string (e.g. \"CC(=O)O\") or PubChem CID as a string (e.g. \"2244\").",
"type": "string"
},
"queryType": {
"description": "Required for structure/similarity searches. Format of the query: \"smiles\" or \"cid\".",
"enum": [
"smiles",
"cid"
],
"type": "string"
},
"searchType": {
"description": "Search strategy; each mode needs its own fields. \"identifier\": name/SMILES/InChIKey lookup — requires identifierType and identifiers. \"formula\": molecular formula — requires formula. \"substructure\": find compounds containing the query as a substructure. \"superstructure\": find compounds that are themselves substructures of the query. \"similarity\": 2D Tanimoto similarity to the query. substructure, superstructure, and similarity require query and queryType.",
"enum": [
"identifier",
"formula",
"substructure",
"superstructure",
"similarity"
],
"type": "string"
},
"threshold": {
"default": 90,
"description": "Similarity search only. Minimum Tanimoto similarity (70-100). 90+ for close analogs, 70-80 for scaffold hops. Default: 90.",
"maximum": 100,
"minimum": 70,
"type": "number"
}
},
"required": [
"searchType"
],
"type": "object"
},
"name": "pubchem_search_compounds",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"results",
"searchType",
"offset"
]
},
{
"required": [
"error"
]
}
],
"properties": {
"cap": {
"description": "The maxResults cap that was applied.",
"type": "number"
},
"error": {
"additionalProperties": {},
"description": "Present when the call failed. Absent on success.",
"properties": {
"code": {
"description": "JSON-RPC error code for this failure.",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"data": {
"additionalProperties": {},
"properties": {
"reason": {
"description": "Machine-readable failure mode. Declared by this tool: `missing_identifier_args`: searchType is \"identifier\" but identifierType or identifiers were omitted. `missing_formula`: searchType is \"formula\" but the formula field was omitted or blank. `missing_structure_args`: substructure/superstructure/similarity search with query or queryType omitted, or a blank query. `invalid_cid_query`: structure/similarity search with queryType \"cid\" but query is not a positive integer CID. `identifier_rejected`: identifier search where PubChem rejected every identifier in the batch as unreadable (HTTP 400) — for SMILES, a string it could not standardize into a structure. A batch with any other outcome lists rejected inputs in unresolvedIdentifiers instead. `search_query_rejected`: PubChem failed a formula, substructure, superstructure, or similarity search with HTTP 500 \"Search status indicates failure\" — its answer for a malformed SMILES or formula, a SMILES with a \"*\" wildcard atom, or a CID with no record. Other values are possible when a failure originates below the handler.",
"examples": [
"missing_identifier_args",
"missing_formula",
"missing_structure_args",
"invalid_cid_query",
"identifier_rejected",
"search_query_rejected"
],
"type": "string"
},
"recovery": {
"additionalProperties": {},
"description": "Actionable next step for the caller.",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"type": "object"
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"type": "object"
},
"message": {
"description": "Human-readable description of what went wrong.",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
},
"nextOffset": {
"description": "Offset to pass on the next call to continue past this page. Omitted when no further matches remain.",
"type": "number"
},
"notice": {
"description": "Recovery guidance when no compounds matched, when the offset runs past the matches observed, when identifiers had no match or could not be interpreted, when identifiers collided on one CID, or when further pages remain. Absent when this page is complete and every identifier resolved to its own CID.",
"type": "string"
},
"offset": {
"description": "Zero-based index of the first CID returned.",
"type": "number"
},
"results": {
"description": "Matching compounds.",
"items": {
"additionalProperties": false,
"description": "Matching compound entry.",
"properties": {
"cid": {
"description": "PubChem Compound ID.",
"type": "number"
},
"identifier": {
"description": "Echoed input identifier (identifier mode only).",
"type": "string"
},
"properties": {
"additionalProperties": {},
"description": "Compound properties keyed by name (echoes input.properties; only present when requested).",
"propertyNames": {
"type": "string"
},
"type": "object"
}
},
"required": [
"cid"
],
"type": "object"
},
"type": "array"
},
"searchType": {
"description": "Search strategy used: identifier, formula, substructure, superstructure, or similarity.",
"type": "string"
},
"shown": {
"description": "CIDs returned on this page.",
"type": "number"
},
"totalFound": {
"description": "Exact number of matching CIDs across all pages. Omitted when a formula, substructure, superstructure, or similarity search saturated the records it requested — PubChem returns no match count for those, so totalFoundAtLeast reports a floor instead.",
"type": "number"
},
"totalFoundAtLeast": {
"description": "Lower bound on matching CIDs, reported in place of totalFound when the exact count is unavailable. At least this many match, and the true total may be higher; page further with offset to observe more.",
"type": "number"
},
"truncated": {
"description": "True when matching CIDs remain past this page.",
"type": "boolean"
},
"unresolvedIdentifiers": {
"description": "Identifier-mode only: input identifiers that resolved to no CID — PubChem had no match, or could not interpret the input as identifierType (the notice says which). Omitted when every identifier resolved and for non-identifier searches.",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:f5be29e6b879895dca17f3f9e3ac739e213e424923a51b2c650559218bb8131d | sha256sum