Skip to main content
Glama

Get Compound Details

pubchem_get_compound_details
Read-onlyIdempotent

Get detailed compound data from PubChem by ID, including properties, synonyms, drug-likeness, and pharmacological classification. Works with up to 100 CIDs per call.

Instructions

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. Changed26 schema fields changedv0.6.2
    • 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"
      +]
  2. Changed7 schema fields changedv0.6.1
    • 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"
      -]
  3. Changed20 schema fields changedv0.6.0
    • 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."
    • 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 / 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 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; we dedup and cap to keep responses focused. 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"
      +}
  4. Changed2 schema fields changedv0.2.5
    • 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"
      +}
  5. Changed19 schema fields changedv0.1.22
    • 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: -"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. Fetched only for the first 10 CIDs in the batch; remaining CIDs return without classification."
    • 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 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."
    • 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"
      +}
    • 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."
    • removedOutput schema / properties / compounds / items / properties / description
      Removed value: -{
      -  "description": "Textual description from PUG View.",
      -  "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,
      +    "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"
      +}
    • 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"
      +}
    • 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)."
    • 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"
    • 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 Ų)."
    • 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 / 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)."
    • changedOutput schema / properties / compounds / items / required
      Previous value: -[
      -  "cid",
      -  "properties"
      -]New value: +[
      +  "cid",
      +  "found",
      +  "properties"
      +]
  6. First observedv0.1.11

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds only the batch ceiling ('up to 100 CIDs per call'), which duplicates maxItems in the schema, and says nothing about the 10-CID cap on descriptions/classification, the skippedCids behavior, or synonym paging — all of which are disclosed only in parameter descriptions.

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?

Two sentences, front-loaded with the core verb and resource, followed by the payload enumeration. The long parenthetical lists are dense but each item earns its place by telling the agent what the optional flags yield.

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?

An output schema exists, so return values need not be explained, and the description covers the batch limit and optional payload categories. It leaves pagination/flags to the schema, which is acceptable given full schema coverage, though the description alone would not warn an agent about the 10-CID cap.

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 already documents all ten parameters thoroughly, including defaults, offsets, and pagination semantics. The description adds no parameter-level meaning beyond naming the optional payloads, so the baseline 3 applies.

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 (Get) and resource (compound details by CID) and enumerates the returned payload categories: physicochemical properties, textual descriptions, synonyms, drug-likeness, and pharmacological classification. This lets an agent distinguish it from siblings like pubchem_get_compound_safety, pubchem_get_compound_xrefs, and pubchem_get_compound_image without opening any schema.

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

Usage Guidelines2/5

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

The description says nothing about when to reach for this tool versus the other eight compound tools or pubchem_search_compounds; the only routing hint ('resolve with pubchem_search_compounds') lives in the cids schema field, not the description. An agent must infer the search-then-detail workflow from structured data rather than being told.

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