Skip to main content
Glama
jbrasero

MCP para Primavera Unifier

by jbrasero

MCP para Primavera Unifier

Servidor MCP por stdio y aplicación web agentic para Oracle Primavera Unifier. Autentica un usuario de integración contra el endpoint V2 de token y reutiliza el access_token como Bearer para las llamadas REST V1/V2.

Proyecto comunitario de demostración. No es un producto oficial de Oracle, no está afiliado, patrocinado, respaldado ni mantenido por Oracle. Oracle, OCI, Primavera y Unifier son marcas comerciales de Oracle Corporation y/o sus afiliadas.

Sin soporte ni garantías. El código se proporciona «tal cual», exclusivamente para evaluación y demostración. Los autores y mantenedores no asumen ninguna obligación de soporte, mantenimiento, actualización, corrección de errores o parches de seguridad. Cada usuario debe validar la solución, permisos, endpoints, costes y controles de seguridad en su propio entorno antes de utilizarla.

Este repositorio no incluye credenciales, documentos de cliente ni datos extraídos. Utiliza secretos de entorno y documentos sintéticos para las pruebas. Consulta SUPPORT.md, SECURITY.md y LICENSE antes de utilizar el proyecto.

Herramientas disponibles

  • unifier_connection_test: comprueba autenticación y acceso de lectura.

  • unifier_list_shells: lista proyectos y shells (GET /ws/rest/service/v1/admin/projectshell).

  • unifier_read_shell_360: workflow de dos lecturas encadenadas: valida el shell en V1 y obtiene sus metadatos activos en V2. Devuelve únicamente campos operativos seleccionados.

  • unifier_list_bp_records: consulta registros de un BP de un shell (POST /ws/rest/service/v1/bp/records/{project_number}). Este POST es una consulta y se mantiene habilitado en modo de solo lectura.

  • unifier_rest_request: acceso a cualquier endpoint REST V1/V2 documentado. Solo permite GET y HEAD de inicio; las mutaciones requieren una habilitación explícita.

Workflows Enterprise AI de solo lectura

  • unifier_inspect_bp, unifier_find_bp_record y unifier_approval_control: inspección de BPs, búsqueda acotada por destinos y control de pendientes.

  • unifier_project_health y unifier_cost_sheet_budget: visión de proyecto, Cost Sheet, snapshots, paquetes de trabajo y BPs financieros configurados.

  • unifier_project_autopilot_snapshot: snapshot compacto y comparable de coste, planificación, BPs y aprobaciones; no devuelve registros completos ni escribe en Unifier.

  • unifier_risk_center: centro de riesgos con evidencia de shell, Cost Sheet, planificación y BPs seleccionados; clasifica señales y prepara borradores de acción, sin escribir en Unifier.

  • unifier_schedule_health: Schedule Sheets y, con source_project_id, actividades del System Activity Sheet.

  • unifier_search_documents: metadatos y documentos de una ruta de Document Manager, sin descargas.

  • unifier_audit_inactive_shells y unifier_compare_projects: auditoría de inactivos y comparación de varios shells.

  • unifier_bp_permissions: permisos de visualización, edición y administración de registros de un BP.

Los nombres técnicos de BPs, la ruta de Document Manager y el source_project_id dependen de cada configuración de Unifier. Los workflows los solicitan solo cuando son necesarios.

Related MCP server: MCPipe Toolchain

Configuración

Instala las dependencias y compila:

npm install
npm run build

Configura las variables como secretos de tu cliente MCP (no uses un .env versionado):

{
  "mcpServers": {
    "primavera-unifier": {
      "command": "node",
      "args": ["/RUTA/ABSOLUTA/mcp_primavera/dist/index.js"],
      "env": {
        "UNIFIER_BASE_URL": "https://your-unifier-host.example.com/companycode/unifier",
        "UNIFIER_USERNAME": "<usuario-integracion>",
        "UNIFIER_PASSWORD": "<secreto>"
      }
    }
  }
}

Para desarrollo local, guarda los valores en un archivo .env (que ya está ignorado por Git) y arranca con node --env-file=.env dist/index.js. No uses .env.example para secretos: debe quedar como plantilla sin valores reales.

Para permitir altas, actualizaciones o borrados por unifier_rest_request, añade UNIFIER_ALLOW_WRITE=true. Déjalo desactivado durante el descubrimiento.

Si ya dispones de un token de Unifier, puedes configurar UNIFIER_ACCESS_TOKEN como secreto de entorno. Tiene prioridad sobre usuario y contraseña; úsalo solo hasta su vencimiento. Usa UNIFIER_TOKEN_AUTH_SCHEME=Bearer para un token V2/OAuth o UNIFIER_TOKEN_AUTH_SCHEME=Basic para un token de sesión V1.

Límites y seguridad

Con UNIFIER_AUTH_MODE=credentials, el servidor obtiene el token V2 con el usuario y contraseña del entorno, lo mantiene en memoria y lo renueva; en este modo ignora cualquier UNIFIER_ACCESS_TOKEN antiguo. UNIFIER_BASE_URL puede ser la URL de la interfaz o terminar en /ws/rest/service: el cliente normaliza ambos formatos y evita duplicar ese tramo.

La URL de la interfaz puede terminar en /unifier; el cliente elimina ese sufijo para llamar a la raíz REST https://<host>/<companycode>/ws/rest/service/..., según la configuración de conexiones de Oracle. La conexión solo se considera validada con un listado JSON y status: 200. Un HTTP 200 que contenga una página HTML de login es un error, no una conexión correcta. Las llamadas REST no siguen redirecciones al SSO.

El servidor no almacena ni devuelve contraseñas o tokens. Solo acepta rutas bajo /ws/rest/service/v1/ o /ws/rest/service/v2/, y renueva el token tras un 401.

Las capacidades reales dependen de los permisos del usuario de integración y de los módulos publicados en la instancia Unifier.

Si el endpoint V2 redirige a Oracle Identity/SSO en lugar de responder JSON, el usuario no está listo para Basic Authentication. Un administrador debe confirmar que sea un Integration User activo con tipo de autenticación Basic, o proporcionar los parámetros del flujo OAuth habilitado para la instancia.

Interfaz conversacional local

El proyecto incluye una interfaz de chat en http://127.0.0.1:3000. El navegador conserva el historial visual y el backend conserva el contexto lógico de la conversación mediante previous_response_id. En cada turno, el modelo decide qué herramienta del MCP necesita ejecutar.

Primer workflow Enterprise AI: Ficha 360

La interfaz usa OCI Responses API con funciones MCP, por lo que el modelo ejecuta el workflow cuando se pide una ficha, detalle o visión 360 de un shell. unifier_read_shell_360 valida primero el project_number en GET /ws/rest/service/v1/admin/projectshell y encadena GET /ws/rest/service/v2/admin/shell para recuperar metadatos activos. Es una operación estrictamente de lectura.

Ejemplo: Dame la ficha 360 del shell P-0001.

Además de las variables de Unifier, configura en tu .env el proveedor de modelo. OCI GenAI usa la Responses API compatible con OpenAI y es la opción preferida:

# OCI Generative AI (API key de Generative AI, no la clave privada de tu perfil OCI)
OCI_GENAI_API_KEY=<api-key-de-generative-ai>
OCI_GENAI_REGION=<region-oci, por-ejemplo-us-chicago-1>
OCI_GENAI_PROJECT_OCID=<ocid-del-generative-ai-project>
OCI_GENAI_MODEL=<id-de-modelo-soportado-en-tu-region>

# Opcional: habilita RAG con documentos cargados en un Vector Store de OCI.
OCI_VECTOR_STORE_ID=<id-del-vector-store>

# Opcional: auditoría periódica de shells inactivos; 0 o vacío la desactiva.
AGENT_MONITOR_INTERVAL_MINUTES=0

# Para el token V1 que se envía como Authorization: Basic <token>
UNIFIER_ACCESS_TOKEN=<token-unifier>
UNIFIER_TOKEN_AUTH_SCHEME=Basic

Como alternativa a OCI_GENAI_API_KEY, puedes usar el perfil IAM local que indicaste. La aplicación usa oci raw-request para firmar cada llamada mediante el perfil; necesita que la CLI de OCI esté instalada y que el perfil contenga región y una clave válida:

OCI_GENAI_PROFILE=DEFAULT
OCI_GENAI_PROJECT_OCID=<ocid-del-generative-ai-project>
OCI_GENAI_MODEL=<id-de-modelo-soportado-en-tu-region>
# OCI_GENAI_REGION es opcional si ya está configurada en el perfil indicado.

Como última alternativa, admite OPENAI_API_KEY y OPENAI_MODEL. Si existen varias configuraciones, la prioridad es API key de OCI, IAM de OCI y, finalmente, OpenAI.

Después, inicia la interfaz con:

npm run build
node --env-file=.env dist/web.js

La interfaz exige autenticación antes de acceder a cualquier ruta /api. Configura el usuario, la contraseña y la duración de la sesión en .env:

APP_AUTH_USERNAME=admin
APP_AUTH_PASSWORD=change-this-before-running
APP_AUTH_SESSION_HOURS=8

La sesión se mantiene en memoria mediante una cookie HttpOnly y SameSite=Strict; por tanto, se cierra al reiniciar el servidor o al pulsar Salir. Cambia la contraseña de demostración antes de exponer la aplicación fuera de un equipo de desarrollo.

El proceso escucha únicamente en 127.0.0.1. Si necesitas acceso remoto, colócalo detrás de un proxy HTTPS, cambia la contraseña de demostración, activa APP_AUTH_SECURE_COOKIE=true y aplica controles de red adecuados. Para reiniciar el contexto, pulsa Nueva conversación.

Portlet de Unifier

La ruta /unifier-portlet está diseñada para mostrarse en un Portlet Block de Unifier sin relajar la protección anti-iframe de la ruta principal. La plantilla deploy/nginx-primavera-agentica.conf.template necesita dos valores antes de instalarse:

export PUBLIC_HOST=demo.example.com
export UNIFIER_PARENT_ORIGIN=https://your-unifier-host.example.com

La ruta principal conserva X-Frame-Options: DENY y frame-ancestors 'none'. La ruta del portlet usa una cookie de sesión independiente con Secure, SameSite=None y Partitioned. Para un uso real, emplea un certificado emitido por una CA de confianza.

Historial de decisiones de contratos

El panel colapsable «Historial de decisiones» muestra los eventos de la sesión actual para el shell activo y permite buscar por campo, contrato, responsable o motivo. Antes de confirmar un bloqueo, indica el responsable y el motivo/fuente en el agente de contratos. Las correcciones se registran al salir del campo; cambiar un dato confirmado vuelve a abrir su bloqueo.

Se conservan propuestas de extracción y revalidación, valores anteriores/nuevos, evidencia textual, nombres y hashes SHA-256 de los PDF analizados, confirmaciones, excepciones y eventos de publicación. Cada expediente tiene un identificador incluido en el JSON revisado. La revalidación conserva la historia anterior y registra nuevas propuestas; no restaura automáticamente correcciones manuales.

El destino persistente es Unifier, no el disco local. Al pulsar «Publicar contrato e historial» y confirmar, el backend genera en memoria historial-decisiones-<expediente>.pdf y .json. Ambos se adjuntan al mismo registro BP y en la misma llamada REST que los contratos y anexos. No requieren nuevos campos de uDesigner. Se mantienen los requisitos existentes del BP, permisos para adjuntos, configuración de Auto Creation y mapeo de campos.

El PDF permite leer la secuencia de decisiones, valores finales, campos técnicos, responsables, motivos, evidencias y hashes. El JSON conserva los valores y texto Unicode completos. Ambos son una foto previa al envío: no certifican la creación ni incluyen la respuesta de esa misma publicación. Los eventos de respuesta se muestran solo en la pestaña; consulta el estado real y los adjuntos del registro en Unifier. El estado inicial del BP depende de su configuración, no del nombre «borrador» usado en la UI.

Hasta publicar, las decisiones y archivos solo permanecen en memoria de la pestaña. Recargar o cerrar pierde la revisión pendiente; el navegador avisa si hay decisiones sin publicar. Si falla el envío, conserva la pestaña y comprueba primero en Unifier si se creó el registro para evitar duplicados. Se bloquea la publicación si el shell no coincide con el análisis o si los hashes de los documentos han cambiado: revalida en ese caso. Máximo: 6 PDF de origen + 2 informes, 25 MB en conjunto; historial de hasta 1000 eventos / 2 MB.

Los historiales publicados se consultan en los adjuntos del contrato en Unifier; el panel no los descarga automáticamente. El backend ya no lee ni escribe data/decisions.jsonl y /api/decisions responde 410 a clientes antiguos. Un archivo local de una versión anterior no se migra ni elimina automáticamente.

Esta demo registra identidad y fechas declaradas por el navegador, sin autenticarlas. Los informes no son una auditoría inalterable ni reemplazan el Audit Log nativo de Unifier. Las decisiones anteriores a esta funcionalidad no se reconstruyen.

Pruebas: npm test valida generación, empaquetado y controles del historial. RUN_INTEGRATION_TESTS=1 npm test añade el recorrido web → MCP → servidor Unifier simulado en loopback, sin cargar .env ni usar credenciales reales. Para comprobar visualmente el informe con datos sintéticos: npm run build && node scripts/preview-decision-report.mjs; el PDF de QA se genera en tmp/pdfs/ (excluido de Git).

Autopilot de proyecto

El panel «Autopilot de proyecto» de Mission Control permite activar la vigilancia del shell seleccionado. Configura nombres técnicos de BPs separados por comas, los BPs que representan aprobaciones y, opcionalmente, el source_project_id para contar actividades vencidas. Si se omite, intenta descubrirlo desde los metadatos Gateway/Primavera Cloud del shell. Al activar, hace una lectura real y crea una línea base sin alerta.

Mientras dist/web.js siga ejecutándose, cada mañana compara una nueva lectura de Cost Sheet, paquetes, Schedule Sheets, actividades, estados e importes de BPs y carga de aprobaciones. Solo abre una alerta en Mission Control si cambia una métrica material, el estado del shell o la disponibilidad de una fuente. Los cambios financieros inferiores a PROJECT_AUTOPILOT_AMOUNT_DELTA (1000 por defecto) se ignoran. Errores idénticos consecutivos no duplican alertas.

La hora se configura con PROJECT_AUTOPILOT_HOUR, PROJECT_AUTOPILOT_MINUTE y PROJECT_AUTOPILOT_TIMEZONE (por defecto 08:00 Europe/Madrid). Si el proceso arranca después de esa hora y aún no ha ejecutado ese día, realiza la revisión pendiente. «Ejecutar ahora» permite demostrar el flujo sin esperar. Para garantizar la ejecución diaria en producción, mantén el proceso bajo systemd, Docker, Kubernetes o un servicio equivalente.

El Autopilot es de solo lectura en Unifier. Su línea base, configuración y alertas de Mission Control se guardan en data/project-autopilot.json, con métricas agregadas y sin credenciales ni registros completos. «Marcar revisada» solo reconoce la alerta en la aplicación; no crea ni modifica un BP de Unifier.

Referencias

Available Tools

18 tools
unifier_approval_controlC

Control de aprobaciones de solo lectura. Valida un shell, consulta un BP filtrado por estado y agrupa los registros por responsable para detectar carga pendiente.

ParametersJSON Schema
NameRequiredDescriptionDefault
bpnameYes
statusNoPending
record_fieldsNo
project_numberYes

TDQS

C2.9/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral burden. It does disclose the key read-only nature ('solo lectura') and outlines the high-level pipeline, but it omits prerequisites, error handling, permission requirements, and what the grouping result looks like. This is useful but incomplete for an unannotated tool.

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 two short sentences with no wasted filler and front-loads the read-only nature before the operational steps. It is appropriately sized for the amount of information given, though the structure could more clearly separate purpose, preconditions, and result.

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

Completeness2/5

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

Given four parameters, no annotations, no output schema, and 0% schema description coverage, the description is too sparse. It conveys the general workflow but not enough for an agent to know required inputs, expected return structure, or failure behavior.

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% and there are four parameters, so the description must compensate. It hints at a shell (likely project_number), a BP (bpname), and status filtering, but it never maps parameters explicitly and leaves record_fields completely 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 states a clear multi-step purpose: validate a shell, query a BP filtered by status, and group records by responsible to detect pending load. This is more specific than a tautology and conveys the tool's approval-control role, but it does not explicitly distinguish it from siblings such as unifier_list_bp_records or unifier_find_bp_record.

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?

The description gives no when-to-use or when-not-to-use guidance and does not name any alternative tool. It implies the tool is for approval control and pending-load detection, but an agent gets no explicit routing criteria among the many sibling tools.

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

unifier_audit_inactive_shellsB

Auditor de shells inactivos de solo lectura. Lista los shells inactivos y, opcionalmente, encadena la consulta de un BP común para aportar evidencia antes de recomendar una revisión de archivado.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
bpnameNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It does disclose read-only semantics ('de solo lectura') and the notable side effect that it may chain a BP lookup, which is useful. It omits permissions, rate/limits behavior, and what the result contains.

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, front-loaded with the read-only framing and the action, with the optional chaining behavior following. No filler; brief without being cryptic.

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?

No output schema and no annotations mean the description is the only source of behavioral context, and it covers purpose plus the optional BP chaining. It still leaves the limit parameter and the shape of the returned evidence unexplained for a tool whose entire value depends on what evidence it returns.

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 both parameters lack documentation. The description implies the bpname parameter via 'encadena la consulta de un BP común', but the limit parameter (1-20) is never mentioned, and no format or effect for either parameter is explained.

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

Purpose4/5

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

States a specific verb and resource ('Lista los shells inactivos') with a scope qualifier (inactive) that separates it from the generic unifier_list_shells sibling. It does not explicitly name the sibling, but the 'inactive' qualifier makes the distinction inferable.

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?

Implies the workflow ('aportar evidencia antes de recomendar una revisión de archivado'), giving context for why the optional BP query is chained. However, it never states when to use this tool versus unifier_list_shells or unifier_project_health, nor any exclusions or prerequisites.

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

unifier_bp_permissionsB

Permisos de BP de solo lectura. Valida el shell y consulta quién puede ver, editar o administrar los registros de un BP, con opción de limitar la consulta a uno o varios record_no.

ParametersJSON Schema
NameRequiredDescriptionDefault
bpnameYes
statusNo
record_noNo
project_numberYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden and does disclose that the operation is read-only ('solo lectura'), that it validates the shell, and that it returns view/edit/admin permissions. It omits permissions/auth prerequisites, what happens on an invalid shell, and pagination or response shape, leaving meaningful behavioral gaps for a no-annotation tool.

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 tight sentences that lead with the read-only framing and then the query behavior. No filler, and the most decision-relevant information (read-only, who-can-do-what) is front-loaded.

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 4-parameter tool with no annotations and no output schema, the description gives a usable purpose and partial parameter context but does not cover the shell/project_number relationship, the status filter, or expected output. Adequate as a minimum viable definition, 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?

Schema description coverage is 0%, so the description must compensate. It explains that record_no accepts one or several values (matching the anyOf schema) and implicitly covers bpname, but project_number and the status enum are never mentioned, leaving half the parameters undocumented in both schema and prose.

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

Purpose4/5

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

States a specific verb+resource: it queries ('consulta') who can view, edit or administer records of a BP, and explicitly frames itself as read-only permissions. An agent can tell it is a permissions-lookup tool rather than a record CRUD tool, but no sibling (e.g. unifier_list_bp_records) is named to sharpen differentiation.

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 explicit when-to-use or when-not-to-use statement and no named alternative among the many unifier_* siblings. The optional record_no narrowing is described, but the agent must infer that this is the tool for permission auditing versus plain record listing.

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

unifier_compare_projectsB

Comparador de proyectos de solo lectura. Consulta varios shells, valida cada uno y cruza sus metadatos activos V2 para devolver una tabla compacta comparable.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_numbersYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and it does disclose the read-only nature, the multi-shell query, per-shell validation, and that active V2 metadata is used. It omits failure behavior when a shell fails validation, permission requirements, and any rate/size limits.

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 dense sentences with the read-only guarantee front-loaded and no wasted words. Structure is good, though it could be marginally more front-loaded on the 'what you get back' element.

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 read-only tool with no annotations, no output schema, and a fully undocumented parameter, the description does reasonably well by naming the returned artifact ('tabla compacta comparable') but leaves input format and validation-failure behavior unexplained.

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% for the single parameter project_numbers. 'Consulta varios shells' hints at plural inputs, but the description never explains the identifier format or the 2-item minimum / 10-item maximum constraints that the schema enforces without documentation.

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

Purpose4/5

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

States a specific verb and resource ('Comparador de proyectos'), plus scope ('de solo lectura') and mechanism (multi-shell query, V2 metadata cross-reference). An agent can distinguish it from single-shell readers like unifier_read_shell_360, though no sibling is named explicitly.

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?

The description implies the scenario (comparing multiple projects) but gives no explicit when-to-use vs. alternatives such as unifier_list_shells or unifier_project_health, and no prerequisites. Similar to the MID calibration case, reuse context is left entirely to inference.

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

unifier_connection_testB

Verifica acceso REST y una respuesta JSON válida del listado de shells.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses that the tool validates REST access and JSON validity, which is useful, but says nothing about authentication requirements, side effects, rate limits, timeout behavior, or what a failed verification returns.

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?

A single, front-loaded sentence with no filler or redundancy. It is efficient, though extremely terse.

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 zero-parameter diagnostic, the description covers what is checked but not the success/failure outcome shape, and no output schema exists to compensate. Given the tool's simplicity the gap is moderate rather than severe.

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?

The tool takes zero parameters, which establishes a baseline of 4. The description correctly implies no input is needed to trigger the check.

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

Purpose4/5

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

States a specific verb (verifica) and object (acceso REST y una respuesta JSON válida del listado de shells), so an agent can tell this is a connectivity/response-validation check rather than a data-fetch tool. It does not, however, name or distinguish itself from the closest siblings such as unifier_list_shells or unifier_rest_request.

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 when-to-use guidance, no statement of prerequisites, and no routing to alternatives like unifier_list_shells (the actual listing call) or unifier_rest_request. Usage must be inferred purely from the wording 'verifica'.

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

unifier_cost_sheet_budgetC

Cost Sheet / presupuesto de solo lectura. Valida el shell y encadena estado de bloqueo, snapshots, paquetes de trabajo y BPs financieros opcionales para comparar los importes que exponga la configuración del cliente.

ParametersJSON Schema
NameRequiredDescriptionDefault
financial_bpsNo
project_numberYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations exist, so the description carries the full behavioral burden. It does disclose the operation is read-only ('solo lectura') and that it pulls in lock state, snapshots, work packages, and optional financial BPs, which is genuine context. But nothing is said about authorization requirements, shell validation failure behavior, rate limits, or result shape.

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 tight sentences that lead with the resource and its read-only nature, then layer on the chained data sources. No filler, and the most identifying information is front-loaded.

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

Completeness2/5

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

With no annotations, no output schema, and 0% parameter coverage, the description is the only source of behavior and parameters, and it is too thin. An agent would not know what the tool returns, what the project_number format expects, or how the financial_bps array affects the result.

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 both parameters. It alludes to the optional financial BPs ('BPs financieros opcionales') and the comparison intent ('comparar los importes'), giving a faint hint at financial_bps. But the required project_number is never explained, and the enum values (presupuesto, comprometido, coste_real, prevision, otro) are not surfaced.

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

Purpose3/5

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

The description names the resource ('Cost Sheet / presupuesto') and signals its read-only nature ('solo lectura'), which is concrete. However, the operative verb is murky: 'valida el shell y encadena estado de bloqueo, snapshots, paquetes de trabajo y BPs financieros' describes internal chaining rather than stating plainly what the tool returns. It also does not distinguish this from siblings like unifier_read_shell_360 or unifier_compare_projects.

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?

No when-to-use, when-not-to-use, or alternative tool is mentioned. An agent cannot tell from this text whether to reach for this tool versus unifier_read_shell_360, unifier_compare_projects, or a direct unifier_rest_request. Usage must be entirely inferred.

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

unifier_create_contract_with_attachmentsA

Crea un único registro de BP Contract con documentos e informes de revisión adjuntos en la misma operación REST. Requiere confirmed=true y UNIFIER_ALLOW_WRITE=true. Los campos deben usar los nombres técnicos configurados en uDesigner; el estado depende de la configuración del BP.

ParametersJSON Schema
NameRequiredDescriptionDefault
bpnameYes
confirmedYes
attachmentsYes
record_fieldsYes
project_numberYes

TDQS

A3.8/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 reasonably well: it discloses two write gates (confirmed flag and UNIFIER_ALLOW_WRITE env var), the atomic single-request semantics, and that the resulting state depends on BP configuration. It does not cover failure behavior, reversibility, or whether existing records are touched.

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?

Three dense sentences, front-loaded with the core action, then the gating requirements, then the field-naming caveat. No filler, though the final clause about BP state is slightly vague.

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?

A create-with-nested-attachments mutation with no annotations and no output schema needs more disclosure than this. Prerequisites and naming convention are covered, but the response shape, attachment constraints, and error/partial-failure behavior are absent.

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 adds genuine meaning for record_fields (must use uDesigner technical names), for confirmed (must be true), and clarifies what attachments contain (documents and review reports), but leaves project_number, bpname, and attachment limits (max 8, base64 size) undocumented.

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 (creates a single BP Contract record) plus its distinguishing scope: attachments and review reports created in the same REST operation. An agent can tell this apart from the read-oriented siblings and the generic unifier_rest_request.

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?

It gives operational preconditions (confirmed=true and UNIFIER_ALLOW_WRITE=true) but never states when to prefer this tool over alternatives such as the generic unifier_rest_request, nor any when-not guidance. Usage context 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.

unifier_find_bp_recordB

Buscador de un record_no en varios BPs y shells conocidos. Consulta cada objetivo indicado y devuelve únicamente las coincidencias; no realiza escrituras.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetsYes
record_noYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations the description carries the full burden, and it does disclose the key traits: read-only ("no realiza escrituras") and filtered output ("devuelve únicamente las coincidencias"). However, it omits auth/permission requirements, target-count limits, error behavior when a target is unreachable, and what a match contains.

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 tight, front-loaded sentences: the scope is stated first, then the read-only/no-write guarantee. No filler or redundancy.

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

Completeness2/5

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

For a tool with no output schema, no annotations, and 0% schema coverage, the description should explain the return shape (what a match looks like) and the composition of targets. Neither is covered, leaving significant gaps an agent must guess at.

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. It names record_no implicitly and refers vaguely to "cada objetivo indicado" for targets, but never explains that each target needs both bpname and project_number, nor the 20-item cap. The nested structure is left entirely 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?

States a specific verb+resource: it searches a record_no across multiple BPs and shells, and returns only matches. Clear enough to select over siblings, though domain jargon ("BP", "shell") is undefined and it does not distinguish itself from unifier_list_bp_records or unifier_inspect_bp.

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?

The description only says what the tool does ("Consulta cada objetivo indicado"), with no when-to-use guidance, no prerequisites, and no mention of alternatives such as unifier_list_bp_records or unifier_inspect_bp. Usage is implied at best.

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

unifier_inspect_bpB

Inspector de BP de solo lectura: valida el shell y consulta un Business Process. Resume estados, responsables, importes detectados y los últimos registros.

ParametersJSON Schema
NameRequiredDescriptionDefault
bpnameYes
record_fieldsNo
project_numberYes
filter_conditionNo

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose the most important trait: 'solo lectura' (read-only). It also implies the output is a bounded summary ('los últimos registros'), which hints at result limiting. It says nothing about auth requirements, error behavior when the shell/BP is missing, or pagination.

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?

A single front-loaded sentence that leads with the read-only nature and the core action, then lists the returned content. No filler; the size is appropriate. Only minor cost is that the field list compresses two undocumented parameters out of the picture.

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?

There is no output schema and no annotations, so the description helpful by outlining the return contents (statuses, assignees, amounts, latest records). However, with two of four parameters undocumented and no note on shell-validation failure behavior, it is not fully sufficient for confident invocation.

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% across 4 parameters, so the description must compensate and largely does not. It implies project_number maps to the shell and bpname to the BP, but record_fields and filter_condition are never mentioned, leaving half the parameters with no semantics anywhere.

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

Purpose4/5

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

States a specific verb and resource: a read-only 'inspector de BP' that 'valida el shell y consulta un Business Process', plus a sketch of what it returns (estados, responsables, importes, últimos registros). It reads as a summary/overview tool, which separates it loosely from raw record-listing siblings, but it never names those siblings to sharpen the distinction.

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?

No explicit when-to-use guidance and no comparison to the obvious alternatives (unifier_list_bp_records, unifier_find_bp_record). The word 'Resume' hints at a summarization role, but the agent must infer that this is the overview tool rather than the record-fetching tool.

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

unifier_list_bp_recordsC

Obtiene registros de un Business Process para un shell mediante el endpoint V1 bp/records.

ParametersJSON Schema
NameRequiredDescriptionDefault
bpnameYes
lineitemNo
record_fieldsNo
project_numberYes
lineitem_fieldsNo
filter_conditionNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations exist, so the description carries the full behavioral burden, yet it only implies a read via 'Obtiene'. It says nothing about pagination, result size limits, authentication requirements, or what a shell/BP combination returns, leaving an agent with no operational context.

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?

A single sentence with no padding, so nothing is wasted, but it is under-specified rather than deliberately lean. Front-loading the purpose is fine; the brevity here reflects missing content, not tight editing.

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

Completeness1/5

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

For a six-parameter tool with no annotations, no output schema, and 0% schema coverage, one sentence is wholly inadequate. Key behaviors, parameter formats, and return shape are all undocumented.

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

Parameters1/5

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

Schema description coverage is 0% across six parameters, and the description explains none of them: filter_condition syntax, lineitem yes/no, record_fields/lineitem_fields formats, and the distinction between bpname and project_number are all absent. With zero schema documentation and zero description compensation, an agent cannot construct a correct call.

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?

'Obtiene registros de un Business Process para un shell' gives a specific verb (retrieves) plus resource (BP records) and scope (per shell), which distinguishes it from lookup-oriented siblings like unifier_find_bp_record. The trailing endpoint reference adds implementation detail rather than more clarity, and no sibling is named explicitly, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool, when not to, or which sibling to prefer (e.g. find_bp_record vs this list tool). Only an endpoint path is given, which is implementation trivia rather than selection guidance.

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

unifier_list_shellsB

Lista proyectos/shells de Unifier mediante V1 admin/projectshell. Devuelve una página de items, total y summary; usa total para el recuento exacto y no enumeres más elementos de los incluidos en items.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
limitNo
offsetNo
statusNo
filter_conditionNo

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, but it does disclose real behavior: the response is paginated ('una página de items') and includes total and summary, plus the constraint not to enumerate beyond items. It omits auth/permission requirements, rate limits, and any note on what filtering is applied by default.

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 tight sentences, both front-loaded: capabilities first, then the result-count caveat. No filler, though the output caveat could have been merged into the first sentence.

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?

Absent an output schema, the description usefully sketches the return shape (items/total/summary) and the pagination model. But for a tool with five undocumented parameters and no annotations, it leaves too much unsaid about inputs and filtering to be considered 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?

Schema description coverage is 0% for five parameters, and the description never mentions type, limit, offset, status, or filter_condition. Only the word 'página' indirectly hints at limit/offset, leaving the enum values and filter syntax entirely 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?

States a specific verb and resource ('Lista proyectos/shells de Unifier') and even names the underlying API surface (V1 admin/projectshell), so the agent knows exactly what is returned. It does not, however, differentiate itself from siblings such as unifier_audit_inactive_shells or unifier_read_shell_360.

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?

The only guidance is about interpreting results ('usa total para el recuento exacto'), not about when to choose this tool over the other shell-related siblings. There are no prerequisites, no exclusions, and no named alternatives.

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

unifier_project_autopilot_snapshotB

Snapshot determinista y de solo lectura para el Autopilot de proyecto. Reúne coste, planificación, BPs y aprobaciones en métricas estables, preparadas para comparar con la ejecución anterior sin descargar registros completos.

ParametersJSON Schema
NameRequiredDescriptionDefault
bpsNo
approval_bpsNo
project_numberYes
source_project_idNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does usefully declare 'solo lectura' (read-only) and 'determinista' (deterministic/reproducible), plus that it avoids downloading full records, which substitutes for the missing readOnlyHint. However, it omits permission/auth requirements, rate-limit behavior, and any detail about the shape of the returned metrics.

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 tight sentences with the core identity and the differentiator (read-only, deterministic, aggregated, comparable) front-loaded. No filler, though the second sentence is doing double duty for both purpose and rationale.

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

Completeness2/5

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

For a tool with 4 parameters, 0% schema coverage, no output schema, and no annotations, the description is too thin. It leaves the meaning of source_project_id, the bps/approval_bps structuring, and the returned metric format entirely undocumented.

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% across 4 parameters, so the description must compensate. It loosely gestures at bps/approval_bps via 'BPs y aprobaciones', but project_number and source_project_id are never explained, and there is no indication of how bps/approval_bps arrays should be populated.

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

Purpose4/5

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

States a specific verb+resource: a deterministic, read-only snapshot for the project Autopilot that aggregates cost, planning, BPs and approvals into stable metrics. This is a clear multi-domain aggregate, distinguishable from single-domain siblings like cost_sheet_budget or schedule_health, though it never names those siblings explicitly.

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?

Usage is only implied: 'preparadas para comparar con la ejecución anterior sin descargar registros completos' hints at using it for stable metric comparisons rather than pulling full records. There is no explicit when-to-use vs when-not, and no routing against unifier_compare_projects, which is the obvious adjacent alternative.

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

unifier_project_healthC

Salud de proyecto de solo lectura. Encadena la Ficha 360, el estado de Cost Sheet, paquetes de trabajo y los BPs de costes, compromisos, cambios o facturas que se indiquen.

ParametersJSON Schema
NameRequiredDescriptionDefault
bpsNo
project_numberYes

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose the key safety trait: 'solo lectura' (read-only), which an annotation would normally provide. It also reveals the aggregation behavior (chaining multiple sources). It stops short of permissions, performance implications of chaining several lookups, or what the response contains.

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 tight sentences with the read-only nature and the chained sources front-loaded. It is efficiently sized, though the term 'Encadena' is somewhat jargonistic and the sentence is dense enough that its scope is not immediately obvious.

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

Completeness2/5

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

For a composite tool with no annotations, no output schema, and 0% parameter description coverage, the description is too thin. It does not explain the return shape, whether 'bps' is optional, what record_fields does, or the cost/behavior of chaining several data sources — all things an agent needs to invoke it correctly.

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 both parameters, but it only gestures at the 'bps' categories (costes, compromisos, cambios, facturas) — values already enumerated in the schema — while saying nothing about 'bpname' or 'record_fields'. The required 'project_number' parameter is likewise unexplained, leaving most parameter semantics unaddressed.

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 purpose: a read-only project health report that aggregates the Ficha 360, Cost Sheet status, work packages, and specified BPs. This clearly communicates it is a composite/rollup tool rather than a single-resource reader. However, it does not differentiate itself from close siblings like unifier_project_autopilot_snapshot or unifier_risk_center, leaving overlap ambiguity.

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 explicit when-to-use guidance and no alternatives named. Given the crowded sibling set (autopilot_snapshot, risk_center, read_shell_360, cost_sheet_budget), the description should say when this aggregate is preferred over those, but it offers no routing information. 'Que se indiquen' hints that BP selection is caller-driven but does not explain the condition.

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

unifier_read_shell_360A

Workflow de lectura encadenada para una Ficha 360 de un shell. Primero valida el project_number mediante V1 admin/projectshell y después consulta V2 admin/shell para recuperar metadatos activos. No realiza escrituras ni expone campos sensibles.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_numberYes

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations present, the description carries the full burden and does meaningfully address it: 'No realiza escrituras ni expone campos sensibles' substitutes for a readOnlyHint and a data-sensitivity disclosure, and the two-stage validate-then-query chain reveals internal behavior. It still omits auth/permission requirements and error behavior when validation fails.

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?

Three compact sentences, each earning its place: what it is, the execution order, and the safety profile. The purpose is front-loaded before the workflow detail, with no filler.

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 single-parameter read tool with no output schema, the definition covers identity, workflow, and safety. However, it does not explain the shape of the returned 'metadatos activos' or behavior on invalid project_number, leaving gaps for an agent to call and interpret results confidently.

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?

One parameter (project_number) with 0% schema description coverage means the description must compensate. It names project_number and explains that it is validated against V1 admin/projectshell before use, adding role-based meaning, but gives no format, constraints, or example despite the string's min/max length bounds.

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 verb+resource: a chained read operation producing a 'Ficha 360' for a single shell, with the exact two-step sequence (validate via V1 admin/projectshell, then query V2 admin/shell). It is distinguishable from siblings like unifier_list_shells (list vs single-entity 360 read), though it does not explicitly name those 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?

Usage is implied by the workflow description (it is the tool for retrieving a full 360 view of one shell), but there is no explicit when-to-use vs. when-to-prefer-an-alternative guidance and no stated prerequisites. An agent must infer that this is for single-shell deep reads rather than enumeration.

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

unifier_rest_requestC

Ejecuta un endpoint REST V1/V2 documentado. GET/HEAD están permitidos; POST/PUT/PATCH/DELETE exigen UNIFIER_ALLOW_WRITE=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
pathYes
queryNo
methodYes

TDQS

C2.9/5.0
Behavior3/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 does disclose a real constraint: write methods are gated behind an environment flag. It still omits auth/credential requirements, error and rate-limit behavior, and what happens to the request when the flag is absent, so the mutation profile is only partially visible.

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?

A single compact sentence with the method-permission rule front-loaded; nothing is padded. It is terse to the point of being cryptic (Spanish text amid English tooling) but every clause carries information.

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

Completeness2/5

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

For a deliberately open-ended REST proxy with nested/arbitrary objects, no output schema, and no annotations, the description is far too thin. It never explains the response shape, how to discover valid paths, or how the four parameters combine, leaving an agent largely guessing.

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% across four parameters, including a free-form 'body' and an arbitrary string map 'query', so the description must compensate and does not. It hints that 'path' must target a documented V1/V2 endpoint and that 'method' semantics differ by HTTP verb, but adds no format, encoding, or body-shape guidance.

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

Purpose4/5

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

States a specific verb and resource ('Ejecuta un endpoint REST V1/V2 documentado'), so an agent knows this is a generic API passthrough rather than a domain action. It does not, however, differentiate itself from the many specialized siblings (unifier_list_shells, unifier_find_bp_record, etc.) that cover the same underlying API surface.

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?

The only usage rule given is the method gate (GET/HEAD free, writes need UNIFIER_ALLOW_WRITE=true). There is no guidance on when to reach for this generic escape hatch versus the 17 named Unifier tools, nor any prerequisite such as needing a documented endpoint path or credentials.

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

unifier_risk_centerB

Centro de Riesgos Agentic de solo lectura. Coordina shell, Cost Sheet, Schedule Sheets y BPs de riesgo seleccionados; devuelve evidencia, riesgos clasificados y borradores de acción sin ejecutar ningún cambio.

ParametersJSON Schema
NameRequiredDescriptionDefault
risk_bpsNo
project_numberYes

TDQS

B3.2/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 disclose the key trait: read-only, explicitly 'sin ejecutar ningún cambio', plus what it returns (evidence, classified risks, action drafts). It omits auth/permission requirements, rate limits and how the multi-source coordination actually behaves, which a no-annotation tool ideally would state.

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 tight sentences with the read-only constraint front-loaded ahead of the scope and output summary. No filler; the only weakness is that brevity comes at the cost of parameter detail.

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 an orchestration tool with two undocumented parameters, no output schema and no annotations, the description conveys the gist but leaves real gaps: the risk_bps object shape, the meaning of project_number, and what 'coordina' involves operationally are all absent.

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 it says nothing about project_number or the risk_bps array structure. 'BPs de riesgo seleccionados' loosely gestures at risk_bps but gives no format, enum values or selection semantics, and project_number is never mentioned.

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 specific resource (Centro de Riesgos Agentic) with an explicit verb set — coordinates shell/Cost Sheet/Schedule Sheets/risk BPs and returns evidence, classified risks and action drafts. Its orchestration scope is distinguishable from narrower siblings like unifier_find_bp_record, but it never names them to sharpen the boundary.

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 when-to-use or when-not-to-use guidance and no alternative named among the many unifier_* siblings. An agent can infer this is for consolidated risk review, but the description does not tell it when this tool beats unifier_project_health or unifier_read_shell_360.

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

unifier_schedule_healthB

Planificación de solo lectura. Valida el shell, consulta las Schedule Sheets y, si se facilita source_project_id, encadena la lectura de actividades para destacar vencidas, próximas e hitos disponibles.

ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_filterNo
project_numberYes
source_project_idNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose the key behavioral trait that this is read-only ('Planificación de solo lectura') plus the chained/conditional read behavior. It does not mention auth needs, pagination, error modes when the shell is invalid, or what the chained read returns.

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?

A single dense sentence that front-loads the read-only safety note and the primary action before the conditional branch. Little waste, though the conditional clause is packed tightly.

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?

Given no annotations, no output schema, 0% schema coverage, and a nested parameter object, the description covers the tool's overall shape and the conditional escalation but leaves return values and most parameter meaning unexplained. It is adequate to understand intent, not to invoke confidently.

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% with three parameters including a nested sheet_filter object. The description only clarifies source_project_id's role as an opt-in trigger for chained reading; project_number and the entire nested sheet_filter (name/status/main_sheet/sheet_lock) are left completely undocumented, so it only partially compensates for the coverage 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 states a specific verb and resource: it validates the shell, queries Schedule Sheets, and (conditionally) reads activities to surface overdue/upcoming items and milestones. This distinguishes it from generic siblings like unifier_project_health, though the overlap with that sibling is not explicitly resolved.

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?

It gives one clear conditional rule — 'if source_project_id is provided' the tool escalates to chained activity reading — which implies when the deeper mode activates. However, it gives no guidance on when to pick this over unifier_project_health or unifier_read_shell_360, nor any prerequisites.

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

unifier_search_documentsB

Document Manager de solo lectura. Valida el shell, consulta los metadatos de una ruta y lista documentos bajo esa carpeta; puede filtrar localmente por nombre, autor o fecha sin descargar archivos.

ParametersJSON Schema
NameRequiredDescriptionDefault
node_typeNo
parent_pathYes
search_textNo
project_numberYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it usefully discloses two behavioral traits — read-only operation and that files are not downloaded — which is meaningful context. It stops short of describing permissions, rate limits, pagination, or what the metadata result contains.

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 lead phrase front-loads the tool identity and the rest packs the mechanics into one dense but readable sentence with no filler. The semicolon-joined clauses are slightly heavy but every clause contributes 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?

For a read-only listing tool with no output schema, four params at 0% schema coverage, and no annotations, the description is only partially complete. It conveys purpose and the safe-read behavior but omits return format, pagination, and most parameter semantics that the missing structures leave unaddressed.

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% across 4 parameters, so the description must compensate and largely does not. It only loosely gestures at 'shell' (project_number), 'ruta' (parent_path), and local filters by name/author/date (search_text), while leaving node_type's Folder/Document enum, required-vs-optional status, and format constraints undocumented.

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 specific verbs and a resource ('consulta los metadatos de una ruta y lista documentos bajo esa carpeta') and frames the tool as a read-only document manager, so an agent knows exactly what it retrieves. It does not explicitly name a sibling to differentiate from, but no other sibling tool operates on documents, so the distinction is effectively clear.

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?

Usage is implied by 'de solo lectura' and 'sin descargar archivos', which tells the agent this is a safe metadata/listing operation. However, there is no explicit when-to-use versus when-not, no prerequisites, and no reference to alternative tools for shell or document access.

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. 18 tool updatesv1.0.0
    • First observedunifier_approval_control
    • First observedunifier_audit_inactive_shells
    • First observedunifier_bp_permissions
    • First observedunifier_compare_projects
    • First observedunifier_connection_test
    • First observedunifier_cost_sheet_budget
    • First observedunifier_create_contract_with_attachments
    • First observedunifier_find_bp_record
    • First observedunifier_inspect_bp
    • First observedunifier_list_bp_records
    • First observedunifier_list_shells
    • First observedunifier_project_autopilot_snapshot
    • First observedunifier_project_health
    • First observedunifier_read_shell_360
    • First observedunifier_rest_request
    • First observedunifier_risk_center
    • First observedunifier_schedule_health
    • First observedunifier_search_documents

TDQS

C2.9/5.0

Scored across 18 tools

Disambiguation3/5

Several tools are essentially 'validate shell then chain reads into a dashboard' (project_health, risk_center, cost_sheet_budget, schedule_health, project_autopilot_snapshot, approval_control, compare_projects), so an agent can easily misselect among them. Descriptions differentiate focus (cost vs risk vs schedule vs approvals), which helps, but the boundaries remain fuzzy. BP-record tools (inspect_bp, list_bp_records, find_bp_record) also partially overlap.

Naming Consistency4/5

All tools share the unifier_ prefix and snake_case, giving a predictable, readable convention. Minor deviation: some are verb_noun (list_shells, find_bp_record, compare_projects) while others are noun-phrases (project_health, risk_center, cost_sheet_budget), but the style is uniformly lowercase snake_case. No camelCase/snake_case mixing.

Tool Count3/5

18 tools sits in the heavy-but-borderline band. Primavera Unifier is a broad, complex domain (shells, BPs, cost sheets, schedules, documents, permissions), so the count is defensible, but several dashboard-style tools arguably could be consolidated. It is not egregiously bloated, yet above the comfortable 3-15 range.

Completeness3/5

The surface is heavily read/analysis-oriented with broad coverage of shells, BPs, cost sheets, schedules, documents, and permissions. However, write operations are thin: only create_contract_with_attachments plus the generic rest_request escape hatch, with no explicit update/delete tools or workflow approve/reject actions. Core read workflows are covered but lifecycle write coverage has notable gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides read-only access to Confluence, GitHub, Jira, Figma, Outlook, Teams, and browser automation for AI clients, enabling safe discovery, retrieval, and summarization of company knowledge without modifying source systems.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to safely inspect Oracle Database schemas, objects, and PL/SQL source with a strict read-only guard, without ever modifying data.
    10 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables read-only file-management operations from AI assistants, including health checks, connection and folder listings, search, share-link resolution, metadata retrieval, and on-demand document reading.
    MIT