Official STRING Database MCP Server
Access STRING database functionality for protein interaction, enrichment, and annotation analysis through MCP tools.
Resolve protein identifiers to STRING metadata
Retrieve interaction networks within a query set or all partners
Generate network images, interactive links, and clustering results
Find homologs across species
Get interaction evidence links
Run functional enrichment and PPI enrichment
Retrieve functional annotations and proteins for a term
Search proteins by amino acid sequence
Query species/clades and create downloadable result files
Get help/FAQ on STRING features and limitations
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Official STRING Database MCP Serverfind interactions for human TP53"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Official STRING Database MCP Server
Exposes STRING database functionality as a Model Context Protocol (MCP) server.
This implementation allows AI agents and other MCP-compatible clients to access STRING data through a structured and self-describing interface.
It is built on top of the STRING API but adapted specifically for model-based use, with emphasis on conciseness and context efficiency. The server controls the amount and type of data so that responses stay within the reasoning limits of large language models. It also adapts the structure and adds metadata to support more consistent parsing and interpretation by agentic systems.
The server is also available as a hosted remote MCP endpoint at https://mcp.string-db.org.
For a live demonstration of MCP capabilities, see STRING Chat.
For reproducible workflows and large-scale integration, use the STRING API.
For agentic workflows, use the optional agent skill at skills/string-database/SKILL.md.
Features
Resolve protein identifiers to STRING metadata
Retrieve interaction networks
Cluster and visualize interaction networks
Perform homology lookups across species
Access evidence links for protein–protein interactions
Run functional enrichment analysis (including enrichment plots)
Get curated functional annotations for proteins
Query proteins by function or disease (GO, KEGG, Reactome, DISEASES etc.)
Related MCP server: STRING-MCP
Requirements
Python ≥ 3.11 (with Python 3.10, optional parameter descriptions are misplaced in the tool schemas)
Dependencies (see
requirements.txt):fastmcp==2.14.7mcp==1.29.0httpx>=0.28,<0.29pydantic>=2.11,<3.0
Note: If the server crashes on startup, it is very likely due to an incompatible FastMCP version.
Configuration
The server reads settings from config/server.config (JSON). Example:
{
"base_url": "https://string-db.org",
"server_port": 57416,
"verbosity": "low"
}Installation
git clone https://github.com/meringlab/string-mcp.git
cd string-mcp
pip install -r requirements.txtRunning
python server.pyTo serve over standard input/output instead of HTTP, for example when a local MCP client starts the server itself:
python server.py --stdioThe stdio mode also reads config/server.config for the STRING API endpoint.
Testing
curl -v -H "Accept: text/event-stream" http://localhost:[port]/mcpYou should see a 200 OK response with content-type: text/event-stream.
Note: HTTP requests sent with default headers will trigger anyio.ClosedResourceError and 406 Not Acceptable. This is expected behavior for the MCP streaming protocol and does not indicate a problem.
Docker
Ensure you have a
config/server.configfile (copy fromconfig/server.config.exampleif needed):cp config/server.config.example config/server.configBuild the image:
docker build -t string-mcp .Run the container:
Linux/macOS:
docker run -p 57416:57416 -v $(pwd)/config:/app/config:ro string-mcpWindows PowerShell:
docker run -p 57416:57416 -v ${PWD}/config:/app/config:ro string-mcpWindows Command Prompt:
docker run -p 57416:57416 -v %cd%/config:/app/config:ro string-mcpTo run in detached mode:
# Linux/macOS docker run -d -p 57416:57416 -v $(pwd)/config:/app/config:ro --name string-mcp-server string-mcp # Windows PowerShell docker run -d -p 57416:57416 -v ${PWD}/config:/app/config:ro --name string-mcp-server string-mcpThe
-vflag mounts your local config directory so you can customize settings without rebuilding the image.Note: If you don't need to modify the config, you can omit the volume mount and the container will use the default config from the image.
Stop the container (if running in detached mode):
docker stop string-mcp-server docker rm string-mcp-server
Note: The Docker container will use the configuration from config/server.config. If this file doesn't exist, the container will copy from server.config.example on first run.
Frozen STRING releases are available under versioned paths: /12.0/ (STRING v12.0) and /12.5/ (STRING v12.5).
License / Citation
The STRING MCP server source code is released under the MIT License.
Associated data and outputs are released under the CC BY 4.0 License.
You are free to use, share, and modify the code with proper attribution.
If you use this code or data in your work, please also cite the latest STRING manuscript.
Available Tools
17 toolsstring_all_interaction_partnersSTRING: Get all interaction partners for proteinsAInspect
Retrieves all interaction partners for one or more proteins from STRING.
This tool returns all known interactions between your query protein(s) and any other proteins in the STRING database.
Use this when asking “What does TP53 interact with?”
It differs from
string_interactions_query_set, which only shows interactions within the input set or a limited extension of it.
You can filter for strong interactions using required_score.
Evidence scores:
nscore(neighborhood),fscore(fusion),pscore(phylogenetic profile),
ascore(coexpression),escore(experimental),dscore(database),tscore(text mining)
| Name | Required | Description | Default |
|---|---|---|---|
| species | No | NCBI taxonomy ID (e.g. 9606 for human) or STRING genome ID (e.g. STRG0AXXXXX for uploaded genomes). Only set when required. | |
| identifiers | Yes | One or more protein identifiers, separated by carriage return (%0d). | |
| network_type | No | 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. | |
| network_flavor | No | 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. | |
| required_score | No | Minimum interaction score to include. Omit unless a confidence threshold is requested or a broader/narrower threshold is needed. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose meaningful scope behavior — that results extend to any protein in STRING rather than the input set — which is genuinely useful. However, it says nothing about result-size limits, truncation, pagination, or cost of a broad query, all of which matter for a tool that can return unbounded partner lists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core statement and the sibling differentiation, then uses bullets for use cases and evidence abbreviations. Reasonably tight, though the evidence-score list is a slight digression from the tool's selection decision and could be trimmed or deferred.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, and the description covers scope, alternative tool, and threshold filtering. It stops short of noting practical limits (very large result sets, species inference for non-human identifiers), which would matter for a multi-partner retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema baseline is 3, but the description adds semantics the schema lacks: what `required_score` is for (confidence threshold filtering) and the meaning of the evidence channel abbreviations (nscore, fscore, pscore, etc.). It adds no extra guidance for `species` or `identifiers` beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieves all interaction partners for one or more proteins from STRING') and explicitly contrasts itself with the sibling `string_interactions_query_set`, which only covers interactions within the input set. An agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case ('What does TP53 interact with?') and an explicit alternative plus the condition that selects it (in-set interactions → `string_interactions_query_set`). It also names the condition for tightening results via `required_score`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
string_create_fileSTRING: Create a downloadable STRING result fileAInspect
Creates a downloadable file for STRING-derived results.
Use this tool when the user explicitly asks to download, save, export, or receive a file containing STRING data, tables, protein lists, enrichment results, networks, etc.
When a response would otherwise include a publication-style or supplementary result table, or another table clearly intended for reuse outside chat, mention that a downloadable TSV/CSV file can be generated on request. Ask whether they want the file, unless they already requested it. Do not create the file until the user asks for it.
Do not store unrelated data or full conversation transcripts.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | STRING-derived file content. For .tsv/.csv: one rectangular table, one header row, matching delimiter, no Markdown/prose/repeated headers/multiple tables. Use one row per entity, edge, cluster member, annotation, or enrichment term. Use bare numeric scores/FDR/p-values; put interpretation and caveats in chat or .md/.txt. | |
| filename | Yes | Suggested output filename with a safe extension such as .tsv, .csv, .json, .md, or .txt. Match content to the extension; prefer .tsv for reusable tabular STRING data. Use a concise name that reflects the STRING analysis result. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose meaningful behavior: create-on-demand gating, a guardrail against storing unrelated data/transcripts, and content-shape expectations. It omits though what happens on overwrite, size limits, storage location, or error conditions for a write tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then proceeds to usage rules and guardrails with no filler; every sentence is functional. It is somewhat long, with the proactive-mention paragraph reading more as agent workflow policy than tool definition, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and params are fully schema-documented. Usage and gating behavior are well covered; only secondary write-behavior details (overwrite, limits, failures) are absent, which is minor given the strengths.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the two parameters (content, filename) have rich inline descriptions covering format, delimiter, extension matching, and naming. The description adds nothing about parameters, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Creates a downloadable file for STRING-derived results') and its role is unmistakable against the analysis-oriented siblings, none of which produce files. An agent can immediately tell this is the export/serialization tool rather than an analysis tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly defines when to use it ('when the user explicitly asks to download, save, export, or receive a file'), supplies a proactive-trigger scenario for publication-style tables, and crucially states when NOT to act ('Do not create the file until the user asks for it'). This is near-complete invocation routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
string_enrichmentSTRING: Functional enrichment analysisAInspect
This tool retrieves functional enrichment for a set of proteins using STRING.
If queried with a single protein, the tool expands the query to include the protein’s 10 most likely interactors; enrichment is performed on this set, not the original single protein.
For two or more proteins, enrichment is performed on the exact input set.
When calling related tools, use the same input parameters unless otherwise specified.
Focus summaries on the top categories and most relevant terms for the results. Always report FDR for each claim.
Report FDR as a human-readable value (e.g. 2.3e-5 or 0.023).
IMPORTANT: Remember to suggest showing an enrichment graph for a specific category of user interest (e.g., GO, KEGG)
Very large responses are capped while preserving category diversity.
Use
expand_categoryto return only one category with expanded term coverage and per-term gene details.If a row has
preferredNames_omitted: true, do not infer which proteins are in that term from the returned rows. Usestring_functional_annotationwith the same proteins/species anddetail_for_termset to the exact term ID.
Output fields (per enriched term):
category: Term category (e.g., GO Process, KEGG pathway)
term: Enriched term (GO ID, domain, or pathway)
number_of_genes: Number of input genes with this term
number_of_genes_in_background: Number of background genes with this term
ncbiTaxonId: NCBI taxon ID
preferredNames: Canonical protein names, only when the full per-term list is short enough to show
proteinCount: Number of proteins matching this term
preferredNames_omitted: True when the gene list was omitted instead of showing a misleading partial list
p_value: Raw p-value
fdr: False Discovery Rate (B-H corrected p-value)
strength: Enrichment effect size, calculated as log10(observed genes / expected genes)
signal: Balanced enrichment-ranking metric combining the observed/expected ratio and -log(FDR)
description: Description of the enriched term
Response metadata:
input_gene_name_mapping: Only included when displayed gene lists contain submitted identifiers that differ from STRING preferred names.
category_summary: Total and returned term counts per category; use
expand_categoryfor categories wheretruncatedis true or where the user wants deeper category-specific detail.truncated_categories / omitted_categories: Categories with terms not shown in the current response.
| Name | Required | Description | Default |
|---|---|---|---|
| species | No | NCBI/STRING taxon (e.g. 9606 for human, or STRG0AXXXXX). Use only when required. | |
| proteins | Yes | One or more protein identifiers, separated by %0d. | |
| expand_category | No | Return only this enrichment category with expanded term coverage and a larger per-term gene-list cutoff. Use a category from metadata.category_summary. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and mostly succeeds: it discloses the non-obvious single-protein auto-expansion behavior, response capping that preserves category diversity, and the `preferredNames_omitted` trap with the correct workaround. It omits rate limits, auth requirements, and cost characteristics, so it stops short of exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The behavioral bullets are well front-loaded, but the description then enumerates every output field and response-metadata key even though an output schema already exists, which is largely duplicated content. The bulk is longer than needed for the incremental value it adds.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema already documents return values, the description supplies everything else an agent needs: input-set semantics, expansion side effects, truncation handling, term-detail routing, and the fallback tool for omitted gene lists. Nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: it explains how the protein count changes what `proteins` means conceptually, and clarifies `expand_category` should take a value from metadata.category_summary and yields expanded term coverage with a larger gene-list cutoff.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('retrieves functional enrichment for a set of proteins using STRING') and scopes the input semantics precisely. It also positions the tool against siblings by naming `expand_category` and `string_functional_annotation` as follow-ups, so an agent can distinguish it from adjacent enrichment tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use rules are given: a single protein triggers auto-expansion to 10 interactors, whereas two or more use the exact input set. It also states when to call `expand_category` (truncated or deeper detail) and when to switch to `string_functional_annotation` (preferredNames_omitted rows), plus the instruction to reuse the same parameters across related calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
string_enrichment_image_urlSTRING: Get enrichment result figure (image URL)AInspect
Retrieves a STRING enrichment figure (image URL) for a set of proteins. For the enriched terms and FDR values, use string_enrichment.
Each figure shows a single enrichment category; call again with another
categoryto show a different one.Use the same proteins and species as the network and enrichment results already shown to the user, so the figure matches them.
| Name | Required | Description | Default |
|---|---|---|---|
| x_axis | No | Value shown on the X-axis; also selects and orders the terms. If omitted, STRING uses signal. | |
| species | No | NCBI/STRING taxon (e.g. 9606 for human, or STRG0AXXXXX). | |
| category | No | Term category for enrichment. If omitted, STRING uses Process. Use Process/Function/Component for GO, KEGG for KEGG pathways, RCTM for Reactome, and PMID for publications. | |
| graph_type | No | Plot type: dotplot or barplot (horizontal bar chart). If omitted, STRING uses dotplot. | |
| identifiers | Yes | Protein identifiers, separated by %0d. | |
| color_palette | No | Color palette for FDR. If omitted, STRING uses mint_blue. | |
| group_by_similarity | No | Visually groups terms based on term similarity. Default: 0.8. Details: string_help topic 'enrichment_grouping'. | |
| number_of_terms_shown | No | Max number of terms shown on plot. Default: 10. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden; it does disclose the key non-obvious behavior that each figure shows a single enrichment category and that multiple calls are required for multiple categories, and that outputs are image URLs. It omits any note on cost/rate limits or whether the call is side-effect free, but 'Retrieves' implies a read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded single-sentence purpose followed by two tight bullets; every sentence adds routing or behavioral value and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description need not explain the returned figure details, and it covers the routing and repeat-call semantics an agent needs. Only a brief note on read-only/no side effects would make it fully self-contained for an 8-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter including defaults and the enum meanings for category, x_axis, graph_type, and color_palette. The description only reinforces the `category` parameter indirectly; baseline 3 is correct when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Retrieves) and resource (STRING enrichment figure / image URL) scoped to a set of proteins, and explicitly separates itself from the sibling `string_enrichment` which returns terms/FDR values. An agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative tool and the condition selecting it ('For the enriched terms and FDR values, use `string_enrichment`'), explains that each call yields one category so repeat calls are needed, and instructs the agent to reuse the same proteins/species as already-displayed results so the figure matches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
string_functional_annotationSTRING: Retrieve functional annotations for proteinsAInspect
This tool retrieves curated functional annotations for a set of proteins.
Each input protein is mapped to known biological terms from ontologies, pathway databases, tissues, compartments and domains — such as Gene Ontology (GO), KEGG, and UniProt Keywords.
Use this when the user asks what a protein does, where it's localized, expressed, or which pathways it participates in.
Keep the output short and focused by highlighting a few diverse and specific annotations for each protein.
This tool does not perform statistical enrichment — use the enrichment tool for that.
Output fields (per protein):
stringId: STRING protein identifier
preferredName: Gene name or alias
annotation: Functional description or keyword
category: Source category (e.g. GO, KEGG, Keyword)
term: Functional term or ID
| Name | Required | Description | Default |
|---|---|---|---|
| species | No | NCBI/STRING taxon (e.g. 9606 for human, or STRG0AXXXXX for uploaded genomes). | |
| identifiers | Yes | Separate multiple protein queries by %0d. | |
| detail_for_term | No | Exact functional term ID to return with the full list of matching input proteins. Use this when a previous result says a protein list was shortened, omitted, or replaced with 'many'. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does well: it discloses the output style ('short and focused, highlighting a few diverse and specific annotations'), implying truncated result sets rather than exhaustive output. It stops short of quantifying the cap or describing the 'many' substitution behavior in the main body, which would be the last piece of behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then bullets for usage and a clean field list; the alternative-routing sentence sits where it belongs. The per-protein output field enumeration is the one section that does not earn its space, since an output schema already exists and covers return values.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-oriented annotation lookup with a full output schema and 100% schema coverage, the description covers purpose, usage, exclusions, and result character adequately. It is arguably redundant to restate output fields rather than spending that space on behavior such as result-set size limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents species, identifiers, and detail_for_term, including the recovery workflow for shortened lists. The description adds no per-parameter syntax or format detail beyond what the schema states, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('retrieves curated functional annotations for a set of proteins') and enumerates the source ontologies (GO, KEGG, UniProt Keywords). It also explicitly distinguishes itself from the enrichment sibling, so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use condition ('when the user asks what a protein does, where it's localized, expressed, or which pathways it participates in') and an explicit when-not with the named alternative ('does not perform statistical enrichment — use the enrichment tool for that'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
string_helpSTRING: Help / FAQAInspect
Provides explanatory text for STRING features and limitations.
Use this tool when the user question involves:
What is STRING is or how to use the tool (how_to_use_string, cytoscape)
functionality not available via MCP tools (e.g. GSEA or large datasets).
meaning of network edges and their visual encoding (network_edge_legend)
interpretation of enrichment strength and signal (enrichment_scores)
grouping of terms in enrichment figures (enrichment_grouping)
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Help topic to display. If omitted, returns the available topics. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a safe, read-only help lookup and mentions limitations, but does not explicitly disclose side effects, permissions, or rate-limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is stated in the first sentence, followed by a compact, well-structured bullet list of usage conditions. The format is front-loaded and every item helps an agent select the right topic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The definition is complete enough for a one-parameter help tool with an output schema, and it covers the main question categories. It leaves a small gap by not explicitly stating the read-only/no-side-effect behavior absent annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the enum and optional topic parameter are already documented. The description adds useful meaning by mapping user-question types to specific help topics such as how_to_use_string, network_edge_legend, and enrichment_scores.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: provides explanatory text for STRING features and limitations. It clearly distinguishes this help/FAQ tool from the data-query and analysis siblings by scoping it to interpretation, usage, and unsupported functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The bullet list gives clear contexts for when to use the tool, including unavailable functionality and interpretation questions. It does not explicitly name sibling alternatives to use instead, but the conditions are specific enough for routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
string_homologySTRING: Get homologs in specified target speciesAInspect
Retrieves pairwise protein similarity scores (Smith–Waterman bit scores) for the query proteins.
If no target species (
species_b) is provided, results are intra-species (within the query species).To retrieve homologs in other species or clades (e.g. vertebrates, yeast, plants), specify one or more NCBI taxon IDs in
species_b.Multiple target species are supported; ask the user to clarify if needed.
Always report species names together with their taxon IDs.
Bit scores < 50 are not reported.
Results are truncated to the top 50 proteins per input protein.
| Name | Required | Description | Default |
|---|---|---|---|
| species | No | NCBI/STRING taxon (e.g. 9606 for human, or STRG0AXXXXX for uploaded genomes). | |
| proteins | Yes | One or more protein identifiers, separated by %0d. | |
| species_b | No | One or more NCBI taxon IDs for target species, separated by comma (e.g. 9606,7227,4932 for human, fly, and yeast). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the Smith-Waterman scoring method, the <50 bit-score reporting cutoff, and truncation to the top 50 proteins per input. It omits rate limits, error behavior, and authentication needs, keeping it just below the top score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose in the opening sentence, then presents usage, constraints, and output behavior as scannable bullets. No filler; every bullet carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only retrieval tool with an output schema covering return values, the description supplies everything needed to invoke it correctly: parameter behavior, the reporting threshold, and truncation limits. Despite absent annotations, the missing safety profile is low-risk for an obvious read operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds genuine semantic value: it explains that omitting species_b yields intra-species results and that species_b accepts clades and multiple comma-separated IDs, plus the reporting convention for species names and taxon IDs. This meaning goes beyond the raw schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('retrieves pairwise protein similarity scores / homologs') and clarifies scope (intra-species vs. cross-species). An agent can tell this apart from string_sequence_search or string_resolve_proteins based on the homology-scoring focus 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear when-to-use conditions: omit species_b for intra-species results, supply one or more taxon IDs (or clades) for cross-species. Explicitly tells the agent to ask the user to clarify when multiple target species are ambiguous. It stops short of naming sibling alternatives like string_sequence_search to route away from.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
string_interaction_evidenceSTRING: Get links to interaction evidence pagesAInspect
Retrieves direct links to STRING evidence pages for protein–protein interaction pairs.
Use this tool only when a STRING evidence page/link is needed. To determine whether
an interaction is supported, use string_interactions_query_set.
It returns URLs linking to STRING’s evidence pages, which display the underlying data sources
(experimental results, publications, and curated databases) supporting each predicted interaction.
A URL can be generated even for unsupported pairs; the URL is not itself an interaction verdict.
The returned page lets the user explore functional, physical, and regulatory relationship views through its tabs.
Parameters:
identifier_a: Query protein identifier (Protein A)
identifiers_b: One or more target protein identifiers (Protein B), separated by
%0dspecies: NCBI taxonomy ID (e.g.
9606for human or10090for mouse)network_type: Set to
physicalfor physical evidence orregulatoryfor directed regulatory evidence.
Typical user questions that should trigger this tool:
"Can you show me the STRING evidence for this interaction?"
"Show me the details supporting this interaction."
"What supports the interaction between TP53 and MDM2?"
"Where can I find the STRING evidence for this pair?"
| Name | Required | Description | Default |
|---|---|---|---|
| species | No | NCBI/STRING taxon (e.g. 9606 for human, or STRG0AXXXXX for uploaded genomes). | |
| identifier_a | Yes | Protein A identifier. | |
| network_type | No | Set physical for physical-interaction evidence or regulatory for directed regulatory evidence. Omit for the functional interaction evidence page. | |
| identifiers_b | Yes | One or more protein B identifiers, separated by %0d. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden — and it does real work by warning that a URL can be generated even for unsupported pairs and is not itself an interaction verdict, plus describing what the linked page shows (experimental results, publications, curated databases). It does not cover auth needs, rate limits, or error behavior, so it is strong but not complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Core routing rule and the unsupported-pair caveat are front-loaded in the first lines, then parameters, then triggers. The four example questions are somewhat redundant with the usage rule and add length, but they are skimmable and not misleading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter link-generator with an output schema, the description supplies the alternative tool, the semantic caveat about non-verdict URLs, parameter formats, and trigger scenarios. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3; the description adds usable context by giving concrete species examples (9606 human, 10090 mouse) and restating the %0d separator convention. It slightly under-describes network_type by naming only `physical` and `regulatory` and omitting the functional/omit behavior that the schema documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource (retrieves links to STRING evidence pages for protein–protein interaction pairs) and explicitly distinguishes itself from the sibling `string_interactions_query_set`, which resolves support status. An agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit inclusion rule ('use this tool only when a STRING evidence page/link is needed') and names the alternative for support determination. The sample trigger questions reinforce the intended routing with concrete user phrasings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
string_interactions_query_setSTRING: Get interactions within query setAInspect
Retrieves the interactions between the query proteins. Use this method only when you specifically need to list the interactions between all proteins in your query set.
For a single protein, the network includes that protein and its top 10 most likely interaction partners, plus all interactions among those partners.
For multiple proteins, the network includes all direct interactions between them.
STRING does not store or report information about self-interactions/homomers; if asked, explain the limitation.
If few or no interactions are returned, consider reducing the required_score.
For large query sets (>50 proteins), consider increasing the required_score (e.g. ≥700)
to focus on high-confidence interactions and avoid overly dense networks.
Expand the names of score sources:
nscore(neighborhood),fscore(fusion),pscore(phylogenetic profile),
ascore(coexpression),escore(experimental),dscore(database),tscore(text-mining)
| Name | Required | Description | Default |
|---|---|---|---|
| species | No | NCBI taxonomy ID (e.g. 9606 for human) or STRING genome ID (e.g. STRG0AXXXXX for uploaded genomes). | |
| proteins | Yes | One or more protein identifiers, separated by carriage return (%0d). | |
| network_type | No | 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. | |
| extend_network | No | Number of additional proteins to add to the network based on their connectivity. Default is 10 for a single protein query and 0 for multiple proteins. Set only if the user asks to add, extend, include a neighborhood, or show connecting proteins. | |
| network_flavor | No | 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. | |
| required_score | No | Minimum confidence score for an interaction. Omit unless a confidence threshold is requested or a broader/narrower threshold is needed. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does substantial work: it explains how the returned network is constructed for single vs. multiple proteins, and discloses the important limitation that STRING does not store/report self-interactions or homomers. It does not mention permissions, rate limits, or response shape, but output schema exists to cover returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and usage constraints are front-loaded, but the trailing bullet expanding 'score sources' (nscore, fscore, etc.) has no clear connection to this tool's parameters and reads like leftover content from a sibling evidence tool, adding noise that an agent must triage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and the description covers the remaining essentials: network construction semantics, a domain limitation, and threshold-tuning heuristics. It is largely complete for an agent to call the tool correctly, with the only gap being the ambiguous score-source glossary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds value beyond the schema by explaining required_score behaviour (lower it for sparse results, raise to ≥700 for dense >50-protein sets) and by clarifying network composition tied to the proteins parameter. The score-source glossary at the end, however, references names that are not parameters of this tool, which weakens the parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource ('Retrieves the interactions between the query proteins') and immediately scopes it with 'Use this method only when you specifically need to list the interactions between all proteins in your query set.' That scoping implicitly distinguishes it from string_all_interaction_partners (single-protein partner lookup), though it never names the sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear when-to-use framing ('only when you specifically need...') and offers actionable tuning guidance: reduce required_score when few/no interactions return, raise it (≥700) for large query sets (>50 proteins). It stops short of explicitly naming alternative tools to use instead for other scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
string_network_clusteringSTRING: Perform network clusteringAInspect
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_scoreparameter 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.
| Name | Required | Description | Default |
|---|---|---|---|
| species | No | NCBI/STRING taxonomy ID (e.g. 9606 for human, or STRG0AXXXXX for uploaded genomes). | |
| proteins | Yes | One or more protein identifiers (optionally with values). Separate entries with newline (%0d). Numeric values (e.g. expression data) can be provided after identifiers. | |
| network_type | No | 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. | |
| extend_network | No | Add specified number of additional nodes to the network based on their interaction scores. Default: 0, or 10 for single-protein queries. | |
| network_flavor | No | 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. | |
| required_score | No | Minimum interaction confidence score. Omit for STRING default filtering. Set only when a threshold is requested or a broader/narrower threshold is needed. | |
| center_node_labels | No | Center protein labels on nodes. Set only if the user asks to center labels. | |
| clustering_algorithm | No | 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. | |
| clustering_parameter | No | 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. | |
| hide_disconnected_nodes | No | Hide unconnected nodes. Set only if the user asks to hide disconnected or unconnected proteins. | |
| inter_cluster_edge_visibility | No | How to display edges between clusters: faded, dotted, solid, or noshow. Defaults to faded. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that required_score is auto-lowered to 0 for ≤5 proteins, that cluster count may differ from the requested value when disconnected subgraphs exist, and that inter-cluster edges default to faded. It stops short of stating auth/permission or rate-limit behavior, so not 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, and the notes are cleanly separated into a bulleted block. The mid-description instruction about producing a cluster table is an unusual formatting directive that slightly muddies the description's role, but overall it is well-sized with little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be re-explained, and the edge-case notes (small queries, single-cluster fallback, disconnected subgraphs) cover the main failure modes for an 11-parameter clustering tool. Only the absence of sequencing guidance relative to sibling tools keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 11 parameters including clustering_algorithm and clustering_parameter semantics. The description adds only the behavioral note that required_score is auto-lowered for small queries and points at inter_cluster_edge_visibility; baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 enumerates the outputs (image URL, interactive URL, cluster details). It implicitly distinguishes itself from the network-creation sibling by referencing 'the network creation step,' but does not name that sibling, so differentiation is contextual 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Guidance is present but indirect: it says to reuse the network-creation parameters and offers troubleshooting ('If only a single cluster is produced, try increasing required_score...'). It never states when to choose this tool over string_visual_network or string_network_link, so the agent must infer the sequencing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
string_network_linkSTRING: Get interactive network link (web UI)AInspect
Retrieves a stable URL to an interactive STRING network for one or more proteins.
For a single protein: includes the protein and its top 10 most likely interactors.
For multiple proteins: includes all known interactions within the query set.
The input may include one numeric value per protein, such as fold change, effect size, or score. These values are visualized as colored halos around the nodes, allowing overlay of protein-level measurements on the network.
Example: PTEN 2.1 SMO -1.3
If numeric values are provided:
positive values are shown in blue
negative values are shown in red
larger absolute values produce stronger halo intensity
If the user provides numeric values together with the proteins, preserve them in the query.
If few or no interactions are shown, consider lowering required_score.
For large queries (>100 proteins):
use
network_flavor="confidence"increase
required_score(e.g. 700)
Always display the link as a markdown hyperlink (hide the raw URL).
Input parameters should match those used in related STRING tools unless otherwise specified.
| Name | Required | Description | Default |
|---|---|---|---|
| species | No | NCBI/STRING taxon (e.g. 9606 for human, or STRG0AXXXXX). | |
| proteins | Yes | One or more protein IDs, optionally followed by one numeric value per protein. Use newline (%0d) between entries. Tabs and spaces are accepted as separators. | |
| network_type | No | 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. | |
| extend_network | No | Add white nodes to network, based on scores. Default: 0. | |
| network_flavor | No | 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. | |
| required_score | No | Threshold of significance to include an interaction. Omit for STRING default filtering. Set only when a threshold is requested or a broader/narrower threshold is needed. | |
| hide_disconnected_nodes | No | Hide proteins not connected to any other protein. Set only if the user asks to hide disconnected or unconnected proteins. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does a good job: it discloses the return type (stable URL), single vs. multiple protein behavior, numeric value visualization via colored halos, and recommendations for large queries. It does not, however, mention authentication, rate limits, or explicitly state that the operation is read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points and front-loads the core purpose. It is appropriately sized for a 7-parameter tool, though some content (e.g., the final line about matching related STRING tools) is vague and borderline unnecessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description need not explain return values, but it still clarifies the output (markdown hyperlink) and covers large-query handling. It is largely complete, though it omits guidance on several parameters (species, extend_network, hide_disconnected_nodes) that are left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds meaningful semantics beyond the schema: numeric values per protein are visualized as colored halos with specific color/intensity rules, and it recommends parameter values for large queries (network_flavor='confidence', required_score ~700). It does not add information for every parameter, but the added guidance is substantive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Retrieves a stable URL to an interactive STRING network for one or more proteins.' It explains the single-protein and multi-protein behavior clearly, but does not explicitly differentiate this tool from sibling network tools like string_visual_network or string_interactions_query_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives operational guidance for parameters (when to lower required_score, how to handle large queries with network_flavor and required_score), which implies usage context. However, it never states when to choose this tool over sibling STRING tools or when not to use it; the guidance is about invocation details rather than tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
string_ppi_enrichmentSTRING: Protein–protein interaction (PPI) enrichmentAInspect
This tool tests if your network is enriched in protein-protein interactions compared to the background proteome-wide distribution (i.e., if your proteins are more functionally connected than expected by chance).
The enrichment is assessed using the actual observed edges versus expected edges in a random network of the same size.
The p-value reflects the likelihood that your observed number of interactions would occur by chance.
Report the p-value as a human-readable value (e.g. 2.3e-5 or 0.023).
When calling related tools use the same input parameters unless otherwise specified.
Output fields:
number_of_nodes: Number of proteins in your network
number_of_edges: Number of observed edges/interactions
average_node_degree: Mean degree (average number of interactions per node)
local_clustering_coefficient: Average clustering coefficient in the network
expected_number_of_edges: Expected number of edges in a random network of the same size
p_value: p-value for network enrichment (smaller = more enriched)
Example identifiers: "SMO%0dTP53"
| Name | Required | Description | Default |
|---|---|---|---|
| species | No | NCBI/STRING taxon (e.g. 9606 for human, or STRG0AXXXXX for uploaded genomes). | |
| identifiers | Yes | One or more protein identifiers, separated by %0d. | |
| required_score | No | Minimum interaction confidence score. Omit unless a confidence threshold is requested or a broader/narrower threshold is needed. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does reasonably well: it explains the statistical model (observed vs. expected edges in a random network of the same size) and what the p-value means. It does not cover caveats such as minimum network size, behavior on sparse inputs, or permissions, so it is not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with a clear one-line purpose, followed by tightly organized bullets for mechanics, p-value, and reporting. However, the enumerated output fields duplicate the existing output schema, so that block does not fully earn its place per the rule that return values need not be explained when an output schema exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with a full output schema, the description supplies purpose, method, example identifier, and reporting guidance, which is sufficient to call it correctly. It is only missing sibling-oriented routing (e.g., vs. string_network_clustering) to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters are already documented in the schema. The description adds little beyond one example identifier ('SMO%0dTP53') and the convention hint about reusing parameters; it does not clarify format or semantics beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it 'tests if your network is enriched in protein-protein interactions compared to the background proteome-wide distribution.' The scope (structural connectivity vs. chance) distinguishes it from term-based siblings like string_enrichment and string_functional_annotation without needing their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer you call this when you have a protein set and want to know if it is more connected than expected. There is no explicit when-to-use, when-not, or named alternative among siblings such as string_network_clustering. The note 'use the same input parameters when calling related tools' is a convention hint, not selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
string_proteins_for_termSTRING: Retrieve proteins associated with a functional termAInspect
Retrieve proteins annotated with a functional term or descriptive text in a single species.
You can query for tissues, compartments, diseases, processes, pathways, and domains.
IMPORTANT: For cross-species comparisons, run this tool separately for each species.
Select relevant model organisms to search or ask user to provide the selection.
The results reflect annotation depth within each category; use caution when interpreting.
If no results are found, try simplifying the query.
For tissue queries, follow BRENDA tissue nomenclature and omit the word "tissue"
(e.g. use "skin" instead of "skin tissue").
Output fields:
category: Source database of the matched functional term (e.g. GO, KEGG, Reactome, Pfam, InterPro).
term: Exact identifier for the functional term.
description: The free text description of the term.
proteinCount: Number of proteins annotated with that term
preferredNames: Full protein-name list when
detail_for_termis setstringIds: STRING protein identifiers when returned
preferredNames_omitted: True when a row omits the protein-name list
stringIds_omitted: True when STRING identifiers are omitted
| Name | Required | Description | Default |
|---|---|---|---|
| species | No | NCBI/STRING taxonomy ID. This tool only supports one species per call. It cannot return results across multiple species or identify the species with the most/fewest proteins. For such questions, run this tool separately for each species and then compare the results. Default is 9606 (human). Examples: 10090 for mouse, or STRG0AXXXXX for uploaded genomes. | 9606 |
| term_text | Yes | Functional term identifier (GO, KEGG, Reactome, etc.) or descriptive free text. | |
| detail_for_term | No | Exact term ID to return as one full protein-name list. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden, and it does meaningful work: it discloses the single-species limitation (and that it cannot rank species by protein count), warns that results reflect annotation depth and should be interpreted cautiously, and offers a query-simplification fallback. It does not mention permissions, rate limits, or read-only status, but for a retrieval tool these matter less than the interpretation caveats it does provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The usage guidance is front-loaded and well-organized, but the description ends with an enumeration of output fields (category, term, description, proteinCount, preferredNames, etc.) that duplicates what the existing output schema already declares, adding length without new value. Removing that block would make it tighter and more focused.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the return values are covered, and the description supplies the remaining context an agent needs: species constraint, term-format conventions, interpretation caveats, and a no-results fallback. It is nearly complete; the only real gap is the absence of any pointer to competing sibling tools for related tasks like enrichment.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 goes beyond the schema by giving real guidance on how to format term_text (BRENDA tissue nomenclature, omit the word 'tissue'), which is not stated in the schema. That extra syntax/format guidance lifts it above baseline, though it does not clarify detail_for_term's interaction with the omitted fields beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieve proteins annotated with a functional term or descriptive text') plus an explicit scope constraint ('in a single species'), and enumerates the queryable categories (tissues, compartments, diseases, processes, pathways, domains). It is clear what the tool does, but it never names a sibling (e.g. string_enrichment or string_functional_annotation) to disambiguate, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage context: the categories you can query, the warning to run the tool separately per species for cross-species comparisons, and a fallback ('If no results are found, try simplifying the query'). It also supplies a domain convention for tissue queries (BRENDA nomenclature, omit the word 'tissue'). No explicit 'do not use this when…' or named alternative is given, so it is a strong 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
string_query_speciesSTRING: Query species and clades in STRINGAInspect
Search for species or clades available in STRING by free-text query and return their NCBI taxonomy IDs.
Use this when the user asks which species or clades are present in STRING, or when you need the correct NCBI taxon ID to pass to other tools.
use this to resolve NCBI taxons IDs to their scientific names.
Accepts up to 100 taxon IDs separated by
%0d.The results are limited to the top 50 matches per query.
When the user asks for a species list, do not list clades.
If the requested species cannot be matched (i.e. the correct species is not present in the results), immediately invoke the 'string_help' tool with topic='missing_species'.
| Name | Required | Description | Default |
|---|---|---|---|
| species_text | Yes | One species/clade search term or multiple NCBI taxon IDs separated by carriage return (%0d). For multiple queries, use taxon IDs rather than free-text names. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses useful constraints: up to 100 taxon IDs separated by %0d, results limited to top 50 matches per query, and a specific fallback behavior for unmatched species. It does not cover authentication needs, rate limits, or read-only status, but for a query tool the disclosed limits and fallback are substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is bullet-structured and front-loads the core purpose before usage details. It is mostly efficient, though the bullet about resolving NCBI taxon IDs to scientific names is somewhat redundant with the opening sentence and creates minor ambiguity about return values. Overall it is appropriately sized and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter schema, existing output schema, and lack of annotations, the description supplies the key contexts an agent needs: when to use it, input limits, result limits, species-vs-clade behavior, and a fallback for missing species. Return values need not be explained because an output schema is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description adds a meaningful constraint beyond the schema: it accepts up to 100 taxon IDs separated by %0d. It also reinforces that multiple queries should use taxon IDs rather than free-text names, which helps an agent choose the correct input form.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: search for species or clades available in STRING and return their NCBI taxonomy IDs. It also clarifies that the tool is used to obtain correct taxon IDs for other tools, making its role distinct from sibling tools. The added note about resolving NCBI taxon IDs to scientific names is slightly inconsistent with 'return their NCBI taxonomy IDs', but it does not obscure the primary purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use criteria: user asks which species or clades are present, or an agent needs a taxon ID to pass to other tools. It also states when-not: when the user asks for a species list, do not list clades. It names a concrete fallback tool and condition: invoke string_help with topic='missing_species' if the requested species cannot be matched.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
string_resolve_proteinsSTRING: Resolves protein identifiers to metadataAInspect
Maps one or more protein identifiers to their corresponding STRING metadata, including: gene symbol, description, sequence, domains, species, and internal STRING ID.
This method is useful for translating raw identifiers into readable, annotated protein entries.
Example input: "TP53%0dSMO"
| Name | Required | Description | Default |
|---|---|---|---|
| species | No | NCBI taxonomy ID (e.g. 9606 for human) or STRING genome ID (e.g. STRG0AXXXXX for uploaded genomes). | |
| proteins | Yes | One or more input protein identifiers (gene symbols, UniProt IDs, etc.), separated by carriage return (%0d). | |
| show_sequence | No | Include sequences. Use only if the user requests sequence data. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the output content (metadata fields) and includes an input example, but it does not explicitly state that the operation is read-only, whether it has rate limits, or any authentication requirements. The gaps are moderate for a query tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded, and structured into three brief sentences. The example input duplicates a schema example slightly, but overall it is efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, full schema description coverage, and the presence of an output schema, the description is nearly complete for selection and invocation. It lacks explicit sibling differentiation, but the purpose and return metadata are sufficiently described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all three parameters in detail. The description only restates that one or more protein identifiers are accepted and gives an example that duplicates the schema example. It adds no meaningful parameter semantics beyond what the schema provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Maps one or more protein identifiers to their corresponding STRING metadata.' It also enumerates the metadata types returned, making the tool's purpose clear. However, it does not explicitly differentiate itself from sibling tools such as string_sequence_search or string_functional_annotation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'useful for translating raw identifiers into readable, annotated protein entries.' This tells an agent when the tool is appropriate. It does not, however, mention when not to use it or name alternative sibling tools for overlapping tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
string_sequence_searchSTRING: Search proteins by amino acid sequenceAInspect
Searches the STRING database using amino acid sequences to identify matching proteins.
Accepts a single sequence or multiple sequences in FASTA format.
Returns the most similar STRING protein(s) for the specified species, based on sequence similarity.
Use this when the protein identifier is unknown or unresolvable by
string_resolve_proteins.
| Name | Required | Description | Default |
|---|---|---|---|
| species | No | NCBI or STRING taxonomy ID. You can query with a clade or species. eg.g 2 for bacteria, 7742 for vertebrates, 511145 for E. coli | |
| sequences | Yes | One or more protein sequences in plain or FASTA format.For multiple sequences, use standard FASTA headers (lines beginning with '>'). Only amino acid sequences are supported — nucleotide sequences are not accepted. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does disclose the core behavior: results are the most similar STRING protein(s) for a given species, ranked by sequence similarity, and input may be one or many FASTA records. It stops short of stating failure behavior (no match found), confidence/threshold semantics, or whether a fuzzy best-hit match is returned blindly, which for a similarity-lookup tool would be the most valuable remaining disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences/tight bullets, front-loaded with the purpose and then the routing rule. No filler, and the most decision-relevant information (when to use it) comes last where it is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and the schema covers both parameters, so the description is close to sufficient. The only gap is that a similarity-based matcher can return an approximate hit, and nothing here tells the agent how to interpret or validate that result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both 'species' and 'sequences' are already fully documented in the schema. The description restates the FASTA/multi-sequence capability but adds no syntax, default, or format detail beyond what the schema provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (searches) plus the resource (STRING database) and the discriminating input modality (amino acid sequences) that separates it from identifier-based siblings. It also names the specific alternative, string_resolve_proteins, so an agent can route correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing rule: 'Use this when the protein identifier is unknown or unresolvable by string_resolve_proteins.' This gives both the condition that selects this tool and the alternative it replaces, which is exactly what is needed among 17 sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
string_visual_networkSTRING: Get interaction network image (image URL)AInspect
Retrieves a URL to a STRING interaction network image for one or more proteins.
For a single protein: includes the protein and its top 10 most likely interactors.
For multiple proteins: includes all known interactions within the query set.
The input may include one numeric value per protein, such as fold change, effect size, or score. These values are visualized as colored halos around the nodes, allowing overlay of protein-level measurements on the network.
Example: PTEN 2.1 SMO -1.3
If numeric values are provided:
positive values are shown in blue
negative values are shown in red
larger absolute values produce stronger halo intensity
If the user provides numeric values together with the proteins, preserve them in the query.
If few or no interactions are shown, consider lowering required_score.
For large queries (>100 proteins):
use
network_flavor="confidence"increase
required_score(e.g. 700)
Always ask if the user also wants a link to the interactive STRING network page.
Input parameters should match those used in related STRING tools (e.g. string_interactions_query_set), unless otherwise specified.
| Name | Required | Description | Default |
|---|---|---|---|
| species | No | NCBI/STRING taxon (e.g. 9606 for human, or STRG0AXXXXX). | |
| proteins | Yes | One or more protein IDs, optionally followed by one numeric value per protein. Use newline (%0d) between entries. Tabs and spaces are accepted as separators. | |
| network_type | No | 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. | |
| extend_network | No | Add specified number of nodes to the network, based on their scores. Default: 0, or 10 for single protein queries. | |
| network_flavor | No | 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. | |
| required_score | No | Threshold of significance to include an interaction. Omit for STRING default filtering. Set only when a threshold is requested or a broader/narrower threshold is needed. | |
| center_node_labels | No | Center protein names on nodes. Set only if the user asks to center labels. | |
| do_not_show_structures | No | Remove small protein structure previews from inside the node bubbles. Set only if the user asks to remove or hide structure previews. | |
| hide_disconnected_nodes | No | Hide proteins not connected to any other protein. Set only if the user asks to hide disconnected or unconnected proteins. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose meaningful behavior: output is an image URL, positive/negative numeric values map to blue/red halos with intensity scaled by magnitude, and parameter values should mirror related STRING tools. It omits things like rate limits or permission needs, but for a read-only retrieval tool this is largely sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose and scopes single- vs multi-protein behavior early, then uses bullets for the numeric-value rules and large-query advice. Slightly long and the color-mapping detail is a bit verbose, but every section maps to a real decision the agent must make.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 9-parameter tool with an output schema benefits from the description covering the query syntax, visualization semantics, scaling guidance, and cross-tool consistency. Combined with the schema's own parameter docs, an agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine semantics beyond the schema: the numeric-value-per-protein syntax and its visualization meaning, the guidance to preserve those values, and tuning advice for required_score and network_flavor at scale. It doesn't cover every parameter, but it enriches the most agent-relevant ones.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieves a URL to a STRING interaction network image') plus the scope (single vs. multiple proteins). It is distinguishable from siblings like string_network_link (interactive page) and string_enrichment_image_url, and it explicitly routes the user to the interactive-page sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete conditional guidance: lower required_score when few interactions appear, use network_flavor=confidence and higher required_score for >100 proteins, and preserve numeric values in the query. It stops short of an explicit when-not/alternative comparison against sibling tools, but the practical usage rules are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
17 tool updates
v1.13.0- First observed
string_all_interaction_partners - First observed
string_create_file - First observed
string_enrichment - First observed
string_enrichment_image_url - First observed
string_functional_annotation - First observed
string_help - First observed
string_homology - First observed
string_interaction_evidence - First observed
string_interactions_query_set - First observed
string_network_clustering - First observed
string_network_link - First observed
string_ppi_enrichment - First observed
string_proteins_for_term - First observed
string_query_species - First observed
string_resolve_proteins - First observed
string_sequence_search - First observed
string_visual_network
TDQS
Scored across 17 tools
Most tools target distinct actions (resolve, query-set interactions, all partners, clustering, homology, enrichment, annotation, term/sequence/species search). The main overlap is between string_visual_network and string_network_link, which both describe nearly identical single/multi-protein network construction, though their descriptions clarify image vs interactive URL output.
All tools share a predictable string_ prefix and snake_case, which is highly consistent. However the ordering convention varies (verb_noun like resolve_proteins/sequence_search/create_file vs noun_phrases like interactions_query_set, network_link, proteins_for_term), a minor deviation.
17 tools is on the heavier side but justified by the genuinely broad STRING surface (resolution, interactions, networks, clustering, enrichment, annotations, homology, files, help). Each tool maps to a distinct STRING capability rather than being redundant.
The surface comprehensively covers the STRING domain: identifier resolution, interaction queries, partner discovery, network/link/clustering generation, homology, evidence pages, functional enrichment, annotation, term and sequence search, species lookup, file export, and help. No obvious dead ends for typical STRING workflows.
Maintenance
Related MCP Connectors
STRING-DB MCP — protein-protein interaction networks.
MCP server for AI access to Swagger by SmartBear.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
MCP server connecting AI agents to non-custodial staking data across 130+ networks.
Related MCP Servers
- FlicenseBqualityDmaintenanceA comprehensive Model Context Protocol (MCP) server for accessing the STRING protein interaction database. This server provides powerful tools for protein network analysis, functional enrichment, and comparative genomics through the STRING API.64-
- AlicenseBqualityDmaintenanceA Model Context Protocol server that provides tools for interacting with the STRING database to analyze protein-protein interaction networks and functional enrichment. It enables users to map protein identifiers, retrieve interaction data, and generate biological network visualizations through natural language interfaces.114BSD 3-Clause
- AlicenseNot gradedqualityDmaintenanceA unified MCP server for biomedical research that connects AI systems to resources like Ensembl, EuropePMC, STRING, and more, enabling retrieval of verified domain-specific information.Apache 2.0
- AlicenseAqualityAmaintenanceAn MCP server that gives AI assistants access to biological and biomedical RDF databases via SPARQL at the RDF Portal, as well as selected REST APIs (NCBI E-utilities, UniProt, ChEMBL, PDB, Reactome, Rhea, MeSH, and more).2918MIT