s21-canvas-mcp
Provides integration with Canvas LMS, enabling access to courses, grades, assignments, modules, readings, PDF content, syllabi, discussions, calendar events, announcements, and academic status.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@s21-canvas-mcpWhat is my academic status for the Marketing course?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.jsonmacOS:
~/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.serversen lugar demcpServers).
{
"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
Inicie sesión en Canvas Siglo 21.
Diríjase a Cuenta.
Desplácese hasta la sección Tokens de acceso aprobados y seleccione + Nuevo token de acceso.
Asigne un nombre identificador (por ejemplo,
MCP-Agent) y seleccione Generar token.Copie el token generado y asígnelo al parámetro
CANVAS_TOKENen 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 |
| Simulador interactivo de exámenes con persistencia en SQLite local, temporizador de API, modos examen/práctica y panel institucional Siglo 21. |
|
| Registra preguntas en la base de datos local SQLite para la generación de simulacros por materia y módulo. |
|
| Estadísticas del banco de preguntas y registro histórico de exámenes en SQLite. | - |
| Portal web interactivo con documentación de herramientas, casos de uso y generador de prompts. |
|
| Análisis de calificaciones mínimas requeridas para Promoción Directa (7+) o Regularidad (5+). |
|
| Generación estructurada de preguntas tipo examen con fundamentación conceptual. |
|
| Auditoría de borradores de entregas académicas frente a la rúbrica oficial de evaluación. |
|
| Consolidación de tareas pendientes y entregas con fechas límite. | - |
| Consulta y extracción de texto de lecturas SAM (1.1 a 4.4). |
|
| Extracción de contenido de documentos PDF en memoria sin almacenamiento en disco. |
|
| Búsqueda transversal por términos en material y lecturas descargadas. |
|
| Consulta de asignaturas activas o concluidas, calificaciones y períodos académicos. |
|
| Trabajos prácticos, consignas en formato Markdown y criterios de rúbrica. |
|
| Estructura de módulos SAM, lecturas y actividades organizadas por unidad. |
|
| Explorador de archivos y documentos asociados a la asignatura. |
|
| Foros de discusión académica y consignas de trabajo grupal. |
|
| Programa oficial de la asignatura y datos del cuerpo docente. |
|
| Próximos eventos y fechas límite del calendario institucional. | - |
| Anuncios institucionales y publicaciones de cátedra. |
|
| 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 buildEjecución directa del servidor compilado:
node dist/index.jsPara registrar el binario en el entorno local:
npm linkConfiguració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 |
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 toolss21_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.
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID de la materia en Canvas. | |
| draft_text | Yes | Texto o desarrollo del borrador redactado por el alumno. | |
| assignment_id | Yes | ID del Trabajo Práctico en Canvas. |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID de la materia en Canvas (ej: 34584). | |
| target_promo_grade | No | Nota mínima objetivo para Promoción Directa (por defecto 7). | |
| target_regular_grade | No | Nota mínima objetivo para Regularidad (por defecto 5). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID de la materia en Canvas. | |
| module_number | Yes | Número de módulo (1, 2, 3 o 4). | |
| question_count | No | Cantidad de preguntas a generar (por defecto 5). | |
| reading_number | Yes | Número de lectura (1, 2, 3 o 4). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| course_ids | No | Lista opcional de IDs de materias para filtrar los avisos. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID de la materia en Canvas. | |
| clean_content | No | Si es true (por defecto), limpia el HTML convirtiéndolo a Markdown legible. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Cantidad máxima de preguntas a recuperar (opcional, ej: 20). | |
| course_id | Yes | ID numérico de la materia en Canvas (ej: 34584). | |
| module_number | No | Número de módulo opcional (1-4) para filtrar las preguntas. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID de la materia en Canvas. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID de la materia en Canvas. |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID de la materia en Canvas. | |
| clean_content | No | Si es true (por defecto), reduce el payload limpiando metadatos redundantes. |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID de la materia en Canvas. | |
| auto_read_pdf | No | Si es true (por defecto), descarga y extrae el texto del PDF automáticamente. | |
| module_number | Yes | Número de módulo (1, 2, 3 o 4). | |
| reading_number | Yes | Número de lectura o actividad (1, 2, 3 o 4). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID de la materia en Canvas. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Término opcional para filtrar por nombre o código de materia (ej: 'matematica', 'programacion', 'CEX332'). | |
| compact | No | Si es true (por defecto), devuelve solo los campos clave (id, nombre, código, período, notas). | |
| include_concluded | No | Si es true, incluye materias finalizadas/pasadas. Por defecto false (solo materias activas). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Modalidad opcional del simulador: 'exam' (simulacro cronometrado) o 'practice' (modo práctica y estudio con feedback inmediato). | |
| port | No | Puerto HTTP opcional para el servidor local (por defecto 42122). | |
| auto_open | No | Si es true (por defecto), abre automáticamente la ventana en modo aplicación. | |
| course_id | No | ID opcional de la materia en Canvas (ej: 34584) para pre-seleccionar o iniciar el examen directamente. | |
| start_exam | No | Si es true y se especifica course_id, inicia el examen automáticamente sin requerir clics adicionales. |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | Puerto HTTP opcional para el servidor local (por defecto 42122). | |
| auto_open | No | Si es true (por defecto), abre automáticamente la ventana en modo aplicación. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | No | ID numérico del archivo en Canvas (opcional si se pasa download_url). | |
| max_pages | No | Número máximo de páginas a leer (opcional). | |
| download_url | No | URL directa de descarga del archivo en Canvas. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes | ID numérico de la materia en Canvas (ej: 34584). | |
| questions | Yes | Lista de preguntas a guardar en SQLite. | |
| course_name | Yes | Nombre de la materia (ej: 'Arquitectura de Software'). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Término, tema o concepto a buscar (ej: 'algoritmo de euclides', 'derivada', 'árbol binario'). |
TDQS
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.
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.
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.
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.
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.
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.
21 tool updates
v1.0.1- First observed
s21_audit_rubric - First observed
s21_check_academic_status - First observed
s21_generate_practice_quiz - First observed
s21_get_announcements - First observed
s21_get_assignments - First observed
s21_get_bank_questions - First observed
s21_get_course_files - First observed
s21_get_discussion_topics - First observed
s21_get_exam_bank_summary - First observed
s21_get_modules - First observed
s21_get_my_profile - First observed
s21_get_pending_tasks - First observed
s21_get_reading - First observed
s21_get_syllabus - First observed
s21_get_upcoming_events - First observed
s21_list_courses - First observed
s21_open_exam_simulator - First observed
s21_open_interactive_portal - First observed
s21_read_pdf_content - First observed
s21_save_questions_to_bank - First observed
s21_search_readings
TDQS
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.
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.
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.
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
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
Connect your Moodle to AI assistants: courses, content, grading and reports from the chat.
Lucky AI study buddy over your own LlamaNotes courses: chat, progress, and AI course generation.
Create, edit, translate, and export SCORM eLearning modules from a connected AI assistant.
Voice-led, FSRS-scheduled flashcards from YouTube, PDFs, web, or text. Auto-graded quizzes.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Canvas LMS through 25 comprehensive tools. Supports course management, assignments, grades, messaging, calendar events, and file access through natural language.4413MIT
- FlicenseAqualityNot gradedmaintenanceEnables interaction with Canvas LMS courses and assignments directly from your LLM, allowing you to retrieve, search, and summarize course information, check due dates, and access assignment details without leaving your AI assistant.444-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with Canvas LMS and Gradescope, allowing users to query courses, assignments, modules, calendar events, and find relevant resources using natural language.15ISC
- FlicenseBqualityBmaintenanceEnables AI assistants to act as teaching assistants for Canvas LMS, allowing them to browse courses, read student submissions (including PDF/DOCX), grade with rubrics, post announcements, manage modules and pages, and more.64-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/omniboyOK/siglo21-canvas-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server