Skip to main content
Glama

NeuroGraph

Instrumento científico computacional de neuroinformática: permite consultar, analizar y visualizar redes cerebrales (regiones, tractos, conectividad, literatura, homologías entre especies) a partir de una biblioteca de datos portátil. La IA (Claude u otro modelo) es su intérprete, nunca su motor científico — ver docs/analisis-arquitectura.md para el razonamiento completo y las decisiones tomadas.

Estado del proyecto

Fase 0 — Entorno (hecho). Repositorio, estructura de módulos, base de datos, ontología inicial, sistema de biblioteca SSD y API mínima están esqueletizados y probados.

Fase 1 — Arquitectura (hecho). El frontend (Vite + React + TypeScript + Three.js + D3) renderiza el connectograma y el cerebro 3D, con filtros (red / tipo de conectividad / peso), panel de detalle y codificación visual de nivel de evidencia y dirección (secciones 5.1, 5.3, 24), todo sincronizado entre las dos vistas. El esquema de PostgreSQL está aplicado en la base de datos real y comprobado funcionalmente — ver backend/database/migrations/. Falta: decidir el empaquetado de escritorio (Tauri) cuando haya Rust disponible.

Fase 2 — Biblioteca de datos (en curso). Manifiesto de biblioteca (.neurograph_library.yaml), manifiesto de dataset (dataset.yaml) y escaneo automático de una biblioteca (scan_library_datasets) hechos y probados. Biblioteca real creada en E:\NeuroData (separada del código, tal y como describe docs/portabilidad.md), con tabla libraries en la base de datos (migración 0002) y su alta generada en backend/database/seed/register_library_neurodata.sql. Falta: registrar datasets concretos en la base de datos según se vayan incorporando datos reales.

Fase 3 — Neuroimagen (en curso). Primer atlas real cargado: HCP-MMP1.0 (Glasser et al., 2016) — especie, atlas, 360 regiones corticales y sus 360 coordenadas reales (espacio de referencia explícito: fsLR_32k_S1200_groupavg_midthickness_MSMAll, nunca asumido como MNI/Talairach). El frontend ya las consume de verdad: si docker compose up -d está corriendo, GET /regions las sirve y la vista de desarrollo muestra el aviso verde "DATOS REALES" en vez del amarillo "DATOS SINTÉTICOS" — nunca mezclados en la misma vista. Las 360 regiones ya están clasificadas en las 12 redes funcionales de Cole-Anticevic (voto mayoritario de vértices, confidence y method registrados por región — nunca inventado); el connectograma y el cerebro 3D las colorean por red real en vez de mostrarlas todas del mismo gris. Segundo atlas cortical cargado: Gordon 333 (Gordon et al., 2016, DOI 10.1093/cercor/bhu239) — 333 regiones y sus propias 12 redes (no las de Cole-Anticevic: son dos clasificaciones distintas, aunque coincidan en algún nombre — ver el riesgo anotado en docs/analisis-arquitectura.md). El mismo archivo declaraba 19 estructuras subcorticales sin ningún dato real detrás (comprobado, no asumido); en su lugar se dio de alta la segmentación subcortical real que sí trae el espacio de grayordinates del HCP (19 estructuras: amígdala, hipocampo, tálamo... más cerebelo y tronco del encéfalo) como su propio atlas, citando a quien de verdad la define (Glasser et al., 2013, DOI 10.1016/j.neuroimage.2013.04.127), no a Gordon et al. El color de cada red en la interfaz ya se resuelve por <fuente>.<red> (no solo por el nombre corto): dos redes de atlas distintos con el mismo nombre ("Default", "Visual"...) nunca comparten color sin aviso.

Fase 4 — Conectividad (en curso). Segundo atlas real: Brainnetome (246 regiones, coordenadas volumétricas reales en MNI152). Conectividad estructural real derivada de sus mapas de probabilidad de tractografía (30 135 conexiones, media simetrizada sin umbral — decisión tomada con la usuaria; cada una con evidence_level=indirect explícito, nunca asumido). Nuevo GET /connections y un selector de atlas en el frontend (HCP-MMP1.0 con redes, o Brainnetome con conectividad — nunca los dos a la vez).

Cierre de cabos sueltos de las Fases 3/4: cada atlas ya cargado enlaza ahora de forma estructurada con la publicación que lo define (atlases.study_id), en vez de solo llevar la cita como texto suelto en su nombre — DOI verificados directamente en la web del editor, no adivinados.

Fase 5 — Matemática (en curso). backend/core/graph/ calcula, con NetworkX/NumPy/SciPy: matriz de adyacencia, matriz de grados, Laplaciano (explícito), autovalores/autovectores, embedding espectral, detección de comunidades, modularidad, centralidad (grado/intermediación/autovector), coeficiente de participación, rich-club y caminos mínimos. Desde el 28/08/2026 ya está conectado a datos reales: GET /graph-metrics?atlas_id=... construye el grafo con las regiones y conexiones reales de un atlas (un par con peso exactamente 0 se excluye, nunca cuenta como conexión débil) y devuelve sus métricas. Probado con la conectividad real de Brainnetome (246 nodos, 15 803 aristas, ~3 s): encuentra 3 comunidades y sitúa el tálamo como la estructura más central, coherente con la literatura. De paso se encontró y corrigió un error real en la centralidad de intermediación, que invertía conexiones fuertes y débiles (nunca detectado antes porque las pruebas solo usaban pesos uniformes). Total: 21 pruebas del motor matemático, todas en verde. Gordon 333 no tiene ninguna conexión cargada todavía, así que ahí el endpoint responde pero no aporta nada útil hasta que haya conectividad real que analizar.

Conectividad tracto-región sobre HCP-MMP1.0 (29/08/2026). Yeh FC (2022, Nature Communications, DOI 10.1038/s41467-022-32595-4): probabilidad poblacional (1065 sujetos) de que cada uno de 26 tractos de sustancia blanca nombrados atraviese cada una de las 180 áreas de HCP-MMP1.0, por hemisferio. No es una conexión región-región — se decidió con la usuaria no inferirla — así que el tracto es su propia entidad Tract en el grafo (52 = 26 x 2 hemisferios), con conexiones tracto -> región (9360, sin umbral, incluido el 75,3% en probabilidad exactamente 0.0).

Cerebelo — distribución de redes, sin voto mayoritario único (29/08/2026). El tálamo ya estaba cubierto (Brainnetome + tractos corticotalámicos de Yeh); el cerebelo no tenía ninguna conexión. Sin descargar nada nuevo: el archivo de Cole-Anticevic ya usado para las redes de HCP-MMP1.0 trae también redes reales para el cerebelo (100% de sus 17 853 grayordinates). Forzar un único ganador (como se hace para HCP-MMP1.0) sería engañoso aquí — la red mayoritaria del cerebelo apenas llega al 30% — así que se registra la distribución completa (10 de 12 redes por hemisferio, confianzas que suman 1.0).

Related MCP server: MemoryIQ

Estructura

backend/
├── core/            módulos científicos (neuroimagen, conectoma, grafos,
│                    espectral, evolución, neuropsicología)
├── library/         detección, integridad e indexación de la biblioteca SSD
├── ingestion/       importación de literatura, neuroimagen y datasets
├── ontology/        tipos de entidad y esquema de identificadores
├── database/        modelos SQLAlchemy, migraciones, repositorios
├── api/             API científica (FastAPI) — interfaz real e independiente de IA
├── mcp/             adaptador MCP sobre la API, para modelos de IA
├── ai/              proveedores de IA intercambiables (Claude, OpenAI, local...)
├── visualization/   produce descriptores de escena, no renderiza
├── tests/
└── config/          configuración (YAML + variables de entorno)

frontend/            (pendiente — Tauri + React + Three.js + D3, ver decisión de arquitectura)
docs/
scripts/

Poner en marcha el entorno de desarrollo

1. Base de datos y API (necesita Docker Desktop instalado):

cp .env.example .env             # y edita la contraseña
docker compose up -d

Esto levanta dos contenedores: Postgres (puerto 5432) y la API de NeuroGraph (puerto 8420, backend/Dockerfile) — no hace falta tener Python instalado para esto. Comprobar que responde: curl http://127.0.0.1:8420/health.

La base de datos arranca vacía. Si tienes un volcado (scripts/export_snapshot.ps1), cárgalo; si no, reconstrúyela desde los .sql del repositorio con scripts/rebuild_db_from_sql.sh (orden de carga y lo que no incluye: backend/database/migrations/README.md).

2. Frontend (necesita Node.js instalado):

cd frontend
npm install
npm run dev

Abre la URL que imprima (normalmente http://localhost:5173). Si la API del paso 1 está corriendo y tiene datos, verás el aviso verde "DATOS REALES"; si no, cae automáticamente a datos sintéticos con aviso amarillo — nunca los mezcla.

3. Backend en desarrollo (solo si vas a tocar código Python; para solo usar la aplicación, el paso 1 ya es suficiente):

python -m venv .venv             # desde la raíz del repositorio, NUNCA
                                  # desde dentro de backend/ -- pyproject.toml
                                  # vive en la raíz, no en backend/
source .venv/bin/activate        # En Windows: .venv\Scripts\activate
pip install -e ".[dev]"
pytest

4. Conectar un cliente MCP real (p. ej. Claude Desktop) al servidor de backend/mcp/server.py -- necesita el paso 1 (Postgres arrancado) y el paso 3 (entorno virtual con pip install -e ".[dev]" ya hecho):

Edita %APPDATA%\Claude\claude_desktop_config.json (Windows; en macOS es ~/Library/Application Support/Claude/claude_desktop_config.json) y añade una entrada bajo mcpServers, usando el python.exe del propio entorno virtual (nunca python a secas: así no depende de qué PATH tenga el proceso que lo arranca) y la contraseña real de tu Postgres (la misma que pusiste en .env) por variable de entorno explícita, para no depender de si .env se carga o no:

{
  "mcpServers": {
    "neurograph": {
      "command": "E:\\Neurograph\\.venv\\Scripts\\python.exe",
      "args": ["-m", "backend.mcp.server"],
      "env": {
        "NEUROGRAPH_DATABASE__PASSWORD": "tu-contraseña-real-de-postgres"
      }
    }
  }
}

Guarda, cierra Claude Desktop del todo y vuelve a abrirlo. Si el servidor no aparece, revisa %APPDATA%\Claude\logs\mcp-server-neurograph.log.

Principios que gobiernan el diseño

  • Los datos originales nunca se modifican; toda transformación genera un artefacto derivado con procedencia registrada (sección 3).

  • Conectividad estructural, funcional y efectiva nunca se mezclan (sección 8).

  • Dato observado, inferencia comparativa e hipótesis de homología se distinguen siempre explícitamente (sección 11, sección 24).

  • La IA nunca inventa conexiones, homologías ni evidencia (sección 1).

Ver docs/principios.md para la lista completa de principios vigentes y docs/analisis-arquitectura.md para el razonamiento de cada decisión.

Licencia

NeuroGraph (código, documentación, esquema de base de datos y activos visuales) es de Juan Boza ("Proxy") — Instituto Dédalus, y se distribuye bajo Creative Commons Reconocimiento-CompartirIgual 4.0 Internacional (CC BY-SA 4.0) — ver el archivo LICENSE para el texto completo y el resumen en lenguaje llano.

Esto NO cubre los datos científicos de terceros que NeuroGraph consulta o carga (atlas, tractografía, estudios publicados) — cada uno conserva la licencia/términos de su propia fuente original, citada en docs/analisis-arquitectura.md junto a cada dataset.

Available Tools

12 tools
calculate_laplacianA

Espectro del Laplaciano del grafo real de un atlas (autovalores, ascendente): el segundo autovalor, en un grafo conexo, es su "conectividad algebraica" -- cuánto le cuesta desconectarse. connection_type nunca mezcla structural/functional/effective (sección 8); min_weight es un umbral explícito que decide quien llama, no uno aplicado de antemano al cargar los datos.

ParametersJSON Schema
NameRequiredDescriptionDefault
atlas_idYes
min_weightNo
connection_typeNostructural

Output Schema

ParametersJSON Schema
NameRequiredDescription
n_edgesYes
n_nodesYes
atlas_idYes
min_weightYes
connection_typeYes
laplacian_eigenvaluesYes

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden, and it delivers: it discloses ascending eigenvalue ordering, the meaning of the second eigenvalue (algebraic connectivity), that connection_type never mixes structural/functional/effective modalities, and that min_weight is not pre-applied when loading data. These are genuine operational traits beyond the schema, though it omits error behavior and output format details.

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

Conciseness4/5

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

Two sentences with minimal filler; the core mathematical purpose is front-loaded and the parameter clarifications are compact. The algebraic-connectivity aside is mildly tangential but adds interpretive value without bloating the text.

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

Completeness3/5

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

An output schema exists to handle return values, and the description covers the mathematical semantics of the tool plus two key parameters. However, atlas_id is unaddressed, no guidance distinguishes this tool from calculate_spectrum, and the absence of annotations leaves the safety/side-effect profile incomplete. For a medium-complexity tool this is adequate but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and property titles are bare ('Atlas Id', 'Min Weight', 'Connection Type'), so the description must compensate. It adds real semantics for connection_type (never mixes modalities) and min_weight (explicit call-side threshold, not a data-loading filter), but leaves atlas_id unexplained.

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

Purpose4/5

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

The description identifies a specific artifact: the spectrum of the Laplacian of a real graph of an atlas, with precise mathematical characterization (eigenvalues ascending; second eigenvalue as algebraic connectivity). The verb and resource are clear, but it does not explicitly differentiate itself from the overlapping sibling calculate_spectrum.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 alternatives such as calculate_spectrum, nor any prerequisites, exclusions, or conditions selecting this tool. The remark that min_weight 'decides who calls' hints at caller eligibility but operates only at parameter level and does not constitute tool-selection guidance.

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

calculate_spectrumB

Embedding espectral 2D del grafo real de un atlas (Laplacian eigenmaps): una posición por región derivada de la estructura del grafo, útil para ver agrupamientos sin depender de la posición anatómica. None por región cuando el grafo tiene menos de 4 nodos (nunca un embedding inventado para un grafo demasiado pequeño).

ParametersJSON Schema
NameRequiredDescriptionDefault
atlas_idYes
min_weightNo
connection_typeNostructural

Output Schema

ParametersJSON Schema
NameRequiredDescription
n_nodesYes
atlas_idYes
min_weightYes
connection_typeYes
spectral_embedding_2dYes

TDQS

B3.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It meaningfully discloses an edge case: returns None per region when the graph has fewer than 4 nodes, and emphasizes that it never returns an invented embedding for a too-small graph. This is valuable beyond what the schema conveys, though it does not discuss other behavioral aspects like read-only status or parameter effects.

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

Conciseness4/5

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

The description is reasonably concise, front-loading the core purpose and then covering the small-graph edge case. The phrase 'nunca un embedding inventado para un grafo demasiado pequeño' is slightly repetitive after the None explanation, but overall every sentence contributes useful information.

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

Completeness3/5

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

The description explains the output shape and an important null-behavior, and an output schema exists so return values do not need further elaboration. However, it does not explain the two optional parameters or provide explicit selection guidance relative to sibling tools. For a three-parameter tool with 0% schema coverage, this leaves some gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 for the lack of parameter explanations. The description clarifies that the tool works on 'the real graph of an atlas' and that the output relates to graph structure, which helps slightly with atlas_id. However, min_weight and connection_type are completely unexplained, and their roles in constructing the graph are left to the agent to infer.

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

Purpose4/5

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

The description clearly identifies the tool's output as a 2D spectral embedding (Laplacian eigenmaps) of an atlas's real graph, with one position per region. It distinguishes this from anatomical-position-based tools by saying it is useful for seeing groupings without depending on anatomical position. It does not state an explicit verb like 'calculates', but the noun phrase 'Embedding espectral 2D' is specific enough to convey the action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when wanting to see clusters derived from graph structure rather than anatomical position. However, it does not explicitly mention when not to use it or name alternatives such as calculate_laplacian or render_network. The guidance is implied but not fully articulated.

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

compare_speciesA

Compara dos especies reales combinando un resumen cuantitativo y la lista completa de homologías compartidas (decisión de la usuaria, 31/08/2026: "ambos combinados"). El resumen cuenta cuántas regiones reales tiene cargada cada especie y cuántas de ellas participan en alguna homología real con la otra especie de esta comparación -- nunca compara "topología" entre especies, porque solo el humano tiene conectividad estructural real cargada (Brainnetome/HCP-MMP1.0); chimpancé y macaco solo tienen regiones y homologías. Lanza un error si alguna de las dos especies no existe -- nunca compara contra una especie inventada.

ParametersJSON Schema
NameRequiredDescriptionDefault
species_a_idYes
species_b_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
species_aYes
species_bYes
homologiesYes
homology_countYes
homologies_by_statusYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that the tool throws an error if a species doesn't exist, that it never compares against invented species, and that it never compares topology. It also explains the underlying data limitation (only human has structural connectivity). This is strong behavioral transparency, though it could have mentioned the exact error type or return format.

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

Conciseness4/5

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

The description is a single, dense paragraph that front-loads the core purpose and then adds critical constraints. It is somewhat long but every sentence adds value: the combined output, the counting logic, the topology exclusion, and the error behavior. The structure could be improved with bullet points or clearer separation, but it is not bloated.

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

Completeness4/5

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

Given the tool's complexity (comparison logic, data limitations, error handling) and the absence of annotations, the description covers the essential behavioral context. It explains what the tool does, what it doesn't do, and when it errors. The output schema exists, so return values are presumably documented elsewhere. The only minor gap is not specifying the exact format of the species IDs or the structure of the homology list, but the description is largely complete for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. The description explains that the two parameters are species IDs and that they must refer to real species, but it doesn't add detail about the format or expected values of the IDs. The description's mention of 'species_a_id' and 'species_b_id' is implicit, not explicit. Baseline 3 is appropriate because the description adds some semantic context (real species, error on non-existent) but doesn't fully elaborate on parameter specifics.

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

Purpose5/5

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

The description clearly states the tool's function: comparing two real species by combining a quantitative summary and the complete list of shared homologies. It explicitly names the resource (species) and the specific action (compare), and it distinguishes itself from siblings like compare_species_images and find_homologues by specifying the combined output format.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool: it compares real species, never invented ones, and it explicitly states that it does not compare topology between species because only human has real structural connectivity loaded. This directly informs the agent when this tool is appropriate versus when it might need a different tool (e.g., for connectivity comparisons).

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

compare_species_imagesA

Tres imágenes PNG reales que comparan dos especies (decisión de la usuaria, 31/08/2026): (1) un connectograma circular con las regiones reales de las dos especies (todos sus atlas), coloreadas en tres categorías -- exclusiva de la especie A, exclusiva de la especie B, y homóloga/compartida (participa en al menos una homología real con la otra especie de esta comparación) -- con una cuerda real por cada homología y leyenda de las tres categorías; (2) y (3), un esquema interhemisférico real por especie (solo sus regiones homólogas con la otra), coloreado por hemisferio real. Nunca superpone las dos especies en un único cerebro 3D: cada una tiene su propia anatomía y su propio espacio de referencia (decisión 29), así que no tendría sentido dibujarlas juntas en una escena espacial. Lanza un error si alguna de las dos especies no existe, o si existen pero no comparten ninguna homología real.

structured_output=False (bug real encontrado al conectar esta herramienta, 31/08/2026, decisión 37): el SDK de MCP intenta generar un esquema pydantic de salida a partir del tipo de retorno anotado, y Image está especialcasada para un retorno suelto pero NO dentro de un list[...] -- sin este parámetro, registrar la herramienta lanzaba PydanticSchemaGenerationError en cuanto se importaba este módulo, antes incluso de poder llamarla.

ParametersJSON Schema
NameRequiredDescriptionDefault
min_weightNo
species_a_idYes
species_b_idYes
connection_typeNostructural

TDQS

A3.8/5.0
Behavior5/5

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

With no annotations provided, the description fully carries the behavioral disclosure burden. It clearly states the output (three PNGs), error conditions (nonexistent species or no homology), and even documents a known bug workaround (structured_output=False). It also specifies that species are never overlaid, which is a critical behavioral trait. This is exceptionally transparent.

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

Conciseness2/5

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

The description is verbose, especially the extended bug note about pydantic schema generation and structured_output=False, which is tangential to the tool's purpose. While the opening does front-load the main purpose, the overall length and technical digression reduce conciseness. A tighter description would be more effective.

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

Completeness4/5

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

The description covers the output format, error behavior, and a technical caveat, which is substantial. However, it omits explanation of min_weight and connection_type parameters, leaving a gap for those inputs. Given the tool's complexity (four params, image output, error cases), it is fairly complete but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 and explain each parameter. It implicitly names species_a_id and species_b_id through 'two species', but does not explain min_weight or connection_type at all. These parameters remain unexplained, leaving agents guessing about their meaning and defaults.

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

Purpose5/5

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

The description states a specific verb (generate images comparing) and a precise resource (two species), and details the three output images, their content, and color coding. It distinguishes itself from siblings like render_brain or compare_species by emphasizing its non-overlay, image-based comparison approach, making it unmistakably unique.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool—when visual comparison of two species is needed—but does not explicitly contrast it with alternatives or state conditions when to choose this over compare_species or render_network. It does mention it never overlays species in 3D, which hints at differences, but lacks direct guidance.

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

find_homologuesA

Busca homologías reales entre especies ya cargadas (54 en este proyecto, todas de Cheng et al. 2021, con status="candidate_homology" y confidence=None porque el propio estudio no da ningún número utilizable con solo 3 especies -- nunca se inventa una confianza). region_id filtra a las que tocan esa región concreta (en cualquiera de los dos extremos); species_id, a las que tocan esa especie. Cada homología lleva la región y la especie real de sus dos extremos, y su cita real si el dataset de origen tiene un estudio enlazado (nunca una cita inventada).

ParametersJSON Schema
NameRequiredDescriptionDefault
region_idNo
species_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states that the tool never invents confidence values or citations, and that the status is 'candidate_homology' with confidence=None. It also explains how the filters affect results (touching either end). This is strong transparency, though it does not mention performance or output format.

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

Conciseness4/5

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

The description is a single paragraph but each sentence adds value: the core purpose, the data source and quality caveats, and parameter explanations. It is somewhat dense but well-structured, with the primary purpose front-loaded. No fluff or redundancy.

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

Completeness5/5

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

Given that an output schema exists (so return format is already defined), the description covers all essential aspects: what the tool does, the data constraints (54 species, status, confidence), filter semantics, and data integrity guarantees. It is complete enough for an agent to call it correctly without additional clarification.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides detailed semantics for both parameters: region_id filters to homologies touching that region in either end, and species_id filters to those touching that species. This goes far beyond the bare schema (which only lists names and types) and fully compensates for the 0% schema description coverage.

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

Purpose5/5

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

The description clearly states the tool's function: finding real homologies between already loaded species. It uses a specific verb ('Busca') and a specific resource (homologies), and differentiates from sibling tools like search_region or compare_species by focusing on homology relationships. The mention of 'reales' (real) and 'ya cargadas' (already loaded) adds precision.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool (for real homologies among the 54 loaded species) and explains the filtering semantics of both parameters. It does not explicitly name alternative tools or state when not to use it, but the purpose is specific enough to imply when it is appropriate.

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

find_pathA

Camino más corto real entre dos regiones del mismo atlas, sobre el grafo de conectividad de connection_type (un peso mayor es una conexión más fuerte, no un coste mayor -- el camino real más corto tiende hacia las conexiones fuertes). path y distance quedan en None cuando source_id/target_id no pertenecen a este atlas, o cuando no existe ningún camino real entre ambos (p. ej. componentes desconectadas) -- nunca se aproxima ni se inventa un camino.

ParametersJSON Schema
NameRequiredDescriptionDefault
atlas_idYes
source_idYes
target_idYes
min_weightNo
connection_typeNostructural

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
atlas_idYes
distanceYes
source_idYes
target_idYes
min_weightYes
connection_typeYes

TDQS

A4.2/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It clearly explains the edge-weight semantics: a larger weight is a stronger connection, not a higher cost, and the shortest path tends toward strong connections. It also discloses that path and distance become None when ids are not in the atlas or when no real path exists, and it explicitly guarantees no approximation or invented path.

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

Conciseness5/5

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

The description is two dense sentences that are front-loaded with the core purpose. The parenthetical about weight semantics and the second sentence about None behavior are both essential and add real value; there is no filler or repetition.

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

Completeness4/5

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

For a pathfinding tool, the description covers the main edge cases well: missing atlas membership, disconnected components, and no approximation. The existence of an output schema reduces the need to explain return values in detail. The main gap is min_weight, which is never described, leaving a meaningful parameter ambiguous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate. It does add meaning for connection_type by explaining the weight interpretation, but it says nothing about min_weight, which has a default of 0 and is not self-explanatory. atlas_id, source_id, and target_id are understandable from their names but their expected formats are not clarified.

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

Purpose5/5

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

The description states a specific verb and resource: 'Camino más corto real entre dos regiones del mismo atlas' — a real shortest path between two regions of the same atlas, over a specific connectivity graph. It also distinguishes itself by emphasizing 'real' vs approximate paths and by restricting to the same atlas, which helps separate it from sibling tools like find_homologues or get_connectivity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when an exact, non-approximate shortest path is needed between two regions of the same atlas. It also explains that path and distance return None when no path exists. However, it never explicitly names alternatives or says 'use X instead of Y', so the guidance is implied rather than explicit.

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

get_connectivityA

Conectividad real entre un conjunto de regiones dadas: qué conexiones existen entre ellas y qué tractos con nombre las tocan (con su cita real). Con menos de dos region_ids no hay conectividad "entre regiones" que calcular, y se devuelve vacío en vez de reinterpretar la petición.

ParametersJSON Schema
NameRequiredDescriptionDefault
region_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
tractsYes
region_idsYes
connectionsYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly reveals the empty-return fallback and clarifies that the result contains real connections, named tracts, and citations, not a reinterpreted query. It does not explicitly confirm read-only behavior, but the 'get' naming and query semantics make that reasonably clear.

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

Conciseness5/5

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

Two concise sentences with no filler. The core behavior is front-loaded, and the edge-case behavior is added as a second sentence that earns its place.

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

Completeness4/5

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

For a tool with one required parameter and an output schema, the description covers the input semantics, the minimum input size, the output content, and the fallback behavior. It does not address invalid IDs or alternative tools, but neither is essential for a simple getter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains that region_ids identifies the set of regions being queried and adds the important minimum-cardinality rule that fewer than two IDs yields an empty result. It does not define the exact ID format, but this is sufficient for a single simple parameter.

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

Purpose5/5

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

The description clearly states what the tool computes: real connectivity between a given set of regions, including existing connections and named tracts touching them, with citations. This is specific and differentiates it from sibling search, rendering, and path-finding tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context: the tool should be used when you have a set of regions and want actual inter-region connectivity. It also warns that fewer than two region_ids returns empty rather than reinterpreting the request, providing an explicit usage constraint.

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

propose_dataset_ingestionA

Propone el SQL de alta de un dataset real ya organizado con su dataset.yaml y su mapa files (decisión 46, cierra el ciclo que la decisión 44 dejó preparado: manifiesto real -> lector real -> SQL). dataset_dir es una ruta LOCAL en la máquina donde corre este servidor MCP (la misma que ya aloja la biblioteca de datos, sección 23) -- nunca una ruta remota ni relativa a este proceso.

Solo funciona si el format del manifiesto ya es una de las cuatro etiquetas de backend/ingestion/datasets/formats.py::SUPPORTED_FORMATS (nunca unsupported_pending_adapter, que necesita su propio adaptador nuevo primero, ver docs/protocolo-ingesta-ia.md) y si su mapa files cubre todos los roles que ese formato necesita.

NUNCA toca la base de datos real ni la conexión con ella: solo genera y devuelve el SQL de alta (idempotente, ON CONFLICT DO UPDATE, mismo estilo que todos los scripts/register_*.py) para que una persona lo revise antes de aplicarlo -- ninguna automatización de este protocolo sustituye esa revisión humana (decisión 17). study_id/study_name son opcionales pero, si se da uno, hace falta el otro: sin ellos, el atlas se da de alta sin enlazar ningún estudio (nunca uno inventado).

ParametersJSON Schema
NameRequiredDescriptionDefault
study_idNo
study_doiNo
study_nameNo
study_yearNo
dataset_dirYes
study_authorsNo
study_journalNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
sqlYes
formatYes
dataset_idYes
dataset_dirYes
region_countYes
network_countYes
coordinate_countYes
membership_countYes

TDQS

A4.3/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It excels: it explicitly states the tool NEVER touches the real database or its connection, only generates idempotent SQL (ON CONFLICT DO UPDATE), requires human review before application (decision 17), and that dataset_dir must be local, never remote. This is rich, safety-relevant 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.

Conciseness4/5

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

The description is verbose (three paragraphs) but front-loaded with the core purpose in the first sentence, and every sentence carries substantive information about constraints or behavior. It could be tightened, but there is no wasted or filler content; the density justifies the length.

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

Completeness4/5

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

Given the output schema exists (so return values are covered) and the tool is complex (7 params, 0% schema coverage), the description is largely complete: it covers the SQL generation mechanics, idempotency, human-review requirement, format preconditions, and study pairing. The main gap is the four undocumented study metadata parameters, which prevents a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does well for dataset_dir (local path semantics) and the study_id/study_name pairing rule, but says nothing about study_doi, study_year, study_authors, or study_journal. Four of seven parameters remain undocumented in both schema and description, so the compensation is only partial.

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

Purpose5/5

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

The description states a specific verb and resource: 'Propone el SQL de alta de un dataset real' (proposes the registration SQL for a real dataset). It is clearly differentiated from the sibling tools, which are all analysis/rendering tools (render_brain, search_region, get_connectivity), making this the only ingestion/registration tool in the set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies clear preconditions for use: the manifest format must already be one of the four labels in SUPPORTED_FORMATS (never unsupported_pending_adapter), and the files map must cover all required roles. It also states the study_id/study_name pairing constraint and that dataset_dir must be a local path. It does not name explicit alternative tools, but the siblings are all unrelated analysis tools, so no true alternative exists.

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

render_brainB

Imagen PNG real: proyección 2D (vista axial, coordenada real X/Y de cada región, eje Z descartado) de un atlas, coloreada por red funcional real (leyenda incluida), con las conexiones reales por encima de min_weight como líneas finas. Lanza un error si el atlas no tiene ninguna región real cargada.

ParametersJSON Schema
NameRequiredDescriptionDefault
atlas_idYes
min_weightNo
connection_typeNostructural

TDQS

B3.4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden and does it well: it reveals output format (PNG), coordinate system details (axial view, Z axis discarded), legend inclusion, connection threshold behavior, and the error case. It does not mention side effects, but as a rendering tool this is a minor gap.

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

Conciseness4/5

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

The description is one dense sentence with no filler, front-loading 'Imagen PNG real' and then specifying projection, coloring, connections, and error behavior. The repeated use of 'real' is slightly heavy but serves to emphasize the contrast with synthetic/network views.

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

Completeness3/5

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

For a 3-parameter tool with no annotations and no output schema, it covers output format, coordinate handling, coloring, thresholding, and error behavior. It is less complete because it omits connection_type semantics and does not explicitly guide selection relative to render_network.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 only min_weight is explained ('connections above min_weight as thin lines'). atlas_id is inferable from the tool's purpose, while connection_type receives no explanation of its allowed values or effect, leaving a significant parameter gap.

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

Purpose4/5

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

The description opens with 'Imagen PNG real' and specifies a 2D axial atlas projection with real X/Y coordinates, coloring by functional network, and thresholded connection lines. This gives a clear verb+resource+output and distinguishes it from siblings like render_network by focusing on atlas projection, though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: call this to get a real PNG image of an atlas projection. However, it does not explicitly state when to use this tool over render_network or other visualization siblings, and the only selection-related hint is the error condition when no real region is loaded.

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

render_networkB

Imagen PNG real: connectograma circular de un atlas, con los nodos coloreados por red funcional real (leyenda incluida) y una cuerda gris por cada conexión real por encima de min_weight. Nunca un descriptor de escena -- una imagen real, igual que pidió la usuaria (31/08/2026). Lanza un error si el atlas no tiene ninguna región real cargada.

ParametersJSON Schema
NameRequiredDescriptionDefault
atlas_idYes
min_weightNo
connection_typeNostructural

TDQS

B3.1/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden and does disclose key runtime behavior: real PNG output, included legend, gray chord per connection above min_weight, and an error when no real regions are loaded. It stops short of stating side effects or permissions, but for a render-style operation the provided behavior is unusually specific.

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

Conciseness3/5

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

The core sentence is dense and informative, and details are front-loaded. However, the second sentence repeats 'real image' and adds a user-request date that does not help an agent invoke the tool, so not every sentence earns its place.

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

Completeness3/5

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

The definition covers output type and one error condition but leaves out the return delivery format (PNG bytes, URL, etc.), valid connection_type semantics, and guidance for choosing this tool over render_brain. Given no output schema and no annotations, this is minimally acceptable but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Since schema descriptions cover 0% of parameters, the tool description must explain them. It clarifies min_weight as the connection threshold and indirectly identifies atlas_id as the atlas source, but connection_type is never explained, and with no enums listed the agent cannot know valid values or how it affects the connectogram.

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

Purpose4/5

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

The description names a concrete deliverable: a real PNG circular connectogram of an atlas, with node coloring and thresholded chords. It also stresses that it is not a scene descriptor, which gives some differentiation, but it never names a sibling like render_brain, so the distinction is not explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement about when to prefer render_network over render_brain or other siblings. The 'never a scene descriptor' remark is an output guarantee, not a routing rule, and no alternative tool is suggested or excluded.

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

search_regionA

Busca regiones reales cargadas en NeuroGraph. atlas_id filtra a un atlas concreto (p. ej. "atlas.human.hcp.mmp1_0"); sin él, se devuelven las regiones de todos los atlas cargados. Cada región lleva su coordenada real, el espacio de referencia en el que está expresada, y su red funcional si ya se calculó una (si no, "unclassified" -- nunca una red inventada). network_source elige la clasificación de red (decisión 73): p. ej. "cole-anticevic" (la de siempre en HCP-MMP1.0), "yeo2011-7", "yeo2011-17" o "power2011"; sin él, la original de cada atlas.

ParametersJSON Schema
NameRequiredDescriptionDefault
atlas_idNo
network_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and clearly discloses behavior: results are restricted to atlases actually loaded, coordinates are real, and functional networks are only reported if already computed, otherwise returned as unclassified and never invented. This is a strong provenance guarantee that goes beyond the bare schema.

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

Conciseness4/5

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

The purpose is front-loaded and every sentence adds value for parameter behavior or result guarantees. It is slightly dense and the internal reference 'decision 73' contributes little, but the overall length is appropriate for the two parameters and output semantics.

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

Completeness4/5

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

For a two-optional-parameter search tool with an output schema, the description is complete: all parameters are explained and the semantics of coordinate, reference space, and network classification are stated. Minor gaps are the lack of explicit exclusions/alternatives and any mention of response size or pagination, but these are not critical for this simple lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the schema provides only names and nullable string types. The description compensates fully by explaining atlas_id as an atlas filter with a concrete example and default behavior, and network_source as selecting from named classifications with its own default behavior.

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

Purpose5/5

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

States a specific verb and resource: searches real regions loaded in NeuroGraph. The scope is unambiguous and distinct from siblings like search_tract and rendering/connectivity tools, and the description clarifies what each returned region contains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context for the operation (searching loaded regions and their network metadata) and explains the effect of omitting atlas_id. However, it never states when to prefer this tool over an alternative or when not to use it, so the agent must infer selection from the resource type.

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

search_tractA

Busca tractos reales por nombre/abreviatura (subcadena) y/o por una región que deban tocar. Cada tracto devuelto lleva TODAS las regiones reales que toca (no solo region_id, si se dio uno) y su cita real. Un tracto sin ninguna conexión real registrada no aparece: no hay nada verificado que reportar sobre él.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
region_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that results include ALL touched regions, include the real citation, and exclude tracts with no verified connections. This is meaningful behavioral context beyond the raw schema.

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

Conciseness5/5

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

Three sentences with no filler. The search criteria are front-loaded, followed by output behavior and exclusion semantics. Every sentence adds useful information.

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

Completeness4/5

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

The description covers the essential semantics for a search tool: criteria, result contents, and exclusion behavior. The main gap is the ambiguous 'y/o' combination of name and region_id, and there is no mention of pagination or error behavior, though an output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain the parameters itself. It does: 'name' is a substring match on name/abbreviation, and 'region_id' specifies a region the tract must touch. It also clarifies how region_id affects the output.

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

Purpose4/5

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

The description states a specific action ('Busca tractos reales') and the search criteria (name/abbreviation substring and/or region). It clearly identifies the resource and what the tool does, though it does not explicitly contrast itself with sibling tools like search_region.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when searching for real tracts by name, abbreviation, or region. However, it offers no explicit guidance about when not to use it or how it compares to alternatives such as search_region or find_path.

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.

  1. 12 tool updatesv0.1.0
    • First observedcalculate_laplacian
    • First observedcalculate_spectrum
    • First observedcompare_species
    • First observedcompare_species_images
    • First observedfind_homologues
    • First observedfind_path
    • First observedget_connectivity
    • First observedpropose_dataset_ingestion
    • First observedrender_brain
    • First observedrender_network
    • First observedsearch_region
    • First observedsearch_tract

TDQS

A3.9/5.0

Scored across 12 tools

Disambiguation4/5

Most tools have clearly distinct purposes, but a few close pairs exist: render_brain vs render_network both visualize atlas connectivity, and calculate_laplacian vs calculate_spectrum both operate on graph spectra. The descriptions clarify the different output modalities well enough to avoid serious misselection.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern: search_region, get_connectivity, render_network, find_homologues, propose_dataset_ingestion. There are no mixed conventions or vague generic verbs.

Tool Count5/5

Twelve tools is well within the ideal range and each tool covers a distinct aspect of the domain: exploration, connectivity, spectral analysis, visualization, species comparison, and dataset ingestion. The count feels appropriately scoped for a specialized neuroimaging server.

Completeness4/5

The toolset covers the core workflows well: searching regions and tracts, computing connectivity and paths, spectral analysis, rendering visualizations, comparing species, and proposing dataset ingestion. Minor gaps exist, such as no direct list_atlases or list_species tool, but these can be worked around via search_region and find_homologues.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers