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). Accepts up to 100 CIDs per call.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cidsYesPubChem Compound IDs to fetch (1-100). 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 (1-100). 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 (1-20). 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

TableJSON 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.
truncatedNoTrue 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.
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.
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. Changed2 schema fields changed
    • removedInput schema / properties / cids / items / exclusiveMinimum
      Removed value: -0
    • addedInput schema / properties / cids / items / minimum
      Added value: +1
  2. 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"
      +]
  3. 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"
      -]
  4. 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"
      +}
  5. 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."
  6. 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"
      +}
  7. 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)."
  8. 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."
  9. 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"
      +]
  10. 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"
  11. 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 readOnlyHint and idempotentHint, so safety is covered. The description adds the batch capacity limit ('up to 100 CIDs per call') and the optionality of descriptions, synonyms, drug-likeness, and classification. The surprising 'first 10 CIDs only' limitation is not in the top-level description, but it is documented in the parameter descriptions, so an agent reading the schema will still discover it.

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

Conciseness5/5

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

The description is two sentences with no filler: the first sentence states the core action and return types, the second covers optional content and the batch limit. Every clause earns its place.

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

Completeness5/5

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

Given the rich schema, output schema presence, and annotations, the top-level description is complete enough for an agent to select and call the tool correctly. It provides a compact overview while the schema carries parameter-level details like pagination and the first-10-CID caveat.

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%, and each parameter already has a detailed description explaining defaults, pagination, and effects like skippedCids. The top-level description adds thematic grouping but no parameter syntax or semantics beyond what the schema already provides, so the baseline of 3 is appropriate.

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?

The description opens with a specific verb and resource: 'Get detailed compound information by CID.' It then enumerates the actual content categories — physicochemical properties, descriptions, synonyms, drug-likeness, and pharmacological classification — which clearly distinguishes this tool from siblings like bioactivity, safety, xrefs, and 3D structure.

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

Usage Guidelines3/5

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

Usage is implied rather than explicit: the tool should be used when detailed compound data by CID is needed. There is no direct comparison with sibling tools or a when-not-to-use statement, though the schema does point users to pubchem_search_compounds for resolving names/SMILES to CIDs.

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.