ChatSpatial
ChatSpatial
MCP-Server für die räumliche Transkriptomik-Analyse mittels natürlicher Sprache
ChatSpatial ersetzt die Ad-hoc-LLM-Codegenerierung durch eine schema-erzwungene Orchestrierung. Anstatt beliebige Skripte zu generieren, wählt das LLM Tools und Parameter aus einem kuratierten Register aus, wodurch räumliche Transkriptomik-Workflows über Sitzungen und Clients hinweg reproduzierbarer werden.
Es stellt über 60 Methoden der räumlichen Transkriptomik als MCP-Tools bereit, sodass jeder MCP-kompatible Client Daten mittels natürlicher Sprache analysieren kann.
Hier starten
ChatSpatial installieren — Installationsanleitung
MCP-Client konfigurieren — Konfigurationsanleitung
Erste Analyse ausführen — Schnellstart
Minimales Beispiel-Prompt:
Load /absolute/path/to/spatial_data.h5ad and show me the tissue structureChatSpatial funktioniert mit jedem MCP-kompatiblen Client — Claude Code, Claude Desktop, Codex, OpenCode und anderen MCP-fähigen Tools.
Related MCP server: Liana-MCP
Funktionen
Über 60 Methoden in 11 Kategorien. Unterstützt 10x Visium, Xenium, Slide-seq v2, MERFISH, seqFISH.
Kategorie | Methoden |
Räumliche Domänen | SpaGCN, STAGATE, GraphST, BANKSY, Leiden, Louvain |
Dekonvolution | FlashDeconv, Cell2location, RCTD, DestVI, Stereoscope, SPOTlight, Tangram, CARD |
Zellkommunikation | LIANA+, CellPhoneDB, CellChat ( |
Zelltyp-Annotation | Tangram, scANVI, CellAssign, mLLMCelltype, scType, SingleR |
Differentielle Expression | Wilcoxon, t-test, Logistische Regression, pyDESeq2 |
Trajektorie & Geschwindigkeit | CellRank, Palantir, DPT, scVelo, VeloVI |
Räumliche Statistik | Moran's I, Local Moran, Geary's C, Getis-Ord Gi*, Ripley's K, Co-occurrence, Neighborhood Enrichment, Centrality Scores, Local Join Count, Network Properties |
Anreicherung | GSEA, ORA, Enrichr, ssGSEA, Spatial EnrichMap |
Räumliche Gene | SpatialDE, SPARK-X, FlashS |
Integration | Harmony, BBKNN, Scanorama, scVI |
Sonstiges | CNV-Analyse (InferCNVPy, Numbat), Räumliche Registrierung (PASTE, STalign) |
Dokumentation
Anleitung | Inhalt |
Einrichten der Umgebung, Paketinstallation, Plattformhinweise | |
Erste erfolgreiche Analyse nach der Einrichtung | |
Methodenauswahl und Analyse-Logik | |
Prompt-Rezepte und Workflow-Beispiele | |
Exakte Syntax für die MCP-Client-Konfiguration | |
Symptom → Lösungshilfe | |
Kanonische Tool-Parameter und Standardwerte | |
Komplette Dokumentationsseite |
Zitieren
Wenn Sie ChatSpatial in Ihrer Forschung verwenden, zitieren Sie bitte:
@article{Yang2026.02.26.708361,
author = {Yang, Chen and Zhang, Xianyang and Chen, Jun},
title = {ChatSpatial: Schema-Enforced Agentic Orchestration for Reproducible and Cross-Platform Spatial Transcriptomics},
elocation-id = {2026.02.26.708361},
year = {2026},
doi = {10.64898/2026.02.26.708361},
publisher = {Cold Spring Harbor Laboratory},
URL = {https://www.biorxiv.org/content/early/2026/03/01/2026.02.26.708361},
journal = {bioRxiv}
}ChatSpatial orchestriert viele exzellente Methoden von Drittanbietern. Bitte zitieren Sie auch die Original-Tools, die in Ihrer Analyse verwendet wurden.
Mitwirken
Verbesserungen der Dokumentation, Fehlerberichte und neue Analysemethoden sind willkommen. Siehe CONTRIBUTING.md.
Available Tools
20 toolsanalyze_cell_communicationCDestructiveIdempotent
Analyze cell-cell communication and ligand-receptor interaction patterns.
Args:
data_id: Dataset ID
params: Required - species, cell_type_key, and method. For mouse with liana, set liana_resource='mouseconsensus'.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes | ||
| data_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| method | Yes | |
| data_id | Yes | |
| species | Yes | |
| database | Yes | |
| warnings | No | Non-fatal conditions that may affect result interpretation. |
| n_lr_pairs | Yes | |
| results_key | No | |
| top_lr_pairs | No | |
| analysis_type | Yes | |
| n_autocrine_loops | No | |
| n_significant_pairs | Yes | |
| top_autocrine_loops | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint and idempotentHint, but the description does not elaborate on potential side effects, whether the analysis modifies data, or any performance implications. No additional context is provided beyond the annotations.
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 extremely concise (one sentence) but lacks necessary structure or detail for a complex tool with many parameters. It is minimal without being helpful.
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 complexity (large parameter set, multiple methods), the description is woefully incomplete. It does not mention output types, method options, or any contextual information that would help an agent decide to use it.
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?
The description does not explain any parameters. The schema contains many parameters with individual descriptions, but the tool description itself adds no param-level semantics. Since schema coverage in the description is 0% and the description fails to compensate, this scores low.
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 clearly states the tool analyzes cell-cell communication and ligand-receptor interactions, which distinguishes it from sibling tools like analyze_spatial_statistics or analyze_enrichment. However, it lacks specificity about the analytical methods or outputs.
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 no guidance on when to use this tool versus alternatives, no mention of prerequisites, or scenarios where it is appropriate. It only gives a generic purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_cnvADestructiveIdempotent
Analyze copy number variations (CNVs) in spatial transcriptomics data.
Args:
data_id: Dataset identifier
params: Required - reference_key, reference_categories, and optional method/thresholds.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes | ||
| data_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| method | Yes | |
| data_id | Yes | |
| warnings | No | Non-fatal conditions that may affect result interpretation. |
| cnv_score_key | No | |
| n_chromosomes | Yes | |
| reference_key | Yes | |
| n_genes_analyzed | Yes | |
| reference_categories | Yes | |
| visualization_available | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, readOnlyHint=false, and idempotentHint=true, covering the safety profile. The description does not contradict these, but it also adds no behavioral context beyond 'analyze', such as what data may be modified or whether results are persisted. Thus a baseline score with annotations is appropriate.
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 brief and front-loaded, stating the purpose in the first sentence and then summarizing key arguments. It contains no superfluous filler, though the Args block is slightly redundant with the schema's property names.
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 complexity of the nested params object and the destructive annotation, the description is sparse but not entirely inadequate: the schema and annotations fill in many details, and an output schema exists. Still, it lacks high-level context about prerequisites, method implications, and side effects, so it is only minimally 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?
The description highlights that params must include reference_key and reference_categories and mentions optional method/thresholds, which is helpful because the top-level schema provides no descriptions for data_id and params. However, it remains vague about specific thresholds and does not fully compensate for the low schema coverage; the nested schema carries most parameter detail.
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 clearly states it analyzes copy number variations (CNVs) in spatial transcriptomics data, using a specific verb and resource. This distinguishes it from sibling tools like analyze_velocity_data or analyze_trajectory_data, which target different biological analyses.
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 implies usage by naming 'spatial transcriptomics data' and specifying CNV analysis, but it provides no explicit guidance on when to use this over alternatives or when not to use it. There are no exclusions or alternative tool mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_enrichmentCDestructiveIdempotent
Perform gene set enrichment analysis.
Args:
data_id: Dataset ID
params: Required - species must be specified. See EnrichmentParameters for methods and gene_set_database options.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes | ||
| data_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| method | Yes | |
| warnings | No | Non-fatal conditions that may affect result interpretation. |
| n_gene_sets | Yes | |
| n_significant | No | |
| top_gene_sets | Yes | |
| top_depleted_sets | Yes | |
| spatial_scores_key | No | |
| n_successful_signatures | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include destructiveHint=true and idempotentHint=true, but the description provides no additional behavioral context. It does not mention potential side effects, modifications to the dataset, or any safety considerations. While it doesn't contradict annotations, it adds no value beyond what the annotations already convey, leaving the agent uninformed about the tool's actual behavior on data.
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 extremely concise: a single sentence and two argument placeholders. It avoids redundancy and gets straight to the point. Every word earns its place, though it may be too sparse for a complex tool. However, for conciseness, it is exemplary—no fluff, no filler.
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?
Despite having an output schema, the description is minimal and does not explain the overall context of use. It fails to mention the type of data expected, the output interpretation, or any preconditions (e.g., data must be loaded and preprocessed). It also does not relate to the analysis pipeline or when to apply this analysis. For a tool with many configurable parameters and complex behavior, this is incomplete and leaves the agent without sufficient guidance.
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?
The schema provides detailed descriptions for most parameters (e.g., method, species, max_genes), and the description adds only a note that species must be specified and points to EnrichmentParameters for details. Given high schema coverage, the description adds marginal value. However, it does highlight the required nature of species, which is helpful, but does not explain semantics beyond that. Baseline of 3 is appropriate as the description slightly supplements the schema but does not compensate for deeper meaning.
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 the tool 'Performs gene set enrichment analysis' which is a specific verb and resource. It clearly distinguishes from generic analysis tools but doesn't explicitly differentiate from sibling tools like analyze_spatial_statistics or deconvolve_data, though the enrichment focus is evident. It lacks a clear scope or mention of input/output context, but the core purpose is unambiguous.
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 only a minimal usage hint: 'Required - species must be specified.' It does not explain when to use this tool over alternatives, what scenarios it suits, or when not to use it. There is no reference to the relevant analysis workflow or comparison with sibling tools like find_markers or compute_embeddings. This guidance is insufficient for an agent to make an informed selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_spatial_statisticsCDestructiveIdempotent
Analyze spatial statistics and autocorrelation patterns.
Args:
data_id: Dataset ID
params: Analysis parameters (analysis_type, cluster_key, genes). See SpatialStatisticsParameters for all types.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | ||
| data_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data_id | Yes | |
| warnings | No | Non-fatal conditions that may affect result interpretation. |
| results_key | No | |
| top_features | No | |
| analysis_type | Yes | |
| n_significant | No | |
| summary_metrics | No | |
| n_features_analyzed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, but the description adds no behavioral context, such as whether analysis results are written back to the dataset or if certain analyses require cluster_key and may fail otherwise. It doesn't explain side effects, performance implications, or what changes the tool makes beyond the generic verb 'analyze'.
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 concise and front-loaded with a clear purpose statement, followed by a compact Args list. No unnecessary words, but it could have been slightly more informative without becoming verbose.
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?
This is a highly complex tool with 13 analysis types, a nested params schema, and an output schema, yet the description offers no overview of the analysis categories, prerequisites (e.g., cluster_key for group-based analyses), or typical use cases. It relies entirely on the schema for details, which is insufficient for an agent to select and invoke it confidently.
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?
The Args section gives brief meanings for data_id and params, mentioning analysis_type, cluster_key, and genes. However, with schema description coverage at 0% for top-level parameters, the description only partially compensates by naming a few fields and pointing to the full schema. It doesn't explain the distinction between gene-based and group-based analyses or the many other parameters.
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 clearly states the tool analyzes 'spatial statistics and autocorrelation patterns', giving a specific verb and resource. However, it doesn't distinguish itself from sibling tools like find_spatial_genes or identify_spatial_domains, which could also involve spatial statistics.
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?
No guidance is provided on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or suggest other tools for different scenarios. The only pointer is to 'See SpatialStatisticsParameters for all types', which is parameter documentation, not usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_trajectory_dataCDestructive
Infer cellular trajectories and pseudotime ordering.
Args:
data_id: Dataset ID
params: Trajectory parameters (method, root_cell, spatial_weight, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | ||
| data_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| method | Yes | |
| data_id | Yes | |
| warnings | No | Non-fatal conditions that may affect result interpretation. |
| pseudotime_key | Yes | |
| spatial_weight | Yes | |
| velocity_computed | Yes | |
| pseudotime_computed | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already communicate readOnlyHint=false and destructiveHint=true, so the risk profile is known. The description adds no side-effect context, such as whether trajectory results overwrite existing data or require prior preprocessing, but it does not contradict the annotations.
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 free of fluff. The args lines add minimal value because the schema already defines the parameters, but overall this is a compact, readable description.
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?
This is a complex trajectory-analysis tool with multiple methods, method-specific parameters, and a destructive hint, but the description only provides a one-line purpose. Important selection context—such as method-specific data requirements and expected inputs—is buried in the nested schema rather than presented in the description.
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?
The description only lists 'method, root_cell, spatial_weight, etc.' in passing and does not provide meaningful parameter semantics. It also uses 'root_cell' while the schema defines the field as 'root_cells'. The actual parameter understanding relies on the rich nested schema descriptions, not the tool description.
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 sentence 'Infer cellular trajectories and pseudotime ordering' names a specific analysis task with a clear action and object. It is distinct from most sibling tools, though it does not explicitly contrast with related tools like analyze_velocity_data.
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?
No when-to-use guidance is provided: there are no hints about velocity prerequisites, when to choose palantir/dpt over cellrank, or when another analysis tool would be more appropriate. Some guidance exists only in the nested schema description, not in the tool description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_velocity_dataBDestructive
Analyze RNA velocity to understand cellular dynamics. Requires 'spliced' and 'unspliced' layers.
Args:
data_id: Dataset ID
params: Velocity parameters (method, scvelo_mode, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | ||
| data_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | Yes | |
| data_id | Yes | |
| warnings | No | Non-fatal conditions that may affect result interpretation. |
| velocity_computed | Yes | |
| velocity_graph_key | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already include destructiveHint=true and readOnlyHint=false, but the description adds no additional behavioral context such as what data might be modified, whether results are stored, or any side effects. The only extra information is the data prerequisite (spliced/unspliced layers), which is more about applicability than behavior. Thus, it contributes minimal value beyond the annotations.
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 concise and front-loaded, stating the main purpose in the first sentence. It then lists the arguments in a simple format. It avoids unnecessary fluff but could be slightly more structured, e.g., by using a numbered list or table for the args. Overall, it earns a 4 for economy of words.
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?
Despite having an output schema and annotations, the description is incomplete for a tool with this complexity. It only names two parameters, while the params parameter contains a large nested object with a dozen fields. There is no guidance on how to choose between methods (scvelo vs velovi), what the output contains, or what happens if certain layers are missing. A more complete description would help an agent correctly configure and invoke the 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 0%, so the description must compensate. It provides only terse definitions: 'data_id: Dataset ID' and 'params: Velocity parameters (method, scvelo_mode, etc.)'. While it gives examples of sub-parameters, it does not explain the many nested parameters or how they affect the analysis. The params object is a complex nested model with a dozen properties, and the description adds little meaning beyond what the schema already shows.
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 clearly states the tool's purpose: 'Analyze RNA velocity to understand cellular dynamics.' This includes a specific verb ('analyze'), a specific resource ('RNA velocity'), and biological context. It distinguishes itself from sibling tools like analyze_trajectory_data by focusing specifically on RNA velocity, and it mentions the technical prerequisite of needing 'spliced' and 'unspliced' layers.
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 a clear context for when the tool is applicable by specifying the requirement for 'spliced' and 'unspliced' layers, which is a key prerequisite. However, it does not mention alternative tools or explicitly state when not to use this tool, so it does not fully meet the 'explicit alternatives' criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
annotate_cell_typesBDestructive
Annotate cell types in spatial transcriptomics data.
Args:
data_id: Dataset ID
params: Annotation parameters (method, reference_data_id, cell_type_key, etc.)
Note: Reference methods (tangram, scanvi) require reference_data_id to be preprocessed first.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | ||
| data_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| counts | Yes | |
| method | Yes | |
| data_id | Yes | |
| warnings | No | Non-fatal conditions that may affect result interpretation. |
| cell_types | Yes | |
| output_key | Yes | |
| confidence_key | No | |
| confidence_scores | No | |
| tangram_mapping_score | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a write operation. The description adds the preprocessing prerequisite for reference methods, which is useful context, but doesn't describe what data gets modified (e.g., adding cell type labels) or other side effects.
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 appropriately short and front-loaded with the main action. The Args section is minimal and the note is useful. It would benefit from a bit more structure, but it's concise and readable.
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?
This is a complex tool with many methods and parameters, an output schema, and a destructive flag. The description only covers the basic purpose and one prerequisite. It doesn't explain method-specific requirements (cellassign needs marker_genes, singler uses celldex), parameter interactions, or the expected outcome. Given the complexity, this is insufficient 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 description coverage is 0% per context, so the description must compensate. It only lists example parameter names (method, reference_data_id, cell_type_key) without explaining their meaning or constraints. The nested params schema has many fields, but the description barely scratches the surface, leaving the agent to infer semantics from field names.
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 clearly states the tool's action and resource: 'Annotate cell types in spatial transcriptomics data.' This is a specific verb+resource combination that distinguishes it from sibling tools like analyze_cnv or find_spatial_genes.
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 a usage prerequisite: reference methods (tangram, scanvi) require reference_data_id to be preprocessed. However, it doesn't explicitly state when to use this tool versus alternatives or when not to use it, so guidance is only partial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_conditionsADestructiveIdempotent
Compare experimental conditions using pseudobulk differential expression (DESeq2).
Args:
data_id: Dataset ID
params: Required - condition_key, condition1, condition2, sample_key, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes | ||
| data_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| method | Yes | |
| data_id | Yes | |
| warnings | No | Non-fatal conditions that may affect result interpretation. |
| comparison | Yes | |
| condition1 | Yes | |
| condition2 | Yes | |
| sample_key | Yes | |
| statistics | Yes | |
| results_key | Yes | |
| cell_type_key | No | |
| condition_key | Yes | |
| cell_type_results | No | |
| global_n_significant | No | |
| n_samples_condition1 | Yes | |
| n_samples_condition2 | Yes | |
| global_top_upregulated | No | |
| global_top_downregulated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=true, so the safety profile is declared. The description adds context by specifying DESeq2 and pseudobulk aggregation, and the schema mentions 'Requires 2+ samples per condition.' However, it does not explain what destructive side effects may occur or what state changes are involved, leaving a transparency gap despite annotations.
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 and front-loaded with the core purpose, followed by a concise Args block. The 'etc.' and redundant parameter list slightly reduce precision, but there is no filler or unnecessary elaboration.
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 complexity of the tool, the rich input schema and output schema carry most of the burden. The nested schema includes thresholds, defaults, and usage differentiation. The top-level description is minimal but sufficient for basic selection; a bit more context about prerequisites or side effects would make it more 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?
The description lists required parameter names (condition_key, condition1, condition2, sample_key) but adds no semantics beyond the names. The input schema provides rich descriptions for every parameter, so the description adds minimal value beyond what the schema already covers.
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 clearly states the tool's purpose: 'Compare experimental conditions using pseudobulk differential expression (DESeq2).' This provides a specific verb, resource, and method. It does not explicitly name sibling tools, but the scope ('conditions' vs 'cell types') distinguishes it from tools like find_markers.
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 top-level description lacks usage guidance, but the input schema's nested ConditionComparisonParameters description explicitly contrasts compare_conditions with find_markers ('compares conditions ACROSS samples' vs 'cell types/clusters WITHIN a dataset'). This is useful but limited to one alternative and does not provide exclusions or other sibling comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compute_embeddingsBDestructive
Compute dimensionality reduction (PCA, UMAP), clustering, and neighbor graphs.
Args:
data_id: Dataset ID
params: Embedding parameters (PCA, UMAP, clustering, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | ||
| data_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data_id | Yes | |
| skipped | Yes | |
| computed | Yes | |
| warnings | No | Non-fatal conditions that may affect result interpretation. |
| n_clusters | No | |
| pca_variance_ratio | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so there is no contradiction. However, the description adds no behavioral context beyond the annotation—it does not mention overwriting existing results, storing outputs in the dataset, or dependencies like UMAP requiring neighbors.
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?
Two concise sentences with the core operations front-loaded. No filler or redundant content.
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 complex nested params object and destructive behavior, the description is only a brief headline. It omits parameter dependencies, side effects, and usage context, leaving the agent under-informed for such a configurable 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?
Top-level schema coverage is 0%, and the description only provides one-line glosses for data_id and params. The rich descriptions live inside the nested EmbeddingParameters schema, which the description does not surface or summarize effectively.
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 opens with 'Compute dimensionality reduction (PCA, UMAP), clustering, and neighbor graphs,' which uses a specific verb and names concrete resources. It clearly distinguishes this from sibling tools focused on trajectory or spatial analysis.
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?
There is no guidance on when to use this tool versus siblings like analyze_trajectory_data or preprocess_data. The description lists operations but does not mention prerequisites, typical use cases, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deconvolve_dataADestructive
Deconvolve spatial spots to estimate cell type proportions.
Args:
data_id: Dataset ID
params: Required - method, cell_type_key, reference_data_id. See DeconvolutionParameters for all methods and options.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes | ||
| data_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| method | Yes | |
| data_id | Yes | |
| n_spots | No | |
| warnings | No | Non-fatal conditions that may affect result interpretation. |
| cell_types | Yes | |
| genes_used | No | |
| n_cell_types | Yes | |
| proportions_key | Yes | |
| dominant_type_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is externally known. However, the description adds no behavioral transparency beyond the basic operation—it does not mention overwriting previous results, requiring pre-loaded reference data, compute time, or other runtime effects.
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 compact and well-structured: one sentence of purpose, one sentence of parameter pointers. It is front-loaded with the core purpose and avoids unnecessary elaboration, making every sentence earn its place.
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 high complexity (8 deconvolution methods and many method-specific parameters), the description is minimal but not fatally incomplete because the schema and annotations carry substantial detail. Still, it lacks guidance on method selection, data prerequisites, or expected outcomes, leaving the agent to rely heavily on structured fields.
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?
The description compensates for the 0% schema coverage by explicitly naming the effectively required trio: method, cell_type_key, and reference_data_id. This goes beyond the schema, which only marks cell_type_key as required. However, it does not explain the meaning of each parameter or how to choose methods, deferring entirely to DeconvolutionParameters.
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 starts with the specific action verb 'Deconvolve' on 'spatial spots' and clearly states the outcome: 'estimate cell type proportions.' This uniquely distinguishes the tool from siblings like analyze_spatial_statistics or identify_spatial_domains, which have different analytical goals.
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 implies usage when cell type proportion estimates are needed, but it provides no explicit when-to-use/when-not-to-use guidance or alternatives among sibling tools. The only additional guidance is a list of required parameters, which is more about invocation than usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_dataADestructiveIdempotent
Export dataset to disk for external script access.
Args:
data_id: Dataset ID to export
path: Custom path (default: ~/.chatspatial/active/{data_id}.h5ad)
Returns:
Absolute path where data was exported
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| data_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false, destructiveHint=true, and idempotentHint=true, so the agent knows it's a non-read-only, possibly destructive, idempotent operation. The description adds value by specifying the default export path and the return value (absolute path). However, it does not elaborate on what 'destructive' means (e.g., overwriting existing files), which would enhance transparency.
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 concise and well-structured: a one-sentence summary, followed by an Args list and Returns line. Every line is informative, with no filler words or redundant 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 simple export tool with two parameters, the description covers the purpose, parameters, default path, and return format. The output schema is present, so return value details are not fully required in the description. It is complete enough for an agent to use the tool, though it could mention overwrite behavior given the destructive hint.
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?
The schema has no descriptions beyond titles, so the description carries the full burden of explaining parameters. The Args section explains both 'data_id' as the dataset ID and 'path' as the custom path with a default, which adds meaningful semantic context 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?
The description starts with 'Export dataset to disk for external script access', which uses a specific verb (export) and resource (dataset), and clearly states the purpose. It naturally distinguishes itself from sibling tools that analyze, visualize, or preprocess data, as this is the only export 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?
The description clearly states the use case: 'for external script access', which implies when to use it. It does not explicitly mention when not to use it or provide alternatives, but given the distinct purpose among siblings, the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_markersCDestructiveIdempotent
Find differentially expressed genes between groups.
Args:
data_id: Dataset ID
params: Required - group_key and optional method, group1/group2, n_top_genes, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes | ||
| data_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| data_id | Yes | |
| n_genes | Yes | |
| warnings | No | Non-fatal conditions that may affect result interpretation. |
| comparison | Yes | |
| top_genes_by_group | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral details beyond what annotations already specify. It does not mention potential side effects, required permissions, or impact on data, despite annotations indicating destructive and non-idempotent 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 description is concise with only one sentence of purpose and a brief parameter list. It is not bloated, but the 'Args' section is redundant with the schema and could be streamlined.
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 complexity (nested params, multiple optional settings), the description lacks context about prerequisites, return values (though output schema exists), or typical use cases. The output schema is present, so return values are covered, but other contextual information 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?
The description's 'Args' section vaguely lists a few parameters but adds no explanatory value beyond what the schema already provides. Since schema_description_coverage is 0%, the description fails to compensate for the lack of parameter detail, leaving the agent to rely solely on 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?
The description clearly states the tool's purpose: 'Find differentially expressed genes between groups.' This is a specific and unambiguous action, distinguishing it from sibling tools like compare_conditions or compute_embeddings.
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 no guidance on when to use this tool versus alternatives, prerequisites, or typical scenarios. It only states the action without context, leaving the agent to infer usage from the parameter names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_spatial_genesCDestructiveIdempotent
Identify spatially variable genes.
Args:
data_id: Dataset ID
params: Spatial variable gene parameters (method, n_top_genes, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | ||
| data_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| method | Yes | |
| data_id | Yes | |
| warnings | No | Non-fatal conditions that may affect result interpretation. |
| results_key | Yes | |
| spatial_genes | Yes | |
| n_genes_analyzed | Yes | |
| n_significant_genes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint: true and idempotentHint: true, but the description adds no behavioral detail such as side effects (e.g., modifying the dataset, storing results), runtime implications, or auth requirements. It merely states the action without any disclosure beyond the annotations.
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 extremely concise with no wasted words, and the Args section provides a clear structure. However, it is almost too terse, borderline under-specified. It earns a high score for lack of fluff but loses a point for being overly minimalist.
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?
Despite having an output schema, the description is incomplete for a tool with 18 parameters and destructive behavior. It does not mention expected outputs, potential runtime (e.g., SpatialDE slow), or side effects. Given the complexity, the description is far from sufficient for an agent to fully understand when and how to use it effectively.
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 0% because the description only mentions 'params' generically with examples like 'method, n_top_genes, etc.' It does not clarify parameter formats, defaults, or relationships. The schema itself has rich descriptions, but the description fails to add high-level guidance or summary beyond listing a couple of examples.
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 clearly states the verb 'Identify' and the resource 'spatially variable genes', which is specific and distinguishable from siblings like find_markers and analyze_spatial_statistics. It concisely captures the tool's primary function.
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?
No guidance is provided on when to use this tool versus alternatives. It does not mention conditions like needing spatial transcriptomics data, nor does it differentiate from related analysis tools. The description lacks any contextual hints for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identify_spatial_domainsCDestructive
Identify spatial domains and tissue architecture.
Args:
data_id: Dataset ID
params: Spatial domain parameters (method, n_domains, resolution, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | ||
| data_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| method | Yes | |
| data_id | Yes | |
| warnings | No | Non-fatal conditions that may affect result interpretation. |
| n_domains | Yes | |
| domain_key | Yes | |
| domain_counts | Yes | |
| embeddings_key | No | |
| refined_domain_key | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a mutating operation. The description itself adds no new behavioral context, such as what data is modified or whether results are stored back to the dataset. It does not contradict the annotations, but also does not supplement them.
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 concise and front-loaded with the purpose statement. The 'Args' section is brief but somewhat redundant with the schema. No wasted words, but it could be slightly more informative without losing conciseness.
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?
This is a complex tool with many methods and nested parameters, plus a destructive annotation. The description is too sparse, lacking an overview of supported algorithms, expected runtime, or side effects. The rich schema covers parameter details, but the high-level context is missing for an agent to fully anticipate behavior.
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?
The description lists only 'data_id: Dataset ID' and 'params: Spatial domain parameters (method, n_domains, resolution, etc.)'. It gives minimal meaning and does not explain required status, defaults, or method selection. With top-level schema description coverage at 0%, the description barely compensates, though the nested schema is detailed.
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 'Identify spatial domains and tissue architecture,' which is a specific verb+resource. It clearly distinguishes from siblings such as analyze_spatial_statistics or find_spatial_genes, which target different analyses. However, 'tissue architecture' is a broad term, and the description could more explicitly define the tool's output or scope.
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 no guidance on when to use this tool versus alternatives. It lacks any mention of prerequisites, recommended scenarios, or how it compares to related spatial-analysis sibling tools. No exclusions or alternative tool references are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
integrate_samplesBDestructive
Integrate multiple spatial transcriptomics samples into a unified dataset.
Args:
data_ids: List of dataset IDs to integrate
params: Integration parameters (method, batch_key, n_pcs, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | ||
| data_ids | Yes | Two or more distinct dataset IDs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data_id | Yes | |
| n_cells | Yes | |
| warnings | No | Non-fatal conditions that may affect result interpretation. |
| batch_key | Yes | |
| n_samples | Yes | |
| embedding_key | No | |
| integration_method | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation destructiveHint: true signals the operation may alter or destroy data, but the description adds no context about what gets destroyed (e.g., whether original samples are modified, whether integration is reversible). While there's no annotation contradiction, the description misses the opportunity to disclose side effects, GPU/resource usage, or runtime expectations, which are especially important given the destructive hint.
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 reasonably concise but wastes space on an 'Args:' block that largely duplicates schema information. A more streamlined version could have eliminated the redundant parameter list and focused on the tool's outcome, edge cases, or side effects. Still, it's not overly verbose.
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 destructiveHint and complex parameter set, the description is incomplete. It doesn't explain output format (or if there is one), failure modes (e.g., what if data_ids has duplicates or incompatible datasets), or the impact of integration (e.g., does it return a new object, modify in place, or write to disk?). The presence of an output schema reduces the need to describe return values but doesn't excuse the lack of side-effect disclosure.
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?
The description mentions 'method, batch_key, n_pcs' which are already well-documented in the schema with defaults and descriptions. The description adds marginal value by signaling these are the key parameters but doesn't explain their semantics or interaction. With 50% schema coverage (data_ids and params), the description partially compensates but doesn't fully close the gap.
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 uniquely identifies the tool's purpose with a specific verb and resource: 'Integrate multiple spatial transcriptomics samples into a unified dataset.' It clearly differentiates from sibling tools focused on loading, preprocessing, or visualization since none of them imply data merging/integration at scale.
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 context that this tool is for integrating multiple samples, implying it's for batch processing scenarios. However, it doesn't explicitly state alternatives or exclusion criteria like 'for a single sample, use load_data.' The need for 2+ samples is implied by the schema's minItems but not spelled out in prose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_dataA
Load spatial transcriptomics data with comprehensive metadata profile.
Args:
data_path: Path to data file or directory
data_type: 'visium', 'xenium', 'slide_seq', 'merfish', 'seqfish', or 'generic'
name: Optional dataset name
Returns:
SpatialDataset with cell/gene counts and metadata profiles
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| data_path | Yes | ||
| data_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| n_cells | No | |
| n_genes | No | |
| uns_keys | No | |
| data_type | Yes | |
| obsm_keys | No | |
| description | No | |
| obs_columns | No | |
| var_columns | No | |
| top_expressed_genes | No | |
| tissue_image_available | No | |
| top_highly_variable_genes | No | |
| spatial_coordinates_available | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the safety profile is clear. The description adds that loading returns a SpatialDataset with cell/gene counts and metadata profiles, but does not disclose additional side effects or external access behavior beyond what annotations imply.
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 Args and Returns sections, providing all necessary information in a compact and easily scannable format. No redundant or filler content.
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 output schema and annotations, the description covers the essential aspects: loading data, supported data types, and return type. It doesn't address edge cases like error handling or file format details, but it is sufficient for a data loading 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?
The description's Args block explains all three parameters, including allowed values for data_type, which compensates for the schema's empty parameter descriptions (0% coverage). This adds meaningful context beyond the raw 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?
The description uses a specific verb ('Load') and names the resource ('spatial transcriptomics data'), making it clear what the tool does. It is distinct from sibling tools like reload_data and preprocess_data, and the Args section further specifies data types and behaviors.
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 implies this is the entry point for loading spatial data but does not explicitly state when to use it over reload_data or other alternatives. The data_type enum provides some context, but there is no when-to-use/when-not-to-use guidance or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preprocess_dataADestructive
Run QC, filtering, normalization, and highly variable gene selection.
This tool does not compute PCA, UMAP, clustering, or neighbor graphs. Run
compute_embeddings() afterward when downstream tools require those artifacts.
Args:
data_id: Dataset ID
params: Preprocessing parameters (all have sensible defaults)
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | ||
| data_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| n_hvgs | Yes | |
| data_id | Yes | |
| n_cells | Yes | |
| n_genes | Yes | |
| clusters | Yes | Clusters computed during preprocessing. This is zero because clustering is performed by compute_embeddings. |
| warnings | No | Non-fatal conditions that may affect result interpretation. |
| qc_metrics | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, but the description does not elaborate on what is destroyed or modified (e.g., whether it overwrites existing data, irreversibility, or side effects). The only behavioral note is a negative scope (not computing embeddings), which is more purpose-related than a behavioral disclosure. With a destructive hint, the description should warn about data overwrite or similar consequences.
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 concise and well-structured: it opens with the primary purpose, then clarifies scope limits, and ends with a compact Args section. Every sentence adds value without redundancy, making it easy for an agent to quickly grasp the tool's core function.
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 complexity (many parameters, destructive behavior) and the lack of output schema details, the description is somewhat minimal. It covers purpose and the boundary with compute_embeddings, but it omits prerequisites (e.g., data must already be loaded), side effects of the destructive operation, and what the function returns. This is adequate but with clear gaps.
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?
The input schema itself provides detailed descriptions for each parameter, so the baseline is 3. The description adds only minimal value by saying 'all have sensible defaults,' which helps convey that params can be omitted, but it does not explain any parameter semantics beyond that. The schema carries the heavy lifting for parameter understanding.
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 clearly states the tool's function with a specific verb and resource: 'Run QC, filtering, normalization, and highly variable gene selection.' It also explicitly differentiates itself from a sibling tool by stating it does not compute PCA, UMAP, clustering, or neighbor graphs, and directs users to compute_embeddings() when those artifacts are needed.
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 context by stating that compute_embeddings() should be run afterward when downstream tools require those artifacts. This implies the tool's role in the analysis pipeline, but it does not explicitly mention when not to use this tool or list alternative preprocessors, so there is room for improvement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_spatial_dataCDestructive
Register/align spatial transcriptomics data across sections
Args:
source_id: Source dataset ID
target_id: Target dataset ID to align to
params: Registration parameters (method, alignment settings, etc.)
Returns:
Registration result with method, dataset IDs, spot counts, and registered spatial key
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | ||
| source_id | Yes | ||
| target_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| method | Yes | |
| warnings | No | Non-fatal conditions that may affect result interpretation. |
| source_id | Yes | |
| target_id | Yes | |
| n_source_spots | Yes | |
| n_target_spots | Yes | |
| registration_completed | No | |
| spatial_key_registered | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, but the description does not disclose what side effects occur, such as modifying datasets, overwriting existing spatial keys, or requiring GPU resources. The return value mentions a 'registered spatial key' but does not explain whether it alters the input data. Since destructive behavior is likely, the description should clarify the nature of these changes, but it remains silent.
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 concise and uses a clear structured format with Args and Returns sections. It avoids unnecessary verbiage and conveys the core purpose in two lines. It could be slightly more informative, but the structure is efficient and scannable, earning a high score.
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 complexity (nested parameters, two algorithms with distinct behaviors) and destructive hint, the description is incomplete. It does not mention prerequisites like loaded data, differences between method options ('paste' vs 'stalign'), or potential side effects. While an output schema exists, the description still needs to provide usage context and behavioral expectations, which it largely omits.
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 0%, so the description must compensate, but it provides only minimal information: source_id, target_id, and a vague 'params: Registration parameters (method, alignment settings, etc.)'. Source and target IDs are self-explanatory, but the nested params object contains many fields (method, stalign_a, paste_alpha, etc.) with detailed schema descriptions that are not reflected in the tool description. The agent gets insufficient guidance on parameter selection or meaning beyond the raw 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?
The description clearly states the tool's function: 'Register/align spatial transcriptomics data across sections.' This specifies a verb (register/align), resource (spatial transcriptomics data), and scope (across sections), which helps distinguish it from generic analysis tools. However, it does not explicitly differentiate from sibling tools like integrate_samples, so it falls slightly short of a perfect score.
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 no explicit guidance on when to use this tool versus alternatives. It only describes the action and parameters, with no mention of prerequisites, exclusions, or when registration is appropriate. Usage must be inferred entirely from the tool name and general context, leaving the agent without clear direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reload_dataADestructiveIdempotent
Reload dataset from disk after external script modifications.
Args:
data_id: Dataset ID to reload (must exist in MCP memory)
path: Custom path (default: ~/.chatspatial/active/{data_id}.h5ad)
Returns:
Summary of reloaded dataset
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| data_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive and idempotent hints; description adds prerequisite (must exist in MCP memory) and default path behavior. No contradiction; adds useful 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?
Compact with Args/Returns sections; every sentence provides necessary detail, no redundancy.
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?
Covers purpose, parameters, return, and prerequisite. With output schema and annotations present, description is sufficient, though it could explicitly state the destructive overwrite behavior.
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 has no descriptions (0% coverage); description explains both data_id (must exist in memory) and path (custom path with default), fully compensating.
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?
Clearly states 'Reload dataset from disk after external script modifications' - a specific verb, resource, and context. Distinguishes from load_data by emphasizing reloading after modifications.
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?
Implies usage after external script modifications, which is a clear context, but doesn't explicitly name alternatives or exclusions. Provides enough to know when to apply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
visualize_dataBDestructive
Visualize spatial transcriptomics data. Set plot_type and subtype in params; see VisualizationParameters schema for all options.
Args:
data_id: Dataset ID
params: Visualization parameters (plot_type, subtype, genes, output_format, dpi, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | ||
| data_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations flag destructiveHint=true and readOnlyHint=false, so this tool may have side effects, but the description only mentions visualization and parameters. It does not disclose overwriting behavior, file side effects, or any other consequences. This is not a direct contradiction, but the description misses important 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?
The description is short and front-loaded with the purpose, followed by a pointer to the schema. The Args block is mostly redundant with the schema but remains concise and does not significantly bloat the description.
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 very large VisualizationParameters schema, the pointer to that schema is helpful, and the output schema covers return values. However, the description lacks workflow context, side-effect awareness, and guidance on how visualization relates to upstream analysis steps. It is minimally viable but has clear gaps.
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?
The schema itself is highly detailed with property descriptions, so the description does not need to duplicate that information. It usefully highlights plot_type and subtype as primary controls and points to the VisualizationParameters schema. However, the example 'genes' does not exactly match the schema property 'feature', adding slight ambiguity.
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 begins with a specific verb and resource: 'Visualize spatial transcriptomics data.' This clearly distinguishes it from sibling tools like load_data, preprocess_data, and find_markers. The added instruction to set plot_type and subtype further scopes the tool's 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 description tells users to set plot_type and subtype and reference the schema, but it does not explain when to use this tool versus alternatives, prerequisites, or when not to use it. No exclusions or alternative tool references are provided.
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. Dates show when Glama detected each change.
8 tool updates
v1.5.3- Changed
analyze_cell_communication1 field changed- changed
Input schema / $defs / CellCommunicationParameters / properties / method / defaultPrevious value: -"fastccc"New value: +"liana"
- Changed
analyze_enrichment4 fields changed- added
Output schema / properties / n_significant / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - added
Output schema / properties / n_significant / defaultAdded value: +null - removed
Output schema / properties / n_significant / typeRemoved value: -"integer" - changed
Output schema / requiredPrevious value: -[ - "method", - "n_gene_sets", - "n_significant", - "top_gene_sets", - "top_depleted_sets" -]New value: +[ + "method", + "n_gene_sets", + "top_gene_sets", + "top_depleted_sets" +]
- Changed
analyze_spatial_statistics3 fields changed- added
Output schema / properties / n_significant / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - changed
Output schema / properties / n_significant / defaultPrevious value: -0New value: +null - removed
Output schema / properties / n_significant / typeRemoved value: -"integer"
- Changed
analyze_trajectory_data1 field changed- added
Input schema / $defs / TrajectoryParameters / properties / cellrank_stability_thresholdAdded value: +{ + "default": 0.96, + "description": "Minimum macrostate stability for a state to count as terminal (CellRank only). Lower it when no macrostate is stable enough; otherwise the run falls back to macrostate-based pseudotime.", + "exclusiveMinimum": 0, + "maximum": 1, + "title": "Cellrank Stability Threshold", + "type": "number" +}
- Changed
find_markers3 fields changed- changed
Output schema / descriptionPrevious value: -"Result of differential expression analysis\n\nNote on serialization:\n For consistency with other result models, the statistics dict is excluded\n from JSON serialization. Key summary info is in explicit fields.\n\n Fields included in MCP response:\n - data_id, comparison (basic info)\n - n_genes (count)\n - top_genes (top differentially expressed genes)\n\n Fields excluded from MCP response:\n - statistics (detailed DE metrics per group)"New value: +"Result of differential expression analysis\n\nNote on serialization:\n For consistency with other result models, the statistics dict is excluded\n from JSON serialization. Key summary info is in explicit fields.\n\n Fields included in MCP response:\n - data_id, comparison (basic info)\n - n_genes (count of distinct genes returned)\n - top_genes_by_group (top genes keyed by the group they mark)\n\n Fields excluded from MCP response:\n - statistics (detailed DE metrics per group)\n\n Markers are keyed by group because a flat list cannot say which group a\n gene marks. One-vs-rest runs compare every group at once, so a flat list\n would silently collapse to whichever group happened to come first." - removed
Output schema / properties / top_genesRemoved value: -{ - "items": { - "type": "string" - }, - "title": "Top Genes", - "type": "array" -} - added
Output schema / properties / top_genes_by_groupAdded value: +{ + "additionalProperties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "title": "Top Genes By Group", + "type": "object" +}
- Changed
find_spatial_genes2 fields changed- added
Input schema / $defs / SpatialVariableGenesParameters / properties / max_genes_testedAdded value: +{ + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 50000, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Cap on how many genes are tested, applied after the mitochondrial/ribosomal/HVG filters by keeping the highest-expressed genes. None = test everything that passes the filters. Use to bound runtime on slow backends (SpatialDE benchmarks at ~10 min per 14,000 genes). This limits the input; n_top_genes limits the output.", + "title": "Max Genes Tested" +} - changed
Input schema / $defs / SpatialVariableGenesParameters / properties / n_top_genes / descriptionPrevious value: -"Top spatial variable genes to return. None = all significant."New value: +"Top spatial variable genes to return, ranked by effect size where the backend reports one. None = all significant. This limits the output; use max_genes_tested to limit how many genes are tested."
- Changed
integrate_samples4 fields changed- added
Output schema / properties / batch_keyAdded value: +{ + "title": "Batch Key", + "type": "string" +} - added
Output schema / properties / embedding_keyAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Embedding Key" +} - added
Output schema / properties / n_cellsAdded value: +{ + "minimum": 0, + "title": "N Cells", + "type": "integer" +} - changed
Output schema / requiredPrevious value: -[ - "data_id", - "n_samples", - "integration_method" -]New value: +[ + "data_id", + "n_samples", + "integration_method", + "n_cells", + "batch_key" +]
- Changed
visualize_data3 fields changed- added
Input schema / $defs / VisualizationParameters / properties / colormap / descriptionAdded value: +"Colormap for continuous values. Categorical features automatically use a qualitative palette; set a qualitative palette such as 'tab20' to override that selection." - changed
Input schema / $defs / VisualizationParameters / properties / subplot_wspace / defaultPrevious value: -0New value: +0.3 - changed
Input schema / $defs / VisualizationParameters / properties / subplot_wspace / descriptionPrevious value: -"Horizontal subplot spacing. Lower for tighter, higher for looser."New value: +"Horizontal subplot spacing as a fraction of axis width. The default leaves room for y-axis tick labels; lower it for tighter panels once axes are hidden."
20 tool updates
v1.3.2- Changed
analyze_cell_communication7 fields changed- added
Input schema / $defs / CellCommunicationParameters / additionalPropertiesAdded value: +false - changed
Input schema / $defs / CellCommunicationParameters / properties / cellphonedb_debug_seed / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / $defs / CellCommunicationParameters / properties / cellphonedb_debug_seed / descriptionAdded value: +"Optional CellPhoneDB testing seed. Enabling it forces single-threaded permutations because the upstream seed contract is single-thread only." - added
Input schema / additionalPropertiesAdded value: +false - added
Output schema / additionalPropertiesAdded value: +false - removed
Output schema / properties / statisticsRemoved value: -{ - "additionalProperties": true, - "title": "Statistics", - "type": "object" -} - added
Output schema / properties / warningsAdded value: +{ + "description": "Non-fatal conditions that may affect result interpretation.", + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +}
- Changed
analyze_cnv6 fields changed- added
Input schema / $defs / CNVParameters / additionalPropertiesAdded value: +false - changed
Input schema / $defs / CNVParameters / properties / numbat_genome / enumPrevious value: -[ - "hg38", - "hg19", - "mm10", - "mm39" -]New value: +[ + "hg38", + "hg19", + "mm10" +] - added
Input schema / additionalPropertiesAdded value: +false - added
Output schema / additionalPropertiesAdded value: +false - removed
Output schema / properties / statisticsRemoved value: -{ - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Statistics" -} - added
Output schema / properties / warningsAdded value: +{ + "description": "Non-fatal conditions that may affect result interpretation.", + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +}
- Changed
analyze_enrichment8 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Output schema / additionalPropertiesAdded value: +false - removed
Output schema / properties / adjusted_pvaluesRemoved value: -{ - "anyOf": [ - { - "additionalProperties": { - "type": "number" - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Adjusted Pvalues" -} - removed
Output schema / properties / enrichment_scoresRemoved value: -{ - "additionalProperties": { - "type": "number" - }, - "title": "Enrichment Scores", - "type": "object" -} - removed
Output schema / properties / gene_set_statisticsRemoved value: -{ - "additionalProperties": { - "additionalProperties": true, - "type": "object" - }, - "title": "Gene Set Statistics", - "type": "object" -} - removed
Output schema / properties / pvaluesRemoved value: -{ - "anyOf": [ - { - "additionalProperties": { - "type": "number" - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Pvalues" -} - removed
Output schema / properties / spatial_metricsRemoved value: -{ - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Spatial Metrics" -} - added
Output schema / properties / warningsAdded value: +{ + "description": "Non-fatal conditions that may affect result interpretation.", + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +}
- Changed
analyze_spatial_statistics5 fields changed- added
Input schema / $defs / SpatialStatisticsParameters / additionalPropertiesAdded value: +false - added
Input schema / additionalPropertiesAdded value: +false - added
Output schema / additionalPropertiesAdded value: +false - removed
Output schema / properties / statisticsRemoved value: -{ - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Statistics" -} - added
Output schema / properties / warningsAdded value: +{ + "description": "Non-fatal conditions that may affect result interpretation.", + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +}
- Changed
analyze_trajectory_data4 fields changed- added
Input schema / $defs / TrajectoryParameters / additionalPropertiesAdded value: +false - added
Input schema / additionalPropertiesAdded value: +false - added
Output schema / additionalPropertiesAdded value: +false - added
Output schema / properties / warningsAdded value: +{ + "description": "Non-fatal conditions that may affect result interpretation.", + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +}
- Changed
analyze_velocity_data10 fields changed- added
Input schema / $defs / RNAVelocityParameters / properties / velovi_dropout_rate / exclusiveMaximumAdded value: +1 - added
Input schema / $defs / RNAVelocityParameters / properties / velovi_dropout_rate / minimumAdded value: +0 - added
Input schema / $defs / RNAVelocityParameters / properties / velovi_learning_rate / exclusiveMinimumAdded value: +0 - added
Input schema / $defs / RNAVelocityParameters / properties / velovi_n_epochs / exclusiveMinimumAdded value: +0 - added
Input schema / $defs / RNAVelocityParameters / properties / velovi_n_hidden / exclusiveMinimumAdded value: +0 - added
Input schema / $defs / RNAVelocityParameters / properties / velovi_n_latent / exclusiveMinimumAdded value: +0 - added
Input schema / $defs / RNAVelocityParameters / properties / velovi_n_layers / exclusiveMinimumAdded value: +0 - added
Input schema / additionalPropertiesAdded value: +false - added
Output schema / additionalPropertiesAdded value: +false - added
Output schema / properties / warningsAdded value: +{ + "description": "Non-fatal conditions that may affect result interpretation.", + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +}
- Changed
annotate_cell_types4 fields changed- added
Input schema / $defs / AnnotationParameters / additionalPropertiesAdded value: +false - added
Input schema / additionalPropertiesAdded value: +false - added
Output schema / additionalPropertiesAdded value: +false - added
Output schema / properties / warningsAdded value: +{ + "description": "Non-fatal conditions that may affect result interpretation.", + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +}
- Changed
compare_conditions8 fields changed- added
Input schema / $defs / ConditionComparisonParameters / additionalPropertiesAdded value: +false - added
Input schema / additionalPropertiesAdded value: +false - added
Output schema / $defs / CellTypeComparisonResult / additionalPropertiesAdded value: +false - removed
Output schema / $defs / CellTypeComparisonResult / properties / all_de_genesRemoved value: -{ - "items": { - "$ref": "#/$defs/DEGene" - }, - "title": "All De Genes", - "type": "array" -} - added
Output schema / $defs / DEGene / additionalPropertiesAdded value: +false - added
Output schema / additionalPropertiesAdded value: +false - changed
Output schema / properties / statistics / additionalPropertiesPrevious value: -trueNew value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] +} - added
Output schema / properties / warningsAdded value: +{ + "description": "Non-fatal conditions that may affect result interpretation.", + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +}
- Changed
compute_embeddings7 fields changed- added
Input schema / $defs / EmbeddingParameters / additionalPropertiesAdded value: +false - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / additionalPropertiesPrevious value: -trueNew value: +false - added
Output schema / descriptionAdded value: +"Result of dimensionality reduction and clustering computation." - added
Output schema / propertiesAdded value: +{ + "computed": { + "items": { + "type": "string" + }, + "title": "Computed", + "type": "array" + }, + "data_id": { + "title": "Data Id", + "type": "string" + }, + "n_clusters": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "N Clusters" + }, + "pca_variance_ratio": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Pca Variance Ratio" + }, + "skipped": { + "items": { + "type": "string" + }, + "title": "Skipped", + "type": "array" + }, + "warnings": { + "description": "Non-fatal conditions that may affect result interpretation.", + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" + } +} - added
Output schema / requiredAdded value: +[ + "data_id", + "computed", + "skipped" +] - changed
Output schema / titlePrevious value: -"compute_embeddingsDictOutput"New value: +"EmbeddingResult"
- Changed
deconvolve_data25 fields changed- added
Input schema / $defs / DeconvolutionParameters / additionalPropertiesAdded value: +false - removed
Input schema / $defs / DeconvolutionParameters / properties / cell2location_early_stopping_threshold / exclusiveMinimumRemoved value: -0 - added
Input schema / $defs / DeconvolutionParameters / properties / cell2location_early_stopping_threshold / minimumAdded value: +0 - added
Input schema / $defs / DeconvolutionParameters / properties / cell2location_gene_filter_cell_count_cutoff / minimumAdded value: +0 - added
Input schema / $defs / DeconvolutionParameters / properties / cell2location_gene_filter_cell_percentage_cutoff2 / maximumAdded value: +1 - added
Input schema / $defs / DeconvolutionParameters / properties / cell2location_gene_filter_cell_percentage_cutoff2 / minimumAdded value: +0 - added
Input schema / $defs / DeconvolutionParameters / properties / cell2location_gene_filter_nonz_mean_cutoff / minimumAdded value: +0 - added
Input schema / $defs / DeconvolutionParameters / properties / destvi_dropout_rate / exclusiveMaximumAdded value: +1 - added
Input schema / $defs / DeconvolutionParameters / properties / destvi_dropout_rate / minimumAdded value: +0 - added
Input schema / $defs / DeconvolutionParameters / properties / destvi_learning_rate / exclusiveMinimumAdded value: +0 - added
Input schema / $defs / DeconvolutionParameters / properties / destvi_n_hidden / exclusiveMinimumAdded value: +0 - added
Input schema / $defs / DeconvolutionParameters / properties / destvi_n_latent / exclusiveMinimumAdded value: +0 - added
Input schema / $defs / DeconvolutionParameters / properties / destvi_n_layers / exclusiveMinimumAdded value: +0 - added
Input schema / $defs / DeconvolutionParameters / properties / rctd_backendAdded value: +{ + "default": "r", + "description": "RCTD implementation. 'r' preserves the spacexr backend; 'python' uses rctd-py.", + "enum": [ + "r", + "python" + ], + "title": "Rctd Backend", + "type": "string" +} - added
Input schema / $defs / DeconvolutionParameters / properties / rctd_batch_sizeAdded value: +{ + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "const": "auto", + "type": "string" + } + ], + "default": "auto", + "description": "Spot batch size for the rctd-py backend, or 'auto'.", + "title": "Rctd Batch Size" +} - added
Input schema / $defs / DeconvolutionParameters / properties / rctd_deviceAdded value: +{ + "default": "auto", + "description": "Compute device for the rctd-py backend. Ignored by the R backend.", + "enum": [ + "auto", + "cpu", + "cuda" + ], + "title": "Rctd Device", + "type": "string" +} - added
Input schema / $defs / DeconvolutionParameters / properties / rctd_dtypeAdded value: +{ + "default": "float64", + "description": "Numerical precision for the rctd-py backend.", + "enum": [ + "float64", + "float32" + ], + "title": "Rctd Dtype", + "type": "string" +} - added
Input schema / $defs / DeconvolutionParameters / properties / rctd_sigma_overrideAdded value: +{ + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional fixed sigma for rctd-py. None estimates sigma from the data.", + "title": "Rctd Sigma Override" +} - added
Input schema / $defs / DeconvolutionParameters / properties / stereoscope_batch_size / exclusiveMinimumAdded value: +0 - added
Input schema / $defs / DeconvolutionParameters / properties / stereoscope_learning_rate / exclusiveMinimumAdded value: +0 - added
Input schema / $defs / DeconvolutionParameters / properties / stereoscope_n_epochs / exclusiveMinimumAdded value: +0 - added
Input schema / additionalPropertiesAdded value: +false - added
Output schema / additionalPropertiesAdded value: +false - removed
Output schema / properties / statisticsRemoved value: -{ - "additionalProperties": true, - "title": "Statistics", - "type": "object" -} - added
Output schema / properties / warningsAdded value: +{ + "description": "Non-fatal conditions that may affect result interpretation.", + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +}
- Changed
export_data2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Output schema / additionalPropertiesAdded value: +false
- Changed
find_markers5 fields changed- added
Input schema / $defs / DifferentialExpressionParameters / additionalPropertiesAdded value: +false - added
Input schema / additionalPropertiesAdded value: +false - added
Output schema / additionalPropertiesAdded value: +false - removed
Output schema / properties / statisticsRemoved value: -{ - "additionalProperties": true, - "title": "Statistics", - "type": "object" -} - added
Output schema / properties / warningsAdded value: +{ + "description": "Non-fatal conditions that may affect result interpretation.", + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +}
- Changed
find_spatial_genes10 fields changed- added
Input schema / $defs / SpatialVariableGenesParameters / additionalPropertiesAdded value: +false - added
Input schema / additionalPropertiesAdded value: +false - added
Output schema / additionalPropertiesAdded value: +false - removed
Output schema / properties / flashs_resultsRemoved value: -{ - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Flashs Results" -} - removed
Output schema / properties / gene_statisticsRemoved value: -{ - "additionalProperties": { - "type": "number" - }, - "title": "Gene Statistics", - "type": "object" -} - removed
Output schema / properties / p_valuesRemoved value: -{ - "additionalProperties": { - "type": "number" - }, - "title": "P Values", - "type": "object" -} - removed
Output schema / properties / q_valuesRemoved value: -{ - "additionalProperties": { - "type": "number" - }, - "title": "Q Values", - "type": "object" -} - removed
Output schema / properties / sparkx_resultsRemoved value: -{ - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Sparkx Results" -} - removed
Output schema / properties / spatialde_resultsRemoved value: -{ - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Spatialde Results" -} - added
Output schema / properties / warningsAdded value: +{ + "description": "Non-fatal conditions that may affect result interpretation.", + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +}
- Changed
identify_spatial_domains17 fields changed- added
Input schema / $defs / SpatialDomainParameters / additionalPropertiesAdded value: +false - added
Input schema / $defs / SpatialDomainParameters / properties / aestetik_clustering_methodAdded value: +{ + "default": "kmeans", + "description": "Clustering applied to AESTETIK embeddings. 'kmeans'/'bgm' use n_domains; 'leiden'/'louvain' use resolution.", + "enum": [ + "bgm", + "kmeans", + "louvain", + "leiden" + ], + "title": "Aestetik Clustering Method", + "type": "string" +} - added
Input schema / $defs / SpatialDomainParameters / properties / aestetik_latent_dimAdded value: +{ + "default": 16, + "description": "AESTETIK latent embedding dimension.", + "exclusiveMinimum": 0, + "maximum": 512, + "title": "Aestetik Latent Dim", + "type": "integer" +} - added
Input schema / $defs / SpatialDomainParameters / properties / aestetik_max_epochsAdded value: +{ + "default": 100, + "description": "AESTETIK training epochs.", + "exclusiveMinimum": 0, + "maximum": 10000, + "title": "Aestetik Max Epochs", + "type": "integer" +} - added
Input schema / $defs / SpatialDomainParameters / properties / aestetik_morphology_keyAdded value: +{ + "default": "X_pca_morphology", + "description": "obsm key holding the precomputed per-spot morphology embedding (AESTETIK only).", + "title": "Aestetik Morphology Key", + "type": "string" +} - added
Input schema / $defs / SpatialDomainParameters / properties / aestetik_morphology_weightAdded value: +{ + "default": 1.5, + "description": "Morphology weight in the AESTETIK joint loss.", + "maximum": 3, + "minimum": 0, + "title": "Aestetik Morphology Weight", + "type": "number" +} - added
Input schema / $defs / SpatialDomainParameters / properties / aestetik_random_seedAdded value: +{ + "default": 2023, + "title": "Aestetik Random Seed", + "type": "integer" +} - added
Input schema / $defs / SpatialDomainParameters / properties / aestetik_transcriptomics_keyAdded value: +{ + "default": "X_pca", + "description": "obsm key holding the precomputed expression embedding (AESTETIK only).", + "title": "Aestetik Transcriptomics Key", + "type": "string" +} - added
Input schema / $defs / SpatialDomainParameters / properties / aestetik_window_sizeAdded value: +{ + "default": 3, + "description": "Odd side length of the AESTETIK neighborhood grid.", + "exclusiveMinimum": 0, + "maximum": 15, + "title": "Aestetik Window Size", + "type": "integer" +} - changed
Input schema / $defs / SpatialDomainParameters / properties / method / descriptionPrevious value: -"'spagcn' uses histology. 'banksy' uses spatial feature augmentation. 'stagate'/'graphst' use deep learning."New value: +"'spagcn' uses histology. 'banksy' uses spatial feature augmentation. 'stagate'/'graphst' use deep learning. 'aestetik' fuses precomputed expression and morphology embeddings." - changed
Input schema / $defs / SpatialDomainParameters / properties / method / enumPrevious value: -[ - "spagcn", - "leiden", - "louvain", - "stagate", - "graphst", - "banksy" -]New value: +[ + "spagcn", + "leiden", + "louvain", + "stagate", + "graphst", + "banksy", + "aestetik" +] - changed
Input schema / $defs / SpatialDomainParameters / properties / timeout / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / $defs / SpatialDomainParameters / properties / timeout / descriptionAdded value: +"Maximum backend runtime in seconds. None uses 600 seconds." - added
Input schema / additionalPropertiesAdded value: +false - added
Output schema / additionalPropertiesAdded value: +false - removed
Output schema / properties / statisticsRemoved value: -{ - "additionalProperties": true, - "title": "Statistics", - "type": "object" -} - added
Output schema / properties / warningsAdded value: +{ + "description": "Non-fatal conditions that may affect result interpretation.", + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +}
- Changed
integrate_samples13 fields changed- added
Input schema / $defs / IntegrationParameters / additionalPropertiesAdded value: +false - changed
Input schema / $defs / IntegrationParameters / properties / n_epochs / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / $defs / IntegrationParameters / properties / scvi_dropout_rate / exclusiveMaximumAdded value: +1 - added
Input schema / $defs / IntegrationParameters / properties / scvi_dropout_rate / minimumAdded value: +0 - added
Input schema / $defs / IntegrationParameters / properties / scvi_n_hidden / exclusiveMinimumAdded value: +0 - added
Input schema / $defs / IntegrationParameters / properties / scvi_n_latent / exclusiveMinimumAdded value: +0 - added
Input schema / $defs / IntegrationParameters / properties / scvi_n_layers / exclusiveMinimumAdded value: +0 - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / data_ids / descriptionAdded value: +"Two or more distinct dataset IDs." - added
Input schema / properties / data_ids / minItemsAdded value: +2 - added
Output schema / additionalPropertiesAdded value: +false - added
Output schema / properties / n_samples / minimumAdded value: +2 - added
Output schema / properties / warningsAdded value: +{ + "description": "Non-fatal conditions that may affect result interpretation.", + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +}
- Changed
load_data4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / data_type / enumAdded value: +[ + "visium", + "xenium", + "slide_seq", + "merfish", + "seqfish", + "generic" +] - added
Output schema / $defs / ColumnInfo / additionalPropertiesAdded value: +false - added
Output schema / additionalPropertiesAdded value: +false
- Changed
preprocess_data10 fields changed- added
Input schema / $defs / PreprocessingParameters / additionalPropertiesAdded value: +false - removed
Input schema / $defs / PreprocessingParameters / properties / clustering_keyRemoved value: -{ - "default": "leiden", - "description": "Key name for clustering results in obs.", - "title": "Clustering Key", - "type": "string" -} - removed
Input schema / $defs / PreprocessingParameters / properties / clustering_resolutionRemoved value: -{ - "default": 1, - "description": "Leiden clustering resolution. Higher (1.5-2.0) for more clusters, lower (0.2-0.5) for fewer.", - "exclusiveMinimum": 0.1, - "maximum": 2, - "title": "Clustering Resolution", - "type": "number" -} - removed
Input schema / $defs / PreprocessingParameters / properties / n_neighborsRemoved value: -{ - "default": 15, - "description": "Neighbors for k-NN graph. Larger (20-50) for global structure, smaller (5-10) for local patterns.", - "exclusiveMinimum": 2, - "maximum": 100, - "title": "N Neighbors", - "type": "integer" -} - removed
Input schema / $defs / PreprocessingParameters / properties / n_pcsRemoved value: -{ - "default": 30, - "description": "Number of principal components for PCA.", - "exclusiveMinimum": 0, - "maximum": 100, - "title": "N Pcs", - "type": "integer" -} - added
Input schema / additionalPropertiesAdded value: +false - added
Output schema / additionalPropertiesAdded value: +false - added
Output schema / properties / clusters / descriptionAdded value: +"Clusters computed during preprocessing. This is zero because clustering is performed by compute_embeddings." - changed
Output schema / properties / qc_metrics / anyOfPrevious value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "string" + } + ] + }, + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / warningsAdded value: +{ + "description": "Non-fatal conditions that may affect result interpretation.", + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +}
- Changed
register_spatial_data8 fields changed- added
Input schema / $defs / RegistrationParameters / additionalPropertiesAdded value: +false - added
Input schema / $defs / RegistrationParameters / properties / stalign_image_size / items / exclusiveMinimumAdded value: +0 - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / additionalPropertiesPrevious value: -trueNew value: +false - added
Output schema / descriptionAdded value: +"Result of bilateral spatial-coordinate registration." - added
Output schema / propertiesAdded value: +{ + "method": { + "enum": [ + "paste", + "stalign" + ], + "title": "Method", + "type": "string" + }, + "n_source_spots": { + "minimum": 0, + "title": "N Source Spots", + "type": "integer" + }, + "n_target_spots": { + "minimum": 0, + "title": "N Target Spots", + "type": "integer" + }, + "registration_completed": { + "const": true, + "default": true, + "title": "Registration Completed", + "type": "boolean" + }, + "source_id": { + "title": "Source Id", + "type": "string" + }, + "spatial_key_registered": { + "title": "Spatial Key Registered", + "type": "string" + }, + "target_id": { + "title": "Target Id", + "type": "string" + }, + "warnings": { + "description": "Non-fatal conditions that may affect result interpretation.", + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" + } +} - added
Output schema / requiredAdded value: +[ + "method", + "source_id", + "target_id", + "n_source_spots", + "n_target_spots", + "spatial_key_registered" +] - changed
Output schema / titlePrevious value: -"register_spatial_dataDictOutput"New value: +"SpatialRegistrationResult"
- Changed
reload_data2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Output schema / additionalPropertiesAdded value: +false
- Changed
visualize_data8 fields changed- added
Input schema / $defs / VisualizationParameters / properties / alpha / maximumAdded value: +1 - added
Input schema / $defs / VisualizationParameters / properties / alpha / minimumAdded value: +0 - added
Input schema / $defs / VisualizationParameters / properties / dpi / exclusiveMinimumAdded value: +0 - changed
Input schema / $defs / VisualizationParameters / properties / figure_size / anyOfPrevious value: -[ - { - "items": { - "type": "integer" - }, - "maxItems": 2, - "minItems": 2, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "exclusiveMinimum": 0, + "type": "integer" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } +] - changed
Input schema / $defs / VisualizationParameters / properties / panel_layout / anyOfPrevious value: -[ - { - "items": { - "type": "integer" - }, - "maxItems": 2, - "minItems": 2, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "exclusiveMinimum": 0, + "type": "integer" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } +] - changed
Input schema / $defs / VisualizationParameters / properties / spot_size / anyOfPrevious value: -[ - { - "type": "number" - }, - { - "type": "null" - } -]New value: +[ + { + "exclusiveMinimum": 0, + "type": "number" + }, + { + "type": "null" + } +] - added
Input schema / additionalPropertiesAdded value: +false - added
Output schema / additionalPropertiesAdded value: +false
2 tool updates
v1.2.10- Changed
annotate_cell_types2 fields changed- added
Input schema / $defs / AnnotationParameters / properties / sctype_allow_remoteAdded value: +{ + "default": false, + "description": "Allow scType to load remote R scripts and the default remote marker database for this call.", + "title": "Sctype Allow Remote", + "type": "boolean" +} - added
Input schema / $defs / AnnotationParameters / properties / sctype_allow_runtime_r_installAdded value: +{ + "default": false, + "description": "Allow scType to install missing R packages at runtime for this call.", + "title": "Sctype Allow Runtime R Install", + "type": "boolean" +}
- Changed
deconvolve_data3 fields changed- changed
Input schema / $defs / DeconvolutionParameters / properties / spotlight_n_top_genes / defaultPrevious value: -2000New value: +50 - changed
Input schema / $defs / DeconvolutionParameters / properties / spotlight_n_top_genes / descriptionPrevious value: -"Number of HVGs for deconvolution. SPOTlight only."New value: +"Marker genes per cell type for SPOTlight deconvolution." - changed
Input schema / $defs / DeconvolutionParameters / properties / spotlight_n_top_genes / maximumPrevious value: -5000New value: +500
3 tool updates
v1.2.8- Changed
analyze_enrichment4 fields changed- added
Input schema / properties / params / $refAdded value: +"#/$defs/EnrichmentParameters" - removed
Input schema / properties / params / anyOfRemoved value: -[ - { - "$ref": "#/$defs/EnrichmentParameters" - }, - { - "type": "null" - } -] - removed
Input schema / properties / params / defaultRemoved value: -null - changed
Input schema / requiredPrevious value: -[ - "data_id" -]New value: +[ + "data_id", + "params" +]
- Changed
analyze_spatial_statistics1 field changed- added
Input schema / $defs / SpatialStatisticsParameters / properties / neighborhood_n_permsAdded value: +{ + "default": 100, + "description": "Permutations for neighborhood enrichment. Use 1000+ for publication.", + "exclusiveMinimum": 0, + "maximum": 10000, + "title": "Neighborhood N Perms", + "type": "integer" +}
- Changed
visualize_data1 field changed- changed
Input schema / $defs / VisualizationParameters / properties / subtype / descriptionPrevious value: -"Visualization subtype. Options by plot_type:\n- expression: 'heatmap'|'violin'|'dotplot'|'correlation'\n- deconvolution: 'spatial_multi'|'pie'|'dominant'|'diversity'|'umap'|'imputation'\n- communication: 'dotplot'|'tileplot'|'circle_plot'\n- trajectory: 'pseudotime'|'circular'|'fate_map'|'gene_trends'|'fate_heatmap'|'palantir'\n- velocity: 'stream'|'phase'|'proportions'|'heatmap'|'paga'\n- statistics: 'neighborhood'|'co_occurrence'|'ripley'|'moran'|'centrality'|'getis_ord' (required)\n- enrichment: 'barplot'|'dotplot'\n- cnv: 'heatmap'|'spatial'\n- integration: 'batch'|'cluster'|'highlight'"New value: +"Visualization subtype. Options by plot_type:\n- expression: 'heatmap'|'violin'|'dotplot'|'correlation'\n- deconvolution: 'spatial_multi'|'pie'|'dominant'|'diversity'|'umap'|'imputation'\n- communication: 'spatial'|'dotplot'|'tileplot'|'circle_plot'\n- trajectory: 'pseudotime'|'circular'|'fate_map'|'gene_trends'|'fate_heatmap'|'palantir'\n- velocity: 'stream'|'phase'|'proportions'|'heatmap'|'paga'\n- statistics: 'neighborhood'|'co_occurrence'|'ripley'|'moran'|'centrality'|'getis_ord' (required)\n- enrichment: 'barplot'|'dotplot'\n- cnv: 'heatmap'|'spatial'\n- integration: 'batch'|'cluster'|'highlight'"
20 tool updates
v1.2.7- First observed
analyze_cell_communication - First observed
analyze_cnv - First observed
analyze_enrichment - First observed
analyze_spatial_statistics - First observed
analyze_trajectory_data - First observed
analyze_velocity_data - First observed
annotate_cell_types - First observed
compare_conditions - First observed
compute_embeddings - First observed
deconvolve_data - First observed
export_data - First observed
find_markers - First observed
find_spatial_genes - First observed
identify_spatial_domains - First observed
integrate_samples - First observed
load_data - First observed
preprocess_data - First observed
register_spatial_data - First observed
reload_data - First observed
visualize_data
TDQS
Most tools have distinct purposes, but there are overlapping pairs: compare_conditions vs. find_markers both perform differential expression, and analyze_spatial_statistics vs. find_spatial_genes both address spatial patterns. annotate_cell_types and deconvolve_data could also confuse agents since both assign cell types, though at different resolutions.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., load_data, compute_embeddings, analyze_cell_communication). The use of prefixes like 'analyze_' and 'find_' is consistent and predictable across the tool set.
With 20 tools, the server sits in the 16-25 range, which feels heavy for a single server even though the domain is complex. The count is appropriate for the breadth of spatial transcriptomics analyses, but it is on the upper end and could be streamlined.
The tool set covers the full spatial transcriptomics workflow: data loading and preprocessing, embeddings, clustering, annotation, differential expression, trajectory and velocity, integration, spatial domains, deconvolution, cell communication, enrichment, CNV, and export/reload. No significant gaps are evident for the stated purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
WikiPathways MCP — open community pathway database.
cBioPortal MCP — cancer genomics portal.
Related MCP Servers
- AlicenseCqualityCmaintenanceAn MCP server that enables single-cell RNA sequencing analysis through natural language, supporting data processing, visualization, and analysis tasks without requiring coding knowledge.5212BSD 3-Clause
- FlicenseNot gradedqualityCmaintenanceEnables natural language interface for single-cell RNA-Seq analysis using Liana. Supports reading/writing scRNA-Seq data, cell-cell communication analysis, and visualization through circle plots and dotplots.1-
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables scRNA-Seq analysis through natural language, providing tools for data preprocessing, clustering, and biological visualization. It supports both predefined function execution and a flexible code mode powered by a Jupyter backend for automated single-cell transcriptomics workflows.16BSD 3-Clause
- FlicenseNot gradedqualityCmaintenanceProvides a natural language interface for single-cell RNA-Seq analysis using the decoupleR framework. It enables users to perform biological pathway inference, data clustering, and visualization through MCP-compatible AI clients.4-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/cafferychen777/ChatSpatial'
If you have feedback or need assistance with the MCP directory API, please join our Discord server