Conversational Assessment for Moodle

Register the tool once as a site administrator, then add it to any course as an activity. All LMSs.

Before You Start

Setting Up

Register the Tool

  1. Site administration > Plugins > Activity modules > External tool > Manage tools.
  2. Paste the registration URL into “Tool URL” and click “Add LTI Advantage”.
  3. The tool appears as Pending. Click Activate.
  4. Edit the tool's settings. Under Services, set “IMS LTI Assignment and Grade Services” to “Use this service for grade sync and column management”. Under Privacy, set “Accept grades from the tool” to Always. Without these, grades cannot come back.

Registered without a key? The completion page shows a claim code. Enter it on the dashboard's LMS page under Claim a Registration.

Add It to a Course

  1. In a course: Add an activity or resource > Conversational Assessment > Select content.
  2. The first time in a course, connect it to your account. A new window opens; sign in there, then come back.
  3. Choose an assessment and points, then Save.
  4. Students open the activity. Grades appear in the gradebook when conversations complete.

Or Hand It to Your Coding Agent

Copy this prompt into your AI (Claude, ChatGPT, or a coding agent). It reads the setup document and walks you through the LMS screens.

Your registration key comes from your dashboard. The agent will ask for it when it gets there.

Full setup instructions

Conversational Assessment in an LMS: LTI 1.3 Setup

Conversational Assessment is an LTI 1.3 tool with LTI Advantage grade passback (AGS), rosters (NRPS) and Deep Linking. A student opens an assignment in the LMS and talks to an AI interviewer inside the LMS page. A separate evaluator, which the interviewer cannot reach, grades the conversation against the instructor's rubric. The grade lands in the LMS gradebook when the conversation completes.

Any LMS that speaks LTI 1.3 works. Canvas and Moodle are tested. Everything below is done once per LMS by an administrator, except the last two sections, which are what instructors and students do.

The URLs

What URL
OIDC login initiation https://dev-api.conversationalassessment.org/lti/login
Redirect URI and target link URI https://dev-api.conversationalassessment.org/lti/launch
Deep linking target (also a redirect URI) https://dev-api.conversationalassessment.org/lti/deep-link
Public keys (JWKS) https://dev-api.conversationalassessment.org/lti/jwks
Dynamic Registration https://dev-api.conversationalassessment.org/lti/register?key=<key>
Canvas Developer Key JSON https://dev-api.conversationalassessment.org/lti/canvas.json

The <key> binds the registration to your account. Sign in at https://dev.conversationalassessment.org/dashboard/lti, choose "Add an LMS", and copy the registration URL it shows. The key works once and expires after an hour. Without a key the registration still completes, but it is pending until someone claims it: the completion page shows a claim code like ABCDE-FGHJK, which you enter at https://dev.conversationalassessment.org/dashboard/lti.

Moodle (Dynamic Registration)

  1. Site administration > Plugins > Activity modules > External tool > Manage tools.
  2. Paste the registration URL with your key into "Tool URL" and click "Add LTI Advantage".
  3. The tool appears as Pending. Click Activate.
  4. Edit the tool's settings: under Services set "IMS LTI Assignment and Grade Services" to "Use this service for grade sync and column management"; under Privacy set "Accept grades from the tool" to Always. Without these Moodle sends no grade service and grades cannot come back.

Canvas (Dynamic Registration)

  1. Admin > Apps > Manage > Install a New App > LTI 1.3 > Dynamic Registration.
  2. Paste the registration URL with your key, click Next.
  3. Review the settings Canvas shows and enable the app.

Canvas (Developer Key)

Use this when Dynamic Registration is not available to you.

  1. Admin > Developer Keys > + Developer Key > + LTI Key.
  2. Method "Enter URL", and paste https://dev-api.conversationalassessment.org/lti/canvas.json.
  3. In Redirect URIs, paste both of these, one per line. The JSON cannot carry them:
    • https://dev-api.conversationalassessment.org/lti/launch
    • https://dev-api.conversationalassessment.org/lti/deep-link
  4. Save, turn the key On, and copy its Client ID.
  5. At https://dev.conversationalassessment.org/dashboard/lti choose "Add an LMS" > "Manual", pick the Canvas preset (issuer https://canvas.instructure.com, the sso.canvaslms.com endpoints; beta, test and self-hosted variants are listed), and paste the Client ID. The deployment id is learned on the first launch.
  6. Admin > Settings > Apps > + App > By Client ID, and paste the Client ID to install it.

Canvas sends names and emails only at privacy level public, which the registration asks for. At a lower level the results page shows the LMS's opaque user id instead.

Any Other LMS (Manual)

Register a tool with the URLs above, RS256 keys from the JWKS URL, and the scopes for AGS (lineitem, lineitem.readonly, result.readonly, score) and NRPS (contextmembership.readonly). Then at https://dev.conversationalassessment.org/dashboard/lti choose "Add an LMS" > "Manual" > "Custom" and enter the platform's issuer, client id, authorization endpoint, token endpoint and JWKS URL.

What Instructors Do

  1. Add the tool to an assignment or activity (Canvas: Submission Type "External Tool" > Find; Moodle: Add an activity > the tool > Select content).
  2. The first time in a course, the tool asks you to connect the course to your Conversational Assessment account. That opens a new window, where you sign in once. The course then runs on your models and your budget.
  3. Pick an assessment from your own and the shared library, set the points, and save.
  4. Open the assignment yourself to see every student's attempt, grade, review flag and transcript, and to resend a grade.

What Students See

The conversation, inside the LMS page. Students never create an account. If the course is not connected yet, or the instructor's account cannot run conversations, they see a page saying so and who can fix it.

Grade Passback

When a conversation completes, the grade of record posts to the LMS gradebook as scoreGiven = score x points, with a comment carrying the grade label and feedback. An attempt the two grading reads disagreed on is flagged for review. It still posts as a final grade unless the link holds flagged attempts, in which case it posts as needing manual grading. Failed posts are retried with backoff for about a day. The results page shows each grade's passback state and can resend it.