Skip to main content
Glama
sbl-sdsc

MCP GeneLab Server

by sbl-sdsc

create_venn_diagram

Compare differential expression, methylation, or abundance data across 2–3 assays and create Venn diagrams showing shared and directional overlaps.

Instructions

Create Venn diagrams comparing differential data between 2 or 3 assays.

Supports multiple data types:

  • 'expression': Compares differentially expressed genes (upregulated/downregulated by log2fc)

  • 'methylation': Compares differentially methylated genes (hypermethylated/hypomethylated by methylation_diff)

  • 'abundance': Compares differentially abundant organisms (increased/decreased by log2fc; works for both DESeq2 and ANCOM-BC)

  • 'expression_methylation': Cross-comparison showing directional overlaps between differentially expressed genes from one assay and differentially methylated genes from another assay (2-way only)

Creates side-by-side Venn diagrams showing:

  • Left: Positive direction (upregulated / hypermethylated / increased abundance)

  • Right: Negative direction (downregulated / hypomethylated / decreased abundance)

For 'expression_methylation' mode, this tool computes FOUR directional overlaps so the user can see which kind of expression–methylation coupling is happening. By default (direction_pair='all') it renders all four as a 2x2 grid:

  • Hypermethylated + Downregulated (classical epigenetic silencing — promoter methylation reducing expression)

  • Hypomethylated + Upregulated (loss of methylation enabling expression)

  • Hypermethylated + Upregulated (less canonical; e.g. gene-body methylation activating expression)

  • Hypomethylated + Downregulated (less canonical; non-classical) If the user names a specific pairing (e.g. "create a Venn of hypermethylated and downregulated genes"), pass direction_pair='hyper_down' to render just that one. The summary always reports the size of all four overlaps, regardless of which subset is rendered.

Methylation region location filters (for data_type='methylation' and the methylation side of 'expression_methylation'):

  • in_promoter, in_exon, in_intron: each accepts True (include only regions where this flag is true), False (exclude regions where this flag is true), or None (no filter). Multiple filters combine with AND. For example, in_promoter=True alone restricts to promoter-overlapping regions; in_promoter=True with in_intron=False restricts to promoter regions that are NOT intronic.

  • dist_to_feature_max: when set, include only regions whose distance to the nearest gene feature is <= this value (in bp). Useful for narrowing to regions tightly associated with gene bodies. dist_to_feature on the MethylationRegion node is the bp distance from the region to the nearest annotated feature. These filters apply during the Cypher query — they reduce the set of methylation regions BEFORE the overlap computation, so each gene set is the genes that have at least one methylation region passing all the filters and the magnitude/significance criteria.

Significance filtering:

  • 'expression' and 'expression_methylation' (expression side): adj_p_value <= adj_p_threshold (default 0.05).

  • 'methylation' and 'expression_methylation' (methylation side): q_value <= q_value_threshold (default 0.05).

  • 'abundance' is method-aware: DESeq2 rows are filtered by adj_p_threshold, ANCOM-BC rows by q_value_threshold.

Magnitude filtering for 'abundance':

  • log2fc_threshold applies to every row (log2fc is populated for both methods).

  • lnfc_threshold (optional) adds an ANCOM-BC-specific |lnfc| filter; DESeq2 rows (lnfc IS NULL) pass through.

Returns a link to the plot and summary statistics.

Input Schema

NameRequiredDescriptionDefault
in_exonNoMethylationRegion location filter (data_type='methylation' or 'expression_methylation' only). When True, only include methylation regions overlapping an exon. When False, exclude exon-overlapping regions. None (default) imposes no exon filter. Maps directly to the in_exon property on MethylationRegion nodes.
data_typeNoType of data to compare. Options: 'expression' (differentially expressed genes), 'methylation' (differentially methylated genes), 'abundance' (differentially abundant organisms), 'expression_methylation' (overlap between DE genes and DM genes across assays)expression
in_intronNoMethylationRegion location filter (data_type='methylation' or 'expression_methylation' only). When True, only include methylation regions overlapping an intron. When False, exclude intron-overlapping regions. None (default) imposes no intron filter. Maps directly to the in_intron property on MethylationRegion nodes.
assay_id_1YesFirst assay identifier
assay_id_2YesSecond assay identifier
assay_id_3NoThird assay identifier (optional, for 3-way Venn diagram)
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 (data_type='methylation' or 'expression_methylation' only). When True, only include methylation regions overlapping a gene promoter. When False, exclude promoter-overlapping regions. None (default) imposes no promoter filter. Maps directly to the in_promoter property on MethylationRegion nodes.
figsize_widthNoFigure width in inches
direction_pairNoFor data_type='expression_methylation' only: which directional overlap(s) to render. 'all' (default) renders a 2x2 grid of all four biologically meaningful combinations: hypermethylated+downregulated (classical epigenetic silencing), hypomethylated+upregulated (loss of methylation enabling expression), hypermethylated+upregulated, and hypomethylated+downregulated. Specify one of 'hyper_down', 'hypo_up', 'hyper_up', 'hypo_down' to render only that single overlap. Ignored for non-expression_methylation data types.all
figsize_heightNoFigure height in inches
lnfc_thresholdNoOptional minimum |lnfc| magnitude for the 'abundance' data type. Only applied to rows with lnfc populated (ANCOM-BC). DESeq2 rows are not filtered by this parameter. Ignored for non-abundance data types. Leave unset (None) to skip lnfc filtering.
adj_p_thresholdNoAdjusted p-value threshold (default: 0.05). Applied to expression assays and to DESeq2 abundance rows.
log2fc_thresholdNoLog2 fold change threshold for filtering genes (used for expression and abundance data types)
q_value_thresholdNoq-value threshold (default: 0.05). Applied to methylation assays and to ANCOM-BC abundance rows.
dist_to_feature_maxNoMethylationRegion distance filter (data_type='methylation' or 'expression_methylation' only). When set, only include methylation regions whose dist_to_feature (distance in bp to the nearest gene feature) is <= this value. Useful for restricting to regions close to gene bodies. None (default) imposes no distance filter.
methylation_diff_thresholdNoMethylation difference threshold for filtering regions (used for methylation data type, default 0.0 means any change)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed15 schema fields changedv1.0.0
    • addedInput schema / properties / adj_p_threshold
      Added value: +{
      +  "default": 0.05,
      +  "description": "Adjusted p-value threshold (default: 0.05). Applied to expression assays and to DESeq2 abundance rows.",
      +  "title": "Adj P Threshold",
      +  "type": "number"
      +}
    • changedInput schema / properties / assay_id_1 / description
      Previous value: -"First assay identifier (e.g., 'OSD-511-53054e738e335bc645cb620c95916e5f')"New value: +"First assay identifier"
    • changedInput schema / properties / assay_id_2 / description
      Previous value: -"Second assay identifier (e.g., 'OSD-511-8974299195d78d74d7f3f085f2b48981')"New value: +"Second assay identifier"
    • addedInput schema / properties / data_type
      Added value: +{
      +  "default": "expression",
      +  "description": "Type of data to compare. Options: 'expression' (differentially expressed genes), 'methylation' (differentially methylated genes), 'abundance' (differentially abundant organisms), 'expression_methylation' (overlap between DE genes and DM genes across assays)",
      +  "title": "Data Type",
      +  "type": "string"
      +}
    • addedInput schema / properties / direction_pair
      Added value: +{
      +  "default": "all",
      +  "description": "For data_type='expression_methylation' only: which directional overlap(s) to render. 'all' (default) renders a 2x2 grid of all four biologically meaningful combinations: hypermethylated+downregulated (classical epigenetic silencing), hypomethylated+upregulated (loss of methylation enabling expression), hypermethylated+upregulated, and hypomethylated+downregulated. Specify one of 'hyper_down', 'hypo_up', 'hyper_up', 'hypo_down' to render only that single overlap. Ignored for non-expression_methylation data types.",
      +  "title": "Direction Pair",
      +  "type": "string"
      +}
    • addedInput schema / properties / dist_to_feature_max
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "MethylationRegion distance filter (data_type='methylation' or 'expression_methylation' only). When set, only include methylation regions whose dist_to_feature (distance in bp to the nearest gene feature) is <= this value. Useful for restricting to regions close to gene bodies. None (default) imposes no distance filter.",
      +  "title": "Dist To Feature Max"
      +}
    • addedInput schema / properties / in_exon
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "MethylationRegion location filter (data_type='methylation' or 'expression_methylation' only). When True, only include methylation regions overlapping an exon. When False, exclude exon-overlapping regions. None (default) imposes no exon filter. Maps directly to the in_exon property on MethylationRegion nodes.",
      +  "title": "In Exon"
      +}
    • addedInput schema / properties / in_intron
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "MethylationRegion location filter (data_type='methylation' or 'expression_methylation' only). When True, only include methylation regions overlapping an intron. When False, exclude intron-overlapping regions. None (default) imposes no intron filter. Maps directly to the in_intron property on MethylationRegion nodes.",
      +  "title": "In Intron"
      +}
    • addedInput schema / properties / in_promoter
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "MethylationRegion location filter (data_type='methylation' or 'expression_methylation' only). When True, only include methylation regions overlapping a gene promoter. When False, exclude promoter-overlapping regions. None (default) imposes no promoter filter. Maps directly to the in_promoter property on MethylationRegion nodes.",
      +  "title": "In Promoter"
      +}
    • addedInput schema / properties / lnfc_threshold
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Optional minimum |lnfc| magnitude for the 'abundance' data type. Only applied to rows with lnfc populated (ANCOM-BC). DESeq2 rows are not filtered by this parameter. Ignored for non-abundance data types. Leave unset (None) to skip lnfc filtering.",
      +  "title": "Lnfc Threshold"
      +}
    • changedInput schema / properties / log2fc_threshold / description
      Previous value: -"Log2 fold change threshold for filtering genes"New value: +"Log2 fold change threshold for filtering genes (used for expression and abundance data types)"
    • addedInput schema / properties / methylation_diff_threshold
      Added value: +{
      +  "default": 0,
      +  "description": "Methylation difference threshold for filtering regions (used for methylation data type, default 0.0 means any change)",
      +  "title": "Methylation Diff Threshold",
      +  "type": "number"
      +}
    • addedInput schema / properties / q_value_threshold
      Added value: +{
      +  "default": 0.05,
      +  "description": "q-value threshold (default: 0.05). Applied to methylation assays and to ANCOM-BC abundance rows.",
      +  "title": "Q Value Threshold",
      +  "type": "number"
      +}
    • addedInput schema / properties / session_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Session 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.",
      +  "title": "Session Id"
      +}
    • changedOutput schema / (root)
      Previous value: -{
      -  "$defs": {
      -    "Annotations": {
      -      "additionalProperties": true,
      -      "properties": {
      -        "audience": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "enum": [
      -                  "user",
      -                  "assistant"
      -                ],
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Audience"
      -        },
      -        "priority": {
      -          "anyOf": [
      -            {
      -              "maximum": 1,
      -              "minimum": 0,
      -              "type": "number"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Priority"
      -        }
      -      },
      -      "title": "Annotations",
      -      "type": "object"
      -    },
      -    "AudioContent": {
      -      "additionalProperties": true,
      -      "description": "Audio content for a message.",
      -      "properties": {
      -        "_meta": {
      -          "anyOf": [
      -            {
      -              "additionalProperties": true,
      -              "type": "object"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Meta"
      -        },
      -        "annotations": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/Annotations"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null
      -        },
      -        "data": {
      -          "title": "Data",
      -          "type": "string"
      -        },
      -        "mimeType": {
      -          "title": "Mimetype",
      -          "type": "string"
      -        },
      -        "type": {
      -          "const": "audio",
      -          "title": "Type",
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "type",
      -        "data",
      -        "mimeType"
      -      ],
      -      "title": "AudioContent",
      -      "type": "object"
      -    },
      -    "BlobResourceContents": {
      -      "additionalProperties": true,
      -      "description": "Binary contents of a resource.",
      -      "properties": {
      -        "_meta": {
      -          "anyOf": [
      -            {
      -              "additionalProperties": true,
      -              "type": "object"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Meta"
      -        },
      -        "blob": {
      -          "title": "Blob",
      -          "type": "string"
      -        },
      -        "mimeType": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Mimetype"
      -        },
      -        "uri": {
      -          "format": "uri",
      -          "minLength": 1,
      -          "title": "Uri",
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "uri",
      -        "blob"
      -      ],
      -      "title": "BlobResourceContents",
      -      "type": "object"
      -    },
      -    "EmbeddedResource": {
      -      "additionalProperties": true,
      -      "description": "The contents of a resource, embedded into a prompt or tool call result.\n\nIt is up to the client how best to render embedded resources for the benefit\nof the LLM and/or the user.",
      -      "properties": {
      -        "_meta": {
      -          "anyOf": [
      -            {
      -              "additionalProperties": true,
      -              "type": "object"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Meta"
      -        },
      -        "annotations": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/Annotations"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null
      -        },
      -        "resource": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/TextResourceContents"
      -            },
      -            {
      -              "$ref": "#/$defs/BlobResourceContents"
      -            }
      -          ],
      -          "title": "Resource"
      -        },
      -        "type": {
      -          "const": "resource",
      -          "title": "Type",
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "type",
      -        "resource"
      -      ],
      -      "title": "EmbeddedResource",
      -      "type": "object"
      -    },
      -    "Icon": {
      -      "additionalProperties": true,
      -      "description": "An icon for display in user interfaces.",
      -      "properties": {
      -        "mimeType": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Mimetype"
      -        },
      -        "sizes": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Sizes"
      -        },
      -        "src": {
      -          "title": "Src",
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "src"
      -      ],
      -      "title": "Icon",
      -      "type": "object"
      -    },
      -    "ImageContent": {
      -      "additionalProperties": true,
      -      "description": "Image content for a message.",
      -      "properties": {
      -        "_meta": {
      -          "anyOf": [
      -            {
      -              "additionalProperties": true,
      -              "type": "object"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Meta"
      -        },
      -        "annotations": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/Annotations"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null
      -        },
      -        "data": {
      -          "title": "Data",
      -          "type": "string"
      -        },
      -        "mimeType": {
      -          "title": "Mimetype",
      -          "type": "string"
      -        },
      -        "type": {
      -          "const": "image",
      -          "title": "Type",
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "type",
      -        "data",
      -        "mimeType"
      -      ],
      -      "title": "ImageContent",
      -      "type": "object"
      -    },
      -    "ResourceLink": {
      -      "additionalProperties": true,
      -      "description": "A resource that the server is capable of reading, included in a prompt or tool call result.\n\nNote: resource links returned by tools are not guaranteed to appear in the results of `resources/list` requests.",
      -      "properties": {
      -        "_meta": {
      -          "anyOf": [
      -            {
      -              "additionalProperties": true,
      -              "type": "object"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Meta"
      -        },
      -        "annotations": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/Annotations"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null
      -        },
      -        "description": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Description"
      -        },
      -        "icons": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "$ref": "#/$defs/Icon"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Icons"
      -        },
      -        "mimeType": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Mimetype"
      -        },
      -        "name": {
      -          "title": "Name",
      -          "type": "string"
      -        },
      -        "size": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Size"
      -        },
      -        "title": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Title"
      -        },
      -        "type": {
      -          "const": "resource_link",
      -          "title": "Type",
      -          "type": "string"
      -        },
      -        "uri": {
      -          "format": "uri",
      -          "minLength": 1,
      -          "title": "Uri",
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "name",
      -        "uri",
      -        "type"
      -      ],
      -      "title": "ResourceLink",
      -      "type": "object"
      -    },
      -    "TextContent": {
      -      "additionalProperties": true,
      -      "description": "Text content for a message.",
      -      "properties": {
      -        "_meta": {
      -          "anyOf": [
      -            {
      -              "additionalProperties": true,
      -              "type": "object"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Meta"
      -        },
      -        "annotations": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/Annotations"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null
      -        },
      -        "text": {
      -          "title": "Text",
      -          "type": "string"
      -        },
      -        "type": {
      -          "const": "text",
      -          "title": "Type",
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "type",
      -        "text"
      -      ],
      -      "title": "TextContent",
      -      "type": "object"
      -    },
      -    "TextResourceContents": {
      -      "additionalProperties": true,
      -      "description": "Text contents of a resource.",
      -      "properties": {
      -        "_meta": {
      -          "anyOf": [
      -            {
      -              "additionalProperties": true,
      -              "type": "object"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Meta"
      -        },
      -        "mimeType": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Mimetype"
      -        },
      -        "text": {
      -          "title": "Text",
      -          "type": "string"
      -        },
      -        "uri": {
      -          "format": "uri",
      -          "minLength": 1,
      -          "title": "Uri",
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "uri",
      -        "text"
      -      ],
      -      "title": "TextResourceContents",
      -      "type": "object"
      -    }
      -  },
      -  "properties": {
      -    "result": {
      -      "items": {
      -        "anyOf": [
      -          {
      -            "$ref": "#/$defs/TextContent"
      -          },
      -          {
      -            "$ref": "#/$defs/ImageContent"
      -          },
      -          {
      -            "$ref": "#/$defs/AudioContent"
      -          },
      -          {
      -            "$ref": "#/$defs/ResourceLink"
      -          },
      -          {
      -            "$ref": "#/$defs/EmbeddedResource"
      -          }
      -        ]
      -      },
      -      "title": "Result",
      -      "type": "array"
      -    }
      -  },
      -  "required": [
      -    "result"
      -  ],
      -  "title": "create_venn_diagramOutput",
      -  "type": "object"
      -}New value: +null
  2. First observedv0.4.0

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already state it is a non-read-only, non-idempotent, closed-world operation, so the bar is lower. The description still adds real behavioral detail: filters execute in the Cypher query BEFORE overlap computation, and the summary always reports all four overlaps regardless of which subset is rendered. It stops short of describing the returned link's lifetime or how plots are fetched post-creation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

The purpose and mode table are well front-loaded, but the block restating in_promoter/in_exon/in_intron/dist_to_feature_max semantics duplicates schema descriptions verbatim and inflates a 17-param tool's prose substantially. Every sentence earns its place less often than it should because of that redundancy.

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?

For a 17-parameter, four-mode tool with no output schema, the description covers the mode selection, filter interaction, significance/magnitude semantics per data type, and the return ('a link to the plot and summary statistics'). Nothing an agent needs in order 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 coverage is 100%, so the baseline would be 3, but the description adds semantics the schema omits: multiple location filters combine with AND, with a worked example (in_promoter=True with in_intron=False), and it clarifies that abundance significance filtering is method-aware (DESeq2 vs ANCOM-BC) and that lnfc_threshold only touches ANCOM-BC rows. Some of the threshold text merely echoes the schema, but the AND-combination and ordering semantics are genuine additions.

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?

The opening sentence states a specific verb and resource ('Create Venn diagrams comparing differential data between 2 or 3 assays') and the data_type enumeration distinguishes it from sibling plotting/finding tools. An agent can tell what it produces and over what inputs without opening the schema.

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?

It maps each data_type to a concrete scenario (expression/methylation/abundance/expression_methylation) and gives a conditional rule for direction_pair ('If the user names a specific pairing... pass direction_pair=hyper_down'). It never names or excludes a sibling tool (e.g. find_common_differentially_expressed_genes), so usage context is clear but alternatives are left implicit.

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