Skip to main content
Glama

atom_properties

Destructive

Read per-atom properties that other structure queries cannot expose—occupancy, altloc, B-factor/pLDDT, and formal charge—for a chosen atom selection.

Instructions

Reads per-atom properties, which nothing else in the tool set can reach.

Object-level facts come back through structure_info and list_chains, and per-residue values through get_sequence or the view presets. But properties that live on individual atoms — occupancy, alternate conformations, per-atom B-factor, formal charge — have no other route: the PyMOL call that exposes them returns an object that cannot cross the bridge.

Use it to check what you are actually looking at: partial occupancy where a sidechain has two conformations, per-atom pLDDT inside a predicted model, or which atoms carry a formal charge before reasoning about electrostatics.

properties is evaluated by PyMOL once per atom, so it accepts any expression valid in iterate — the names above are the useful subset.

Input Schema

NameRequiredDescriptionDefault
max_atomsNoHow many atoms to list. Any omitted are counted.
selectionYesAtoms to read, e.g. "1hsg and chain A and resi 25". Narrow this: a whole protein is thousands of atoms.
propertiesNoComma-separated PyMOL atom properties. Common ones: chain, resi, resn, name, elem, b (B-factor or pLDDT), q (occupancy), alt (altloc), formal_charge, partial_charge, ss, segi, index. Each one is evaluated as a Python expression per atom inside PyMOL, so pass property names, not text from an untrusted source.chain, resi, resn, name, b, q

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.5.2
    • changedInput schema / properties / properties / description
      Previous value: -"Comma-separated PyMOL atom properties. Common ones: chain, resi, resn, name, elem, b (B-factor or pLDDT), q (occupancy), alt (altloc), formal_charge, partial_charge, ss, segi, index."New value: +"Comma-separated PyMOL atom properties. Common ones: chain, resi, resn, name, elem, b (B-factor or pLDDT), q (occupancy), alt (altloc), formal_charge, partial_charge, ss, segi, index. Each one is evaluated as a Python expression per atom inside PyMOL, so pass property names, not text from an untrusted source."
  2. Addedv1.5.1

TDQS

A4.5/5.0
Behavior4/5

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

The description discloses non-obvious behavior the annotations cannot: the underlying PyMOL call returns an object that "cannot cross the bridge," and ``properties`` is evaluated by PyMOL once per atom, meaning the argument is executable code rather than plain text. That evaluation model is exactly the kind of context that justifies the conservative destructiveHint=true annotation on what looks like a read. It does not spell out error behavior or how truncation beyond max_atoms is surfaced, keeping it short of a 5.

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?

Three tight paragraphs that lead with what the tool reads, then the sibling boundary, then concrete situations, then the evaluation caveat. The opening clause "which nothing else in the tool set can reach" is slightly rhetorical and is repeated in spirit by the next paragraph, but nothing is wasted enough to hurt.

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 formatting needn't be restated, and the description covers scope, alternatives, and the code-evaluation risk appropriately. What remains thin is operational behavior: nothing about cost on large selections or what happens when atoms are omitted, though max_atoms' own schema text handles counting.

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

Parameters4/5

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

With 100% schema coverage the baseline is 3, and the description earns extra by framing ``properties`` as accepting "any expression valid in ``iterate``" rather than a closed enumerated vocabulary, plus tying specific property names to the questions they answer (occupancy, altloc, B-factor/pLDDT, formal charge). ``selection`` and ``max_atoms`` meaning remain with the schema, which already documents them well.

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?

"Reads per-atom properties" is a specific verb+resource, and the description immediately draws the boundary against named siblings: object-level facts go to structure_info/list_chains, per-residue values to get_sequence or view presets, while occupancy, altloc, per-atom B-factor and formal charge have "no other route." An agent can pick this tool over its neighbors 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 Guidelines5/5

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

It gives explicit use cases (partial occupancy on a two-conformation sidechain, per-atom pLDDT in a predicted model, formal charge before electrostatics) and explicitly rules out alternatives by explaining why they cannot serve this purpose. The routing is unambiguous in both directions.

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