Skip to main content
Glama
sbl-sdsc

MCP GeneLab Server

by sbl-sdsc

find_common_differentially_methylated_regions

Read-onlyIdempotent

Find genes with shared differentially methylated regions across multiple assays, applying methylation/q-value thresholds plus promoter, exon, intron, and distance filters.

Instructions

USE THIS TOOL (not the query tool) for any "common DMRs across assays", "genes hypermethylated in BOTH assays", "shared hyper/hypomethylated regions", or any cross-assay methylation intersection question — including promoter/exon/intron-filtered and distance-bounded variants. Falling back to query for this category reproduces the per-assay fetch + inner-join logic this tool already does correctly (parallel fetches, MethylationRegion location filtering applied during the Cypher so the common set reflects the filtered universe, methylation_diff/q_value thresholds, separate hyper vs. hypo intersections) and loses the formatted markdown + inline CSV side-channel and the assay-reference legend.

Find common differentially methylated genes across multiple assays.

This function:

  1. Takes a list of assay IDs as input (2 or more)

  2. Gets ALL genes associated with differentially methylated regions for each assay, applying the methylation_diff threshold, q_value threshold, and any MethylationRegion location filters (in_promoter, in_exon, in_intron, dist_to_feature_max)

  3. Inner joins among hypermethylated genes and among hypomethylated genes

  4. Returns markdown tables showing common genes and their methylation_diff values

Use the location filter parameters rather than post-filtering — they are applied during the Cypher query so the common gene set reflects the filtered universe correctly.

Input Schema

NameRequiredDescriptionDefault
in_exonNoMethylationRegion location filter (True / False / None). See in_promoter.
assay_idsYesList of assay identifiers for methylation comparisons
in_intronNoMethylationRegion location filter (True / False / None). See in_promoter.
session_idNoSession id returned by `create_session()`. This server serves many users from one process; the session id is what keeps your output directory and generated plots private to you. Pass the SAME value on every tool call. If the server replies that the session is unknown or expired, call `create_session()` again and use the new id.
in_promoterNoMethylationRegion location filter. When True, restrict to regions overlapping a gene promoter. When False, exclude promoter-overlapping regions. None (default) imposes no promoter filter. Applied during the Cypher query — passing in_promoter=True is the correct way to ask 'which genes are commonly hypermethylated IN THE PROMOTER across these assays'.
q_value_thresholdNoq-value threshold for significance (default: 0.05)
dist_to_feature_maxNoMethylationRegion distance filter. When set, restrict to regions with dist_to_feature <= this value (bp). None (default) imposes no distance filter.
methylation_diff_thresholdNoMethylation difference threshold (default: 0.0 = any change)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.0.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, not open-world), and the description adds internals beyond that: parallel fetches, filters applied inside the Cypher query so the common set reflects the filtered universe, separate hyper vs. hypo intersections, and a markdown output with an inline CSV side-channel and assay-reference legend. That is meaningfully more than the structured fields provide.

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?

The routing instruction and rationale are correctly front-loaded, but the long parenthetical inventory of query-fallback losses is verbose, and the numbered 4-step list largely restates the opening paragraph and the closing filter admonition. Every sentence is relevant, yet the same points are made two or three times.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by naming the return format (markdown tables of common genes with methylation_diff values, plus an inline CSV side-channel and assay-reference legend). All 8 parameters are documented and the cross-assay join semantics are explained, so nothing an agent needs to call it correctly is missing.

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 description coverage is 100%, so the baseline is 3, but the description adds real semantic guidance: location filters must be passed as parameters rather than post-filtered because they constrain the Cypher universe, and it reframes in_promoter as the way to ask 'commonly hypermethylated IN THE PROMOTER across these assays'. It does not explain the interaction between the two thresholds or the dist-to-feature units 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+resource ('Find common differentially methylated genes across multiple assays') and deliberately carves out scope against both the sibling single-assay tool and the generic `query` tool. An agent can route to it correctly from the description alone.

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?

Opens with an explicit 'USE THIS TOOL (not the `query` tool) for ...' directive naming several trigger phrasings (cross-assay intersections, shared hyper/hypo regions, promoter-filtered variants) and explains what is lost by falling back to `query`. This is the when-to-use/when-not pattern at its strongest.

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