Skip to content

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).

If you’ve deployed e-learning content as SCORM before, LTI will feel conceptually different in a few important ways:

SCORMLTI 1.3
Where content livesUploaded to and hosted by the LMS.Lives on Ragtime’s servers. The LMS links out to it.
How it launchesLMS unzips the package and runs JavaScript in the browser.LMS redirects the learner to Ragtime with a signed JWT; Ragtime verifies identity server-side.
AuthenticationNone — the content has no way to verify who is running it.Cryptographically verified via OpenID Connect. Ragtime knows exactly who launched.
Dynamic contentStatic files — content is fixed at upload time.Live web app — real-time AI, RAG, voice, personalisation all work.
Grade writebackJavaScript API in the browser (fragile, depends on LMS compliance).Server-to-server REST via AGS (robust, auditable).
Updating contentRe-upload a new package, re-assign to courses.Changes to Ragtime take effect immediately — no re-publishing needed.
Setup costPer-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.

LTI 1.3 is built on OpenID Connect. When a learner clicks an activity in the LMS:

  1. The LMS POSTs an OIDC login initiation to Ragtime’s Login URL.
  2. Ragtime redirects the learner back to the LMS authorization endpoint.
  3. The LMS POSTs a signed id_token to Ragtime’s Launch URL.
  4. 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.

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_token after 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.

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-slug

The ?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.

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:

LMSWhere to registerNotes
CanvasAdmin → Developer Keys → + LTI KeyPick “Manual entry”; redirect URI = Tool Launch URL.
MoodleSite administration → Plugins → External tool → Manage toolsUse “Configure a tool manually”; LTI version 1.3.
Brightspace (D2L)Admin Tools → Manage Extensibility → LTI AdvantageRegister tool, then deploy in the org units that need it.
Blackboard LearnSystem Admin → LTI Tool Providers → Register LTI 1.3 toolSet issuer/client ID after the LMS generates them.
Schoology / SakaiAdmin → External Apps / LTI Advantage ToolsSame three URLs apply.

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 fieldWhat it isCommon LMS label
Issuer (iss)Stable URL identifying the LMS instance.Issuer / Platform ID
Client IDThe ID the LMS assigned to Ragtime.Client ID / Application ID
Deployment IDsOne or more deployment identifiers (comma-separated).Deployment ID
OIDC Auth URLThe LMS’s OpenID-Connect authorization endpoint.OIDC Auth URL / Platform OIDC URL
OAuth Token URLWhere Ragtime requests AGS access tokens.Access Token URL / OAuth2 Token URL
Public JWKS URLThe 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.

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.

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…activityProgressScore
Natural conclusion / learner endedCompleted1 / 1, FullyGraded
Idle or max-duration timeoutCompleted1 / 1, FullyGraded
Disconnect / network errorInProgress—, 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.

  • “Invalid id_token signature” — verify the Public JWKS URL on the platform row matches what the LMS publishes.
  • “Unknown deployment” — the launch carries a deployment_id not 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.