Sync course sections and course materials (documents, folders) via the Schoology REST API, independent of grades or roster data
domain: education · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Create or update sections under a course by POSTing to the sections endpoint with update_existing=1; without that flag, creating a section whose section_code + grading_periods already matches an existing section fails instead of updating it.
Retrieve a course's existing sections with a paged GET, or fetch by school code by passing a comma-separated list of section school codes (up to 50 per request).
Organize course content with the course-folder resource: a folder request returns its contents and any child folders, a folder with a parent object points back to its parent, and folder id=0 represents the course's root.
Create simple content items with the documents endpoint — a document must include an attachment, since documents are defined as content items with exactly one attachment.
Append the with_tags query string to document/material list requests when each item's associated tags need to be returned alongside the content.
When decommissioning sections in bulk, delete via the section_ids query parameter with up to 50 comma-separated Schoology IDs per call, batching larger cleanups across multiple requests.
Known gotchas
Omitting update_existing=1 on a section create call fails instead of upserting when section_code + grading_periods collide with an existing section — sync jobs must always pass this flag to be idempotent.
Both the section-list-by-school-code lookup and bulk section delete are capped at 50 identifiers per request, so a full section sync/cleanup across a large district must be chunked into batches of 50.
Documents are defined as content with exactly one attachment; sync code that assumes all material types (documents, discussions, folders) accept the same payload shape will fail on documents lacking an attachment.
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?