---
name: iblai-connect-infinite-campus
description: "Read and write Infinite Campus data through the Infinite Campus OneRoster API (1.1 and 1.2) and expose it to an ibl.ai agent as an MCP tool. Use when the user asks an agent to work with Infinite Campus data, or to set up an Infinite Campus MCP connection on ibl.ai."
metadata:
  kind: guide
---

# Infinite Campus connector for AI agents

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

Infinite Campus is a K-12 student information system holding district, school, student and staff records, class rosters and enrollments, and the Campus Grade Book.

## Auth & conventions

- **API:** Infinite Campus OneRoster API (1.1 and 1.2) (REST). OneRoster REST provider for rostering (orgs, users, classes, enrollments, academic sessions) and gradebook push and pull, plus OneRoster Assessments 1.2. Districts set up each vendor connection in Digital Learning Applications Configuration.
- **Access:** Partner or license program. A district creates the OneRoster connection for a vendor and shares credentials. Infinite Campus's Digital Learning Partner program requires partner apps to be 1EdTech certified.
- **Auth:** OAuth 2.0 client credentials (OneRoster). Current connections use OAuth 2, per the Knowledge Base's 'OneRoster API Documentation (OAuth 2)'. Older connections may be legacy configurations the KB explains how to update.
- Keep Infinite Campus 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

- **Orgs and schools** — District and school orgs via the certified OneRoster REST rostering provider (1.1 and 1.2).
- **Users** — Students, teachers and other users the district shares with the connection.
- **Classes and enrollments** — Sections and student/teacher enrollments, grouped as ClassesManagement and related endpoint groups.
- **Academic sessions and courses** — Terms, grading periods and courses via OneRoster AcademicSessionsManagement and course endpoints.
- **Gradebook and assessment results** — Certified Gradebook Pull and Assessment Results Profile pull (OneRoster 1.2).

## Writes

- **Line items (assignments)** — Certified OneRoster Gradebook Push: a partner app creates assignments in the Campus Grade Book. **Confirm with the user first.**
- **Results (scores)** — Partner apps write student scores into the Campus Grade Book (score passback). **Confirm with the user first.**
- **Assessment results** — Certified OneRoster 1.2 Assessment Results Profile push. **Confirm with the user first.**

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

Infinite Campus 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`.
   - For an API key or service credential use `auth_type=token` with `auth_scope=platform` for one key across the organization, or scope it to a single agent for one key per agent.
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 the students in each of Ms. Rivera's sections for the spring semester"
- "Show which teachers are assigned to 9th-grade English classes at North High"
- "Pull the grading periods for this school year from Infinite Campus"
- "Post the quiz scores from our reading app to the Campus Grade Book for Period 3"

## Guardrails

- Student education records protected by FERPA: demographics, enrollments, schedules and grades the district chooses to share with each connection.
- Request the narrowest Infinite Campus 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.
- Page through large result sets and back off on rate-limit responses instead of retrying in a loop.

## References

- Infinite Campus KB: OneRoster API: https://kb.infinitecampus.com/help/oneroster-api
- Infinite Campus Digital Learning Partners: https://www.infinitecampus.com/about/partners/digital-learning-partners
- 1EdTech certification: Infinite Campus: https://site.imsglobal.org/certifications/infinite-campus-inc/infinite-campus
- This connector on ibl.ai: https://ibl.ai/developer/connectors/infinite-campus
- ibl.ai MCP server connections: https://ibl.ai/developer/platform/mcp/mcp-connections
