Inspect the AGS endpoint claim in the LTI 1.3 launch JWT; if the lineitem property is absent but lineitems is present, the tool must create its own line item before posting scores
POST a new line item to the lineitems URL with label, scoreMaximum, resourceLinkId, and optional tag; retain the returned line item URL for subsequent score posts
Confirm the tool's developer key includes the AGS scopes required for line item creation in addition to score posting; missing scopes produce 403 responses that are easily confused with authorization errors
POST a score to the line item scores endpoint (the line item URL with /scores appended) with activityProgress, gradingProgress, scoreGiven, scoreMaximum, and timestamp in ISO 8601 format
Poll or re-POST scores as the learner progresses; the scores endpoint is write-only (GET is not supported per spec), so track score state on the tool side
Known gotchas
The scores endpoint explicitly does not support GET; tools that attempt to fetch previously posted scores from the AGS endpoint will receive an error and must track score history locally
Some platforms (notably edX) enforce an enrollment-count cap on NRPS and AGS and return HTTP 403 above the threshold; this is platform-specific behavior not mandated by the spec and requires a platform-level configuration change
A scoreGiven value exceeding scoreMaximum is technically valid per the spec but many platforms silently clamp or reject it; always post scores within the declared maximum
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp