Skip to main content
Glama
Ajey95

ImmunoGraph MCP

chat_with_research_agent

Read-onlyIdempotent

Answer researcher questions using an already assembled evidence summary under a bounded agent policy, with deterministic citation mode or configured LLM assistance.

Instructions

Answer a researcher question from the supplied evidence summary under the bounded agent policy. Use for an explanation after evidence has been assembled; this tool does not independently retrieve papers, predict epitopes, or run the workflow. Deterministic mode cites supplied evidence; LLM mode requires configured model access.

Input Schema

NameRequiredDescriptionDefault
runIdYesCaller-chosen identifier linking this call to one research run.
questionYesResearcher question to answer using only evidenceSummary.
agentModeYesChoose deterministic policy execution or an enabled LLM-assisted mode.
evidenceSummaryYesEvidence already assembled by the caller; no retrieval is performed.

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. Changed5 schema fields changedv0.2.1
    • addedInput schema / properties / agentMode / description
      Added value: +"Choose deterministic policy execution or an enabled LLM-assisted mode."
    • addedInput schema / properties / evidenceSummary / description
      Added value: +"Evidence already assembled by the caller; no retrieval is performed."
    • addedInput schema / properties / question / description
      Added value: +"Researcher question to answer using only evidenceSummary."
    • addedInput schema / properties / runId / description
      Added value: +"Caller-chosen identifier linking this call to one research run."
    • 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.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so safety is covered; the description adds the non-obvious prerequisite that LLM mode requires configured model access, which is real operational guidance. 'Bounded agent policy' and 'deterministic mode cites supplied evidence' hint at behavior but stay abstract, so it does not reach 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 sentences: what it does, when to use it, and the mode constraint — front-loaded with zero filler. The only soft cost is the unexplained phrase 'bounded agent policy', which costs a small amount of clarity without wasting space.

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 and annotations cover the safety profile, so the description only needs to frame scope and prerequisites — which it does, including the ordering constraint and the LLM-access requirement. The residual gap is that the 'bounded agent policy' governing answers is never defined, so an agent knows the boundary exists but not where it lies.

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?

Schema coverage is 100%, so the baseline is 3; the description still adds value by contrasting the two agentMode paths (deterministic cites supplied evidence, LLM needs model access) and by stressing that evidenceSummary must already be assembled. It does not explain the shape of the evidenceSummary object, but the schema's additionalProperties leaves that open by design.

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 ('Answer a researcher question from the supplied evidence summary') and immediately bounds the scope. It goes further than most definitions by naming what the tool explicitly does NOT do (retrieve papers, predict epitopes, run the workflow), which cleanly separates it from run_agentic_workflow and the predict_* siblings.

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?

'Use for an explanation after evidence has been assembled' gives a clear triggering condition and ordering constraint relative to the rest of the workflow. The negative list reinforces when not to use it, but no sibling is named as the explicit alternative for the excluded cases, keeping it short of a 5.

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