Skip to main content
Glama

UCA MCP — Servidor Model Context Protocol para la Universidad Católica Argentina (UCA)

Node.js Licencia MCP

Servidor Model Context Protocol (MCP) open source para conectar a tus asistentes de IA (Claude Desktop, Cursor, VS Code, Gemini, etc.) de forma segura y directa con las plataformas institucionales de la Universidad Católica Argentina:

  • EVA (eva.uca.edu.ar)

  • SIU Guaraní (guarani.uca.edu.ar)

  • Campus Autogestión (autogestion.uca.edu.ar)


Privacidad y Tratamiento de Datos:

  • El software opera 100% de manera local en tu computadora.

  • Las credenciales se cifran localmente en tu computadora y se resguardan en el Llavero nativo del Sistema Operativo (Windows DPAPI, macOS Keychain, Linux Secret Service).

  • Todas las subidas (entrega de tareas, respuestas a foros o inscripciones) están protegidas por una confirmación explícita del usuario (Canal B / Elicitation).


Instalación

Prerequisito: Necesitás Node.js v20.18.1 o superior instalado en tu computadora (salvo la opción .mcpb de Claude Desktop que no lo requiere).

Elegí tu cliente y seguí los pasos. El uca-mcp login abre el navegador para que te loguees con tu cuenta @uca.edu.ar y el 2FA — hacelo una sola vez.


Claude Desktop

Opción A — Sin terminal (recomendada):

  1. Descargá uca-mcp-1.0.8.mcpb desde Releases.

  2. En Claude Desktop andá a Configuración → Extensiones y arrastrá el archivo .mcpb.

  3. Abrí un nuevo chat y escribí "Iniciá sesión en UCA". Listo.

Opción B — Desde terminal:

npm install -g uca-mcp
uca-mcp login
uca-mcp setup claude

Reiniciá Claude Desktop y ya está conectado.


Claude Code / Claude Code CLI

npm install -g uca-mcp
uca-mcp login
claude mcp add uca -- uca-mcp serve

Antigravity / Antigravity CLI

npm install -g uca-mcp
uca-mcp login
agy mcp add uca -- uca-mcp serve

ChatGPT Desktop / Codex CLI

npm install -g uca-mcp
uca-mcp login
codex mcp add uca -- uca-mcp serve

Cursor

npm install -g uca-mcp
uca-mcp login
uca-mcp setup cursor

Reiniciá Cursor y ya está conectado.


VS Code

npm install -g uca-mcp
uca-mcp login
uca-mcp setup vscode

Reiniciá VS Code y ya está conectado.


Hermes

npm install -g uca-mcp
uca-mcp login
hermes mcp add uca -- uca-mcp serve

OpenClaw

npm install -g uca-mcp
uca-mcp login
openclaw mcp add uca --command "uca-mcp" --arg "serve"

OpenCode

npm install -g uca-mcp
uca-mcp login
opencode mcp add uca -- uca-mcp serve

Pi

npm install -g uca-mcp
uca-mcp login
pi mcp add uca -- uca-mcp serve

Configuración manual (JSON) para cualquier cliente

Si tu cliente no está listado, agregá el servidor a su archivo de configuración MCP (mcpServers). Con la instalación global:

{
  "mcpServers": {
    "uca": { "command": "uca-mcp", "args": ["serve"] }
  }
}

Verificar que todo funcione (opcional)

Desde cualquier terminal, después de instalar y loguearte:

uca-mcp doctor

Comprueba Node.js, llavero del sistema, navegador, diálogo nativo y conectividad a EVA, SIU Guaraní y Campus.

NOTE

Transporte Exclusivo STDIO Local: En esta versión (v1), no cuenta con transporte HTTP/SSE remoto, por lo que no es compatible directamente con ChatGPT Web ni aplicaciones móviles sin un túnel MCP local autogestionado.


Related MCP server: UniMCP

Catálogo de Herramientas MCP

Herramienta

Plataforma

Tipo

Descripción

uca_diagnosticar_sistema

Local

Auth/Diag

Audita conectividad, validez del entorno gráfico y estado de la sesión cifrada.

uca_iniciar_sesion

Entra ID

Auth

Abre el navegador de forma no bloqueante para completar o renovar el login con 2FA.

uca_resumen_semanal

Compuesta

Lectura

Consulta en paralelo entregas próximas de EVA, avisos de foros y cursadas de Guaraní.

eva_materias

EVA

Lectura

Lista las aulas virtuales matriculadas y sus identificadores (curso_id).

eva_contenido_curso

EVA

Lectura

Lista las secciones, temas, recursos y tareas de un curso.

eva_cronograma

EVA

Lectura

Busca el cronograma o programa de la materia y extrae fechas de parciales, recuperatorios y entregas.

eva_entregas_proximas

EVA

Lectura

Consulta qué entregas vencen en los próximos días (ej. la semana que viene) y avisos de cátedra.

eva_cuestionarios

EVA

Lectura

Consulta cuestionarios, fechas de cierre, intentos y calificaciones en EVA.

eva_tareas_y_notas

EVA

Lectura

Consulta tareas pendientes, fechas límite y estado de calificaciones.

eva_foros

EVA

Lectura

Obtiene avisos de cátedra y discusiones recientes (con aviso de contenido no confiable).

eva_hilo_foro

EVA

Lectura

Obtiene el debate o hilo completo de un foro de cátedra con todas sus respuestas y mensajes.

eva_buscar_materiales

EVA

Lectura

Busca recursos y consignas por palabra clave en todas tus aulas.

eva_leer_archivo

EVA

Lectura

Descarga y extrae texto de PDFs y Office (.docx/.xlsx/.pptx) con allowlist estricta HTTPS y anti zip-bombs.

eva_guardar_borrador_tarea

EVA

Mutación

Sube un borrador editable de entrega tras validación y aprobación física en Canal B.

eva_responder_foro

EVA

Mutación

Publica una respuesta en un foro mostrando el texto completo tras aprobación en Canal B.

guarani_progreso_carrera

SIU Guaraní

Lectura

Responde exactamente cuántas materias te faltan para recibirte, cuáles estás cursando y el avance por año.

guarani_plan_optimo

SIU Guaraní

Lectura

Calcula el plan óptimo de cursada rankeando materias por cierre transitivo de correlativas y camino crítico.

guarani_materias_habilitadas

SIU Guaraní

Lectura

Computa qué materias pendientes podés cursar el próximo período según tu grafo de correlativas.

guarani_estado_cursada

SIU Guaraní

Lectura

Horarios, asistencias acumuladas, porcentaje de faltas y predictor de regularidad de cursadas activas.

guarani_horario_semanal

SIU Guaraní

Lectura

Horario semanal estructurado con materias, días, horarios, aulas y comisiones (admite filtro 'hoy').

guarani_cronograma_evaluaciones

SIU Guaraní

Lectura

Fechas oficiales de parciales, recuperatorios y otras evaluaciones de tus cursadas actuales.

guarani_historia_academica

SIU Guaraní

Lectura

Analítico completo: finales aprobados, materias regulares, libro, folio y promedios.

guarani_mesas_disponibles

SIU Guaraní

Lectura

Mesas de examen final con fechas, turnos, tribunales y estado de inscripción.

guarani_mis_inscripciones_examen

SIU Guaraní

Lectura

Consulta inscripciones vigentes a examen final y actuaciones provisorias.

guarani_encuestas_pendientes

SIU Guaraní

Lectura

Verifica si hay encuestas docentes institucionales obligatorias o pendientes de responder.

guarani_historial_constancias

SIU Guaraní

Lectura

Consulta el historial de solicitudes de constancias y certificados emitidos con descarga de PDF.

guarani_correlatividades_y_plan

SIU Guaraní

Lectura

Plan interactivo, materias por año, correlativas para cursar/rendir e impacto a futuro.

guarani_certificado_alumno_regular

SIU Guaraní

Mutación

Emite y descarga formalmente en PDF la Constancia de Alumno Regular (o aprobadas/promedio) con código de validación institucional tras aprobación en Canal B.

guarani_inscribir_examen

SIU Guaraní

Mutación

Ciclo atómico en 2 fases con confirmación física en Canal B. Nota: La baja de examen no está disponible vía MCP (v1) y debe realizarse en SIU Guaraní.

campus_aranceles_y_tramites

Campus

Lectura

Consulta de cuotas al día/pendientes y estado de trámites administrativos (estricto read-only).


Seguridad y Arquitectura

  1. Blindaje de STDOUT (src/silence-stdout.ts): Todo log, advertencia o salida de procesos secundarios se redirige a stderr. El transporte JSON-RPC corre exclusivamente sobre mcpStdoutStream, garantizando que la trama no se corrompa jamás.

  2. Canal B Independiente y Elicitation: Las acciones de mutación no pueden ser auto-aprobadas por el LLM ni por inyecciones de prompt. Se despliega una ventana modal nativa del sistema operativo (WScript.Shell.Popup en Windows, osascript en macOS, zenity / kdialog / yad en Linux) con botón Cancelar por defecto y timeout de 45 segundos (fail-closed). En entornos headless o donde las ventanas nativas no estén disponibles, conmuta de forma transparente a Canal A (formulario interactivo MCP Elicitation) sin falsos rechazos de usuario.

  3. Llavero Nativo y Cero Secretos en argv: Las claves maestras se manejan mediante canal stdin (en Windows DPAPI, macOS Keychain mediante security -i, y Linux Secret Service vía secret-tool con soporte de UCA_PASSPHRASE y fallback degradado a machine-id), evitando que secretos aparezcan en ps o en variables de entorno. Asimismo, las cookies de sesión de Entra ID se alojan en el perfil persistente de navegador (browser-profile/), protegidas bajo el cifrado nativo de Chromium en el sistema operativo (DPAPI en Windows). En macOS y Linux, el aislamiento recae en los permisos de archivo locales del usuario del sistema operativo. El comando uca-mcp logout (o invocar uca_iniciar_sesion con forzar_relogin: true) purga este directorio y los certificados descargados por completo.

  4. Protección Anti-SSRF y Anti Zip-Bomb:

    • Descargas restringidas exclusivamente a https://eva.uca.edu.ar bajo /pluginfile.php o /mod/.

    • Streaming de descarga con límite rígido de 25 MB.

    • Descompresión en streaming con BoundedUnzipInflate de fflate para abortar inmediatamente durante la descompresión si los bytes reales superan los 60 MB, neutralizando cabeceras falsificadas.

  5. Modelo de Amenazas y Límites de Seguridad del Sistema Operativo:

    • Canal B y Elicitation previenen inyecciones de prompt indirectas, escalamiento de contexto o ejecución autónoma no autorizada de herramientas por parte del LLM.

    • Límites de aislamiento del host: Si un agente de IA o proceso secundario posee permisos de shell o ejecución arbitraria de comandos en el sistema operativo bajo la misma cuenta de usuario (mismo UID/SID), dicho proceso tiene acceso nativo al sistema de archivos local y podría leer las cookies de sesión, el llavero o los perfiles de navegador. Se recomienda ejecutar agentes con acceso a shell en entornos aislados o contenedores.


Esta herramienta fue creada para estudiantes de la UCA y no cuenta con patrocinio, aval, asociación ni relación formal con la Universidad Católica Argentina.

Licencia

Este proyecto se distribuye bajo los términos de la Licencia MIT. Consultá el archivo LICENSE para más detalles.

Available Tools

30 tools
campus_aranceles_y_tramites[EXPERIMENTAL] Aranceles y Trámites en CampusA
Read-onlyIdempotent

[EXPERIMENTAL] Consulta aranceles al día/pendientes y estado de trámites administrativos en Campus Autogestión. Incluye saldo, habilitación para cursar/rendir y trámites en curso.

NameRequiredDescriptionDefault
consultaNoFiltro de consulta: 'todo', 'aranceles' o 'tramites'todo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is carried. The description adds useful behavioral content by naming exactly what the call surfaces (balance, eligibility to attend/take exams, in-progress procedures), and the [EXPERIMENTAL] marker warns of instability; it says nothing about authentication, rate limits, or whether historical data is included.

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 front-load the resource domain and then enumerate the returned content; no filler. The only waste is the recurring '[EXPERIMENTAL]' marker, which duplicates the title verbatim.

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?

With no output schema, the description carries the burden of signaling return values, and it does so concretely (saldo, habilitación, trámites en curso). For a zero-required-param read-only tool with annotations covering safety, that is sufficient; only the absence of scope boundaries versus the guarani_* tools leaves a gap.

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

Parameters3/5

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

Schema description coverage is 100% and the single 'consulta' enum is fully self-documenting, so the baseline is 3. The prose indirectly covers all three modes ('aranceles', 'trámites', and implicitly 'todo') but never references the filter parameter or explains default behavior, adding little beyond the schema.

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?

Names a specific resource domain (aranceles al día/pendientes, estado de trámites administrativos) with a concrete verb (consulta) and enumerates the data returned (saldo, habilitación para cursar/rendir, trámites en curso). The purpose is clear, but nothing distinguishes it from related siblings such as guarani_materias_habilitadas or guarani_mis_inscripciones_examen, which touch on adjacent academic-status data.

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 scope statement — an agent can infer this is the fees + administrative-procedures tool. However, there is no explicit when-to-use, no negative guidance, and no routing suggestion toward the many guarani_* or eva_* siblings that overlap in the 'habilitación para cursar/rendir' territory.

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

eva_buscar_materialesBuscar Materiales en EVAB
Read-onlyIdempotent

Busca recursos, consignas y documentos en EVA por palabra clave.

NameRequiredDescriptionDefault
queryYesTérmino de búsqueda (1-100 caracteres)
limiteNoMáximo de resultados a devolver (por defecto 25)
curso_idNoID del curso (opcional)

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety and determinism are covered. The description adds the scope of indexed content types, but says nothing about result ranking, result volume, or whether search spans all courses when curso_id is omitted — useful context for an open-world search 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?

A single front-loaded sentence with no filler, and the resource scope precedes the mechanism. It is near-minimal but does not waste words.

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 search tool with no output schema, the description is minimally viable. It leaves unanswered whether the search is global by default, how results are ordered, and how it relates to eva_contenido_curso, which an agent would want before choosing it.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters (query, limite, curso_id) are fully documented in the schema including bounds and defaults. The description adds no extra semantics such as search syntax, accent handling, or what narrowing by curso_id actually filters.

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 (busca) and resource set (recursos, consignas y documentos) plus the retrieval mechanism (por palabra clave). This clearly separates it from browse-style siblings like eva_contenido_curso or eva_materias, though it does not name them 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: keyword search is the natural signal, so an agent can infer it is for targeted lookups rather than full enumeration. There is no explicit when-to-use/when-not guidance and no pointer to eva_contenido_curso for course-scoped browsing, which is the main ambiguity.

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

eva_contenido_cursoContenido del Curso en EVAA
Read-onlyIdempotent

Lista las secciones, módulos, tareas y recursos pertenecientes a un curso en EVA. Permite filtrar por tipo o sección para presupuestar contexto.

NameRequiredDescriptionDefault
curso_idYesID numérico del curso en EVA
seccion_idNoID numérico de la sección a consultar (opcional, omite para todas)
filtro_tipoNoFiltro opcional por tipo de recurso (ej: 'assign', 'resource', 'folder', 'url')
forzar_refrescoNoSi es true, invalida la caché en memoria y consulta directamente a EVA

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds only a vague nod to context budgeting ('presupuestar contexto'), but never mentions that results may be large, that caching exists (only surfaced in the schema via forzar_refresco), or anything about latency from hitting EVA directly.

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 compact sentences, front-loaded with what is returned and followed by the filtering capability. No redundant or filler text.

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 read-only listing tool with full schema coverage and no output schema, the description conveys enough about returned entities to call it confidently. It could say more about volume/ordering, but nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters, including the section filter and refresh-cache flag, are already documented. The description restates the type/section filtering already in the schema without adding format examples or interaction rules, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Lista') and enumerates the resource types returned (secciones, módulos, tareas, recursos) scoped to a course in EVA. It is clearly distinguishable from mutation tools, but it does not explicitly contrast itself with overlapping siblings like eva_tareas_y_notas or eva_buscar_materiales.

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 phrase 'para presupuestar contexto' implies this is the broad discovery tool used before narrower queries, but no explicit when-to-use/when-not-to-use or alternative routing is stated. An agent must infer that eva_tareas_y_notas or eva_buscar_materiales should be preferred for targeted lookups.

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

eva_cronogramaCronograma, Programa y Fechas de Parciales en EVAA
Read-onlyIdempotent

Busca el archivo de cronograma o programa de una materia en EVA Moodle y extrae las fechas de parciales, recuperatorios y entregas. Si no existe cronograma ni programa en el aula virtual, informa explícitamente que no hay.

NameRequiredDescriptionDefault
materiaYesNombre o código de la materia (ej: 'Álgebra', 'Física III', 'Ingeniería de Software')

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent and openWorld, so the safety profile is covered. The description adds one useful behavioral trait—explicitly reporting when no cronograma/programa exists instead of failing silently—but says nothing about extraction limits, file formats handled, or what the returned date list looks like.

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 sentences, zero waste: the first front-loads what is searched and what is extracted, the second covers the no-result path. Nothing is redundant with the schema or annotations.

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 one-parameter read tool with no output schema, the description covers purpose, extracted data types and the empty-result behavior, which is nearly everything needed. The remaining gap is not routing the agent away from the Guarani-based sibling tool.

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 coverage is 100% and the single `materia` parameter is fully documented with examples, so the description need not repeat it; it only references 'una materia' generically. Baseline 3 is appropriate since the schema does all the work.

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: searches the syllabus/program file of a course in EVA Moodle and extracts exam, retake and assignment dates. The 'en EVA Moodle' scoping distinguishes it from guarani_cronograma_evaluaciones, but the sibling is never named, so the agent must infer the split itself.

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 description (find evaluation dates inside the virtual classroom), and the no-result case is explicitly handled. However, there is no guidance on when to prefer this over guarani_cronograma_evaluaciones or eva_buscar_materiales, which overlap in intent.

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

eva_cuestionariosCuestionarios y Exámenes Parciales en EVAB
Read-onlyIdempotent

Consulta cuestionarios, exámenes parciales online, fechas de apertura/cierre, intentos y calificaciones en EVA Moodle (Lectura pura).

NameRequiredDescriptionDefault
curso_idNoID del curso en EVA. Si se omite, busca cuestionarios activos en el calendario y materias actuales.
forzar_refrescoNoSi es true, ignora la caché de 45-60 s y consulta de nuevo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint; "Lectura pura" merely restates the read-only hint rather than adding context. The mention of intentos and calificaciones does reveal what the response contains, but caching behavior (45–60 s) and the fallback scoping are only in the schema, so value beyond structured fields is modest.

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, and the read-only marker is placed at the end as a quick qualifier. Slightly dense field listing, but every element 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 low-complexity, two-optional-parameter read tool with no output schema and full annotation coverage, the description is sufficient: it names the resource, the fields returned, and the read-only nature. It could be strengthened by noting the cache/fallback behavior, but the schema already carries that.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (curso_id fallback behavior and forzar_refresco cache bypass) are fully documented in the schema. The description adds no parameter-level detail, which is acceptable at this coverage level but earns no extra credit.

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 ("Consulta") and concrete resources (cuestionarios, exámenes parciales online) plus the data returned (fechas de apertura/cierre, intentos, calificaciones), which clearly separates it from eva_tareas_y_notas or eva_foros. It does not name an alternative sibling explicitly, so it falls short of a 5.

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

Usage Guidelines2/5

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

The description says what it retrieves but never states when to prefer it over neighbors like eva_tareas_y_notas or guarani_cronograma_evaluaciones, nor any precondition. The only situational hint (omitting curso_id falls back to active quizzes in the calendar) lives in the schema, not the description.

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

eva_entregas_proximasEntregas Próximas y Avisos de la Semana en EVAB
Read-onlyIdempotent

Consulta qué tareas, trabajos prácticos o actividades tienen fecha de vencimiento en los próximos días (por defecto 7 días / la semana que viene) y avisos recientes de cátedra.

NameRequiredDescriptionDefault
diasNoCantidad de días a futuro (por defecto 7 para la próxima semana)
curso_idNoID de curso en EVA opcional

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds that the result mixes two kinds of data (deadlines plus 'avisos recientes de cátedra'), which is useful, but it says nothing about ordering, grouping, or how the 30-day cap behaves — that lives only in the 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?

A single front-loaded sentence that names the resource and the default horizon before any caveats. The nested parenthetical '(por defecto 7 días / la semana que viene)' is slightly redundant with the schema default but not wasteful.

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 exists, and the tool returns two distinct payload types (due items and notices), yet the description does not say how they are returned or whether either section can be empty. Annotations carry the safety story, but the return-shape gap leaves it only minimally complete.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented and the baseline is 3. The description only restates the default window; it adds no guidance on how curso_id scopes the results or what happens when it is omitted.

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 (consulta) and two concrete resources: items with upcoming due dates and recent course notices. An agent can tell it apart from eva_tareas_y_notas or eva_cronograma by the 'próximos días' framing, but the description never names those siblings to make the boundary explicit.

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 parenthetical '(por defecto 7 días / la semana que viene)' implies the typical use case — a weekly look-ahead — but there is no explicit statement of when to prefer this over eva_tareas_y_notas, eva_cronograma, or uca_resumen_semanal, nor any exclusion.

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

eva_forosForos y Avisos en EVAB
Read-onlyIdempotent

Obtiene los últimos avisos institucionales y mensajes de foros de cátedra (etiquetados con aviso de seguridad).

NameRequiredDescriptionDefault
limitNoCantidad máxima de mensajes (máx 50)
curso_idNoID del curso (opcional)
forzar_refrescoNoSi es true, ignora la caché de 45-60 s y consulta de nuevo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint and idempotentHint, so the safety profile is covered. The description adds little beyond that, and the parenthetical '(etiquetados con aviso de seguridad)' is ambiguous — it is unclear whether results are filtered to security-flagged messages or merely carry that label. Cache behavior is disclosed only via the schema's forzar_refresco parameter.

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 the verb and resource first and no filler. The trailing parenthetical is the only part that costs clarity rather than earning 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?

For a read-only listing tool with full schema coverage and clear annotations, the definition is mostly sufficient, but with no output schema the description should say what each item contains (course, date, flag) and resolve the 'aviso de seguridad' ambiguity.

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

Parameters3/5

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

Schema description coverage is 100% — limit, curso_id and forzar_refresco (including the 45-60 s cache) are all documented in the schema. The description adds no meaning beyond that, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Obtiene') and two concrete resources ('avisos institucionales' and 'mensajes de foros de cátedra') scoped to the latest items. An agent can tell it apart from eva_hilo_foro (single thread) or eva_responder_foro (write), though the description 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 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 mention of alternatives such as eva_hilo_foro for reading a full thread. The recency wording ('últimos') only hints at the intended scenario.

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

eva_guardar_borrador_tarea[EXPERIMENTAL] Guardar Borrador de Tarea en EVAB
Destructive

[EXPERIMENTAL] Sube un archivo o texto a EVA Moodle en modo borrador editable. Requiere confirmación física en Canal B.

NameRequiredDescriptionDefault
cmidYesID numérico de la tarea o módulo en EVA (cmid)
ruta_archivoNoRuta absoluta local del archivo a subir como borrador
texto_en_lineaNoTexto en línea para el borrador de entrega (máx 350 caracteres)

TDQS

B3.4/5.0
Behavior3/5

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

The annotations already declare destructiveHint=true, openWorldHint=true, idempotentHint=false and readOnlyHint=false, so the risk profile is structured. The description adds the material context of a required physical confirmation on Canal B, but does not say whether an existing draft is overwritten, what happens to prior submissions, or what a successful response looks like. Given the annotations carry part of the burden, a 3 is appropriate.

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

Conciseness4/5

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

Two tight sentences: the verb and mode are front-loaded, and the confirmation requirement follows. The '[EXPERIMENTAL]' prefix duplicates the title, but the body is waste-free. Nothing important is buried at the end.

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 destructive, non-idempotent write tool this is thin. No output schema exists, so the description should still address what state change results and how the draft relates to any existing delivery, and 'Canal B' is unexplained jargon. The annotations and full schema coverage carry the rest, so it is adequate rather than complete.

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

Parameters3/5

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

Schema description coverage is 100%, with all three parameters documented inline, including max lengths and the cmid meaning, so the schema does the heavy lifting. The description only implies that file or inline text are the two upload modes. It adds no format or mutual-exclusivity rules beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

The description gives a specific verb and resource: uploading a file or text to EVA Moodle as an editable draft. That is clearly distinct from read-only siblings such as eva_tareas_y_notas or eva_leer_archivo. It stops short of naming the upload case that would separate it from other write tools like eva_responder_foro.

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 discloses one prerequisite, 'Requiere confirmación física en Canal B', which tells the agent that a human confirmation step is needed before calling. It never says when to prefer this over alternatives, nor when to use ruta_archivo versus texto_en_linea. Usage is only implied by the draft-upload framing.

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

eva_hilo_foroHilo Completo de Foro en EVAA
Read-onlyIdempotent

Obtiene el debate o hilo completo de un foro de cátedra en EVA Moodle, incluyendo todas las respuestas y mensajes ordenados.

NameRequiredDescriptionDefault
discusion_idYesID numérico del debate o discusión del foro en EVA

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint and idempotentHint, so the safety profile is covered. The description usefully adds that replies are included and ordered, but says nothing about pagination, truncation of very long threads, or depth limits – relevant for an open-world read.

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?

One sentence, zero waste, with the resource and completeness guarantee front-loaded. Nothing to trim and nothing buried.

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 single-parameter read-only tool with annotations and full schema coverage, the description covers what is returned (all replies, ordered). It could go further on thread size or what happens with nested replies, but there is no output schema so the shape statement carries reasonable weight.

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?

There is a single parameter with 100% schema description coverage, so the baseline is 3. The description's "debate o hilo" phrasing reinforces the schema meaning of discusion_id but adds no format, source, or lookup guidance beyond it.

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 ("Obtiene el debate o hilo completo de un foro") and adds scope (all replies, ordered). It implicitly separates itself from eva_foros (listing) and eva_responder_foro (posting) by emphasizing "hilo completo," though it never names those siblings.

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: use this when you need the full thread rather than a forum listing. There is no explicit when-to-use, no prerequisites, and no named alternative (eva_foros vs eva_responder_foro), so an agent must infer the routing from the purpose statement alone.

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

eva_leer_archivoLectura de Archivos en EVAA
Read-onlyIdempotent

Descarga de forma segura (con allowlist HTTPS) y extrae texto de PDFs y Office, o retorna bloques de imagen en escaneados. Nota: La consulta de recursos o carpetas en EVA registra la visualización en la plataforma.

NameRequiredDescriptionDefault
urlNoURL completa del archivo o recurso en EVA (debe pertenecer a eva.uca.edu.ar)
cmidNoID numérico de la actividad o recurso (cmid) alternativo a la URL
max_paginasNoLímite de páginas a extraer (máx 50)
desde_paginaNoPágina inicial desde donde extraer contenido (por defecto 1)
forzar_refrescoNoSi es true, omite la caché local y vuelve a descargar el archivo de EVA

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds useful behavioral context beyond them: downloads are allowlisted to HTTPS, output is text for PDFs/Office or image blocks for scanned files, and resource/folder queries are logged as visualizations on the platform.

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 tightly written sentences with no wasted text. It front-loads the core behavior and then adds the platform-logging note as a relevant secondary detail.

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?

With no output schema, the description still explains that the tool returns extracted text or image blocks, which is important for an agent. Combined with the fully documented schema and annotations, it is nearly complete, though it could clarify that either url or cmid must be provided.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains url, cmid, page limits, and cache refresh. The description does not add parameter-level meaning beyond what the schema provides, which is the baseline for fully documented parameters.

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: securely downloads and extracts text from PDFs/Office files, or returns image blocks for scanned files. It is clear what the tool does, though it does not explicitly differentiate itself from siblings such as eva_contenido_curso or eva_buscar_materiales.

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 explains the capability but gives no explicit guidance on when to use this tool versus alternatives. It does not say when to choose file reading over listing course contents or searching materials, so the agent must infer usage from the tool name and schema.

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

eva_materiasMaterias y Cursos en EVAA
Read-onlyIdempotent

Lista las aulas virtuales y materias matriculadas en EVA Moodle con sus identificadores de curso. Por defecto lista cursos activos; con incluir_archivadas: true lista también los cursos pasados u ocultos.

NameRequiredDescriptionDefault
forzar_refrescoNoSi es true, invalida la caché en memoria y consulta directamente a EVA
incluir_archivadasNoSi es true, incluye también los cursos ocultados o de semestres anteriores

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds the important default-filter behavior (archived courses omitted unless requested), but this largely restates the incluir_archivadas schema description, and it omits any note about caching, which the schema surfaces via forzar_refresco.

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 sentences, front-loaded with the core purpose, followed by the default-vs-opt-in distinction. There is no filler or repetition beyond the necessary clarification of default scope.

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-boolean, read-only listing tool with no output schema, this is nearly sufficient: it conveys the resource enumerated and that results carry course identifiers. A brief note on return shape (names plus IDs, one entry per enrolled course) would close the remaining gap.

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

Parameters3/5

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

Schema description coverage is 100%, so both booleans are already documented, and the description's mention of incluir_archivadas adds no new semantics. forzar_refresco and its cache-invalidation contract are not addressed at all in the description, so it stays at the baseline.

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 las aulas virtuales y materias matriculadas en EVA Moodle con sus identificadores de curso'. It is clearly a course-enumeration tool, distinct from content-level siblings like eva_contenido_curso or eva_tareas_y_notas. It does not explicitly name a sibling or position itself as the entry point that produces the course IDs other tools need.

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?

Explains the default behavior (active courses only) and the opt-in for archived/hidden courses, which implicitly tells the agent when to set the flag. However, it names no alternative tool and gives no explicit 'use this before X' guidance, despite being the natural discovery step for the eva_* family.

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

eva_responder_foroResponder en Foro de Cátedra en EVAA

Publica una respuesta en un foro de cátedra de EVA Moodle. Muestra el texto completo y requiere confirmación física en Canal B.

NameRequiredDescriptionDefault
mensajeYesMensaje exacto a publicar en el foro (máx 350 caracteres)
discusion_idYesID numérico del hilo o debate de foro

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the annotations (readOnly=false, destructive=false, idempotent=false, openWorld=true), the description discloses the human-in-the-loop gate: the full text is shown and physical confirmation in Canal B is required before publishing. It does not say whether the reply is publicly visible to the class or error-recoverable, so not a 5.

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

Conciseness4/5

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

Two sentences, front-loaded with the action and resource, followed by the behavioral caveat; nothing is padded. 'Muestra el texto completo' is slightly vague about who sees it, which keeps it from a 5.

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-parameter mutation with annotations covering the safety profile and no output schema, the definition covers what the tool does and the confirmation requirement. It omits what the tool returns on success (e.g., post ID or link) and whether the reply is public to the whole course forum.

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 coverage is 100%, and the schema already documents both parameters including the 350-character limit and the numeric thread ID. The description only adds that the full message text is displayed for confirmation, which is marginal semantic value over the schema.

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: 'Publica una respuesta en un foro de cátedra de EVA Moodle', which is distinguishable from read-oriented siblings like eva_foros and eva_hilo_foro. It does not explicitly name those siblings as the read alternatives, which keeps it just below 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 Guidelines3/5

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

Usage is implied (reply to an existing thread) and the description adds a real precondition — the response must be confirmed physically in Canal B — but there is no explicit when-to-use/when-not or named alternative for reading threads first versus replying.

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

eva_tareas_y_notasTareas y Notas en EVAC
Read-onlyIdempotent

Obtiene tareas, plazos de entrega, estado de entregas y fechas límite en EVA Moodle.

NameRequiredDescriptionDefault
curso_idNoID del curso (opcional, omite para todas las materias)
incluir_cerradasNoSi es true, incluye tareas vencidas

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered externally. The description adds nothing behavioral beyond that—notably it fails to state that closed/overdue tasks are excluded by default (that fact lives only in the parameter schema), which materially affects what the agent receives.

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. Minor redundancy between 'plazos de entrega' and 'fechas límite' slightly dilutes the precision but the core is delivered immediately.

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 simple read-only two-parameter tool with no output schema and full schema coverage, this is minimally adequate. The key gap is that the default exclusion of overdue tasks is not surfaced in the description, nor is the relationship to eva_entregas_proximas clarified.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters documented including the optional course filter and the incluir_cerradas default. The description adds no meaning beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Obtiene') and concrete resource set (tareas, plazos, estado de entregas, fechas límite) in EVA Moodle, so the agent knows what it returns. However, it does not differentiate from siblings like eva_entregas_proximas or eva_cronograma, which plausibly overlap with deadlines, and 'plazos de entrega' and 'fechas límite' are near-synonyms rather than distinct concepts.

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 indication of when to use this tool versus eva_entregas_proximas, eva_cronograma, or eva_cuestionarios, all of which appear to touch assignments/dates. The agent must infer selection from the name alone.

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

guarani_certificado_alumno_regularSolicitud y Descarga de Constancia de Alumno Regular en GuaraníA

Emite y descarga formalmente en PDF la Constancia de Alumno Regular (o de actividades aprobadas/promedio) con código de validación institucional desde SIU Guaraní. Protegida por confirmación física en Canal B.

NameRequiredDescriptionDefault
copiasNoCantidad de copias a solicitar (1 a 5)
carreraNoNombre o código de la carrera
presentar_aNoDestinatario ante quien se presentará la constanciaA quien corresponda
forzar_nuevaNoSi es true, fuerza la emisión de una nueva solicitud en Guaraní omitiendo constancias ya emitidas
observacionesNoObservaciones adicionales opcionales
tipo_constanciaNoTipo de constancia institucional a solicitaralumno_regular

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already flag this as non-read-only, non-idempotent and open-world; the description adds genuinely new context: output is a PDF with an institutional validation code, and issuance is gated by a physical confirmation step in 'Canal B'. It doesn't say whether a prior emitted constancia is reused or where the file lands, so it stops short of a 5.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action and deliverable, with the security constraint appended. The parenthetical enumeration of constancia types is slightly compressed but costs little space.

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 six-parameter, zero-required, no-output-schema mutation tool, the description covers what is produced (signed PDF) and the blocking confirmation step. It leaves out how the PDF is delivered and whether a Guaraní session is required, but the essential call context is present.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all six parameters including the constancia enum and the 1-5 copy limit. The description only echoes a subset of the enum values (alumno_regular / actividades_aprobadas / promedio) and adds no syntax or format detail, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb (emite/descarga) and resource (Constancia de Alumno Regular en PDF) plus the variants of constancia covered. It implicitly separates from the 'historial_constancias' sibling by emphasizing issuance/download rather than listing, but never names that sibling 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: an agent infers it should call this when it needs an official certificate. There is no explicit when-not guidance, no mention of how it relates to guarani_historial_constancias, and the 'forzar_nueva' re-emission scenario is only visible through the schema.

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

guarani_correlatividades_y_planPlan de Estudios, Correlatividades e Impacto en GuaraníA
Read-onlyIdempotent

Consulta el plan de estudios interactivo, materias por año, estado de aprobación y correlatividades para cursar y rendir final. Si se especifica una materia, analiza qué correlativas la traban y qué materias futuras dependen de ella.

NameRequiredDescriptionDefault
carreraNoNombre o código de la carrera (opcional)
materiaNoNombre o código de la materia a analizar (opcional)

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered. The description adds that supplying a materia triggers a dependency analysis, but says nothing about data freshness, authentication requirements, or how the 'interactive' plan behaves when no parameters are given.

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 sentences, both load-bearing: the first states what is returned, the second states the analytic behavior when the key optional parameter is supplied. No filler.

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?

With only two optional parameters and no output schema, the description gives enough for an agent to call it correctly and understand roughly what comes back. It falls short only on how the two parameters interact and on sibling routing.

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 coverage is 100%, so baseline is 3; the description earns above that by explaining the behavioral effect of the optional materia parameter (blocking prerequisites and dependent future subjects). It still does not clarify carrera's scoping effect or what omitting both parameters yields.

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 verb (consulta) and concrete resources: el plan de estudios, materias por año, estado de aprobación, correlatividades para cursar y rendir final. It is clear what the tool returns, though it does not explicitly differentiate itself from siblings like guarani_plan_optimo or guarani_progreso_carrera.

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 conditional usage hint — 'Si se especifica una materia, analiza qué correlativas la traban y qué materias futuras dependen de ella' — but never states when to prefer this over the several adjacent plan/progress tools. Usage is implied rather than guided.

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

guarani_cronograma_evaluacionesCronograma de Evaluaciones en GuaraníA
Read-onlyIdempotent

Fechas oficiales de parciales, recuperatorios y otras evaluaciones de tus cursadas actuales (SIU Guaraní), con hora y comisión. Por defecto solo las próximas.

NameRequiredDescriptionDefault
carreraNoNombre o código de la carrera
forzar_refrescoNoSi es true, ignora la caché de 60 s y consulta de nuevo
incluir_pasadasNoSi es true, incluye también evaluaciones ya pasadas

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent and openWorld, so safety is covered. The description adds the data source (SIU Guaraní) and the default upcoming-only filter, but omits that results are cached for 60s and can be refreshed — that detail lives only in the schema, so no extra behavioral context is added beyond annotations plus the default scope.

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?

A single front-loaded sentence naming the resource, source and scope, plus one short clause on the default filter. No filler and nothing to trim.

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?

Read-only tool with zero required parameters, full schema coverage and no output schema, so the description only needs scope and default behavior — both present. Minor gap: it doesn't clarify that no career argument means all current courses, which matters for the optional 'carrera' filter.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented. The description reinforces the default filter behavior ('solo las próximas') that maps to incluir_pasadas and notes the returned fields (hora, comisión), but adds no syntax or format detail beyond the schema. Baseline 3 applies.

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

Purpose4/5

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

States a specific resource (official exam/parcial/recuperatorio dates) with scope ('tus cursadas actuales, SIU Guaraní') and returned fields (hora, comisión). An agent can distinguish it from guarani_mesas_disponibles or guarani_mis_inscripciones_examen by the 'official dates for my current courses' framing, 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 Guidelines3/5

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

'Por defecto solo las próximas' implies the default usage and hints that historical data requires a flag, but there is no explicit when-to-use guidance versus the exam-registration or mesas tools that overlap conceptually. Usage is implied rather than stated.

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

guarani_encuestas_pendientesEncuestas Docentes Pendientes en GuaraníB
Read-onlyIdempotent

Consulta si el alumno tiene encuestas docentes institucionales obligatorias o pendientes de responder en SIU Guaraní.

NameRequiredDescriptionDefault
carreraNoNombre o código de la carrera

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds that it consults an external institutional system (SIU Guaraní) and clarifies the concept of mandatory/pending surveys, but it does not describe what happens when no surveys exist, whether authentication is required, or what the response looks like.

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?

One front-loaded sentence with no filler. It is appropriately sized for a simple read-only tool, though it stops short of adding task-oriented guidance.

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 one-parameter, read-only query whose annotations already carry the safety signals, the description is sufficiently complete: the agent understands the resource and the system being queried. The absence of output details is a minor gap given there is no output schema.

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?

There is a single optional parameter, carrera, and the schema already describes it as a name or code with 100% coverage. The description does not add syntax or filtering semantics beyond what the schema provides, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb (consulta) and a well-defined resource: whether the student has mandatory or pending institutional teacher surveys in SIU Guaraní. No sibling in the list covers surveys, so the purpose is effectively distinct, though the description does not explicitly contrast with alternatives.

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 never says when to call this tool versus alternatives, nor when not to call it. Usage is only implied by the purpose statement; there is no guidance about prerequisites or context.

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

guarani_estado_cursadaEstado de Cursadas en GuaraníB
Read-onlyIdempotent

Detalla cursadas activas, horarios, regularidad e inasistencias acumuladas en SIU Guaraní.

NameRequiredDescriptionDefault
carreraNoNombre o código de la carrera (opcional)

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds the meaningful detail that data originates from SIU Guaraní and that accumulated absences and regularity are computed, but it says nothing about authentication needs or how many cursadas are typically returned.

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 lists the returned content without filler. It is appropriately sized, though it spends its length on output contents rather than on disambiguation, which is the more valuable information here.

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 simple read-only tool with one optional parameter and no output schema, the field enumeration partially substitutes for a return-value description. Still missing is any distinction from guarani_horario_semanal in the horarios dimension and any statement of default scope when carrera is omitted.

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

Parameters3/5

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

Schema description coverage is 100% for the single optional 'carrera' parameter, so the baseline applies. The description never mentions that results can be narrowed by carrera or what happens when it is omitted (presumably all active cursadas), so it adds no semantics beyond the schema.

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 ("Detalla") and enumerates the resource contents: cursadas activas, horarios, regularidad, inasistencias. It does not, however, differentiate itself from close siblings such as guarani_horario_semanal (which also returns horarios) or guarani_historia_academica, leaving overlap for the agent to resolve.

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 exclusion of alternatives, and no mention of prerequisites such as having an active SIU Guaraní session. The agent must infer from the name alone that this is the general status view rather than the weekly-schedule or academic-history tools.

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

guarani_historia_academicaHistoria Académica y Analítico en GuaraníB
Read-onlyIdempotent

Analítico completo: finales aprobados, materias pendientes, notas y promedios en SIU Guaraní.

NameRequiredDescriptionDefault
carreraNoNombre o código de la carrera (opcional)

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds useful context by enumerating the data categories returned, which partially compensates for the absence of an output schema, but says nothing about authentication prerequisites or whether the whole transcript is returned at once.

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?

One short, front-loaded sentence that leads with the resource ('Analítico completo') and then enumerates contents. No filler; the only weakness is that the colon-and-list form is a bit terse for an agent needing selection cues.

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?

With no output schema, the description carries the burden of explaining return contents, and it does list the key categories (aprobadas, pendientes, notas, promedios). For a single-optional-parameter read-only tool this is largely sufficient, though it stops short of describing the return structure or the effect of the carrera filter.

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?

There is a single optional parameter, carrera, whose schema description already covers name-or-code semantics at 100% coverage. The tool description does not mention the parameter or explain what happens when it is omitted, so it adds nothing beyond the schema.

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 resource (the full academic transcript) and enumerates the contents it returns: passed finals, pending subjects, grades and averages from SIU Guaraní. An agent knows what data comes back, but nothing distinguishes it from related siblings such as guarani_progreso_carrera, guarani_estado_cursada or guarani_materias_habilitadas.

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 choose this tool over the many overlapping Guaraní siblings (progreso_carrera, estado_cursada, historial_constancias). The description states content only; the agent must infer the selection condition itself.

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

guarani_historial_constanciasHistorial de Solicitudes de Constancias en GuaraníA
Read-onlyIdempotent

Consulta el historial de solicitudes de constancias y certificados emitidos en SIU Guaraní, con opción de descarga de PDFs.

NameRequiredDescriptionDefault
carreraNoNombre o código de la carrera
descargarNoSi es true, descarga automáticamente los archivos PDF disponibles

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true. The description adds useful context that PDF downloads are optional, but it does not explain what the download does, whether authentication is required, or what the returned history 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?

A single, front-loaded sentence with no wasted language. It states the core action and the optional download behavior efficiently.

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 simple two-parameter read-only tool with full schema coverage and annotations, the description is largely sufficient. The main gap is that it does not describe the shape of the returned history, but the overall purpose and optional download behavior are clear.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already well documented. The description mentions the PDF download option, which corroborates the 'descargar' parameter, but adds no new meaning beyond the schema.

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 (consulta) and resource (historial de solicitudes de constancias y certificados) in SIU Guaraní. It is clear what the tool retrieves, but it does not explicitly distinguish itself from sibling tools such as guarani_certificado_alumno_regular, which likely handles new certificate requests.

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 the tool is for checking past certificate requests and optionally downloading PDFs, but it gives no explicit when-to-use guidance, prerequisites, or alternatives. An agent must infer that this is not the tool for requesting a new certificate.

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

guarani_horario_semanalHorario Semanal de Clases en GuaraníA
Read-onlyIdempotent

Consulta el horario semanal de clases estructurado con día, horario de inicio y fin, aula y comisión desde SIU Guaraní. Soporta filtro para el día de hoy ('¿qué tengo hoy?').

NameRequiredDescriptionDefault
diaNoFiltro opcional por día (ej: 'hoy', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'). Si se omite, devuelve toda la semana.
carreraNoNombre o código de la carrera
forzar_refrescoNoSi es true, ignora la caché de 45-60 s y consulta de nuevo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds the data source (SIU Guaraní) and returned schedule fields, but it does not itself mention caching or stale-data behavior, even though forzar_refresco covers that in the 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?

The description is two concise sentences with no wasted text. The core purpose is front-loaded and the today-filter hint follows naturally.

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 read-only tool with zero required parameters, full schema coverage, and annotations covering safety, the description is mostly complete. It describes the returned schedule structure, which is valuable because no output schema exists, though it could say more about the optional carrera filter and cache behavior.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented. The description reinforces the 'today' filter but does not add semantics beyond the schema for dia, carrera, or forzar_refresco, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb and resource: consulting the weekly class schedule from SIU Guaraní, and lists the returned fields (day, start/end time, classroom, commission). It is clear what the tool does, but it does not explicitly distinguish itself from nearby schedule-related siblings such as guarani_cronograma_evaluaciones or eva_cronograma.

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 by mentioning the weekly class schedule and the today-filter use case ('¿qué tengo hoy?'), but it does not state when to use this instead of alternatives or any exclusions. Guidance is present but implicit.

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

guarani_inscribir_examenInscripción a Examen Final en GuaraníB
Destructive

Inscribe a examen final en SIU Guaraní mediante ciclo en dos fases y confirmación física en Canal B.

NameRequiredDescriptionDefault
carreraYesNombre o código de la carrera
materiaYesNombre de la materia
llamado_idYesID del turno/llamado obtenido previamente de 'guarani_mesas_disponibles'

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so safety is covered elsewhere. The description adds partial behavioral context by revealing a two-phase cycle and an out-of-band physical confirmation in 'Canal B', but neither is explained: it never says whether an interrupted phase leaves a half-enrollment or what happens on a repeat call.

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; the action is stated first. It loses a point because unexplained jargon ('ciclo en dos fases', 'Canal B') occupies the second half instead of actionable detail.

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 destructive, non-idempotent write operation with no output schema, the description omits what the two phases are, what the physical confirmation entails, what a partial success looks like, and whether the enrollment can be undone. Critical decision information for an agent about to mutate state is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters (carrera, materia, llamado_id) are already documented, including the pointer to guarani_mesas_disponibles for the ID. The description adds nothing about expected formats or how carrera/materia are matched (name vs. code).

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 ('Inscribe a examen final en SIU Guaraní'), which clearly separates it from read-only siblings like guarani_mis_inscripciones_examen or guarani_mesas_disponibles. The added qualifiers ('ciclo en dos fases', 'Canal B') are opaque but the core action is unambiguous.

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 statement of when to use this versus alternatives, no prerequisites, no note that it should follow guarani_mesas_disponibles (that link only appears inside the llamado_id schema description, not the tool description). The agent must infer the workflow entirely.

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

guarani_materias_habilitadasMaterias Habilitadas para Cursar en GuaraníA
Read-onlyIdempotent

Calcula qué materias del plan de estudio el alumno está en condiciones de cursar el próximo período según su grafo de correlatividades y materias ya regularizadas o aprobadas.

NameRequiredDescriptionDefault
carreraNoNombre o código de la carrera en Guaraní

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent and openWorld, so safety is covered. The description usefully adds the derivation logic (correlativity graph + regularized/approved subjects), but omits that the student is implicitly resolved from session/auth since the only parameter is 'carrera' — a notable gap for an openWorld tool that presumably reads live academic records.

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?

A single front-loaded sentence that states the computation, the criteria, and the scope without filler. Nothing to trim.

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 exists, so the description is the only signal of return value, and 'qué materias ... está en condiciones de cursar' only implies a list without saying what fields or reasoning accompany each subject. It also leaves the implicit-student/session requirement unstated, which matters for an openWorld read of live records.

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 one parameter at 100% schema description coverage, the schema already explains 'carrera' as name or code. The description only indirectly connects it to the 'plan de estudio', adding marginal meaning beyond the schema; baseline 3 applies.

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 output ('Calcula qué materias ... está en condiciones de cursar') plus the input basis (grafo de correlatividades, materias regularizadas o aprobadas). This is clearly distinguishable from siblings like guarani_correlatividades_y_plan (which shows the graph) and guarani_plan_optimo (which optimizes the plan), even though it doesn't name them.

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 'próximo período' framing implies the planning use case, but there is no explicit when-to-use or when-not-to-use guidance, and no referral to the closely related siblings (correlatividades_y_plan, plan_optimo). An agent must infer that this is the eligibility check as opposed to the graph-inspection tool.

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

guarani_mesas_disponibles[EXPERIMENTAL] Mesas de Examen en GuaraníA
Read-onlyIdempotent

[EXPERIMENTAL] Mesas de examen final con fechas, turnos, tribunales y condición en SIU Guaraní. Parser experimental hasta contar con fixtures HTML anonimizados de turnos activos.

NameRequiredDescriptionDefault
carreraYesNombre o código de la carrera
materiaYesNombre o código de la materia a consultar
forzar_refrescoNoSi es true, ignora la caché de 45-60 s y consulta de nuevo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds meaningful behavioral context by flagging the parser as experimental and dependent on anonymized HTML fixtures, which warns the agent that results may be unreliable.

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 tight sentences with the experimental status front-loaded and no wasted text. The second sentence earns its place by explaining why the tool is marked experimental.

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 low-complexity, read-only query with fully documented parameters and no output schema, the description gives a useful summary of returned fields and a reliability caveat. It is not fully complete because it does not route the agent among sibling exam-related tools.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented in the schema, including the cache-refresh behavior of forzar_refresco. The description adds no parameter-level meaning beyond that, which matches the baseline of 3 when the schema carries the parameter semantics.

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 resource: final exam boards in SIU Guaraní, including dates, shifts, tribunals, and condition. It is more than a restatement of the name/title, but it does not use an explicit verb such as 'list' or 'query' and does not distinguish itself from sibling exam tools like guarani_mis_inscripciones_examen.

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 guarani_cronograma_evaluaciones, guarani_mis_inscripciones_examen, or guarani_inscribir_examen. The experimental caveat is useful context but is not usage guidance.

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

guarani_mis_inscripciones_examenMis Inscripciones a Examen Final en GuaraníB
Read-onlyIdempotent

Consulta las inscripciones activas a mesas de examen final y actuaciones provisorias del alumno en SIU Guaraní.

NameRequiredDescriptionDefault
carreraNoNombre o código de la carrera
forzar_refrescoNoSi es true, ignora la caché de 45-60 s y consulta de nuevo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds useful data-scope context by specifying "activas" and "actuaciones provisorias," but it does not mention caching behavior or authentication needs, which are relevant given the forzar_refresco parameter.

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 a single efficient sentence with no wasted words. The core purpose is front-loaded and immediately scannable.

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 low-complexity, read-only tool with two optional parameters and clear annotations, the description is minimally adequate. However, it does not explain the return content or the meaning of "actuaciones provisorias," and there is no output schema to fill that gap.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters (carrera and forzar_refresco) are fully documented in the schema. The description adds no parameter-level meaning beyond what the schema provides, so the baseline of 3 is appropriate.

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 ("Consulta") and resource ("inscripciones activas a mesas de examen final y actuaciones provisorias del alumno"), making it clear this is a read operation over the student's own exam registrations. It does not explicitly differentiate itself from siblings such as guarani_mesas_disponibles or guarani_inscribir_examen, but the scope is otherwise clear.

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 guidance about when to use this tool versus alternatives like guarani_mesas_disponibles or guarani_inscribir_examen. The intended use is only implied by the phrase "inscripciones activas... del alumno," leaving the agent to infer routing among many sibling tools.

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

guarani_plan_optimoPlan Óptimo de Cursada y Desbloqueo de CorrelatividadesA
Read-onlyIdempotent

Rankea las materias habilitadas para cursar según su impacto multiplicador en el grafo de correlatividades (cierre transitivo de materias desbloqueadas) y calcula la altura del camino crítico y la estimación de cuatrimestres mínimos para recibirse.

NameRequiredDescriptionDefault
carreraNoNombre o código de la carrera
max_sugerenciasNoCantidad máxima de materias a sugerir prioritariamente para el próximo cuatrimestre (por defecto 5)

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds useful behavioral detail about the computation itself: transitive closure of unlocked subjects, critical-path height, and minimum-semester estimation. It does not discuss data freshness or assumptions, which keeps it from a 5.

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

Conciseness4/5

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

The definition is a single dense sentence that front-loads the main action ('Rankea') and then explains the metrics computed. It is efficient, though the parenthetical and stacked technical terms make it slightly harder to parse than an ideal definition.

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?

With only two parameters, no nested objects, and no output schema, the description does a reasonable job of stating what the tool returns: ranked subjects plus critical-path and minimum-semester estimates. It could be more explicit about the output structure or ordering, but the core computational result is conveyed.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented in the schema. The description does not add syntax, format, or selection guidance for 'carrera' or 'max_sugerencias' beyond what the schema provides, so the baseline of 3 applies.

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: it ranks enabled subjects by their multiplier impact in the prerequisite graph, and additionally computes critical-path height and minimum semesters to graduate. This clearly distinguishes it from a plain listing tool such as guarani_materias_habilitadas, even without naming that sibling.

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: the mention of 'materias habilitadas para cursar' and 'próximo cuatrimestre' suggests academic planning, but there is no explicit when-to-use guidance, no prerequisites, and no statement of when to prefer this over guarani_materias_habilitadas or guarani_correlatividades_y_plan.

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

guarani_progreso_carreraProgreso de Carrera y Materias Faltantes para RecibirseA
Read-onlyIdempotent

Calcula exactamente cuántas materias te faltan para recibirte en SIU Guaraní ('Te faltan X materias'), cuántas tenés aprobadas, cursando actualmente y el desglose de materias pendientes por año.

NameRequiredDescriptionDefault
carreraNoNombre o código de la carrera en Guaraní

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, openWorld), so the description's added value is in previewing the computed output: totals, approved, in-progress, and a per-year breakdown. It does not disclose the data source, auth requirement, or what happens when no career is resolvable, which keeps it below a 5.

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

Conciseness5/5

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

A single sentence that front-loads the core result ('cuántas materias te faltan') and then enumerates the supporting breakdown. 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 read-only, one-parameter tool with no output schema, the description goes far by describing the returned metrics. The one gap is that 'carrera' is optional (0 required) and the description does not explain the default scope when it is omitted.

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?

The single 'carrera' parameter is fully documented in the schema (100% coverage), so a baseline of 3 applies. The description adds nothing about whether the argument is a name vs. code or what defaults to when omitted.

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 computation (counting remaining subjects to graduate) with concrete output examples ('Te faltan X materias'). It's clear what the tool does, but it never names a sibling to distinguish itself from close alternatives like guarani_historia_academica or guarani_plan_optimo, leaving that separation implicit.

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 by the described output. There is no explicit 'use this when you want X rather than Y' guidance, no prerequisite (e.g., being logged in), and no exclusion against the closely related academic-history and study-plan tools.

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

uca_diagnosticar_sistemaDiagnóstico del Sistema UCAB
Read-onlyIdempotent

Audita conectividad, estado de sesión cifrada, validez del entorno gráfico y rutas de almacenamiento.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety and repeatability profile is covered elsewhere. The description adds real value by naming the four probe categories, which tells the agent this reaches out over the network and inspects environment state. It does not disclose what a result looks like, whether failures are returned as errors or as payload fields, or whether it depends on an existing session.

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 sentence with zero filler, front-loading the operational verb and then the checked areas in a compact list. It is appropriately sized for a no-argument tool, though the bare noun-phrase enumeration leaves no room for the result-interpretation hint that would justify a 5.

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?

With no parameters and no output schema, the description carries the burden of explaining what the agent receives from a diagnostic run — a pass/fail per category, error strings, free text? That is absent, which matters for a tool whose entire value is interpreting its own output. Annotations cover the safety side, so the gap is narrow but real.

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, so the baseline of 4 applies: there is no parameter semantics to add, and the description correctly does not invent any. Nothing is missing on this dimension.

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?

Uses a specific verb ('Audita') and enumerates the exact resources under test: connectivity, encrypted session state, graphical environment, storage paths. That is concrete enough to predict the tool's scope without opening any schema. It loses the top mark only because it never distinguishes itself from the closest sibling (uca_iniciar_sesion), so an agent must infer that this is validation-of-environment rather than authentication itself.

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 signal at all: no trigger conditions ('when login fails, or before first session'), no exclusions, and no pointer to the alternative (uca_iniciar_sesion) when the actual need is to log in. The agent is left to guess whether this tool should be called proactively or only after an error.

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

uca_iniciar_sesionIniciar Sesión Institucional UCAA

Inicia o renueva la sesión institucional abriendo el navegador. Usar ÚNICAMENTE si una consulta devolvió error de sesión expirada o si el usuario solicita iniciar sesión explícitamente.

NameRequiredDescriptionDefault
forzar_reloginNoSi es true, purga la sesión previa y el perfil del navegador para permitir ingresar con otra cuenta @uca.edu.ar

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, openWorldHint=true and idempotentHint=false; the description adds the crucial behavioral fact that a browser window is opened (an interactive side effect an agent should warn the user about) and that an existing session can be renewed rather than just created. It stops short of saying whether the prior query is retried after login, which would complete the loop.

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 sentences, zero waste: the action is front-loaded and the restrictive usage rule follows immediately. Nothing superfluous.

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 single-optional-parameter auth tool with annotations and no output schema, the description covers action, mechanism and correct timing. The only gap is what the agent should do after login succeeds (e.g., retry the failed query), a small but real omission.

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 coverage is 100% and the schema itself explains that forzar_relogin purges the stored session and browser profile to allow switching accounts. The description mentions the parameter not at all, so it adds nothing beyond the structured field; baseline 3 applies.

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 pair (inicia/renueva) plus the resource (sesión institucional) and the mechanism (abriendo el navegador). No sibling tool touches authentication, so it is trivially distinguishable from the eva_* and guarani_* tools in the list.

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?

Gives an explicit, exclusive trigger condition: only after a session-expired error or an explicit user request to log in. The 'ÚNICAMENTE' framing also serves as a when-not-to-use rule, preventing the agent from calling it preemptively.

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

uca_resumen_semanalResumen Semanal del AlumnoB
Read-onlyIdempotent

Tool Compuesta: Trae en paralelo tareas próximas de EVA, avisos de cátedra, cursada/inasistencias, clases de hoy e inscripciones a finales de Guaraní.

NameRequiredDescriptionDefault
carreraNoNombre o código de la carrera (opcional)

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true and idempotentHint=true, so the safety profile is covered. The description adds only that fetching happens 'en paralelo'; it omits what an agent most needs for a multi-source aggregator — partial-failure behavior, whether missing sources cause errors, and whether auth must already be established via uca_iniciar_sesion.

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?

One front-loaded sentence with no wasted words, and the resource list is packed efficiently. The 'Tool Compuesta:' prefix is slightly meta rather than user-facing, but it does signal the composite nature immediately.

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 composite tool with no output schema, the description should at least sketch the shape of the aggregated response or how sections map to sources; it only lists inputs to the aggregation. Adequate to select the tool, but thin for interpreting what comes back.

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?

There is a single optional parameter with 100% schema description coverage, so the schema fully documents 'carrera'. The description adds nothing about how that parameter narrows the aggregated sources, which is the baseline 3 case where the schema carries the parameter semantics.

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 uses a concrete verb ('Trae en paralelo') plus an explicit enumeration of the five resources aggregated (tareas de EVA, avisos, cursada/inasistencias, clases de hoy, inscripciones a finales). That makes it distinguishable from the granular siblings it bundles, though it never names those siblings directly.

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?

Only implied guidance: the title 'Resumen Semanal' suggests a weekly overview use case, but the description does not say when to prefer this composite over the individual eva_/guarani_ tools or what the trade-offs are (e.g., cost vs. granularity). No exclusions or prerequisites are stated.

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. 30 tool updatesv1.0.8
    • Changedcampus_aranceles_y_tramites3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "aranceles": {
        -      "type": "array"
        -    },
        -    "errores": {
        -      "additionalProperties": {
        -        "type": "string"
        -      },
        -      "type": "object"
        -    },
        -    "estadoAranceles": {
        -      "type": "string"
        -    },
        -    "tramites": {
        -      "type": "array"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedeva_buscar_materiales7 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / curso_id / exclusiveMinimum
        Removed value: -0
      • addedInput schema / properties / curso_id / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / curso_id / minimum
        Added value: +1
      • addedInput schema / properties / limite
        Added value: +{
        +  "default": 25,
        +  "description": "Máximo de resultados a devolver (por defecto 25)",
        +  "maximum": 200,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "query": {
        -      "type": "string"
        -    },
        -    "resultados": {
        -      "type": "array"
        -    },
        -    "total": {
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "query",
        -    "resultados",
        -    "total"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedeva_contenido_curso8 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / curso_id / exclusiveMinimum
        Removed value: -0
      • addedInput schema / properties / curso_id / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / curso_id / minimum
        Added value: +1
      • addedInput schema / properties / seccion_id / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / seccion_id / minimum
        Added value: +-9007199254740991
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "cursoId": {
        -      "type": "number"
        -    },
        -    "secciones": {
        -      "type": "array"
        -    },
        -    "totalSecciones": {
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "cursoId",
        -    "secciones",
        -    "totalSecciones"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedeva_cronograma3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "archivo": {},
        -    "cursoId": {
        -      "type": "number"
        -    },
        -    "encontrado": {
        -      "type": "boolean"
        -    },
        -    "evaluacionesAula": {
        -      "type": "array"
        -    },
        -    "lineasEvaluacion": {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    "materia": {
        -      "type": "string"
        -    },
        -    "mensaje": {
        -      "type": "string"
        -    },
        -    "textoCronograma": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "encontrado",
        -    "mensaje"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedeva_cuestionarios7 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / curso_id / exclusiveMinimum
        Removed value: -0
      • addedInput schema / properties / curso_id / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / curso_id / minimum
        Added value: +1
      • addedInput schema / properties / forzar_refresco
        Added value: +{
        +  "default": false,
        +  "description": "Si es true, ignora la caché de 45-60 s y consulta de nuevo",
        +  "type": "boolean"
        +}
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "cuestionarios": {
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "cuestionarios"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedeva_entregas_proximas6 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / curso_id / exclusiveMinimum
        Removed value: -0
      • addedInput schema / properties / curso_id / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / curso_id / minimum
        Added value: +1
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "avisosRecientes": {
        -      "type": "array"
        -    },
        -    "entregas": {
        -      "type": "array"
        -    },
        -    "mensaje": {
        -      "type": "string"
        -    },
        -    "totalPendientes": {
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "totalPendientes",
        -    "entregas",
        -    "mensaje"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedeva_foros9 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / curso_id / exclusiveMinimum
        Removed value: -0
      • addedInput schema / properties / curso_id / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / curso_id / minimum
        Added value: +1
      • addedInput schema / properties / forzar_refresco
        Added value: +{
        +  "default": false,
        +  "description": "Si es true, ignora la caché de 45-60 s y consulta de nuevo",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / limit / exclusiveMinimum
        Removed value: -0
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "foros": {
        -      "type": "array"
        -    },
        -    "instruccion": {
        -      "type": "string"
        -    },
        -    "total": {
        -      "type": "number"
        -    },
        -    "truncado": {
        -      "type": "boolean"
        -    }
        -  },
        -  "required": [
        -    "foros",
        -    "total"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedeva_guardar_borrador_tarea6 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / cmid / exclusiveMinimum
        Removed value: -0
      • addedInput schema / properties / cmid / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / cmid / minimum
        Added value: +1
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "aprobado": {
        -      "type": "boolean"
        -    },
        -    "detalles": {
        -      "additionalProperties": {},
        -      "type": "object"
        -    },
        -    "exito": {
        -      "type": "boolean"
        -    },
        -    "instruccion": {
        -      "type": "string"
        -    },
        -    "mensaje": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "exito",
        -    "mensaje"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedeva_hilo_foro6 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / discusion_id / exclusiveMinimum
        Removed value: -0
      • addedInput schema / properties / discusion_id / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / discusion_id / minimum
        Added value: +1
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "discusionId": {
        -      "type": "number"
        -    },
        -    "posts": {
        -      "type": "array"
        -    },
        -    "totalPosts": {
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "discusionId",
        -    "totalPosts",
        -    "posts"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedeva_leer_archivo11 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / cmid / exclusiveMinimum
        Removed value: -0
      • addedInput schema / properties / cmid / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / cmid / minimum
        Added value: +1
      • removedInput schema / properties / desde_pagina / exclusiveMinimum
        Removed value: -0
      • addedInput schema / properties / desde_pagina / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / desde_pagina / minimum
        Added value: +1
      • removedInput schema / properties / max_paginas / exclusiveMinimum
        Removed value: -0
      • addedInput schema / properties / max_paginas / minimum
        Added value: +1
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "filename": {
        -      "type": "string"
        -    },
        -    "mimeType": {
        -      "type": "string"
        -    },
        -    "proximaPagina": {
        -      "type": "number"
        -    },
        -    "tamanoBytes": {
        -      "type": "number"
        -    },
        -    "tipo": {
        -      "type": "string"
        -    },
        -    "totalPaginas": {
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "filename",
        -    "mimeType",
        -    "tamanoBytes",
        -    "tipo"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedeva_materias3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "materias": {
        -      "type": "array"
        -    },
        -    "total": {
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "materias",
        -    "total"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedeva_responder_foro6 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / discusion_id / exclusiveMinimum
        Removed value: -0
      • addedInput schema / properties / discusion_id / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / discusion_id / minimum
        Added value: +1
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "aprobado": {
        -      "type": "boolean"
        -    },
        -    "detalles": {
        -      "additionalProperties": {},
        -      "type": "object"
        -    },
        -    "exito": {
        -      "type": "boolean"
        -    },
        -    "instruccion": {
        -      "type": "string"
        -    },
        -    "mensaje": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "exito",
        -    "mensaje"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedeva_tareas_y_notas6 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / curso_id / exclusiveMinimum
        Removed value: -0
      • addedInput schema / properties / curso_id / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / curso_id / minimum
        Added value: +1
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "tareas": {
        -      "type": "array"
        -    },
        -    "total": {
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "tareas",
        -    "total"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedguarani_certificado_alumno_regular3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "aprobado": {
        -      "type": "boolean"
        -    },
        -    "comprobante": {
        -      "type": "string"
        -    },
        -    "copias": {
        -      "type": "number"
        -    },
        -    "detalles": {
        -      "additionalProperties": {},
        -      "type": "object"
        -    },
        -    "exito": {
        -      "type": "boolean"
        -    },
        -    "instruccion": {
        -      "type": "string"
        -    },
        -    "mensaje": {
        -      "type": "string"
        -    },
        -    "presentarA": {
        -      "type": "string"
        -    },
        -    "rutaArchivoPdf": {
        -      "type": "string"
        -    },
        -    "tipoConstancia": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "exito",
        -    "mensaje"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedguarani_correlatividades_y_plan3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "analisisCompleto": {
        -      "type": "boolean"
        -    },
        -    "analisisMateria": {
        -      "additionalProperties": {},
        -      "type": "object"
        -    },
        -    "materias": {
        -      "type": "array"
        -    },
        -    "materiasHabilitadasParaCursar": {
        -      "type": "array"
        -    },
        -    "materiasSinVerificar": {
        -      "type": "number"
        -    },
        -    "plan": {
        -      "type": "string"
        -    },
        -    "propuesta": {
        -      "type": "string"
        -    },
        -    "resumenImpacto": {
        -      "type": "string"
        -    },
        -    "version": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "materias"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Addedguarani_cronograma_evaluaciones
    • Changedguarani_encuestas_pendientes3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "encuestas": {
        -      "type": "array"
        -    },
        -    "hayPendientes": {
        -      "type": "boolean"
        -    },
        -    "mensaje": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "hayPendientes",
        -    "encuestas",
        -    "mensaje"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedguarani_estado_cursada3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "cursadas": {
        -      "type": "array"
        -    },
        -    "total": {
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "cursadas"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedguarani_historia_academica3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "carrera": {
        -      "type": "string"
        -    },
        -    "carrerasDisponibles": {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    "materiasAprobadas": {
        -      "type": "array"
        -    },
        -    "materiasRegulares": {
        -      "type": "array"
        -    },
        -    "porcentajeAvance": {
        -      "type": "number"
        -    },
        -    "promedioConAplazos": {
        -      "type": "number"
        -    },
        -    "promedioSinAplazos": {
        -      "type": "number"
        -    },
        -    "totalAprobadas": {
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "totalAprobadas",
        -    "materiasAprobadas",
        -    "materiasRegulares"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedguarani_historial_constancias3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "solicitudes": {
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "solicitudes"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedguarani_horario_semanal4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / forzar_refresco
        Added value: +{
        +  "default": false,
        +  "description": "Si es true, ignora la caché de 45-60 s y consulta de nuevo",
        +  "type": "boolean"
        +}
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "agendaPorDia": {
        -      "additionalProperties": {
        -        "type": "array"
        -      },
        -      "type": "object"
        -    },
        -    "carrera": {
        -      "type": "string"
        -    },
        -    "clases": {
        -      "type": "array"
        -    },
        -    "diaFiltrado": {
        -      "type": "string"
        -    },
        -    "mensaje": {
        -      "type": "string"
        -    },
        -    "totalClasesSemana": {
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "totalClasesSemana",
        -    "clases",
        -    "agendaPorDia",
        -    "mensaje"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedguarani_inscribir_examen3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "aprobado": {
        -      "type": "boolean"
        -    },
        -    "comprobante": {
        -      "type": "string"
        -    },
        -    "detalles": {
        -      "additionalProperties": {},
        -      "type": "object"
        -    },
        -    "exito": {
        -      "type": "boolean"
        -    },
        -    "instruccion": {
        -      "type": "string"
        -    },
        -    "mensaje": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "exito",
        -    "mensaje"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedguarani_materias_habilitadas3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "cantidad": {
        -      "type": "number"
        -    },
        -    "materiasHabilitadas": {
        -      "type": "array"
        -    },
        -    "mensaje": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "materiasHabilitadas",
        -    "cantidad",
        -    "mensaje"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedguarani_mesas_disponibles4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / forzar_refresco
        Added value: +{
        +  "default": false,
        +  "description": "Si es true, ignora la caché de 45-60 s y consulta de nuevo",
        +  "type": "boolean"
        +}
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "carrera": {
        -      "type": "string"
        -    },
        -    "materia": {
        -      "type": "string"
        -    },
        -    "mesas": {
        -      "type": "array"
        -    },
        -    "total": {
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "carrera",
        -    "materia",
        -    "mesas",
        -    "total"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedguarani_mis_inscripciones_examen4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / forzar_refresco
        Added value: +{
        +  "default": false,
        +  "description": "Si es true, ignora la caché de 45-60 s y consulta de nuevo",
        +  "type": "boolean"
        +}
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "inscripciones": {
        -      "type": "array"
        -    },
        -    "mensaje": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "inscripciones",
        -    "mensaje"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedguarani_plan_optimo3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "carrera": {
        -      "type": "string"
        -    },
        -    "cuatrimestresMinimosEstimados": {
        -      "type": "number"
        -    },
        -    "materiasHabilitadasRanking": {
        -      "type": "array"
        -    },
        -    "mensaje": {
        -      "type": "string"
        -    },
        -    "plan": {
        -      "type": "string"
        -    },
        -    "sugerenciaProximoCuatrimestre": {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    "totalMateriasPendientes": {
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "totalMateriasPendientes",
        -    "cuatrimestresMinimosEstimados",
        -    "materiasHabilitadasRanking",
        -    "sugerenciaProximoCuatrimestre",
        -    "mensaje"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedguarani_progreso_carrera3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "aprobadas": {
        -      "type": "number"
        -    },
        -    "carrera": {
        -      "type": "string"
        -    },
        -    "cursando": {
        -      "type": "number"
        -    },
        -    "faltantesParaRecibirse": {
        -      "type": "number"
        -    },
        -    "materiasEnCurso": {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    "materiasRestantesPorAnio": {
        -      "additionalProperties": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "type": "object"
        -    },
        -    "mensaje": {
        -      "type": "string"
        -    },
        -    "plan": {
        -      "type": "string"
        -    },
        -    "porcentajeAvance": {
        -      "type": "number"
        -    },
        -    "regularizadas": {
        -      "type": "number"
        -    },
        -    "totalMaterias": {
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "totalMaterias",
        -    "aprobadas",
        -    "faltantesParaRecibirse",
        -    "cursando",
        -    "regularizadas",
        -    "materiasEnCurso",
        -    "materiasRestantesPorAnio",
        -    "mensaje"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changeduca_diagnosticar_sistema2 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "almacenamiento": {},
        -    "conectividad": {
        -      "additionalProperties": {
        -        "type": "string"
        -      },
        -      "type": "object"
        -    },
        -    "entorno": {},
        -    "servidor": {},
        -    "sesion": {}
        -  },
        -  "required": [
        -    "conectividad"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changeduca_iniciar_sesion3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "estado": {
        -      "type": "string"
        -    },
        -    "mensaje": {
        -      "type": "string"
        -    },
        -    "usuario": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "estado",
        -    "mensaje"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changeduca_resumen_semanal3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "alertas": {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    "avisosRecientes": {
        -      "type": "array"
        -    },
        -    "estadoCursada": {
        -      "type": "array"
        -    },
        -    "fechaGeneracion": {
        -      "type": "string"
        -    },
        -    "novedades": {},
        -    "tareasProximas": {
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "fechaGeneracion",
        -    "alertas",
        -    "tareasProximas",
        -    "avisosRecientes",
        -    "estadoCursada"
        -  ],
        -  "type": "object"
        -}New value: +null
  2. 29 tool updatesv1.0.6
    • First observedcampus_aranceles_y_tramites
    • First observedeva_buscar_materiales
    • First observedeva_contenido_curso
    • First observedeva_cronograma
    • First observedeva_cuestionarios
    • First observedeva_entregas_proximas
    • First observedeva_foros
    • First observedeva_guardar_borrador_tarea
    • First observedeva_hilo_foro
    • First observedeva_leer_archivo
    • First observedeva_materias
    • First observedeva_responder_foro
    • First observedeva_tareas_y_notas
    • First observedguarani_certificado_alumno_regular
    • First observedguarani_correlatividades_y_plan
    • First observedguarani_encuestas_pendientes
    • First observedguarani_estado_cursada
    • First observedguarani_historia_academica
    • First observedguarani_historial_constancias
    • First observedguarani_horario_semanal
    • First observedguarani_inscribir_examen
    • First observedguarani_materias_habilitadas
    • First observedguarani_mesas_disponibles
    • First observedguarani_mis_inscripciones_examen
    • First observedguarani_plan_optimo
    • First observedguarani_progreso_carrera
    • First observeduca_diagnosticar_sistema
    • First observeduca_iniciar_sesion
    • First observeduca_resumen_semanal

TDQS

B3.3/5.0

Scored across 30 tools

Disambiguation3/5

Most tools have distinct descriptions, but several clusters overlap: EVA tasks vs upcoming deadlines, EVA cronograma vs Guaraní cronograma_evaluaciones, and multiple Guaraní plan/progress/correlativity tools all answer related academic-planning questions. The detailed descriptions help, but an agent must read carefully to avoid misselection.

Naming Consistency4/5

All tools use snake_case with clear eva_, guarani_, campus_, or uca_ prefixes, making source grouping predictable. The only inconsistency is that some names are verb-led actions (eva_buscar_materiales, guarani_inscribir_examen) while many are noun-led queries, but this remains readable and disciplined.

Tool Count3/5

30 tools is heavy for a single MCP server, even though UCA spans two major systems plus campus services. Many granular Guaraní analytics and EVA query tools could be consolidated, but the broad domain prevents this from being an extreme mismatch.

Completeness3/5

Coverage is broad across EVA, Guaraní, and campus, including read, composite, and some guarded write actions. However, clear lifecycle gaps remain: EVA assignment only saves a draft with no final submission tool, Guaraní can calculate eligible courses but cannot enroll in a cursada, and Campus Autogestión is only a single experimental read-only tool.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Connects AI agents to Argentine universities' Moodle virtual classrooms and SIU Guaraní self-service portals, enabling them to read course materials, announcements, grades, and enrollment data. With user confirmation it can also post to forums, submit assignments, answer choices, and send private messages.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Connects AI agents to Argentine university systems so they can browse Moodle virtual classrooms, read course materials and forum discussions, search across courses, and consult SIU Guaraní academic records such as grades, enrollments, and exam boards. With user confirmation it can also post in forums, submit assignments, answer choices, and send messages.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables agents to access Moodle virtual classrooms and SIU Guaraní for Argentine universities, including reading course materials, searching discussions, checking grades and academic status, and, with confirmation, posting to forums or submitting assignments.
    MIT