Skip to main content
Glama

s21-canvas-mcp

Servidor Model Context Protocol (MCP) para integrar asistentes de inteligencia artificial (Claude Desktop, Cursor, Antigravity, Windsurf, VS Code Copilot, Codex CLI) con la plataforma Canvas LMS de la Universidad Siglo 21.

Proporciona capacidades para consultar asignaturas, calificaciones, trabajos prácticos, cronogramas y realizar la extracción en memoria del contenido de lecturas y documentos PDF para análisis, síntesis y asistencia académica mediante modelos de lenguaje.


Instalación

Seleccione la configuración correspondiente a su entorno o cliente de IA. Es necesario contar con un token de acceso personal de Canvas LMS (consulte las instrucciones en Obtención del Token de Canvas).

1. Claude Desktop

Ruta del archivo de configuración:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "siglo21": {
      "command": "npx",
      "args": ["-y", "s21-canvas-mcp"],
      "env": {
        "CANVAS_TOKEN": "tu_token_de_canvas_aqui",
        "CANVAS_URL": "https://siglo21.instructure.com"
      }
    }
  }
}

2. Antigravity (Gemini)

Archivo: .gemini/settings.json en el workspace (o configuración global en ~/.gemini/settings.json)

{
  "mcpServers": {
    "siglo21": {
      "command": "npx",
      "args": ["-y", "s21-canvas-mcp"],
      "env": {
        "CANVAS_TOKEN": "tu_token_de_canvas_aqui",
        "CANVAS_URL": "https://siglo21.instructure.com"
      }
    }
  }
}

3. Cursor

Archivo: .cursor/mcp.json en el workspace

{
  "mcpServers": {
    "siglo21": {
      "command": "npx",
      "args": ["-y", "s21-canvas-mcp"],
      "env": {
        "CANVAS_TOKEN": "tu_token_de_canvas_aqui",
        "CANVAS_URL": "https://siglo21.instructure.com"
      }
    }
  }
}

4. VS Code Copilot

Archivo: .vscode/settings.json en el workspace

Nota: Visual Studio Code emplea una clave específica (mcp.servers en lugar de mcpServers).

{
  "mcp": {
    "servers": {
      "siglo21": {
        "command": "npx",
        "args": ["-y", "s21-canvas-mcp"],
        "env": {
          "CANVAS_TOKEN": "tu_token_de_canvas_aqui",
          "CANVAS_URL": "https://siglo21.instructure.com"
        }
      }
    }
  }
}

5. Windsurf

Archivo: ~/.codeium/windsurf/mcp_config.json

{
  "mcpServers": {
    "siglo21": {
      "command": "npx",
      "args": ["-y", "s21-canvas-mcp"],
      "env": {
        "CANVAS_TOKEN": "tu_token_de_canvas_aqui",
        "CANVAS_URL": "https://siglo21.instructure.com"
      }
    }
  }
}

6. Codex CLI (OpenAI)

Archivo: ~/.codex/config.json

{
  "mcpServers": {
    "siglo21": {
      "command": "npx",
      "args": ["-y", "s21-canvas-mcp"],
      "env": {
        "CANVAS_TOKEN": "tu_token_de_canvas_aqui",
        "CANVAS_URL": "https://siglo21.instructure.com"
      }
    }
  }
}

Related MCP server: Canvas Assignment Assistant

Obtencion del Token de Canvas

  1. Inicie sesión en Canvas Siglo 21.

  2. Diríjase a Cuenta.

  3. Desplácese hasta la sección Tokens de acceso aprobados y seleccione + Nuevo token de acceso.

  4. Asigne un nombre identificador (por ejemplo, MCP-Agent) y seleccione Generar token.

  5. Copie el token generado y asígnelo al parámetro CANVAS_TOKEN en la configuración correspondiente.

IMPORTANTE: No darle los permisos del token a nadie, ya que permite el acceso a toda tu información académica. En caso de hacerlo revocarlo desde la misma sección.


Herramientas Disponibles

Herramienta

Descripción

Parámetros

s21_open_exam_simulator

Simulador interactivo de exámenes con persistencia en SQLite local, temporizador de API, modos examen/práctica y panel institucional Siglo 21.

port (número, opcional), auto_open (booleano)

s21_save_questions_to_bank

Registra preguntas en la base de datos local SQLite para la generación de simulacros por materia y módulo.

course_id, course_name, questions (array)

s21_get_exam_bank_summary

Estadísticas del banco de preguntas y registro histórico de exámenes en SQLite.

-

s21_open_interactive_guide

Portal web interactivo con documentación de herramientas, casos de uso y generador de prompts.

port (número, opcional), auto_open (booleano)

s21_check_academic_status

Análisis de calificaciones mínimas requeridas para Promoción Directa (7+) o Regularidad (5+).

course_id (número), target_promo_grade, target_regular_grade

s21_generate_practice_quiz

Generación estructurada de preguntas tipo examen con fundamentación conceptual.

course_id, module_number, reading_number, question_count

s21_audit_rubric

Auditoría de borradores de entregas académicas frente a la rúbrica oficial de evaluación.

course_id, assignment_id, draft_text

s21_get_pending_tasks

Consolidación de tareas pendientes y entregas con fechas límite.

-

s21_get_reading

Consulta y extracción de texto de lecturas SAM (1.1 a 4.4).

course_id, module_number, reading_number

s21_read_pdf_content

Extracción de contenido de documentos PDF en memoria sin almacenamiento en disco.

file_id o download_url, max_pages

s21_search_readings

Búsqueda transversal por términos en material y lecturas descargadas.

query (string)

s21_list_courses

Consulta de asignaturas activas o concluidas, calificaciones y períodos académicos.

include_concluded (booleano), search (string)

s21_get_assignments

Trabajos prácticos, consignas en formato Markdown y criterios de rúbrica.

course_id (número)

s21_get_modules

Estructura de módulos SAM, lecturas y actividades organizadas por unidad.

course_id (número)

s21_get_course_files

Explorador de archivos y documentos asociados a la asignatura.

course_id (número)

s21_get_discussion_topics

Foros de discusión académica y consignas de trabajo grupal.

course_id (número)

s21_get_syllabus

Programa oficial de la asignatura y datos del cuerpo docente.

course_id (número)

s21_get_upcoming_events

Próximos eventos y fechas límite del calendario institucional.

-

s21_get_announcements

Anuncios institucionales y publicaciones de cátedra.

course_ids (array de números)

s21_get_my_profile

Datos del perfil de estudiante (nombre, identificador institucional, correo electrónico).

-


Desarrollo Local

Para compilar y ejecutar el proyecto en un entorno de desarrollo local:

cd s21-canvas-mcp
npm install
npm run build

Ejecución directa del servidor compilado:

node dist/index.js

Para registrar el binario en el entorno local:

npm link

Configuración MCP para el binario enlazado:

{
  "mcpServers": {
    "siglo21": {
      "command": "s21-canvas-mcp",
      "env": {
        "CANVAS_TOKEN": "...",
        "CANVAS_URL": "https://siglo21.instructure.com"
      }
    }
  }
}

Compatibilidad de Clientes MCP

Cliente

Transporte

Estado

Observaciones

Claude Desktop

stdio

Compatible

Soporte completo

Antigravity (Gemini)

stdio

Compatible

Soporte completo

Cursor

stdio

Compatible

Soporte completo

VS Code Copilot

stdio

Compatible

Requiere clave mcp.servers en configuración

Windsurf

stdio

Compatible

Soporte completo

Codex CLI (OpenAI)

stdio

Compatible

Soporte completo

Codex Cloud (ChatGPT)

No compatible

Entorno aislado sin soporte de transporte MCP

ChatGPT (Web / Desktop App)

HTTP remoto

Limitado

Requiere despliegue como servicio HTTP accesible públicamente

Available Tools

21 tools
s21_audit_rubricA

Compara el borrador de un Trabajo Práctico contra la rúbrica oficial de Canvas y evalúa el puntaje proyectado por criterio.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYesID de la materia en Canvas.
draft_textYesTexto o desarrollo del borrador redactado por el alumno.
assignment_idYesID del Trabajo Práctico en Canvas.

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It communicates that the tool evaluates a draft against a rubric and outputs per-criterion projected scores, which implies a non-mutating analysis. However, it does not disclose whether anything is persisted, whether grades are submitted, what score scale is used, or what the exact output contract 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?

A single, well-structured sentence delivers the core action and result without any filler. It is front-loaded with the verb and includes the key distinguishing detail ('por criterio'), making it easy for an agent to parse quickly.

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

Completeness3/5

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

The description is adequate for basic selection and invocation, especially with fully documented required parameters. Yet, with no output schema and no annotations, it leaves out useful context such as the expected return format, score range, and whether this operation has any side effects on Canvas.

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 parameter descriptions are already clear. The tool description adds little beyond the schema, but it does reinforce that draft_text is the student draft and assignment_id is the Canvas assignment to evaluate. This meets the baseline for schema-covered parameters.

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

Purpose5/5

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

The description clearly states a specific action ('Comprara el borrador... contra la rúbrica') and a specific result ('evalúa el puntaje proyectado por criterio'). It identifies the tool's resource (Canvas rubric) and differentiates it from the sibling list, none of which offer rubric auditing or draft scoring.

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 intended use is implied by the action: use this tool when you have a student's draft and need a projected rubric score. However, it does not explicitly say when to use it versus alternatives or provide exclusion criteria, though no sibling appears to compete directly with this functionality.

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

s21_check_academic_statusA

Calcula el estado académico (promedio de TPs, notas cargadas y proyección de notas mínimas para Promoción Directa o Regularidad).

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYesID de la materia en Canvas (ej: 34584).
target_promo_gradeNoNota mínima objetivo para Promoción Directa (por defecto 7).
target_regular_gradeNoNota mínima objetivo para Regularidad (por defecto 5).

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden and does indicate the computation scope (averages, loaded grades, projections). However, it does not state whether the operation is purely read-only, what happens when grades are missing, or what the response shape is.

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 focused sentence, front-loaded with the verb, and a parenthetical that adds meaningful detail without redundancy. Every phrase earns its place.

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

Completeness3/5

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

For a three-parameter tool with no output schema and no annotations, the description gives the core calculation but omits the return format, missing-grade behavior, and any usage caveats. It is adequate but not 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 coverage is 100%, so the baseline is 3. The parenthetical in the description aligns with target_promo_grade and target_regular_grade but adds little beyond the schema's existing parameter descriptions and defaults.

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 action ('Calcula') and resource ('estado académico'), and enumerates the outputs: TP averages, loaded grades, and minimum-grade projections for Promoción Directa or Regularidad. It does not explicitly compare itself to sibling getters like s21_get_assignments, so it stops short of full sibling differentiation.

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 context is only implied by the domain terms: it is the tool to call when a student wants their academic standing or required minimum grades. There are no explicit alternative tools, when-not-to-use conditions, or prerequisites such as requiring graded assignments to be loaded.

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

s21_generate_practice_quizA

Genera un simulacro de examen tipo API/parcial con preguntas multiple choice y justificaciones teóricas basado en la lectura oficial de Canvas. DIRECTIVA DE FLUJO: Cuando el usuario solicite preparar, rendir o entrenar para un examen interactivo, genera las preguntas con distractores y explicaciones académicas, guárdalas en SQLite con 's21_save_questions_to_bank' e invoca 's21_open_exam_simulator' con el 'course_id' correspondiente y 'start_exam': true para ofrecer la experiencia de examen interactiva.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYesID de la materia en Canvas.
module_numberYesNúmero de módulo (1, 2, 3 o 4).
question_countNoCantidad de preguntas a generar (por defecto 5).
reading_numberYesNúmero de lectura (1, 2, 3 o 4).

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations present, the description carries the burden of disclosing side effects, and it does: it states questions are saved to SQLite and that the exam simulator must be invoked with start_exam: true. It stops short of specifying the tool's return value or how duplicate/overwrite behavior is handled, but the core write and orchestration behavior is explicit.

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

Conciseness4/5

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

The description is front-loaded with a clear purpose and then provides a dense but compact workflow directive. There is a minor redundancy between 'multiple choice and theoretical justifications' and 'distractors and academic explanations,' but the overall length is appropriate for a tool with orchestration behavior.

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 side-effectful generation tool with no annotations and no output schema, the description covers the trigger, content, source material, persistence step, and downstream simulator launch. The main omissions are the tool's return shape and what happens if the question bank already contains questions for the same course/reading.

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 each parameter. The description adds marginal context by relating course_id to the downstream simulator call and the reading to the official Canvas reading, but it does not explain parameter syntax, defaults, or constraints beyond the schema.

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

Purpose5/5

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

The description states a precise action (generates a practice/mock exam), the content format (multiple choice with distractors and theoretical explanations), and the input source (the official Canvas reading). It clearly differentiates this from siblings like s21_get_bank_questions or s21_open_exam_simulator by presenting generation as the first step of a workflow.

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

Usage Guidelines4/5

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

The DIRECTIVA DE FLUJO gives an explicit trigger condition: when the user asks to prepare, take, or train for an interactive exam, generate questions, save them, and launch the simulator. It does not explicitly list when not to use the tool, such as when the user only wants to retrieve existing bank questions, so it misses the exclusion part of a perfect usage guideline.

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

s21_get_announcementsA

Obtiene los avisos y anuncios publicados por profesores con texto limpio en Markdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idsNoLista opcional de IDs de materias para filtrar los avisos.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the disclosure burden. It does reveal one meaningful behavioral trait: output is returned as clean Markdown text. However, it does not state that the operation is read-only, how the optional filter behaves, or any authentication or error behavior, leaving important gaps.

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 focused sentence with no filler. The core action, resource, and key output characteristic are front-loaded, and every word contributes meaning.

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 tool with one optional parameter and no output schema, the description covers purpose and output format. Yet it omits the default behavior when no course_ids are supplied, and it does not help an agent choose this tool confidently among many academic-content siblings.

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% — the single optional `course_ids` parameter is already documented in the schema. The description adds no extra parameter meaning beyond that, 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.

Purpose5/5

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

The description states a specific verb ('Obtiene'), a clear resource ('avisos y anuncios publicados por profesores'), and a distinctive output trait ('con texto limpio en Markdown'). It clearly differentiates from sibling tools like s21_get_discussion_topics or s21_get_assignments by subject matter.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus siblings such as s21_get_discussion_topics or s21_get_upcoming_events. There are no exclusions, prerequisites, or alternative routing hints; usage must be inferred entirely from the noun 'anuncios'.

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

s21_get_assignmentsA

Obtiene los Trabajos Prácticos (TP1 a TP4), fechas de entrega, consignas limpias en Markdown y rúbricas.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYesID de la materia en Canvas.
clean_contentNoSi es true (por defecto), limpia el HTML convirtiéndolo a Markdown legible.

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral transparency burden. It adds useful behavioral details: the returned consignas are cleaned and provided in readable Markdown, and the response includes dates and rubrics. 'Obtiene' also clearly implies a read-only operation, though it does not discuss errors, permissions, or pagination.

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

Conciseness5/5

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

The description is a single, information-dense sentence that front-loads the main purpose and lists the key return contents. There is no filler or repetition of schema details.

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 retrieval tool, the description adequately covers what the agent gets back: specific TPs, due dates, cleaned Markdown consignas, and rubrics. Since there is no output schema, this list of returned content is helpful, though it could still be richer about response shape or edge cases like missing rubrics.

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 schema already documents both parameters with 100% coverage, so the baseline of 3 applies. The description's mention of 'consignas limpias en Markdown' loosely echoes the clean_content parameter, but it does not add meaning beyond what the schema already states.

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

Purpose5/5

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

The description names a specific verb and resource: it retrieves Trabajos Prácticos (TP1-TP4), delivery dates, clean Markdown instructions, and rubrics. This clearly distinguishes it from siblings like s21_get_pending_tasks or s21_get_syllabus by specifying exactly which assignment data is returned.

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 purpose implicitly signals when to use it: when assignment details, due dates, instructions, or rubrics for the TPs are needed. However, it does not explicitly state when not to use it or how it differs from related tools such as s21_get_pending_tasks, s21_get_upcoming_events, or s21_get_modules.

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

s21_get_bank_questionsA

Obtiene las preguntas existentes guardadas en el banco local SQLite para una materia. Permite consultar el contenido del banco, verificar preguntas antes de generar nuevas (evitando duplicados), o revisar preguntas específicas con el alumno directamente en el chat.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoCantidad máxima de preguntas a recuperar (opcional, ej: 20).
course_idYesID numérico de la materia en Canvas (ej: 34584).
module_numberNoNúmero de módulo opcional (1-4) para filtrar las preguntas.

TDQS

A3.8/5.0
Behavior3/5

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

No hay anotaciones, por lo que la descripción debe comunicar el comportamiento. Indica que es una operación de lectura ('obtiene', 'consultar'), que los datos están en SQLite local y que está filtrada por materia. Sin embargo, no describe el formato de retorno, paginación ni casos de error, aunque para una herramienta simple de lectura resulta aceptable.

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?

Son dos frases directas: la primera presenta la acción y el recurso, y la segunda lista casos de uso útiles. No hay relleno innecesario, aunque la lista de usos podría haberse resumido sin pérdida de claridad.

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?

Dado que no hay output schema ni anotaciones, la descripción debería ofrecer más detalle sobre qué devuelve exactamente (por ejemplo, estructura de las preguntas o comportamiento si no hay resultados). Aun así, el herramienta es de baja complejidad y los parámetros están completamente documentados en el esquema, por lo que es mínimamente completa.

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?

El esquema cubre el 100% de los parámetros, por lo que la línea base es 3. La descripción refuerza el significado de course_id al hablar de 'materia', pero no añade información sustancial sobre limit o module_number más allá de lo que ya indica el input schema.

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?

La descripción nombra una operación específica ('Obtiene las preguntas existentes') sobre un recurso concreto ('banco local SQLite') y lo acota a una materia. Esto la distingue claramente de herramientas hermanas como s21_save_questions_to_bank (escritura) o s21_get_exam_bank_summary (resumen).

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

Usage Guidelines4/5

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

La descripción ofrece contextos de uso concretos: consultar el banco, verificar preguntas antes de generar nuevas para evitar duplicados, y revisar preguntas con el alumno en el chat. No menciona explícitamente alternativas ni cuándo NO usarla, pero deja claro el propósito práctico.

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

s21_get_course_filesA

Lista todos los archivos, lecturas y documentos disponibles en una materia, con soporte de fallback si la pestaña de archivos está bloqueada.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYesID de la materia en Canvas.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the disclosure burden and does reveal that the tool has fallback behavior when the files tab is blocked. However, it does not clarify what the fallback returns, whether authentication is needed, or what happens when there are no files.

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 core functionality and the notable fallback behavior in compact form. No filler or redundant wording.

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 listing tool, the description is largely complete: it names the inputs implicitly via course context, the output category (files/readings/documents), and a fallback path. It could be more explicit about output shape and fallback details, but it is sufficient for basic invocation.

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%: course_id is already documented as the Canvas course ID. The description adds only the contextual notion of 'una materia' and no format, bounds, or examples, so it earns the baseline score.

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 action ('Lista') and a clear resource ('archivos, lecturas y documentos disponibles en una materia'), so an agent can tell what the tool retrieves. It does not explicitly contrast itself with overlapping siblings like s21_get_reading or s21_search_readings, so it stops short of full differentiation.

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 mention of fallback when the files tab is blocked gives some contextual trigger, but there is no explicit when-to-use versus s21_get_reading, s21_get_modules, or other course-content tools. 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.

s21_get_discussion_topicsA

Obtiene los foros de debate del curso (incluyendo foros obligatorios para TP2 grupal) y sus consignas.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYesID de la materia en Canvas.

TDQS

A3.6/5.0
Behavior3/5

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

No hay anotaciones, por lo que la descripción debe comunicar el comportamiento. 'Obtiene' deja claro que es una operación de lectura y no modifica datos, pero no detalla aspectos como autenticación, alcance de visibilidad o formato de respuesta. La inclusión explícita de los foros obligatorios agrega algo de contexto útil.

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?

La descripción es una sola oración breve, con la acción y el recurso al inicio y el detalle de los foros obligatorios entre paréntesis. No hay palabras redundantes y toda la información aporta valor.

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?

Para una herramienta simple con un solo parámetro requerido, la descripción es suficiente: indica qué obtiene, incluyendo las consignas y un caso particular relevante. No hay esquema de salida, pero la mención de 'consignas' anticipa parcialmente el contenido devuelto, aunque faltaría algo más de contexto sobre el formato.

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?

La cobertura del esquema es del 100%: el único parámetro course_id ya está documentado como 'ID de la materia en Canvas'. La descripción no añade detalles adicionales sobre el parámetro, pero el esquema cubre adecuadamente su significado, por lo que se mantiene la línea base.

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?

La descripción usa un verbo específico ('Obtiene') y un recurso claro ('foros de debate del curso'), además de indicar que incluye las consignas. Aunque no compara explícitamente con herramientas hermanas, el recurso 'foros de debate' lo distingue suficientemente de get_assignments o get_announcements.

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?

El uso se deduce del propósito: se debe usar cuando se necesiten los foros de debate del curso o los foros obligatorios para el TP2 grupal. Sin embargo, no se mencionan cuándo no usar esta herramienta ni se nombran alternativas como get_assignments.

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

s21_get_exam_bank_summaryA

Consulta el resumen del banco de preguntas y estadísticas de exámenes guardados en la base de datos SQLite local (materias registradas, cantidad de preguntas por módulo, historial de intentos y promedios).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

There are no annotations, so the description carries the burden. It discloses the local SQLite data source and the read-oriented nature via 'Consulta', but it does not explicitly state that the operation is side-effect-free or describe other behavioral traits such as data freshness or permission requirements.

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 focused sentence with the action front-loaded and the result details in a parenthetical list. Every part adds information, and there is no repetition or 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 no output schema, the description supplies the key return contents: registered subjects, question counts per module, attempt history, and averages. It is complete enough for a zero-parameter summary tool, though it could be clearer about whether the statistics cover all saved exams or only user attempts.

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 has zero parameters and the schema confirms an empty property set, so the description does not need to add parameter-level meaning. Per the rubric, a no-parameter tool receives a baseline of 4.

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 action ('Consulta') and a specific resource ('resumen del banco de preguntas y estadísticas de exámenes'), and enumerates the contained metrics. It does not explicitly contrast with s21_get_bank_questions, but the 'summary/statistics' framing makes the scope reasonably distinct.

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 usage context is implied: an agent would call this when it needs aggregate exam-bank statistics rather than raw questions or saved bank writes. There is no explicit 'use this when' guidance, no exclusions, and no mention of alternative sibling tools.

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

s21_get_modulesB

Obtiene la estructura de módulos (SAM), lecturas y actividades organizadas por unidad temática.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYesID de la materia en Canvas.
clean_contentNoSi es true (por defecto), reduce el payload limpiando metadatos redundantes.

TDQS

B3.1/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden for behavioral disclosure. 'Obtiene' suggests a read operation, but the description does not explicitly state non-mutating behavior, authentication needs, or important runtime traits such as the clean_content default that reduces payload size.

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, focused sentence with no filler. It front-loads the verb and the main resource, and every part adds meaningful information about the tool's output.

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

Completeness3/5

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

The description names the main output content—modules, readings, and activities—but with no output schema it does not clarify the return format or how the data is structured beyond 'organized by thematic unit.' The acronym 'SAM' is also unexplained, leaving a minor but real gap for an agent planning to consume the result.

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 course_id and clean_content are already documented in the input schema. The description adds high-level result context but no new parameter-specific semantics, which fits the baseline of 3.

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 clear verb ('Obtiene') and identifies a concrete resource: the module structure (SAM), readings, and activities organized by thematic unit. It is specific enough to convey the tool's main function, though it does not explicitly differentiate it from siblings like s21_get_reading or s21_get_syllabus.

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 guidance is given about when to use this tool versus alternatives. The description merely states what it retrieves and implies that an agent should call it when module structure is needed, but it never names exclusions or sibling tools to prefer in different situations.

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

s21_get_my_profileA

Obtiene el perfil del alumno en Siglo 21 Canvas (nombre, id, correo, avatar).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It clearly indicates a read operation and lists returned data fields, which is useful, but it does not mention authentication requirements, error behavior, or whether the data is live or cached. For a simple profile retrieval this is acceptable, but not richly transparent.

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, well-structured sentence in Spanish that states the purpose and the key output fields without unnecessary detail. Every word contributes to understanding the tool's functionality.

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

Completeness4/5

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

Given the tool's low complexity, zero parameters, and no output schema, the description covers the essential context: what the profile contains and the platform it comes from. It does not specify the exact response envelope or whether only the current user's profile is returned, but the tool name 'my_profile' and the wording 'del alumno' make that fairly clear.

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 has zero parameters, so there is nothing the description needs to add beyond what the empty input schema already shows. The listed fields are return values rather than parameters, which is not a documentation gap. Baseline 4 for a no-parameter tool is appropriate.

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

Purpose5/5

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

The description names a specific verb ('Obtiene'), a clear resource ('el perfil del alumno'), and the platform context ('Siglo 21 Canvas'), plus the expected fields. This makes it immediately distinguishable from the sibling tools, none of which target the current user's profile.

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 intended use is implied by the resource name and description: retrieving the current student profile. However, there is no explicit statement about when to choose this over other tools, and no exclusions or prerequisites are mentioned. For a zero-parameter, uniquely scoped tool, the absence of explicit alternatives is a minor gap.

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

s21_get_pending_tasksA

Obtiene la agenda de entregas, TPs y tareas pendientes de todas las materias activas, ordenadas cronológicamente con días restantes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses that the tool is read-oriented ('obtiene'), covers all active subjects, returns items chronologically, and includes days remaining. It does not mention authentication or output format, but for a zero-parameter read tool this is acceptable.

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 the verb and object first, followed by scope and ordering details. There is no filler or repetition. The only minor concern is the undefined 'TPs' acronym, but it does not significantly hurt clarity.

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 no-parameter listing tool, the description states the data scope, ordering, and the days-remaining feature, which is largely sufficient. The main gap is the lack of explicit output structure and the absence of guidance for choosing it over similar siblings.

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 input schema has zero properties and 100% schema description coverage, so there are no parameters requiring further explanation. The description still adds semantic context about what the returned agenda includes, which is useful beyond the empty 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 clearly states the verb 'Obtiene' and the resource: an agenda of deliveries, TPs, and pending tasks across all active subjects, ordered chronologically with days remaining. However, it does not explicitly distinguish itself from overlapping siblings like s21_get_assignments or s21_get_upcoming_events.

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

Usage Guidelines2/5

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

No explicit guidance is given about when to use this tool versus siblings. The description implies it is useful for viewing pending academic work, but it does not mention alternatives or exclusion criteria.

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

s21_get_readingC

Busca y resuelve automáticamente una lectura o actividad específica por Módulo y Número de Lectura, con opción de extraer el texto del PDF directamente.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYesID de la materia en Canvas.
auto_read_pdfNoSi es true (por defecto), descarga y extrae el texto del PDF automáticamente.
module_numberYesNúmero de módulo (1, 2, 3 o 4).
reading_numberYesNúmero de lectura o actividad (1, 2, 3 o 4).

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It reveals an automatic resolution action ('resuelve automáticamente') and optional PDF extraction, but does not explain what 'resuelve' entails, whether it modifies state, requires permissions, or what side effects occur. This ambiguity is significant for a tool whose name suggests a simple read.

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

Conciseness4/5

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

The description is a single sentence that front-loads the main purpose and then adds the optional capability. It contains no filler, but the ambiguity of 'resuelve' costs it a perfect score because the sentence could have been more explicit without losing conciseness.

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?

Despite full parameter documentation in the schema, the description omits what the tool returns or what 'resuelve automáticamente' actually does. There is no output schema and no annotations, so the description is the only source for expected results and side effects. This is insufficient for a tool with potential auto-resolution 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 the schema already documents all parameter meanings clearly. The description adds only contextual mapping between 'Módulo y Número de Lectura' and the module_number/reading_number fields, plus a hint that auto_read_pdf controls PDF extraction. This is baseline value, not additional semantic depth.

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

Purpose4/5

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

The description states a clear action ('Busca y resuelve') on a specific resource ('una lectura o actividad específica') identified by module and reading number, and mentions the optional PDF text extraction. It distinguishes itself from broad search tools like s21_search_readings by emphasizing 'específica' and the exact keys, though the verb 'resuelve' is somewhat ambiguous about what actually happens.

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 guidance is given on when to prefer this tool over alternatives such as s21_search_readings or s21_read_pdf_content. There are no conditions, exclusions, or explicit comparisons to sibling tools, leaving the agent to infer usage entirely from the description.

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

s21_get_syllabusA

Obtiene el programa general, syllabus y datos docentes de una materia.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYesID de la materia en Canvas.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden. The verb 'Obtiene' conveys a read-only fetch, which is useful, but it does not disclose output format, potential errors, permission requirements, or whether any side effects exist. It is minimally transparent for a simple retrieval tool.

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, focused sentence with no redundant wording. The main outcome and target resource appear upfront, making it efficient for an agent to parse.

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 one-parameter retrieval tool with no output schema, the description adequately names the content returned: general program, syllabus, and teaching data. It is complete for typical use, though it could mention the response shape or prerequisites.

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%: course_id is described as 'ID de la materia en Canvas.' The description's reference to 'de una materia' aligns with the schema but adds no additional semantic detail beyond what the schema already provides.

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

Purpose5/5

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

The description states a specific action ('Obtiene') and a precise resource ('programa general, syllabus y datos docentes de una materia'). This clearly distinguishes it from sibling tools like s21_get_modules or s21_get_assignments, which target different course content.

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

Usage Guidelines2/5

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

The description implies the tool is for retrieving syllabus and teaching information, but it provides no explicit guidance on when to choose this tool over alternatives or when not to use it. No sibling comparisons or contextual conditions are given.

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

s21_get_upcoming_eventsB

Obtiene las próximas entregas, parciales y eventos agendados en el calendario del alumno.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. 'Obtiene' implies a read-only retrieval, and the description names the data domain. However, it does not disclose output format, date-range semantics, or whether the result is aggregated from multiple sources.

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

Conciseness4/5

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

The description is a single, focused sentence with no filler. It front-loads the action and mentions the key resource types. It is concise, though it could have used additional space for usage differentiation.

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

Completeness3/5

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

For a zero-parameter retrieval tool, the description is minimally adequate: an agent knows what data to expect. But without an output schema and with many similar sibling tools, there is still uncertainty about result shape and when this tool is the right choice.

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 has zero parameters, so the schema fully covers invocation requirements. The description does not need to explain parameters, and the baseline for a zero-parameter tool is appropriately high.

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

Purpose4/5

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

The description clearly states the operation: retrieving the student's upcoming assignments, partial exams, and calendar events. It uses a specific verb and resource, and 'calendario del alumno' adds scope. However, it does not explicitly differentiate itself from overlapping siblings like s21_get_pending_tasks or s21_get_assignments.

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 the many sibling tools. No alternatives, exclusions, or contextual triggers are mentioned. The only usage signal is implied by the word 'próximas' and 'calendario'.

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

s21_list_coursesB

Lista las materias del alumno (activas o históricas) con soporte de búsqueda y formato compacto optimizado.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoTérmino opcional para filtrar por nombre o código de materia (ej: 'matematica', 'programacion', 'CEX332').
compactNoSi es true (por defecto), devuelve solo los campos clave (id, nombre, código, período, notas).
include_concludedNoSi es true, incluye materias finalizadas/pasadas. Por defecto false (solo materias activas).

TDQS

B3.4/5.0
Behavior3/5

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

Las anotaciones no aportan información, por lo que la descripción carga con la responsabilidad. Añade algunos comportamientos relevantes como incluir materias históricas, soporte de búsqueda y formato compacto. Sin embargo, no aclara si es de solo lectura, si requiere permisos especiales ni qué forma toma la respuesta completa.

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?

Es una sola frase breve, directa y con la información principal al frente: el verbo y el recurso. No incluye relleno innecesario, aunque el término 'optimizado' sea algo vago, el tamaño y la estructura son adecuados para una herramienta simple.

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?

Para una herramienta de listado con 3 parámetros opcionales y sin esquema de salida, la combinación de descripción y esquema cubre casi todo: alcance, filtros y formato de salida compacto. Faltan detalles sobre respuesta no compacta, paginación o límites, pero son menos para este caso de uso.

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?

La cobertura del esquema es del 100%, por lo que los tres parámetros ya están documentados en detalle. La descripción apenas reitera la funcionalidad de búsqueda y el formato compacto sin añadir valor semántico nuevo: no aporta ejemplos, valores por defecto ni relaciones entre parámetros que el esquema no incluya.

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?

La descripción indica claramente el verbo ('Lista') y el recurso ('las materias del alumno'), y añade matices útiles como activas/históricas, búsqueda y formato compacto. No nombra explícitamente alternativas, pero se distingue bien de las demás herramientas del contexto, que son de lectura, tareas, archivos o evaluaciones.

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 se proporciona orientación sobre cuándo usar esta herramienta frente a alternativas como s21_get_modules, s21_get_assignments o s21_get_course_files. Tampoco se mencionan exclusiones ni contextos recomendados; solo se describe la acción básica.

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

s21_open_exam_simulatorB

Abre el portal institucional interactivo posicionado directamente en el Simulador de Exámenes (preparación de parciales tipo API, temporizador, banco de preguntas SQLite y notas). DIRECTIVA DE FLUJO: Soporta 'course_id', 'mode' ('exam' o 'practice') y 'start_exam': true para iniciar inmediatamente el examen al abrir la aplicación sin requerir clics manuales del usuario.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoModalidad opcional del simulador: 'exam' (simulacro cronometrado) o 'practice' (modo práctica y estudio con feedback inmediato).
portNoPuerto HTTP opcional para el servidor local (por defecto 42122).
auto_openNoSi es true (por defecto), abre automáticamente la ventana en modo aplicación.
course_idNoID opcional de la materia en Canvas (ej: 34584) para pre-seleccionar o iniciar el examen directamente.
start_examNoSi es true y se especifica course_id, inicia el examen automáticamente sin requerir clics adicionales.

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden. It does surface a key behavioral trait: passing start_exam:true initiates the exam immediately 'sin requerir clics manuales'. However, it omits other significant side effects such as starting a local HTTP server (hinted only by the port parameter) and opening an application-mode window (hinted by auto_open). The core launch-and-navigate behavior is disclosed, but not the auxiliary runtime effects.

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

Conciseness4/5

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

The description is compact at two sentences, with purpose front-loaded in the first sentence and flow directives in the second. The feature enumeration ('preparación de parciales tipo API, temporizador, banco de preguntas SQLite y notas') adds some clutter but is brief. No sentence is wasted; the structure is logical and 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?

The tool has 5 optional parameters, no output schema, and no annotations, so the description must do heavy lifting. It covers the launch target and auto-start flow, but leaves gaps: no differentiation from s21_open_interactive_portal, no mention of the local-server/port behavior as a runtime consequence, and no indication of what the tool returns or confirms after launch. The incomplete mode enumeration relative to the schema further weakens completeness.

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%, so the baseline is 3. The description adds flow-level meaning by explaining how course_id, mode, and start_exam interact to produce an immediate exam start. However, it introduces a discrepancy: it lists mode values as only 'exam' or 'practice', omitting the schema's third enum value 'real_exam', which could mislead an agent into believing that mode is unsupported.

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

Purpose4/5

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

The description clearly states the verb and resource: 'Abre el portal institucional interactivo posicionado directamente en el Simulador de Exámenes'. It names the destination within the portal (exam simulator) and lists its features (API-based quizzes, timer, SQLite question bank, notes). This distinguishes it from the sibling s21_open_interactive_portal by specifying where the portal lands, though it 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?

The 'DIRECTIVA DE FLUJO' provides how-to guidance for combining course_id, mode, and start_exam to auto-start an exam without manual clicks. However, there is no explicit statement of when to choose this tool over alternatives, no exclusions, and no mention of the near-sibling s21_open_interactive_portal. Usage context is implied through the exam-simulator feature set rather than stated.

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

s21_open_interactive_portalA

Abre el portal interactivo unificado de Universidad Siglo 21 (pantalla de inicio con bienvenida al alumno, métricas, accesos directos y catálogo de herramientas).

ParametersJSON Schema
NameRequiredDescriptionDefault
portNoPuerto HTTP opcional para el servidor local (por defecto 42122).
auto_openNoSi es true (por defecto), abre automáticamente la ventana en modo aplicación.

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden. It only says the tool 'opens' the portal and lists UI contents; it does not mention that it starts a local HTTP server, opens an application window, or has any other notable side effects. The behavioral profile is under-specified.

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, front-loaded sentence with no wasted words. The parenthetical list of UI elements adds concrete value without bloating the text.

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

Completeness3/5

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

For a simple open-tool with two optional parameters and no output schema, the description combined with the schema covers the core essentials. However, the lack of explicit usage guidance and the missing behavioral note about local server/window side effects leave minor but meaningful gaps.

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 port and auto_open parameters are already well-documented in the input schema. The tool description adds no additional parameter semantics, matching the baseline of 3 for high schema coverage.

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

Purpose5/5

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

The description uses a specific verb ('Abre') and a clearly defined resource ('portal interactivo unificado'), and elaborates on the portal's contents ('bienvenida al alumno, métricas, accesos directos y catálogo de herramientas'). This distinguishes it from sibling tools like s21_open_exam_simulator, making the purpose unmistakable.

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

Usage Guidelines3/5

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

The description implies when to use the tool: when the user wants the unified interactive portal dashboard. However, it does not explicitly state when not to use it or which sibling alternatives might be better suited for specific tasks, leaving it to the agent to infer the boundary between this portal and the more specialized tools.

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

s21_read_pdf_contentA

Descarga en memoria y extrae el texto completo de un PDF de lectura/actividad de Canvas para resumir o estudiar.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idNoID numérico del archivo en Canvas (opcional si se pasa download_url).
max_pagesNoNúmero máximo de páginas a leer (opcional).
download_urlNoURL directa de descarga del archivo en Canvas.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses that the download happens in memory, implying no persistent side effects, and that the output is the extracted full text. It does not cover authentication, error cases, or scanned-PDF limitations, but the core behavioral contract is clearly stated.

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 filler: it names the action, resource, method, and intended purpose. 'En memoria' adds meaningful behavioral detail rather than being redundant.

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

Completeness3/5

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

The description plus full schema coverage is mostly adequate for a straightforward extraction tool. However, there is no output schema, and the description does not specify the exact return shape, behavior when neither file_id nor download_url is provided, or any large-file limitations. The optional-parameter interplay is only partially covered by the 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?

Schema description coverage is 100%, so the schema already documents all three parameters. The description adds no parameter-specific meaning beyond the PDF context; it does not clarify precedence between file_id and download_url or the effect of max_pages, though the schema partially addresses file_id optionality.

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 downloads a Canvas reading/activity PDF into memory and extracts its full text. This clearly distinguishes it from sibling tools that list or search readings, since the tool is explicitly about full-text PDF extraction.

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 resumir o estudiar' implies the intended use case, but the description does not explicitly say when to prefer this tool over s21_get_reading, s21_search_readings, or s21_get_course_files. No exclusions, conditions, or alternatives are named, so the agent is left to infer selection from the tool name and sibling names.

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

s21_save_questions_to_bankA

Guarda un lote de preguntas de examen en la base de datos SQLite local, categorizadas por materia, módulo, lectura y tema, con distractores y justificación académica. DIRECTIVA DE FLUJO: Tras guardar preguntas en el banco para una materia o cuando el alumno exprese intención de rendir/practicar, invoca 's21_open_exam_simulator' con el 'course_id' correspondiente para abrirle el entorno de examen interactivo.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYesID numérico de la materia en Canvas (ej: 34584).
questionsYesLista de preguntas a guardar en SQLite.
course_nameYesNombre de la materia (ej: 'Arquitectura de Software').

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does disclose persistence to a local SQLite database and the type of content stored (distractors, academic justification), which adds value beyond the name and schema. However, it omits duplicate handling, idempotency, permissions, return values, and error behavior, leaving important behavioral aspects undisclosed.

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 main action is front-loaded and the first sentence gives the essential persistence and categorization details efficiently. The uppercase flow directive is slightly intrusive but is clearly separated and provides actionable context for the agent.

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 mutation tool with a rich nested schema and no annotations, the description adequately explains what is stored and includes an explicit follow-up action. It would be more complete with duplicate-save behavior or expected response details, but those are secondary for correct selection and invocation.

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 input schema already describes 100% of the top-level and nested parameters, so the baseline is 3. The description only reinforces the mapping between domain concepts like 'materia, módulo, lectura y tema' and schema fields without adding new parameter-level facts.

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

Purpose5/5

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

The description clearly states a specific action ('Guarda un lote de preguntas de examen') and a concrete resource ('base de datos SQLite local'), making the purpose unambiguous. It also distinguishes this tool from read-only siblings like s21_get_bank_questions and generative tools like s21_generate_practice_quiz. The categorization clause adds useful precision without obscuring the action.

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

Usage Guidelines4/5

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

The 'DIRECTIVA DE FLUJO' explicitly instructs the agent to invoke s21_open_exam_simulator after saving or when the student expresses intent to practice, which is clear contextual guidance. However, it does not explicitly state when not to use this tool or compare it against alternatives, so it stops short of full exclusions.

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

s21_search_readingsA

Realiza una búsqueda transversal de conceptos o palabras clave en todas las lecturas y PDFs descargados del alumno.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesTérmino, tema o concepto a buscar (ej: 'algoritmo de euclides', 'derivada', 'árbol binario').

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It discloses the operation (transversal search) and scope (all downloaded readings and PDFs), which implies a read-only action. However, it does not mention result shape, behavior when no matches exist, or whether the search covers full text vs. metadata.

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 filler. Every part contributes meaning: the action, the search scope, and the object being searched.

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

Completeness3/5

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

The tool is simple and the description explains what it does well. However, there is no output schema, and the description does not indicate what the search returns (e.g., snippets, document titles, relevance ranks), leaving some ambiguity for the agent.

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 query parameter already includes a description with examples. The tool description adds the notion of searching by 'conceptos o palabras clave' but does not materially extend the schema's parameter meaning, so the baseline score of 3 applies.

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

Purpose5/5

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

The description names a specific verb ('Realiza una búsqueda transversal') and a resource ('todas las lecturas y PDFs descargados del alumno'), clearly distinguishing it from sibling tools like s21_get_reading or s21_read_pdf_content, which target individual items rather than cross-document search.

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

Usage Guidelines4/5

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

The description makes the intended context clear: use it when needing to search concepts or keywords across downloaded readings and PDFs. It does not explicitly name alternatives or exclusion criteria, but the scope is concrete enough for an agent to infer appropriate use.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 21 tool updatesv1.0.1
    • First observeds21_audit_rubric
    • First observeds21_check_academic_status
    • First observeds21_generate_practice_quiz
    • First observeds21_get_announcements
    • First observeds21_get_assignments
    • First observeds21_get_bank_questions
    • First observeds21_get_course_files
    • First observeds21_get_discussion_topics
    • First observeds21_get_exam_bank_summary
    • First observeds21_get_modules
    • First observeds21_get_my_profile
    • First observeds21_get_pending_tasks
    • First observeds21_get_reading
    • First observeds21_get_syllabus
    • First observeds21_get_upcoming_events
    • First observeds21_list_courses
    • First observeds21_open_exam_simulator
    • First observeds21_open_interactive_portal
    • First observeds21_read_pdf_content
    • First observeds21_save_questions_to_bank
    • First observeds21_search_readings

TDQS

A3.5/5.0
Disambiguation4/5

Most tools target a distinct Canvas resource, so an agent can usually select the right one. However, s21_get_pending_tasks and s21_get_upcoming_events both cover upcoming deadlines, and s21_get_reading vs s21_read_pdf_content overlap around PDF extraction.

Naming Consistency5/5

All tools share the s21_ prefix and use a consistent snake_case verb_noun pattern. Verbs are clear and objects map predictably to resources, making the naming highly consistent across the full set.

Tool Count3/5

With 21 tools, the server is in the heavy range for a single MCP. The exam-simulator and question-bank cluster justifies many of them, but the overall surface feels larger than ideal for a Canvas student assistant.

Completeness4/5

The read-only student workflow is well covered: courses, assignments, deadlines, readings, discussions, syllabus, announcements, and exam prep. Minor gaps exist around write actions like submitting assignments or posting to discussions, but those appear outside the intended scope.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/omniboyOK/siglo21-canvas-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server