LTI 1.3 (LMS)
Ragtime can be embedded directly in any LTI 1.3-compatible Learning Management System (Canvas, Moodle, Brightspace, Blackboard, Schoology, Sakai, …). Learners launch the assistant from inside a course and Ragtime can — optionally — write the result back to the LMS gradebook via Assignment & Grade Services (AGS).
LTI vs SCORM — what’s different
Section titled “LTI vs SCORM — what’s different”If you’ve deployed e-learning content as SCORM before, LTI will feel conceptually different in a few important ways:
| SCORM | LTI 1.3 | |
|---|---|---|
| Where content lives | Uploaded to and hosted by the LMS. | Lives on Ragtime’s servers. The LMS links out to it. |
| How it launches | LMS unzips the package and runs JavaScript in the browser. | LMS redirects the learner to Ragtime with a signed JWT; Ragtime verifies identity server-side. |
| Authentication | None — the content has no way to verify who is running it. | Cryptographically verified via OpenID Connect. Ragtime knows exactly who launched. |
| Dynamic content | Static files — content is fixed at upload time. | Live web app — real-time AI, RAG, voice, personalisation all work. |
| Grade writeback | JavaScript API in the browser (fragile, depends on LMS compliance). | Server-to-server REST via AGS (robust, auditable). |
| Updating content | Re-upload a new package, re-assign to courses. | Changes to Ragtime take effect immediately — no re-publishing needed. |
| Setup cost | Per-course upload, no admin config. | One-time LMS registration (15–30 min), then reusable across all courses. |
The short version: SCORM is a file you hand to the LMS; LTI is a secure handshake between two live systems. The one-time setup cost for LTI pays off because every course that uses Ragtime afterwards just needs an activity link — no re-uploading, no version drift.
How a launch works
Section titled “How a launch works”LTI 1.3 is built on OpenID Connect. When a learner clicks an activity in the LMS:
- The LMS POSTs an OIDC login initiation to Ragtime’s Login URL.
- Ragtime redirects the learner back to the LMS authorization endpoint.
- The LMS POSTs a signed
id_tokento Ragtime’s Launch URL. - Ragtime verifies the token against the LMS’s public keys, checks the seat cap, and opens the correct device for the learner.
The device that opens is determined by the Target Link URI embedded in the activity — see step 1 below.
1. Get Ragtime’s tool URLs
Section titled “1. Get Ragtime’s tool URLs”Open Dashboard → Deployment → LTI for the assistant you want to expose. The top of the panel shows two distinct sets of URLs with different purposes:
Tool registration URLs (one-time, per LMS)
Section titled “Tool registration URLs (one-time, per LMS)”These three URLs go into your LMS’s global tool registration — entered once by an LMS administrator and shared across every course that uses Ragtime:
- Login URL — where the LMS sends the initial OIDC login request to start the launch flow.
- Launch / Redirect URL — where the LMS POSTs the signed
id_tokenafter the learner authorizes. This is not the same as the Target Link URI (see below). - Public JWKS URL — Ragtime’s public key set, used by the LMS to verify Ragtime’s client-credentials signatures when AGS is enabled. It rotates automatically.
These URLs are stable and shared across all platforms — they never need to be regenerated.
Target Link URI (per activity)
Section titled “Target Link URI (per activity)”The Target Link URI is a different URL that you paste into each individual LMS activity (course module) when creating or editing it. It tells Ragtime which device to open for that particular activity. A single Ragtime assistant can have many devices (different personas, topics, or interfaces), and each LMS activity links to exactly one of them.
Use the device picker in the LTI panel to select a device — the correct Target Link URI is generated for you and can be copied with one click. It takes the form:
https://your-domain.com/lti/launch?device=org/project/device-slugThe ?device= parameter is what distinguishes one activity from another. If you omit it, Ragtime will not know which device to open and the launch will fail.
2. Register Ragtime in your LMS
Section titled “2. Register Ragtime in your LMS”In the LMS admin UI, create a new LTI 1.3 / LTI Advantage tool and paste the three tool registration URLs into the matching fields. The exact terminology varies by LMS:
| LMS | Where to register | Notes |
|---|---|---|
| Canvas | Admin → Developer Keys → + LTI Key | Pick “Manual entry”; redirect URI = Tool Launch URL. |
| Moodle | Site administration → Plugins → External tool → Manage tools | Use “Configure a tool manually”; LTI version 1.3. |
| Brightspace (D2L) | Admin Tools → Manage Extensibility → LTI Advantage | Register tool, then deploy in the org units that need it. |
| Blackboard Learn | System Admin → LTI Tool Providers → Register LTI 1.3 tool | Set issuer/client ID after the LMS generates them. |
| Schoology / Sakai | Admin → External Apps / LTI Advantage Tools | Same three URLs apply. |
3. Capture the platform’s credentials
Section titled “3. Capture the platform’s credentials”After registering, the LMS will give you a set of identifiers for its side of the trust relationship. These are what you enter into the Ragtime LTI panel under Add platform:
| Ragtime field | What it is | Common LMS label |
|---|---|---|
Issuer (iss) | Stable URL identifying the LMS instance. | Issuer / Platform ID |
Client ID | The ID the LMS assigned to Ragtime. | Client ID / Application ID |
Deployment IDs | One or more deployment identifiers (comma-separated). | Deployment ID |
OIDC Auth URL | The LMS’s OpenID-Connect authorization endpoint. | OIDC Auth URL / Platform OIDC URL |
OAuth Token URL | Where Ragtime requests AGS access tokens. | Access Token URL / OAuth2 Token URL |
Public JWKS URL | The LMS’s public-key set (used to verify id_token). | Public Keyset URL / JWKS URL |
Save the platform. Ragtime validates the URLs and enforces uniqueness on (project, iss, clientId) so the same LMS can’t be added twice.
4. Seats & licensing
Section titled “4. Seats & licensing”Each platform row carries a Seats licensed counter. A seat is allocated the first time a learner launches the assistant and is reused on every subsequent launch — a single learner never consumes two seats. Set 0 for unlimited. Instructors and administrators always launch successfully and never count toward the cap.
- Seats remaining is shown live on the platform card, alongside the current usage.
- When the cap is reached, additional learner launches are rejected with a friendly “all seats taken” page; the launch is still logged for auditing.
- The License key field on the platform form is a free-text reference (e.g. a contract or PO number) for your own bookkeeping. Ragtime does not validate it — there is no Ragtime-issued license key that needs to be requested. Leave it blank if you don’t need it.
- Released seats can be reclaimed manually under the LTI Seats tab; the next launch by that learner will allocate a fresh seat.
5. Score writeback (AGS)
Section titled “5. Score writeback (AGS)”Toggle Send grade back to LMS (AGS) on a platform to enable Assignment & Grade Services. When the LMS launches Ragtime against a graded line item, the session outcome is posted back to the gradebook automatically:
| Session ended by… | activityProgress | Score |
|---|---|---|
| Natural conclusion / learner ended | Completed | 1 / 1, FullyGraded |
| Idle or max-duration timeout | Completed | 1 / 1, FullyGraded |
| Disconnect / network error | InProgress | —, NotReady |
AGS uses OAuth2 client-credentials with a JWT-bearer assertion signed by Ragtime’s tool key — this is why the LMS needs Ragtime’s public JWKS URL. No additional configuration is required on Ragtime’s side once the LMS exposes a graded line item in the launch.
6. Troubleshooting
Section titled “6. Troubleshooting”- “Invalid id_token signature” — verify the
Public JWKS URLon the platform row matches what the LMS publishes. - “Unknown deployment” — the launch carries a
deployment_idnot in the comma-separated list on the platform row. Add it and save. - “All seats taken” — increase Seats licensed or release inactive seats under the LTI Seats tab.
- Wrong or no assistant appears — check that the Target Link URI for the LMS activity was generated with the device picker and includes the
?device=parameter. If you pasted the bare Launch / Redirect URL by mistake, Ragtime doesn’t know which device to open. - AGS score not appearing in the gradebook — open the LTI Seats tab → Recent launches. Each row shows the AGS delivery status (
delivered,failed, or empty if the launch had no line item). Make sure the LMS activity is linked to a graded assignment and that Send grade back to LMS (AGS) is enabled on the platform.