---
name: iblai-connect-schoology
description: "Read and write Schoology data through the Schoology REST API v1 and expose it to an ibl.ai agent as an MCP tool. Use when the user asks an agent to work with Schoology data, or to set up a Schoology MCP connection on ibl.ai."
metadata:
  kind: guide
---

# Schoology connector for AI agents

> A starting point maintained on ibl.ai at https://ibl.ai/developer/connectors/schoology — not part of the iblai/vibe repository. Checked against PowerSchool's documentation on October 20, 2026; test it against your own Schoology setup before you rely on it.

Schoology is PowerSchool's learning management system. It holds districts, schools, users, courses and sections, enrollments, assignments, submissions, grades, attendance, events, discussions and course materials.

## Auth & conventions

- **API:** Schoology REST API v1 (REST). Realms (districts, schools, buildings, users, groups, courses, sections) plus enrollments, events, updates, documents, assignments, grades, grading scales, attendance and submissions. Supports multi-get requests and admin CSV export.
- **Base URL:** https://api.schoology.com/v1/
- **Access:** Issued by your administrator. Consumer key and secret come from the admin Integration menu (or {domain}/api) and are limited to users with the 'Access Schoology API' permission.
- **Auth:** OAuth 1.0a two-legged; OAuth 1.0a three-legged. Two-legged OAuth for apps acting as the key owner (empty oauth_token); three-legged for user-approved access. HMAC-SHA1 signatures recommended, PLAINTEXT allowed over HTTPS. Re-sign requests after redirects.
- **Limits:** Each user's credits refill every 5 seconds: 50 for the public API. GET/OPTIONS cost 1 credit; POST/PUT/DELETE cost 3. Over the limit returns 429 with Retry-After. Lists page with start/limit (max 200).
- Keep Schoology credentials in environment variables or the ibl.ai credential store. Never print a token in chat and never commit one to a file.
- Destructive or outward-facing calls are marked **Confirm with the user first** — do.

## Reads

- **Users** — GET /v1/users and /v1/users/{id}, plus inactive users.
- **Courses and sections** — Course and course-section realms, including a section's enrollments.
- **Assignments** — GET /v1/sections/{section_id}/assignments lists graded items (assignments and discussions).
- **Grades** — GET /v1/sections/{section_id}/grades and /v1/users/{user_id}/grades (paged).
- **Submissions** — GET /v1/sections/{section_id}/submissions/{grade_item_id}/ lists student submissions.
- **Attendance and events** — Section attendance records and calendar events.

## Writes

- **Users (create/update)** — POST/PUT /v1/users, including bulk create and update of up to 50 users.
- **User deletion** — DELETE /v1/users/{id} or bulk delete with ?uids= (up to 50). **Confirm with the user first.**
- **Assignments (create/update)** — POST/PUT /v1/sections/{section_id}/assignments.
- **Assignment deletion** — DELETE on an assignment; Schoology notes this cannot be undone. **Confirm with the user first.**
- **Grades** — PUT /v1/sections/{section_id}/grades sets or changes grades and grading-period comments. **Confirm with the user first.**

## Expose it to an ibl.ai agent (MCP)

PowerSchool did not publish an MCP server of its own when this skill was checked. Host a small MCP server that wraps the calls above, then register it below.

First install the ibl.ai platform skills and connect your organization (writes `IBLAI_ORG`, `IBLAI_USERNAME` and `IBLAI_API_KEY` to `.env`):

```bash
npx skills add iblai/vibe --all
# then, in your coding agent:
/iblai-api-login
```

Every call below sends `Authorization: Api-Token $IBLAI_API_KEY`.

1. **Register the server** — `POST https://api.iblai.app/dm/api/ai-mentor/orgs/$IBLAI_ORG/users/$IBLAI_USERNAME/mcp-servers/` with `name`, `url`, `transport` (`sse` | `websocket` | `streamable_http`) and `auth_type` (`none` | `token` | `oauth2`). Capture the returned `id`.
   - Schoology supports per-user OAuth: `auth_type=oauth2` with `auth_scope=user` and a linked `oauth_service` makes each person connect their own account in the chat. It needs an `auth_{provider}` credential in the organization's credential store first.
2. **Create the connection** — `POST https://api.iblai.app/dm/api/ai-mentor/orgs/$IBLAI_ORG/users/$IBLAI_USERNAME/mcp-server-connections/` with `server`, `scope` (`platform` | `mentor` | `user`), `auth_type`, and either `credentials` + `authorization_scheme` or a `connected_service` id for OAuth. Credentials are masked on read; never send a masked value back.
3. **Enable it on the agent** — `GET https://api.iblai.app/dm/api/ai-mentor/orgs/$IBLAI_ORG/users/$IBLAI_USERNAME/mentors/{agent_id}/settings/`, add `mcp-tool` to `tool_slugs` and the server id to `mcp_servers`, then `PATCH` the full lists back. They are replaced, not merged.

Full reference: https://ibl.ai/developer/platform/mcp/mcp-connections and the `/iblai-api-agent-mcp` skill.

## Example prompts

- "List every assignment in my Biology section due in the next two weeks"
- "Show which students in section 1234 have no grade for the midterm project"
- "Pull this month's attendance for my homeroom from Schoology"
- "Enter these quiz scores into the Schoology gradebook for Period 2"

## Guardrails

- Student education records protected by FERPA: rosters, submissions, grades, attendance and messages between teachers, students and families.
- Request the narrowest Schoology scopes or role the task needs, and prefer a read-only credential for agents that only answer questions.
- Return the fields the user asked for, not whole records; do not paste personal data into chat that the user did not request.
- Before any write, show the user exactly what will change and wait for a yes.
- Respect the documented limits above: page through results and back off on rate-limit responses instead of retrying in a loop.

## References

- Schoology API authentication: https://developers.schoology.com/api-documentation/authentication
- Schoology REST API v1: https://developers.schoology.com/api-documentation/rest-api-v1
- Schoology system requirements (rate limits): https://uc.powerschool-docs.com/en/schoology/latest/system-requirements
- This connector on ibl.ai: https://ibl.ai/developer/connectors/schoology
- ibl.ai MCP server connections: https://ibl.ai/developer/platform/mcp/mcp-connections
