Skip to main content
Glama
Ajey95

ImmunoGraph MCP

calculate_surface_accessibility

Read-onlyIdempotent

Calculates relative solvent accessibility for mapped residues from supplied PDB coordinates or a fixture to determine whether residues are exposed.

Instructions

Calculate relative solvent accessibility for mapped residues with FreeSASA on supplied PDB coordinates, or replay an exact fixture. Use after map_epitopes_to_structure when asking whether residues are exposed; use calculate_structure_confidence for model pLDDT instead. Live computation requires FreeSASA and PDB bytes; output is computed accessibility, not epitope probability.

Input Schema

NameRequiredDescriptionDefault
runIdYesCaller-chosen identifier linking this call to one research run.
methodYesAlgorithm or provider method selected for this operation; inspect allowed schema values.
mappingsYesCandidate-to-structure residue intervals used to calculate accessibility.
structurePdbBase64NoBase64-encoded protein PDB coordinate bytes for direct computation.

Output Schema

NameRequiredDescriptionDefault
okYesWhether execution completed successfully.
dataNoTool-specific result fields on success.
metaYesRun identifiers, timings, and input/output hashes.
errorNoStructured failure on unsuccessful execution.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv0.2.1
    • addedInput schema / properties / mappings / description
      Added value: +"Candidate-to-structure residue intervals used to calculate accessibility."
    • addedInput schema / properties / mappings / items / properties / structureId / description
      Added value: +"Stable identifier of the supplied or retrieved structure."
    • addedInput schema / properties / method / description
      Added value: +"Algorithm or provider method selected for this operation; inspect allowed schema values."
    • addedInput schema / properties / runId / description
      Added value: +"Caller-chosen identifier linking this call to one research run."
    • addedInput schema / properties / structurePdbBase64 / description
      Added value: +"Base64-encoded protein PDB coordinate bytes for direct computation."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": {},
      +  "properties": {
      +    "data": {
      +      "additionalProperties": {},
      +      "description": "Tool-specific result fields on success.",
      +      "properties": {},
      +      "type": "object"
      +    },
      +    "error": {
      +      "additionalProperties": false,
      +      "description": "Structured failure on unsuccessful execution.",
      +      "properties": {
      +        "category": {
      +          "type": "string"
      +        },
      +        "code": {
      +          "type": "string"
      +        },
      +        "details": {
      +          "additionalProperties": {},
      +          "properties": {},
      +          "type": "object"
      +        },
      +        "message": {
      +          "type": "string"
      +        },
      +        "retryable": {
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "code",
      +        "category",
      +        "message",
      +        "retryable"
      +      ],
      +      "type": "object"
      +    },
      +    "meta": {
      +      "additionalProperties": {},
      +      "description": "Run identifiers, timings, and input/output hashes.",
      +      "properties": {
      +        "completedAt": {
      +          "type": "string"
      +        },
      +        "durationMs": {
      +          "type": "number"
      +        },
      +        "inputHash": {
      +          "type": "string"
      +        },
      +        "outputHash": {
      +          "type": "string"
      +        },
      +        "requestId": {
      +          "type": "string"
      +        },
      +        "runId": {
      +          "type": "string"
      +        },
      +        "startedAt": {
      +          "type": "string"
      +        },
      +        "toolName": {
      +          "type": "string"
      +        },
      +        "toolVersion": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "requestId",
      +        "runId",
      +        "toolName",
      +        "toolVersion",
      +        "startedAt",
      +        "inputHash"
      +      ],
      +      "type": "object"
      +    },
      +    "ok": {
      +      "description": "Whether execution completed successfully.",
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "ok",
      +    "meta"
      +  ],
      +  "type": "object"
      +}
  2. First observedv0.2.0

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the description isn't needed for safety. It still adds real context: the live path requires FreeSASA and PDB bytes, and the output is computed accessibility rather than epitope probability. It stops short of saying what happens when FreeSASA is unavailable or how the fixture-replay path is selected, which keeps it off 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.

Conciseness5/5

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

Three tight sentences with no filler: capability and engine first, usage and routing second, prerequisites and output caveat last. Every clause carries information an agent needs to select and invoke correctly.

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?

With an output schema present, return-value detail is correctly omitted, and the description covers prerequisites, the computed-not-probability caveat, and sibling routing. The one gap is the "replay an exact fixture" mode, which is asserted but never tied to a concrete parameter or condition, leaving the agent to infer how that path is invoked.

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 parameters are already documented and the baseline is 3. The description does not clarify the weakly-specified `method` parameter (it only echoes the schema's "inspect allowed schema values" and there are no enums) nor how fixture replay is triggered relative to `structurePdbBase64`. It adds little meaning beyond the schema.

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 (calculate relative solvent accessibility) plus the engine (FreeSASA) and the two operating modes (live computation on supplied PDB coordinates, or replay of a fixture). It also names the sibling it is not (calculate_structure_confidence for pLDDT), so an agent can distinguish it without reading either 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?

Gives an explicit ordering constraint ("Use after map_epitopes_to_structure when asking whether residues are exposed") and an explicit alternative for the adjacent question ("use calculate_structure_confidence for model pLDDT instead"). Both the when and the when-not are present.

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