Skip to main content
Glama

Get Compound Details

pubchem_get_compound_details
Read-onlyIdempotent

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). Fetches up to 100 CIDs per call; CIDs past that are returned in unprocessed for a follow-up call.

Input Schema

NameRequiredDescriptionDefault
cidsYesPubChem Compound IDs to fetch. The per-call cap is 100: the first 100 are fetched, and any past that (up to 1000 in all) are returned in unprocessed, in input order, and reported in cappedInputs. Resolve from names/SMILES with pubchem_search_compounds.
propertiesNoProperties to retrieve. Defaults to a core set: MolecularFormula, MolecularWeight, IUPACName, CanonicalSMILES, IsomericSMILES, InChIKey, XLogP, TPSA, HBondDonorCount, HBondAcceptorCount, RotatableBondCount, HeavyAtomCount, Charge, Complexity.
maxSynonymsNoMax synonyms returned per compound per page. The per-call cap is 100: a larger value (up to 1000) returns 100 per compound and is reported in cappedInputs. PubChem lists hundreds for common drugs; use synonymOffset to reach the ones past this page. Default: 20.
synonymOffsetNoZero-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.
includeSynonymsNoFetch 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.
maxDescriptionsNoMax number of distinct description entries per compound per page. The per-call cap is 20: a larger value (up to 1000) returns 20 per compound and is reported in cappedInputs. PubChem returns near-duplicate summaries from many depositors; duplicates are collapsed before this cap applies. Default: 3.
descriptionOffsetNoZero-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.
includeDescriptionNoInclude 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.
includeDrugLikenessNoCompute 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.
includeClassificationNoInclude 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.

Output Schema

NameRequiredDescriptionDefault
errorNoPresent when the call failed. Absent on success.
noticeNoRecovery guidance covering the skipped CIDs, an offset that runs past every compound, and pages that remain. Absent when nothing was skipped or truncated.
compoundsNoCompound detail records, one per CID fetched, in input order. CIDs past the per-call cap are in unprocessed instead.
truncatedNoTrue when this response is not the whole picture: a compound has further synonyms or descriptions past this page, CIDs were skipped by the per-call fan-out limit, or CIDs past the per-call cap were left unfetched. Per-compound totals are in compounds[].synonymsTotal / compounds[].descriptionsTotal; the skipped CIDs are in skippedCids, the unfetched ones in unprocessed.
skippedCidsNoCIDs 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.
unprocessedNoCIDs past the per-call cap of 100, in input order, not fetched. Pass them in a follow-up call. Omitted when every CID was fetched.
cappedInputsNoInputs that asked for more than their per-call cap, with the value requested and the value served. An ID batch lists the IDs past the cap in unprocessed. Omitted when every input was within its cap.
enrichedCidsNoCIDs whose descriptions and classification were fetched. Present only when the batch exceeded the per-call fan-out limit and other CIDs were skipped.
synonymOffsetNoZero-based index of the first synonym returned within each compound's list. Present when includeSynonyms is true.
descriptionOffsetNoZero-based index of the first description returned within each compound's list. Present when includeDescription is true.
nextSynonymOffsetNosynonymOffset to pass on the next call to continue past this page. Omitted when no compound in the batch has further synonyms.
nextDescriptionOffsetNodescriptionOffset to pass on the next call to continue past this page. Omitted when no compound in the batch has further descriptions.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed17 schema fields changed
    • changedInput schema / properties / cids / description
      Previous value: -"PubChem Compound IDs to fetch (1-100). Resolve from names/SMILES with pubchem_search_compounds."New value: +"PubChem Compound IDs to fetch. The per-call cap is 100: the first 100 are fetched, and any past that (up to 1000 in all) are returned in unprocessed, in input order, and reported in cappedInputs. Resolve from names/SMILES with pubchem_search_compounds."
    • changedInput schema / properties / cids / items / maximum
      Previous value: -9007199254740991New value: +2147483647
    • changedInput schema / properties / cids / maxItems
      Previous value: -100New value: +1000
    • changedInput schema / properties / maxDescriptions / description
      Previous value: -"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."New value: +"Max number of distinct description entries per compound per page. The per-call cap is 20: a larger value (up to 1000) returns 20 per compound and is reported in cappedInputs. PubChem returns near-duplicate summaries from many depositors; duplicates are collapsed before this cap applies. Default: 3."
    • changedInput schema / properties / maxDescriptions / maximum
      Previous value: -20New value: +1000
    • changedInput schema / properties / maxSynonyms / description
      Previous value: -"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."New value: +"Max synonyms returned per compound per page. The per-call cap is 100: a larger value (up to 1000) returns 100 per compound and is reported in cappedInputs. PubChem lists hundreds for common drugs; use synonymOffset to reach the ones past this page. Default: 20."
    • changedInput schema / properties / maxSynonyms / maximum
      Previous value: -100New value: +1000
    • addedOutput schema / properties / cappedInputs
      Added value: +{
      +  "description": "Inputs that asked for more than their per-call cap, with the value requested and the value served. An ID batch lists the IDs past the cap in unprocessed. Omitted when every input was within its cap.",
      +  "items": {
      +    "additionalProperties": false,
      +    "description": "One input served at its per-call cap.",
      +    "properties": {
      +      "input": {
      +        "description": "Input name, e.g. \"maxResults\" or \"cids\".",
      +        "type": "string"
      +      },
      +      "requested": {
      +        "description": "Value requested: the page size, or the number of IDs in the batch.",
      +        "type": "number"
      +      },
      +      "served": {
      +        "description": "Value served: the per-call cap.",
      +        "type": "number"
      +      },
      +      "unprocessed": {
      +        "description": "ID batches only: IDs past the cap, listed in unprocessed in input order.",
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "input",
      +      "requested",
      +      "served"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / compounds / description
      Previous value: -"Compound detail records."New value: +"Compound detail records, one per CID fetched, in input order. CIDs past the per-call cap are in unprocessed instead."
    • changedOutput schema / properties / compounds / items / properties / classification / properties / atcCodes / description
      Previous value: -"ATC codes with hierarchical descriptions."New value: +"Human ATC codes in the order PubChem lists them. ATCvet codes and codes named only by a WHO Essential Medicines list are excluded."
    • changedOutput schema / properties / compounds / items / properties / classification / properties / atcCodes / items / description
      Previous value: -"ATC code entry with hierarchical description."New value: +"One human ATC code with its WHO hierarchy."
    • changedOutput schema / properties / compounds / items / properties / classification / properties / atcCodes / items / properties / code / description
      Previous value: -"ATC code."New value: +"ATC level-5 (substance) code, e.g. \"N02BA01\"."
    • changedOutput schema / properties / compounds / items / properties / classification / properties / atcCodes / items / properties / description / description
      Previous value: -"ATC code description."New value: +"WHO ATC name for the code, e.g. \"Acetylsalicylic acid\". Empty when PubChem lists the code without a WHO ATC hierarchy entry."
    • addedOutput schema / properties / compounds / items / properties / classification / properties / atcCodes / items / properties / levels
      Added value: +{
      +  "description": "Levels 1-4 of the code, top-down: anatomical main group, therapeutic subgroup, pharmacological subgroup, chemical subgroup. Empty when PubChem lists the code without a WHO ATC hierarchy entry.",
      +  "items": {
      +    "additionalProperties": false,
      +    "description": "One ancestor level of the code.",
      +    "properties": {
      +      "code": {
      +        "description": "ATC code at this level, e.g. \"N02\".",
      +        "type": "string"
      +      },
      +      "description": {
      +        "description": "WHO ATC name at this level, e.g. \"Analgesics\".",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "code",
      +      "description"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / compounds / items / properties / classification / properties / atcCodes / items / required
      Previous value: -[
      -  "code",
      -  "description"
      -]New value: +[
      +  "code",
      +  "description",
      +  "levels"
      +]
    • changedOutput schema / properties / truncated / description
      Previous value: -"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."New value: +"True when this response is not the whole picture: a compound has further synonyms or descriptions past this page, CIDs were skipped by the per-call fan-out limit, or CIDs past the per-call cap were left unfetched. Per-compound totals are in compounds[].synonymsTotal / compounds[].descriptionsTotal; the skipped CIDs are in skippedCids, the unfetched ones in unprocessed."
    • addedOutput schema / properties / unprocessed
      Added value: +{
      +  "description": "CIDs past the per-call cap of 100, in input order, not fetched. Pass them in a follow-up call. Omitted when every CID was fetched.",
      +  "items": {
      +    "type": "number"
      +  },
      +  "type": "array"
      +}
  2. Changed2 schema fields changed
    • removedInput schema / properties / cids / items / exclusiveMinimum
      Removed value: -0
    • addedInput schema / properties / cids / items / minimum
      Added value: +1
  3. Changed26 schema fields changed
    • removedOutput schema / properties / compounds / items / properties / drugLikeness / properties / lipinski / properties / hba / properties / pass / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / compounds / items / properties / drugLikeness / properties / lipinski / properties / hba / properties / pass / type
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • removedOutput schema / properties / compounds / items / properties / drugLikeness / properties / lipinski / properties / hba / properties / value / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / compounds / items / properties / drugLikeness / properties / lipinski / properties / hba / properties / value / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / compounds / items / properties / drugLikeness / properties / lipinski / properties / hbd / properties / pass / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / compounds / items / properties / drugLikeness / properties / lipinski / properties / hbd / properties / pass / type
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • removedOutput schema / properties / compounds / items / properties / drugLikeness / properties / lipinski / properties / hbd / properties / value / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / compounds / items / properties / drugLikeness / properties / lipinski / properties / hbd / properties / value / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / compounds / items / properties / drugLikeness / properties / lipinski / properties / mw / properties / pass / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / compounds / items / properties / drugLikeness / properties / lipinski / properties / mw / properties / pass / type
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • removedOutput schema / properties / compounds / items / properties / drugLikeness / properties / lipinski / properties / mw / properties / value / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / compounds / items / properties / drugLikeness / properties / lipinski / properties / mw / properties / value / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / compounds / items / properties / drugLikeness / properties / lipinski / properties / xLogP / properties / pass / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / compounds / items / properties / drugLikeness / properties / lipinski / properties / xLogP / properties / pass / type
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • removedOutput schema / properties / compounds / items / properties / drugLikeness / properties / lipinski / properties / xLogP / properties / value / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / compounds / items / properties / drugLikeness / properties / lipinski / properties / xLogP / properties / value / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / compounds / items / properties / drugLikeness / properties / pass / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / compounds / items / properties / drugLikeness / properties / pass / type
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • removedOutput schema / properties / compounds / items / properties / drugLikeness / properties / veber / properties / rotatableBonds / properties / pass / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / compounds / items / properties / drugLikeness / properties / veber / properties / rotatableBonds / properties / pass / type
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • removedOutput schema / properties / compounds / items / properties / drugLikeness / properties / veber / properties / rotatableBonds / properties / value / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / compounds / items / properties / drugLikeness / properties / veber / properties / rotatableBonds / properties / value / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / compounds / items / properties / drugLikeness / properties / veber / properties / tpsa / properties / pass / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / compounds / items / properties / drugLikeness / properties / veber / properties / tpsa / properties / pass / type
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • removedOutput schema / properties / compounds / items / properties / drugLikeness / properties / veber / properties / tpsa / properties / value / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / compounds / items / properties / drugLikeness / properties / veber / properties / tpsa / properties / value / type
      Added value: +[
      +  "number",
      +  "null"
      +]
  4. Changed7 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "compounds",
      +      "truncated"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / error
      Added value: +{
      +  "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"
      +}
    • addedOutput schema / properties / truncated
      Added value: +{
      +  "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"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "compounds"
      -]
  5. Changed18 schema fields changed
    • addedInput schema / properties / descriptionOffset
      Added value: +{
      +  "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"
      +}
    • changedInput schema / properties / includeClassification / description
      Previous value: -"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."New value: +"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."
    • changedInput schema / properties / includeDescription / description
      Previous value: -"Include textual descriptions (pharmacology, mechanism, therapeutic use) attributed by source. Well-studied compounds have many overlapping summaries — capped via maxDescriptions. Fetched only for the first 10 CIDs in the batch; remaining CIDs return without descriptions."New value: +"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."
    • changedInput schema / properties / includeSynonyms / description
      Previous value: -"Fetch all known names and synonyms (trade names, systematic names, registry numbers). Slower for large CID lists."New value: +"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."
    • changedInput schema / properties / maxDescriptions / description
      Previous value: -"Max number of distinct description entries per compound (1-20). PubChem returns near-duplicate summaries from many depositors; duplicates are collapsed before this cap applies. Default: 3."New value: +"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."
    • changedInput schema / properties / maxSynonyms / description
      Previous value: -"Max synonyms returned per compound (1-100). PubChem lists hundreds for common drugs; capped to keep the response focused. Default: 20."New value: +"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."
    • addedInput schema / properties / synonymOffset
      Added value: +{
      +  "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"
      +}
    • changedOutput schema / properties / compounds / items / properties / descriptions / description
      Previous value: -"Textual descriptions, deduplicated and capped at maxDescriptions. Each entry carries optional source attribution."New value: +"Textual descriptions on this page, deduplicated then windowed by descriptionOffset/maxDescriptions. Each entry carries optional source attribution. Empty when descriptionOffset runs past descriptionsTotal."
    • changedOutput schema / properties / compounds / items / properties / descriptionsTotal / description
      Previous value: -"Total distinct descriptions available before truncation. Larger than descriptions.length when more sources exist — increase maxDescriptions to see them."New value: +"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."
    • changedOutput schema / properties / compounds / items / properties / synonyms / description
      Previous value: -"Known names and synonyms."New value: +"Known names and synonyms on this page, windowed by synonymOffset/maxSynonyms. Empty when synonymOffset runs past synonymsTotal."
    • changedOutput schema / properties / compounds / items / properties / synonymsTotal / description
      Previous value: -"Total synonyms available before truncation. Larger than synonyms.length when more exist — increase maxSynonyms to see them."New value: +"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."
    • addedOutput schema / properties / descriptionOffset
      Added value: +{
      +  "description": "Zero-based index of the first description returned within each compound's list. Present when includeDescription is true.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / enrichedCids
      Added value: +{
      +  "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"
      +}
    • addedOutput schema / properties / nextDescriptionOffset
      Added value: +{
      +  "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"
      +}
    • addedOutput schema / properties / nextSynonymOffset
      Added value: +{
      +  "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"
      +}
    • addedOutput schema / properties / notice
      Added value: +{
      +  "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"
      +}
    • addedOutput schema / properties / skippedCids
      Added value: +{
      +  "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"
      +}
    • addedOutput schema / properties / synonymOffset
      Added value: +{
      +  "description": "Zero-based index of the first synonym returned within each compound's list. Present when includeSynonyms is true.",
      +  "type": "number"
      +}
  6. Changed4 schema fields changed
    • changedInput schema / properties / cids / description
      Previous value: -"PubChem Compound IDs to fetch (1-100). Batched efficiently. Resolve from names/SMILES with pubchem_search_compounds."New value: +"PubChem Compound IDs to fetch (1-100). Resolve from names/SMILES with pubchem_search_compounds."
    • changedInput schema / properties / includeDrugLikeness / description
      Previous value: -"Compute drug-likeness assessment: Lipinski Rule of Five (MW, XLogP, HBD, HBA) and Veber rules (TPSA, rotatable bonds). No extra API calls — computed from properties."New value: +"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."
    • changedInput schema / properties / includeSynonyms / description
      Previous value: -"Fetch all known names and synonyms (trade names, systematic names, registry numbers). One API call per CID — slower than the property batch for large CID lists."New value: +"Fetch all known names and synonyms (trade names, systematic names, registry numbers). Slower for large CID lists."
    • changedInput schema / properties / maxDescriptions / description
      Previous value: -"Max number of distinct description entries per compound (1-20). PubChem returns near-duplicate summaries from many depositors; we dedup and cap to keep responses focused. Default: 3."New value: +"Max number of distinct description entries per compound (1-20). PubChem returns near-duplicate summaries from many depositors; duplicates are collapsed before this cap applies. Default: 3."
  7. Changed2 schema fields changed
    • addedInput schema / properties / maxSynonyms
      Added value: +{
      +  "default": 20,
      +  "description": "Max synonyms returned per compound (1-100). PubChem lists hundreds for common drugs; capped to keep the response focused. Default: 20.",
      +  "maximum": 100,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / compounds / items / properties / synonymsTotal
      Added value: +{
      +  "description": "Total synonyms available before truncation. Larger than synonyms.length when more exist — increase maxSynonyms to see them.",
      +  "type": "number"
      +}
  8. Changed8 schema fields changed
    • changedInput schema / properties / cids / description
      Previous value: -"PubChem Compound IDs to fetch (1-100). Batched efficiently."New value: +"PubChem Compound IDs to fetch (1-100). Batched efficiently. Resolve from names/SMILES with pubchem_search_compounds."
    • changedInput schema / properties / includeClassification / description
      Previous value: -"Include pharmacological classification: FDA Established Pharmacologic Classes, mechanisms of action, MeSH classes, and ATC codes. Slower when enabled — prefer small CID batches."New value: +"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."
    • changedInput schema / properties / includeDescription / description
      Previous value: -"Include textual descriptions (pharmacology, mechanism, therapeutic use) attributed by source. Well-studied compounds have many overlapping summaries — capped via maxDescriptions. Slower when enabled — prefer small CID batches."New value: +"Include textual descriptions (pharmacology, mechanism, therapeutic use) attributed by source. Well-studied compounds have many overlapping summaries — capped via maxDescriptions. Fetched only for the first 10 CIDs in the batch; remaining CIDs return without descriptions."
    • changedInput schema / properties / includeSynonyms / description
      Previous value: -"Fetch all known names and synonyms (trade names, systematic names, registry numbers)."New value: +"Fetch all known names and synonyms (trade names, systematic names, registry numbers). One API call per CID — slower than the property batch for large CID lists."
    • changedOutput schema / properties / compounds / items / properties / drugLikeness / properties / lipinski / properties / mw / description
      Previous value: -"Molecular weight rule (≤500)."New value: +"Molecular weight rule (≤500 g/mol)."
    • changedOutput schema / properties / compounds / items / properties / drugLikeness / properties / lipinski / properties / xLogP / description
      Previous value: -"XLogP rule (≤5)."New value: +"XLogP rule (≤5; calculated logP)."
    • changedOutput schema / properties / compounds / items / properties / drugLikeness / properties / veber / properties / tpsa / description
      Previous value: -"TPSA rule (≤140)."New value: +"Topological polar surface area rule (≤140 Ų)."
    • changedOutput schema / properties / compounds / items / properties / properties / description
      Previous value: -"Requested physicochemical properties."New value: +"Physicochemical properties keyed by name (echoes input.properties or the default core set; drug-likeness inputs are appended automatically when includeDrugLikeness is true)."
  9. Changed3 schema fields changed
    • addedOutput schema / properties / compounds / items / description
      Added value: +"Per-CID compound detail record."
    • addedOutput schema / properties / compounds / items / properties / classification / properties / atcCodes / items / description
      Added value: +"ATC code entry with hierarchical description."
    • addedOutput schema / properties / compounds / items / properties / descriptions / items / description
      Added value: +"Description entry with optional source attribution."
  10. Changed7 schema fields changed
    • changedInput schema / properties / includeDescription / description
      Previous value: -"Include textual description (pharmacology, mechanism, therapeutic use). Slower when enabled — prefer small CID batches."New value: +"Include textual descriptions (pharmacology, mechanism, therapeutic use) attributed by source. Well-studied compounds have many overlapping summaries — capped via maxDescriptions. Slower when enabled — prefer small CID batches."
    • addedInput schema / properties / maxDescriptions
      Added value: +{
      +  "default": 3,
      +  "description": "Max number of distinct description entries per compound (1-20). PubChem returns near-duplicate summaries from many depositors; we dedup and cap to keep responses focused. Default: 3.",
      +  "maximum": 20,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • removedOutput schema / properties / compounds / items / properties / description
      Removed value: -{
      -  "description": "Textual description of the compound when available.",
      -  "type": "string"
      -}
    • addedOutput schema / properties / compounds / items / properties / descriptions
      Added value: +{
      +  "description": "Textual descriptions, deduplicated and capped at maxDescriptions. Each entry carries optional source attribution.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "source": {
      +        "description": "Depositor source (e.g. \"DrugBank\", \"Wikipedia\", \"ChEBI\").",
      +        "type": "string"
      +      },
      +      "text": {
      +        "description": "Description text.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "text"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / compounds / items / properties / descriptionsTotal
      Added value: +{
      +  "description": "Total distinct descriptions available before truncation. Larger than descriptions.length when more sources exist — increase maxDescriptions to see them.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / compounds / items / properties / found
      Added value: +{
      +  "description": "False when the CID does not exist in PubChem (properties, description, etc. are empty).",
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / compounds / items / required
      Previous value: -[
      -  "cid",
      -  "properties"
      -]New value: +[
      +  "cid",
      +  "found",
      +  "properties"
      +]
  11. Changed6 schema fields changed
    • changedInput schema / properties / includeClassification / description
      Previous value: -"Fetch pharmacological classification from PUG View: FDA Established Pharmacologic Classes, mechanisms of action, MeSH classes, and ATC codes. Adds one API call per CID — consider limiting CID count when enabled."New value: +"Include pharmacological classification: FDA Established Pharmacologic Classes, mechanisms of action, MeSH classes, and ATC codes. Slower when enabled — prefer small CID batches."
    • changedInput schema / properties / includeDescription / description
      Previous value: -"Fetch textual description from PUG View (pharmacology, mechanism, therapeutic use). Adds one API call per CID — consider limiting CID count when enabled."New value: +"Include textual description (pharmacology, mechanism, therapeutic use). Slower when enabled — prefer small CID batches."
    • changedOutput schema / properties / compounds / items / properties / description / description
      Previous value: -"Textual description from PUG View."New value: +"Textual description of the compound when available."
    • addedOutput schema / properties / compounds / items / properties / drugLikeness / properties / pass / anyOf
      Added value: +[
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / compounds / items / properties / drugLikeness / properties / pass / description
      Previous value: -"Overall drug-likeness pass."New value: +"Overall drug-likeness pass. Null when insufficient properties were available."
    • removedOutput schema / properties / compounds / items / properties / drugLikeness / properties / pass / type
      Removed value: -"boolean"
  12. First observed

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, open-world behavior, so the bar is lower. The description adds valuable non-obvious constraints: the 100-CID fetch cap with overflow in 'unprocessed', and the description/classification fetch limited to the first 10 CIDs with the rest in skippedCids.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the CID-based purpose, then condenses the optional payloads and the cap behavior. Dense but every clause carries information; the only mild bloat is the trailing cap sentence which partially duplicates the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, payloads, and cap/pagination behavior, and an output schema exists so return values need not be described. For a 10-parameter tool with rich schema, this is largely complete, though explicit sibling routing is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents parameters and baseline is 3. The description restates the core option groups but adds no syntax or meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get detailed compound information by CID') and enumerates the returned data categories (physicochemical properties, descriptions, synonyms, drug-likeness, classification), clearly distinguishing it from siblings like pubchem_get_compound_safety or pubchem_get_compound_xrefs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies when to use it by listing the payload categories, and the schema points agents to pubchem_search_compounds for name/SMILES resolution. However, the description itself never explicitly states when to prefer this over siblings such as pubchem_get_summary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.