Skip to main content
Glama

Get Compound 3D Structure

pubchem_get_compound_3d_structure
Read-onlyIdempotent

Retrieve a compound's 3D atomic coordinates and bonds from PubChem CID. Get parsed JSON for a structured view or raw SDF for docking, rendering, and conformer tools.

Instructions

Get a compound's default 3D conformer — atomic coordinates and bonds — for one CID. format="json" (default) returns atoms and bonds parsed into structured fields; format="sdf" returns the raw V2000 SDF text for passthrough to docking, rendering, or conformer tools. Optionally lists alternate conformer IDs. Not every compound has computed 3D coordinates (large molecules, mixtures, and some salts do not).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cidYesPubChem Compound ID. Resolve from name/SMILES with pubchem_search_compounds.
formatNoOutput format. "json" (default) returns parsed atoms and bonds. "sdf" returns the raw V2000 SDF text for passthrough to other tools.json
maxAtomsNoCap the atoms returned in the format="json" preview. atomCount always reports the full total; omitted rows are disclosed via the truncated/shownAtoms enrichment. Defaults to the first 200 atoms.
maxBondsNoCap the bonds returned in the format="json" preview. bondCount always reports the full total; omitted rows are disclosed via the truncated/shownBonds enrichment. Defaults to the first 200 bonds.
includeRawSdfNoFor format="sdf", return the complete raw V2000 SDF even when it exceeds the safe line cap. Default false: an SDF longer than 500 lines is line-capped with disclosure. No effect when format="json".
includeAlternateConformerIdsNoList the IDs of additional computed conformers beyond the default. Slower than the default response. Default: false.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
cidNoPubChem Compound ID.
sdfNoRaw V2000 SDF text. Populated when format="sdf".
atomsNoParsed atoms. Populated when format="json".
bondsNoParsed bonds. Populated when format="json".
errorNoPresent when the call failed. Absent on success.
noticeNoGuidance naming which lists were capped and how to widen them.
atomCapNoThe atom cap applied (explicit maxAtoms or the safe default), when the atom list was capped.
bondCapNoThe bond cap applied (explicit maxBonds or the safe default), when the bond list was capped.
atomCountNoNumber of atoms in the conformer.
bondCountNoNumber of bonds in the conformer.
truncatedNoTrue when the atom list, bond list, or raw SDF was capped below its total. atomCount/bondCount always report the full totals.
shownAtomsNoAtoms returned after the cap, when fewer than atomCount. Raise maxAtoms for more.
shownBondsNoBonds returned after the cap, when fewer than bondCount. Raise maxBonds for more.
conformerIdNoDefault (primary) conformer ID. Present when includeAlternateConformerIds is set.
shownSdfLinesNoSDF lines returned when format="sdf" and the raw text was line-capped. Set includeRawSdf for the full record.
alternateConformerIdsNoConformer IDs beyond the default. Present when includeAlternateConformerIds is set and alternates exist.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed6 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": [
      +      "cid",
      +      "atomCount",
      +      "bondCount"
      +    ]
      +  },
      +  {
      +    "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. Declared by this tool: `no_3d_structure`: PubChem has no computed 3D conformer for the requested CID Other values are possible when a failure originates below the handler.",
      +          "examples": [
      +            "no_3d_structure"
      +          ],
      +          "type": "string"
      +        },
      +        "recovery": {
      +          "additionalProperties": {},
      +          "description": "Actionable next step for the caller.",
      +          "properties": {
      +            "hint": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "hint"
      +          ],
      +          "type": "object"
      +        },
      +        "retryable": {
      +          "description": "Whether retrying may succeed.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "message": {
      +      "description": "Human-readable description of what went wrong.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "cid",
      -  "atomCount",
      -  "bondCount"
      -]
  2. Changed1 schema field changedv0.6.0
    • changedInput schema / properties / includeAlternateConformerIds / description
      Previous value: -"List the IDs of additional computed conformers beyond the default. Adds one extra API call. Default: false."New value: +"List the IDs of additional computed conformers beyond the default. Slower than the default response. Default: false."
  3. Changed10 schema fields changedv0.2.5
    • addedInput schema / properties / includeRawSdf
      Added value: +{
      +  "default": false,
      +  "description": "For format=\"sdf\", return the complete raw V2000 SDF even when it exceeds the safe line cap. Default false: an SDF longer than 500 lines is line-capped with disclosure. No effect when format=\"json\".",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / maxAtoms
      Added value: +{
      +  "description": "Cap the atoms returned in the format=\"json\" preview. atomCount always reports the full total; omitted rows are disclosed via the truncated/shownAtoms enrichment. Defaults to the first 200 atoms.",
      +  "exclusiveMinimum": 0,
      +  "maximum": 9007199254740991,
      +  "type": "integer"
      +}
    • addedInput schema / properties / maxBonds
      Added value: +{
      +  "description": "Cap the bonds returned in the format=\"json\" preview. bondCount always reports the full total; omitted rows are disclosed via the truncated/shownBonds enrichment. Defaults to the first 200 bonds.",
      +  "exclusiveMinimum": 0,
      +  "maximum": 9007199254740991,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / atomCap
      Added value: +{
      +  "description": "The atom cap applied (explicit maxAtoms or the safe default), when the atom list was capped.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / bondCap
      Added value: +{
      +  "description": "The bond cap applied (explicit maxBonds or the safe default), when the bond list was capped.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / notice
      Added value: +{
      +  "description": "Guidance naming which lists were capped and how to widen them.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / shownAtoms
      Added value: +{
      +  "description": "Atoms returned after the cap, when fewer than atomCount. Raise maxAtoms for more.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / shownBonds
      Added value: +{
      +  "description": "Bonds returned after the cap, when fewer than bondCount. Raise maxBonds for more.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / shownSdfLines
      Added value: +{
      +  "description": "SDF lines returned when format=\"sdf\" and the raw text was line-capped. Set includeRawSdf for the full record.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / truncated
      Added value: +{
      +  "description": "True when the atom list, bond list, or raw SDF was capped below its total. atomCount/bondCount always report the full totals.",
      +  "type": "boolean"
      +}
  4. Addedv0.2.2

TDQS

A4.3/5.0
Behavior4/5

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

With annotations already marking the operation as read-only and idempotent, the description adds valuable behavioral context: it explains the json/sdf output split, the default-conformer semantics, the optional alternate-conformer listing, and the concrete limitation that not all compounds have computed 3D coordinates. This goes beyond what annotations alone convey.

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 compact and front-loaded: three sentences cover the core purpose, format behavior, optional alternate conformers, and a key caveat without any wasted words. Every sentence contributes actionable information.

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 fully covered 100% schema, read-only annotations, and an output schema, the description need not restate return values or parameter details. It supplies the missing context—default-conformer behavior, format intent, alternate conformers, and data-availability caveats—making it sufficient for correct selection and invocation.

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 the parameter descriptions already explain maxAtoms, maxBonds, includeRawSdf, and includeAlternateConformerIds in detail. The main description adds only light paraphrasing about format behavior and does not introduce significant new parameter semantics beyond what the schema already 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?

The description states a specific verb and resource: 'Get a compound's default 3D conformer — atomic coordinates and bonds — for one CID.' This clearly distinguishes the tool from siblings that search compounds, fetch details, images, or safety data, while also specifying the single-CID scope.

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?

The description gives clear guidance on when to use each format ('format="json"... returns atoms and bonds parsed... format="sdf" returns raw V2000 SDF text') and notes the single-CID scope. It does not explicitly contrast the tool with every sibling or state when not to use it, but the unique 3D-conformer purpose plus the schema's pointer to pubchem_search_compounds for CID resolution provide adequate context.

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cyanheads/pubchem-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server