Skip to main content
Glama
ImmPort MCP Server

ImmPort MCP Server

Official
by ImmPortDB

Get Assay Results

get_assay_results

Retrieve assay results for a specified ImmPort assay type and study, filtered by arm, visit, subject, and measurement technique to narrow large result sets.

Instructions

Retrieve assay results for any ImmPort assay type. Select the assay type via the assay_type parameter: elisa, elispot, fcs_analyzed, file_paths, hai, hla_typing, kir_typing, mass_spectrometry, mbaa, neut_ab_titer, pcr.

⚠️ SCOPE BEFORE CALLING: The upstream ImmPort API returns ALL matching records with no server-side pagination or aggregation. Large studies (e.g. flow cytometry, lab tests) can return tens of thousands of rows from a single visit — and combining a broad filter (arm_accession or study_time_collected alone) with a large study can time out outright. Always narrow with planned_visit_accession + arm_accession together (the most reliable combination) before calling. Use get_study_data(resource='experiments') first to confirm the assay type exists in the study.

Required: study_accession (list). Common filters: arm_accession, planned_visit_accession, subject_accession, measurement_technique, study_time_collected(_gte/_lte/_gt/_lt). Response-shrinking options: fields (project columns), name_contains (substring filter), summarize (per-group stats), limit/offset (paging) — these only shrink what's returned, not the upstream query cost, so real filters are still the best way to avoid timeouts.

For the full per-assay field list, every filter parameter, and response-shrinking option details, see the immport://assay-results-reference resource.

Input Schema

NameRequiredDescriptionDefault
sexNo
raceNo
limitNo
fieldsNo
offsetNo
strainNo
speciesNo
age_unitNo
arm_nameNo
clinicalNo
group_byNo
age_eventNo
ethnicityNo
summarizeNo
assay_typeYes
study_titleNo
value_fieldNo
race_specifyNo
arm_accessionNo
name_containsNo
biosample_typeNo
max_subject_ageNo
min_subject_ageNo
study_accessionYes
age_event_specifyNo
biosample_subtypeNo
subject_accessionNo
subject_phenotypeNo
max_subject_age_gtNo
max_subject_age_ltNo
min_subject_age_gtNo
min_subject_age_ltNo
biosample_accessionNo
expsample_accessionNo
max_subject_age_gteNo
max_subject_age_lteNo
min_subject_age_gteNo
min_subject_age_lteNo
study_time_t0_eventNo
treatment_accessionNo
ancestral_populationNo
experiment_accessionNo
study_time_collectedNo
measurement_techniqueNo
planned_visit_accessionNo
study_time_collected_gtNo
study_time_collected_ltNo
study_time_collected_gteNo
study_time_collected_lteNo
study_time_collected_unitNo
study_time_t0_event_specifyNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.4.0

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose important operational behavior: no upstream server-side pagination, tens-of-thousands-row responses, and outright timeouts on broad filters against large studies. It also clarifies that fields/name_contains/summarize/limit/offset shrink the response but not the upstream query cost, which is a non-obvious distinction. What it omits is the safety/authorization profile (read-only, no side effects, any credential requirements) and any indication of the per-assay shape of results, which for a 51-parameter unannotated tool leaves a real gap.

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?

Front-loaded with purpose, then a clearly marked warning block, then required/filters/shrinking options in that order — an agent can extract the decision-critical guidance from the first two paragraphs. Density is justified by a 51-parameter tool, though the inline elision of the assay-type list duplication and the deferred 'see the resource' sentence add length without adding decision value.

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 very complex, unannotated tool with 51 parameters, the description covers the essential decision surface: which assay types exist, which filters to combine, what causes timeouts, and what levers merely shrink output. An output schema exists, so return-value shape need not be explained, and the pointer to immport://assay-results-reference is a reasonable escape hatch — though relying on an out-of-band resource for most parameter documentation is a real completeness risk.

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 0% across 51 parameters, so the description must compensate and only partially does: it explains study_accession as required, lists roughly a dozen high-value filters, and gives semantic meaning to the response-shrinking group (notably that they do not reduce query cost). The majority of parameters — sex, race, strain, species, arm_name, clinical, group_by, value_field, biosample_type/subtype, subject_phenotype, treatment/expsample/experiment accessions, the min/max age comparison variants, study_time_t0_event — are left entirely undefined in-line and deferred to an external resource URI the agent may not be able to resolve.

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 ('Retrieve assay results for any ImmPort assay type') and enumerates the eleven assay_type values, so the agent immediately knows the scope. It also names the sibling get_study_data(resource='experiments') as the prerequisite check, which differentiates it from the other retrieval tools.

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?

Explicitly prescribes the call sequence ('Use get_study_data(resource='experiments') first') and the recommended filter combination (planned_visit_accession + arm_accession) before calling. It also states when broad filters are dangerous, which is a genuine when-not-to guidance rather than a restatement of the schema.

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