Obtain OAuth 1.0a consumer key and secret from the Schoology API credentials page and sign requests accordingly
POST /v1/sections/{section_id}/assignments with a JSON body containing title, due, max_points, and grading_category to create the assignment
Note the returned id of the new assignment for subsequent grade operations
POST /v1/sections/{section_id}/grades with a grades array containing uid and grade fields for each student to write scores in bulk
GET /v1/sections/{section_id}/grades?assignment_id={id} to verify grades were recorded and retrieve current values
If the section is linked to a PowerSchool SIS, trigger grade passback by ensuring the PowerSchool grade passback app is enabled in the section settings
Known gotchas
Schoology's REST API uses OAuth 1.0a, not OAuth 2.0 — do not send bearer tokens; sign each request with HMAC-SHA1 including nonce and timestamp
Grade writes are silently ignored if the assignment's grading_period is finalized or locked by an admin — check the section's grading period status before posting
Bulk grade POST accepts up to 50 student grades per request; batch larger rosters accordingly
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