Scolavo for AI · Setup guide

Connect your AI to Scolavo.

One URL, standard OAuth, no SDK. This page walks through every supported path — Claude, ChatGPT, Cursor, and machine-to-machine for your own agents — plus the full tool reference and what each error means.

For your coding agent

Take the whole spec with you.

The complete integration spec — every tool, the OAuth flows, the data model, and exactly how learner progress works — as one Markdown file. Copy it straight into Claude Code, Cursor, or any coding agent and let it wire up the connector for you.

Download .md ↓

The complete integration spec as Markdown — drop it into Claude Code, Cursor, or any coding agent as context and it can wire up the connector, call the right tools, and key learner progress to our stable lesson ids.

Before you start

Two things you need.

A licensed organization

Access is licensed to institutions. If your school, district, university, or company doesn’t hold a license yet, talk to us — evaluation licenses cover a single subject so you can try it first.

Your account on the license

Sign-in uses your scolavo.com account (email or Google). We add your account’s email to your organization’s license during onboarding — after that, your access simply follows your sign-in, on every AI host.

The one URLhttps://mcp.scolavo.com/mcp

Everything below connects to this endpoint. It speaks the Model Context Protocol (MCP) over HTTPS with standard OAuth discovery — unauthenticated calls return an OAuth challenge that tells your host exactly how to sign you in.

Path 1 · Claude

Claude — web, desktop & Claude Code.

Open connector settings

In Claude (web or desktop): Settings → Connectors → Add custom connector.

Paste the URL

Name it “Scolavo” and paste https://mcp.scolavo.com/mcp. Claude reads the endpoint’s OAuth discovery documents automatically — there is no API key to enter.

Sign in once

Claude opens the Scolavo sign-in page. Use the account email on your organization’s license (email or Google). Approve, and you’re connected.

Use it

Ask Claude anything against the curriculum — “Find the Scolavo lesson on photosynthesis and build me a study guide from its transcript.” Claude picks the right tools; every answer carries a citation link back to scolavo.com. In Claude Code, add it withclaude mcp add --transport http scolavo https://mcp.scolavo.com/mcp.

Path 2 · ChatGPT

ChatGPT — developer mode connectors.

Enable developer mode

Settings → Connectors → Advanced → Developer mode (workspace admins may need to allow connectors first).

Add the connector

Create a connector named “Scolavo” with the MCP server URLhttps://mcp.scolavo.com/mcp and OAuth authentication, then complete the same one-time sign-in.

Deep research citations

The server implements ChatGPT’s search /fetch contract, so deep-research reports can quote and cite Scolavo lessons as sources.

Path 3 · Cursor & other MCP hosts

Cursor, and anything that speaks MCP.

Any MCP-compatible host works the same way: give it the URL, let OAuth discovery do the rest. For Cursor, add this to ~/.cursor/mcp.json (or via Settings → MCP → Add server):

{
  "mcpServers": {
    "scolavo": { "url": "https://mcp.scolavo.com/mcp" }
  }
}

Cursor prompts for the same one-time sign-in the first time a tool is called.

Path 4 · Your own agents

Machine-to-machine, for servers and pipelines.

For headless systems — RAG indexers, nightly exports, internal chatbots — we issue your organization a confidential OAuth client (a client id + secret; the secret is shown once at issuance). No user sign-in involved.

Exchange the secret for a token

Standard client_credentials against the token endpoint. Tokens are valid for 15 minutes — request a fresh one per batch.

Call the MCP endpoint

JSON-RPC 2.0 over HTTPS. Send both Authorization: Bearerand Accept: application/json, text/event-stream.

# 1) token (client_credentials, HTTP Basic auth with your client id + secret)
TOKEN=$(curl -s -X POST 'https://scolavo-auth.auth.us-east-1.amazoncognito.com/oauth2/token' \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -d 'grant_type=client_credentials' | jq -r .access_token)

# 2) call a tool
curl -s -X POST 'https://mcp.scolavo.com/mcp' \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"list_subjects","arguments":{}}}'

Or point any MCP client library at the endpoint with the same bearer token. Clients can be revoked by us at any time; revocation lands within one token lifetime.

Reference

The twenty-three tools.

Five groups, twenty-three tools — browse and discover, read and tutor, the learning graph, media and export, and test prep — every one scoped to your organization’s content grants; get_license_status shows exactly what your license covers.

Browse & discover

list_tiers

The curriculum tiers with subject counts each — the lightest way to see what exists before drilling in.

list_subjects

Every subject in your license, with class counts and media coverage. Paged.

get_catalog

The entire licensed catalog in one call, grouped by tier — metadata only, no paging needed.

get_subject_outline

Ordered class list for one licensed subject with per-class video / narration / transcript flags.

search_content

Content search over titles, subtitles, card labels, key points, and quiz items (not full body text). Returns lessonId hits.

Read & tutor

get_lesson

One class-lesson as structured text. Lean by default; opt into quiz / inlineChecks / narrationText / media via include[].

get_lesson_context

The full AI-tutor bundle for one class in a single call — cards, quiz, hints, a worked example, common mistakes, and the adjacent lessons.

get_lesson_summary

A lightweight review summary — key points, key terms, and the quiz — for spaced review without pulling the full lesson.

get_quiz

End-of-class quiz plus mid-lesson checks, with hints and rationale.

get_next_lesson

Metadata for the next class in the same subject, so your AI never has to guess the class number.

get_prev_lesson

Metadata for the previous class in the same subject.

Learning graph

search_subjects

Find which subjects cover a concept, ranked by how many lessons match.

get_learning_path

The ordered study sequence to reach a goal subject — prerequisites first — with difficulty and estimated hours at every step.

get_concept

Trace one concept across the curriculum: every lesson that teaches it, its prerequisite subjects, and what it leads to next.

Media & export

list_lesson_media

Every video, narration audio, and illustration attached to a lesson.

get_download_url

Mint a short-lived (≤15 min) signed link to stream or download one asset.

export_class

One class as a bundle: lesson JSON, transcript, media manifest.

export_subject

A whole subject or Topic in one call — every class, transcript, and media link. Bundles are stamped to your organization.

Test prep, admin & interop

list_testprep_catalog

The four original practice-test banks: Digital SAT, ACT, PSAT/NMSQT, CAASPP.

get_testprep_items

Items from one bank, filterable by section.

get_license_status

Your organization’s tier, content grants, quota usage, and renewal date.

search

The ChatGPT deep-research search half — returns citable {id, title, url} hits.

fetch

The ChatGPT deep-research fetch half — full lesson text by id, with a citation URL back to scolavo.com.

Personalization

Where learner progress lives.

The token you pass is a standard signed JWT. On the interactive paths the learner signs in through Scolavo, so the token carries both the organization and the learner — which opens two ways to handle progress. You choose per license.

Scolavo-hosted progress

When your learners sign in with Scolavo identity, we record their progress in the same backend that powers scolavo.com — so progress through the connector and on the site is the same record, with nothing for you to build. Progress tools sit behind a dedicated progress scope, provisioned per license. This is the turnkey path most partners choose.

Partner-owned progress

Bring your own identity or LMS and keep progress entirely on your side, using the connector as a pure content pipe. Key your records to Scolavo’s stable lessonId and card/quiz ids, sequence with get_learning_path, and no student data reaches Scolavo through the connector.

Same JWT, either way

Both models use the standard Cognito access token in the Authorization header — an interactive (learner-scoped) token for Scolavo-hosted progress, or the org token for a content-only integration. Machine-to-machine tokens carry no learner, so progress tools need a learner-scoped token.

The full spec covers both models — the learner-scoped token flow, theprogress scope, and the data-processing note for Scolavo-hosted progress. Tell us which fits at licensing@scolavo.com.

Troubleshooting

What each response means.

Denials are structured business errors, not opaque failures — each carries a code your AI can read back to you.

401 Unauthorized

No or expired token. Interactive hosts refresh automatically — reconnect if prompted. Machine tokens live 15 minutes; request a new one.

NO_ORGANIZATION

Your account isn’t linked to a licensed organization yet. Write to licensing@scolavo.com.

LICENSE_REQUIRED

Your organization hasn’t accepted the current license agreement (ECLA). Your admin signs once; access opens on the next call.

TIER_NOT_LICENSED / CONTENT_NOT_GRANTED

The subject is outside your organization’s content grants. get_license_status shows exactly what you’re licensed for.

LICENSE_EXPIRED / ORG_SUSPENDED

The license lapsed or was suspended. Renewal or reinstatement takes effect on the very next call.

QUOTA_EXCEEDED / EXPORT_LIMIT / RATE_LIMITED

A monthly quota or hourly rate limit was hit. get_license_status shows remaining allowances; limits reset on their natural boundary.

Still stuck? Write to licensing@scolavo.com — include the error code and roughly when the call was made, and we can trace it on our side. Your security team can also probe the endpoint before anything is signed: unauthenticated calls return a standard OAuth challenge, and both discovery documents are public.

Not licensed yet?

Institutional licensing is annual and PO-friendly, with single-subject evaluation licenses to start. A person replies with a quote and the license agreement — no demo call required.

HomePracticeFeedBlogMe