Skip to main content
Glama

grades_csv

Turn lecturer grade spreadsheets into CSV files ready for Moodle gradebook import, with marks, feedback, and a separate list of rows needing review.

Instructions

Writes files, not Moodle. For each lecturer's file, a CSV ready for Moodle's gradebook import (Grades > Import > CSV file) into the right course: one row per ready student, identified by ID number, with the mark and — always next to it, since Moodle wipes a grade imported without it — the feedback. Blocked rows go to _to_check.csv with the reason, for the academic office to raise with the lecturer. Marks are written with a decimal point, exactly as the lecturer gave them.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathYesA lecturer's .xlsx/.csv, or a folder of them (the Drive folder, downloaded and unzipped)
itemsNoOnly when a column cannot be matched to a grade item: {"midterm": "Midterm"}
out_dirYesFolder to write into (created if missing)
courseidNoOnly for a single file whose name does not identify one course

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.4.0

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and excels: it explains that feedback is always included because Moodle wipes grades without it, that blocked rows go to _to_check.csv with reasons, and that marks are written with a decimal point exactly as given. These are non-obvious behaviors crucial for correct use.

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

Conciseness4/5

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

The description is a single dense paragraph, but every sentence adds value: distinguishing from Moodle, explaining row layout, feedback necessity, blocked-row handling, and decimal format. It could be more bulleted, but it is not bloated and remains readable.

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

Completeness4/5

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

For a tool with no output schema and no annotations, the description covers the key operational details: output format, special feedback rule, blocked-row handling, and decimal formatting. It does not detail the exact CSV headers or course identification logic, but the schema covers the courseid parameter and the import path is implicit.

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 baseline is 3. The description adds context about the overall output process (e.g., feedback next to mark) but does not add meaning to individual parameters beyond what the schema already states. It neither fully compensates nor detracts.

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 opens with 'Writes files, not Moodle,' which clearly distinguishes this tool from siblings like grade_submission or grades_check. It states a specific verb (writes) and resource (CSV files for Moodle gradebook import), and provides details on row content (ID number, mark, feedback).

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 phrase 'Writes files, not Moodle' implies this is for generating importable files rather than direct Moodle writes, giving clear context. It does not explicitly name alternative tools or list exclusions, but the behavioral contrast is sufficient for an agent to infer when to choose this tool.

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