Skip to main content
Glama

Create Rubric From Csv

create_rubric_from_csv

Create one or more Canvas course rubrics from a CSV string using Canvas's rubric import and wait for the import job to finish.

Instructions

Create one or more rubrics in a course from a CSV string.

Uses Canvas's native rubric CSV import endpoint, then polls the import job until it reaches a terminal workflow_state.

A Rubric Name column is REQUIRED — Canvas rejects the import without it and creates nothing. Required format (repeat the rating triple per rating level; a distinct Rubric Name per row creates multiple rubrics)::

Rubric Name,Criteria Name,Criteria Description,Criteria Enable Range,Rating Name,Rating Description,Rating Points
Essay Rubric,Clarity,Is the argument clear,false,Excellent,Very clear,10

Two Canvas behaviours to be aware of:

  • Imported rubrics land in the Draft state and are not returned by list_rubrics / GET /courses/:id/rubrics, though they do appear on the course Rubrics page. An empty list_rubrics result is not evidence the import failed.

  • succeeded_with_errors is a terminal state, not a transient one, and can mean zero rubrics were created.

Input Schema

NameRequiredDescriptionDefault
csv_contentYesThe content of the CSV file as a string
course_identifierYesCourse code or Canvas ID

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.10.0
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "result": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "result"
      -  ],
      -  "type": "object",
      -  "x-fastmcp-wrap-result": true
      -}New value: +null
  2. Addedv1.8.0

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations (idempotentHint=false, destructiveHint=false) by disclosing that the tool polls the import job to a terminal state, that imported rubrics land in Draft and are invisible to list_rubrics, and that succeeded_with_errors is terminal and can mean zero rubrics created. These are exactly the non-obvious behaviors that would mislead a caller.

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?

Front-loaded with the action and mechanism, then a required-format block, then a short bullet list of caveats. Every element, including the CSV example, earns its place by preventing a concrete failure mode.

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?

No output schema exists, and the description implies the tool returns after polling to a terminal state but does not describe the response shape. For a two-required-param mutation with rich CSV semantics, the rest is well covered.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description substantially enriches csv_content by giving the required column set, the 'Rubric Name' requirement, and the row-per-rating-level repeating convention. course_identifier is left to the schema, which is adequate.

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 (create), resource (rubric), scope (one or more, in a course), and mechanism (from a CSV string). This clearly differentiates it from the sibling create_rubric (single rubric) and list_rubrics, so an agent can pick it without opening the schema.

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 establishes context for use: bulk creation via Canvas's native CSV import endpoint, with the required CSV format. It does not explicitly say when to prefer create_rubric over this tool, so the alternative routing is left implicit.

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

Deploy Server

Other Tools