Skip to main content
Glama

STRING Database MCP Server

STRING: Perform network clustering

string_network_clustering

Performs network clustering on a STRING interaction network and returns a network image URL, an interactive STRING network URL, and details about each detected cluster.

Provide a table with each detected cluster’s color, STRING-derived functional description, and any returned features that distinguish it from the others.

Use the same parameters as in the network creation step to ensure consistency. If the network already contains disconnected subgraphs, the resulting number of clusters may differ from the requested value.

Inter-cluster edges are faded by default. Use inter_cluster_edge_visibility to select a different display style.

Notes:

  • For small queries (≤5 proteins), the required_score parameter is automatically lowered to 0.

  • If only a single cluster is produced, try increasing required_score, adjusting the clustering parameter, or switching to a physical network for a sparser interaction map.

Input Schema

NameRequiredDescriptionDefault
speciesNoNCBI/STRING taxonomy ID (e.g. 9606 for human, or STRG0AXXXXX for uploaded genomes).
proteinsYesOne or more protein identifiers (optionally with values). Separate entries with newline (%0d). Numeric values (e.g. expression data) can be provided after identifiers.
network_typeNoOmit for the default functional network. Its typed view can include physical and directed regulatory attributes when STRING returns them; inspect `physical` and `regulatory.directions` before claiming those edge types. Set physical for binding, complex, or co-complex questions. Set regulatory for directed regulatory relationships between proteins.
extend_networkNoAdd specified number of additional nodes to the network based on their interaction scores. Default: 0, or 10 for single-protein queries.
network_flavorNoDefaults are typed for functional networks, evidence for physical networks, and confidence for regulatory networks. Typed returns functional pairs with any physical and directed regulatory attributes that STRING reports; it does not make every pair physical or regulatory. Typed is available only for functional networks. Set evidence or confidence only when the user requests that edge display style.
required_scoreNoMinimum interaction confidence score. Omit for STRING default filtering. Set only when a threshold is requested or a broader/narrower threshold is needed.
center_node_labelsNoCenter protein labels on nodes. Set only if the user asks to center labels.
show_cluster_namesNoShow cluster names on the image.
cluster_aware_layoutNoLay out the network by its clusters, e.g. for a dense network.
clustering_algorithmNoLeiden identifies natural communities based on network connectivity and is the default. MCL identifies densely connected subnetworks based on connectivity flow. kmeans partitions proteins into a fixed number of clusters.
clustering_parameterNoControls clustering granularity. For Leiden: resolution parameter 0.1-10.0, default 1.0; higher values produce more, smaller clusters. For MCL: inflation parameter 1.0-10.0, default 3.0. For kmeans: number of clusters, integer >=2, default 3.
hide_disconnected_nodesNoHide unconnected nodes. Set only if the user asks to hide disconnected or unconnected proteins.
inter_cluster_edge_visibilityNoHow to display edges between clusters: faded, dotted, solid, or noshow. Defaults to faded.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / cluster_aware_layout
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        0,
      +        1
      +      ],
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Lay out the network by its clusters, e.g. for a dense network.",
      +  "examples": [
      +    0,
      +    1
      +  ]
      +}
    • addedInput schema / properties / show_cluster_names
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        0,
      +        1
      +      ],
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Show cluster names on the image.",
      +  "examples": [
      +    0,
      +    1
      +  ]
      +}
  2. Changed23 schema fields changed
    • changedInput schema / properties / center_node_labels / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "enum": [
      -          0,
      -          1
      -        ],
      -        "type": "integer"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "Center protein labels on nodes. Set only if the user asks to center labels.",
      -    "examples": [
      -      0,
      -      1
      -    ]
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      0,
      +      1
      +    ],
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / center_node_labels / description
      Added value: +"Center protein labels on nodes. Set only if the user asks to center labels."
    • addedInput schema / properties / center_node_labels / examples
      Added value: +[
      +  0,
      +  1
      +]
    • changedInput schema / properties / clustering_algorithm / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "enum": [
      -          "leiden",
      -          "MCL",
      -          "kmeans"
      -        ],
      -        "type": "string"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "Leiden identifies natural communities based on network connectivity and is the default. MCL identifies densely connected subnetworks based on connectivity flow. kmeans partitions proteins into a fixed number of clusters."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "leiden",
      +      "MCL",
      +      "kmeans"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / clustering_algorithm / description
      Added value: +"Leiden identifies natural communities based on network connectivity and is the default. MCL identifies densely connected subnetworks based on connectivity flow. kmeans partitions proteins into a fixed number of clusters."
    • changedInput schema / properties / clustering_parameter / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "minimum": 0.1,
      -        "type": "number"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "Controls clustering granularity. For Leiden: resolution parameter 0.1-10.0, default 1.0; higher values produce more, smaller clusters. For MCL: inflation parameter 1.0-10.0, default 3.0. For kmeans: number of clusters, integer >=2, default 3."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "minimum": 0.1,
      +    "type": "number"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / clustering_parameter / description
      Added value: +"Controls clustering granularity. For Leiden: resolution parameter 0.1-10.0, default 1.0; higher values produce more, smaller clusters. For MCL: inflation parameter 1.0-10.0, default 3.0. For kmeans: number of clusters, integer >=2, default 3."
    • changedInput schema / properties / extend_network / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "Add specified number of additional nodes to the network based on their interaction scores. Default: 0, or 10 for single-protein queries."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / extend_network / description
      Added value: +"Add specified number of additional nodes to the network based on their interaction scores. Default: 0, or 10 for single-protein queries."
    • changedInput schema / properties / hide_disconnected_nodes / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "enum": [
      -          0,
      -          1
      -        ],
      -        "type": "integer"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "Hide unconnected nodes. Set only if the user asks to hide disconnected or unconnected proteins.",
      -    "examples": [
      -      0,
      -      1
      -    ]
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      0,
      +      1
      +    ],
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / hide_disconnected_nodes / description
      Added value: +"Hide unconnected nodes. Set only if the user asks to hide disconnected or unconnected proteins."
    • addedInput schema / properties / hide_disconnected_nodes / examples
      Added value: +[
      +  0,
      +  1
      +]
    • changedInput schema / properties / inter_cluster_edge_visibility / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "enum": [
      -          "faded",
      -          "dotted",
      -          "solid",
      -          "noshow"
      -        ],
      -        "type": "string"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "How to display edges between clusters: faded, dotted, solid, or noshow. Defaults to faded."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "faded",
      +      "dotted",
      +      "solid",
      +      "noshow"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / inter_cluster_edge_visibility / description
      Added value: +"How to display edges between clusters: faded, dotted, solid, or noshow. Defaults to faded."
    • changedInput schema / properties / network_flavor / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "enum": [
      -          "evidence",
      -          "confidence",
      -          "typed"
      -        ],
      -        "type": "string"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "Defaults are typed for functional networks, evidence for physical networks, and confidence for regulatory networks. Typed returns functional pairs with any physical and directed regulatory attributes that STRING reports; it does not make every pair physical or regulatory. Typed is available only for functional networks. Set evidence or confidence only when the user requests that edge display style."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "evidence",
      +      "confidence",
      +      "typed"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / network_flavor / description
      Added value: +"Defaults are typed for functional networks, evidence for physical networks, and confidence for regulatory networks. Typed returns functional pairs with any physical and directed regulatory attributes that STRING reports; it does not make every pair physical or regulatory. Typed is available only for functional networks. Set evidence or confidence only when the user requests that edge display style."
    • changedInput schema / properties / network_type / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "enum": [
      -          "functional",
      -          "physical",
      -          "regulatory"
      -        ],
      -        "type": "string"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "Omit for the default functional network. Its typed view can include physical and directed regulatory attributes when STRING returns them; inspect `physical` and `regulatory.directions` before claiming those edge types. Set physical for binding, complex, or co-complex questions. Set regulatory for directed regulatory relationships between proteins."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "functional",
      +      "physical",
      +      "regulatory"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / network_type / description
      Added value: +"Omit for the default functional network. Its typed view can include physical and directed regulatory attributes when STRING returns them; inspect `physical` and `regulatory.directions` before claiming those edge types. Set physical for binding, complex, or co-complex questions. Set regulatory for directed regulatory relationships between proteins."
    • changedInput schema / properties / required_score / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "maximum": 1000,
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "Minimum interaction confidence score. Omit for STRING default filtering. Set only when a threshold is requested or a broader/narrower threshold is needed."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maximum": 1000,
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / required_score / description
      Added value: +"Minimum interaction confidence score. Omit for STRING default filtering. Set only when a threshold is requested or a broader/narrower threshold is needed."
    • removedInput schema / properties / species / anyOf
      Removed value: -[
      -  {
      -    "description": "NCBI/STRING taxonomy ID (e.g. 9606 for human, or STRG0AXXXXX for uploaded genomes).",
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / species / description
      Added value: +"NCBI/STRING taxonomy ID (e.g. 9606 for human, or STRG0AXXXXX for uploaded genomes)."
    • addedInput schema / properties / species / type
      Added value: +"string"
  3. Changed12 schema fields changed
    • changedInput schema / properties / center_node_labels / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "enum": [
      -          0,
      -          1
      -        ],
      -        "type": "integer"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "Optional. Center protein labels on nodes when set to 1. Set only if the user asks to center labels."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "enum": [
      +          0,
      +          1
      +        ],
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "description": "Center protein labels on nodes. Set only if the user asks to center labels.",
      +    "examples": [
      +      0,
      +      1
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / clustering_algorithm / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "enum": [
      -          "MCL",
      -          "kmeans"
      -        ],
      -        "type": "string"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "Optional. MCL identifies densely connected subnetworks based on connectivity flow. kmeans partitions proteins into a fixed number of clusters. If omitted, the server uses MCL."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "enum": [
      +          "leiden",
      +          "MCL",
      +          "kmeans"
      +        ],
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "description": "Leiden identifies natural communities based on network connectivity and is the default. MCL identifies densely connected subnetworks based on connectivity flow. kmeans partitions proteins into a fixed number of clusters."
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / clustering_parameter / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "minimum": 1,
      -        "type": "number"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "Optional. Controls clustering granularity. For MCL: inflation parameter 1.0-10.0, default 3.0; higher values produce more, smaller clusters. For kmeans: number of clusters, integer >=2, default 3."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "minimum": 0.1,
      +        "type": "number"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "description": "Controls clustering granularity. For Leiden: resolution parameter 0.1-10.0, default 1.0; higher values produce more, smaller clusters. For MCL: inflation parameter 1.0-10.0, default 3.0. For kmeans: number of clusters, integer >=2, default 3."
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / extend_network / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "Optional. Add specified number of additional nodes to the network based on their interaction scores. Default: 0, or 10 for single-protein queries."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "description": "Add specified number of additional nodes to the network based on their interaction scores. Default: 0, or 10 for single-protein queries."
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / hide_disconnected_nodes / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "enum": [
      -          0,
      -          1
      -        ],
      -        "type": "integer"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "Optional. Hide unconnected nodes when set to 1. Set only if the user asks to hide disconnected or unconnected proteins."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "enum": [
      +          0,
      +          1
      +        ],
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "description": "Hide unconnected nodes. Set only if the user asks to hide disconnected or unconnected proteins.",
      +    "examples": [
      +      0,
      +      1
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / inter_cluster_edge_visibility
      Added value: +{
      +  "anyOf": [
      +    {
      +      "anyOf": [
      +        {
      +          "enum": [
      +            "faded",
      +            "dotted",
      +            "solid",
      +            "noshow"
      +          ],
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "How to display edges between clusters: faded, dotted, solid, or noshow. Defaults to faded."
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • changedInput schema / properties / network_flavor / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "enum": [
      -          "evidence",
      -          "confidence"
      -        ],
      -        "type": "string"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "Optional. Edge display style. Omit for STRING default evidence styling. Set only when the user asks for evidence or confidence edge display."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "enum": [
      +          "evidence",
      +          "confidence",
      +          "typed"
      +        ],
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "description": "Defaults are typed for functional networks, evidence for physical networks, and confidence for regulatory networks. Typed returns functional pairs with any physical and directed regulatory attributes that STRING reports; it does not make every pair physical or regulatory. Typed is available only for functional networks. Set evidence or confidence only when the user requests that edge display style."
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / network_type / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "enum": [
      -          "functional",
      -          "physical"
      -        ],
      -        "type": "string"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "Optional. Omit for STRING default functional associations. Set physical only for binding, complex, or co-complex questions."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "enum": [
      +          "functional",
      +          "physical",
      +          "regulatory"
      +        ],
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "description": "Omit for the default functional network. Its typed view can include physical and directed regulatory attributes when STRING returns them; inspect `physical` and `regulatory.directions` before claiming those edge types. Set physical for binding, complex, or co-complex questions. Set regulatory for directed regulatory relationships between proteins."
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / proteins / description
      Previous value: -"Required. One or more protein identifiers (optionally with values). Example:\nPTEN 0.234\nSMO -3.445\nSeparate entries with newline (%0d). Numeric values (e.g. expression data) can be provided after identifiers."New value: +"One or more protein identifiers (optionally with values). Separate entries with newline (%0d). Numeric values (e.g. expression data) can be provided after identifiers."
    • addedInput schema / properties / proteins / examples
      Added value: +[
      +  "PTEN 0.234\nSMO -3.445"
      +]
    • changedInput schema / properties / required_score / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "maximum": 1000,
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "description": "Optional. Minimum interaction confidence score. Omit for STRING default filtering. Set only when a threshold is requested or a broader/narrower threshold is needed."
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "maximum": 1000,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "description": "Minimum interaction confidence score. Omit for STRING default filtering. Set only when a threshold is requested or a broader/narrower threshold is needed."
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / species / anyOf
      Previous value: -[
      -  {
      -    "description": "Required. NCBI/STRING taxonomy ID (e.g. 9606 for human, or STRG0AXXXXX for uploaded genomes).",
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "description": "NCBI/STRING taxonomy ID (e.g. 9606 for human, or STRG0AXXXXX for uploaded genomes).",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  4. First observed

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does a solid job: it discloses the return payload, the default faded inter-cluster edge style and the parameter that changes it, the automatic lowering of required_score for queries of ≤5 proteins, and the non-obvious interaction between disconnected subgraphs and cluster count. It doesn't say anything about cost, side effects, or whether clustering re-runs an upstream network build, which keeps it short of 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?

Front-loaded with purpose and outputs, then result-presentation guidance, then caveats and tuning notes. The 'Provide a table with each detected cluster’s color…' sentence is presentation advice rather than tool behavior and is the weakest line, but overall the bullet structure keeps it readable and mostly waste-free.

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 13-parameter, no-annotation tool, the description covers what an agent needs to call it correctly: the required inputs are schema-documented, the outputs are summarized (and an output schema exists anyway), and the edge cases and recovery strategies are spelled out. Nothing material is left for the agent to guess.

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 every one of the 13 parameters is already documented in the schema, including the per-algorithm meaning of clustering_parameter. The description adds only two marginal facts beyond that (reuse network-creation values; required_score auto-set to 0 for small queries) and no format or syntax detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Performs network clustering on a STRING interaction network') and names the three outputs (image URL, interactive network URL, per-cluster details). It implicitly contrasts itself with the network-creation step ('Use the same parameters as in the network creation step') but never names the sibling tool (e.g. string_visual_network), so the differentiation is inferential rather than explicit.

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?

Gives real operating guidance: reuse the network-creation parameters, expect the cluster count to differ when disconnected subgraphs exist, and tune required_score / clustering_parameter / physical network when only one cluster appears. What's missing is an explicit 'use this instead of X when Y' routing statement against the sibling network tools.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.