Skip to main content
Glama
Ajey95

ImmunoGraph MCP

optimize_construct_genetic

Read-onlyIdempotent

Run seeded genetic-style search over supplied candidates to balance construct size, coverage, redundancy, and manufacturability, returning a computed construct proposal for final-ranked arrangements.

Instructions

Run seeded genetic-style search over supplied candidates to balance construct size, coverage, redundancy, and manufacturability terms. Use after final ranking when searching construct arrangements; use optimize_shortlist_coverage for simpler deterministic shortlist selection. Returns a computed proposal, not a validated vaccine construct.

Input Schema

NameRequiredDescriptionDefault
runIdYesCaller-chosen identifier linking this call to one research run.
linkerYesPeptide linker sequence used when assembling construct proposals.
candidatesYesCaller-supplied candidate records; required nested fields depend on this operation.
populationIdsYesPopulation identifiers requested from the coverage source or synthetic dataset.
populationSizeYesNumber of candidate construct genomes per optimization generation.
targetCoverageYesDesired population coverage fraction used by optimization.
populationWeightsNoCaller-supplied weights for combining named population coverage values.
maximumGenerationsYesMaximum optimization generations before returning a proposal.
maximumConstructSizeYesUpper limit on construct size for genetic-style search.
finalRankingSnapshotHashYesSHA-256 identity of the final ranking snapshot supplying these candidates.

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. Changed14 schema fields changedv0.2.1
    • addedInput schema / properties / candidates / description
      Added value: +"Caller-supplied candidate records; required nested fields depend on this operation."
    • addedInput schema / properties / candidates / items / properties / candidateType / description
      Added value: +"MHC class or candidate category this operation applies to."
    • addedInput schema / properties / candidates / items / properties / category / description
      Added value: +"Final candidate decision category being explained."
    • addedInput schema / properties / candidates / items / properties / finalScore / description
      Added value: +"Already computed final candidate score in the unit interval."
    • addedInput schema / properties / finalRankingSnapshotHash / description
      Added value: +"SHA-256 identity of the final ranking snapshot supplying these candidates."
    • addedInput schema / properties / linker / description
      Added value: +"Peptide linker sequence used when assembling construct proposals."
    • addedInput schema / properties / maximumConstructSize / description
      Added value: +"Upper limit on construct size for genetic-style search."
    • addedInput schema / properties / maximumGenerations / description
      Added value: +"Maximum optimization generations before returning a proposal."
    • addedInput schema / properties / populationIds / description
      Added value: +"Population identifiers requested from the coverage source or synthetic dataset."
    • addedInput schema / properties / populationSize / description
      Added value: +"Number of candidate construct genomes per optimization generation."
    • addedInput schema / properties / populationWeights / description
      Added value: +"Caller-supplied weights for combining named population coverage values."
    • addedInput schema / properties / runId / description
      Added value: +"Caller-chosen identifier linking this call to one research run."
    • addedInput schema / properties / targetCoverage / description
      Added value: +"Desired population coverage fraction used by optimization."
    • 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, and "seeded" is consistent with that idempotent claim. The description adds genuinely useful context beyond annotations: the result is "a computed proposal, not a validated vaccine construct," which tells the agent how much to trust the output. It stops short of describing convergence behavior or what happens when maximumGenerations is insufficient.

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 sentences, front-loaded with the action, then routing guidance, then the output caveat. Nothing is repeated from the schema and no sentence is padding.

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?

For a 10-parameter, 9-required tool with nested objects, an output schema, and annotation coverage, the description covers purpose, routing, and result trustworthiness. The one gap is the finalRankingSnapshotHash chaining requirement (that candidates must match the ranked snapshot), which is only in the schema and is easy to violate.

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 all ten parameters, including nested candidate fields, are already documented. The description's mention of size, coverage, redundancy, and manufacturability loosely maps to maximumConstructSize, targetCoverage, and populationWeights, but adds no syntax or constraint detail beyond the schema. 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 and resource ("Run seeded genetic-style search over supplied candidates") plus the explicit objective terms it balances (size, coverage, redundancy, manufacturability), and names the sibling it is not (optimize_shortlist_coverage). An agent can distinguish it from the deterministic shortlist optimizer without opening 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 precondition ("Use after final ranking when searching construct arrangements") and an explicit alternative with the condition that selects it ("use optimize_shortlist_coverage for simpler deterministic shortlist selection"). No inference required.

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