Skip to main contentSkip to navigation
Beta

StudentCenter over MCP

Point an AI agent at your institution over MCP (Model Context Protocol) and let it manage learners, credentials, curricula, and games, scoped to your institution only.

Compatibility

Works today with Claude Code and any MCP-compatible CLI that can speak streamable HTTP MCP with a Bearer token.

Claude.ai and ChatGPT custom connectors are not supported yet. Both require OAuth 2.1 plus RFC 7591 dynamic client registration, which is a later phase of this work.

Status

EndpointBetahttps://www.studentcenter.io/api/mcp
AuthBetaBearer token, SHA-256 hashed keys
TransportBetaJSON-RPC 2.0 over HTTP POST, with an optional SSE keepalive channel
Claude CodeBetaWorks today via a plain HTTP MCP server entry
MCP CLIsBetaAny client that speaks streamable HTTP MCP
Claude.ai connectorNot availableNeeds OAuth 2.1 + dynamic client registration
OAuth DCRNot availableRFC 7591, not built yet

109 tools, by category

109 tools exist on the platform. 86 are available to an institution API key. The rest are superadmin-only and not exposed here.

Full tool catalog

Institution4 tools
read
sc_list_institutions

Lists institutions, all of them for superadmin keys and only their own for institution keys.

read
sc_get_institution

Gets a single institution by slug, scoped to the caller's own institution for institution keys.

read
sc_list_audit_log

Views MCP audit log entries for retracing recent writes, filterable by tool name or error status.

write
sc_update_institution

Updates patchable institution fields: logo, website, description, accent color, social links, support contact, and theme.

Learners8 tools
read
sc_list_learners

Queries verified and pending learners from institution_student_emails, auto-scoped for institution keys.

read
sc_get_member_stats

Aggregates learner stats: total, verified, active, inactive, and pending counts.

read
sc_get_learner_skill_progress

Gets skill mastery progress across learners for an institution, useful for spotting weak areas in the cohort.

write
sc_invite_learner

Invites a single learner or admin to the institution by email.

write
sc_bulk_invite_learners

Invites many learners at once, reporting per-email success.

write
sc_approve_enrollment

Approves or rejects a pending learner enrollment request.

write
sc_update_enrollment_status

Updates a learner's enrollment status: active, inactive, or graduated.

read
sc_at_risk_learners

Surfaces learners who appear stuck: no recent skill progress activity.

Credentials10 tools
read
sc_list_credentials

Lists minted credentials, auto-scoped to the institution key's own institution.

read
sc_get_credential

Gets a single minted credential by ID, scoped to the caller's own institution.

read
sc_credential_stats

Aggregates credential stats: total minted, active templates, mint rate, and recent activity.

read
sc_list_templates

Lists credential templates, auto-scoped to the institution key's own institution.

write
sc_create_credential_template

Creates a new credential template for an institution.

write
sc_update_credential_template

Updates fields on an existing credential template.

issue
sc_record_manual_issuance

Records a manual credential issuance for a learner; NFT minting still completes via the institution dashboard.

issue
sc_issue_credentialdestructive

Issues a credential to a single learner, looking up their wallet and minting the NFT on chain via thirdweb.

issue
sc_bulk_issue_credentialsdestructive

Issues a template to many learners at once, minting in batch and reporting per-learner success.

write
sc_revoke_credential_institutiondestructive

Revokes a credential issued by this institution; cannot revoke credentials belonging to other institutions.

Curriculum9 tools
read
sc_list_skills

Lists skills in the global taxonomy, optionally filtered by domain, for building curricula or tagging games.

read
sc_list_curricula

Lists skill curricula for an institution.

read
sc_get_curriculum

Gets a curriculum with all of its ordered steps.

write
sc_create_curriculum

Creates a new skill curriculum for an institution.

write
sc_add_curriculum_step

Adds one or many skill steps to a curriculum.

write
sc_remove_curriculum_stepdestructive

Removes a step from a curriculum by step ID.

write
sc_publish_curriculum

Publishes or unpublishes a curriculum.

read
sc_get_curriculum_progress

Returns per-learner progress through a curriculum, including completed steps and percent complete.

read
sc_recommend_skills_for_curriculum

Suggests skills to add to a curriculum based on a goal description, matched against the global skills taxonomy.

Badges7 tools
read
sc_list_badge_definitions

Lists badge definitions for an institution: slug, level, linked credential template, and prerequisites.

read
sc_list_issued_badges

Lists badges actually issued to learners, joined to badge name and learner email.

read
sc_get_learner_badge_progress

Returns per-learner progress toward every badge path in the institution, including which learners are mint-ready.

read
sc_badge_system_health

Diagnoses the badge system for an institution: dangling mappings, unreachable point thresholds, and stuck learners.

write
sc_record_game_completion

Records a learner's game attempt in the badge system and recomputes their path progress idempotently.

issue
sc_issue_badge

Records that a badge has been issued to a learner and marks their path progress as issued; refuses to double-issue.

write
sc_upsert_badge_definition

Creates or updates a badge definition; omit badge_id to create a new one.

Games20 tools
read
sc_list_games

Lists gamified learning activities for an institution.

write
sc_create_game

Creates a game stub only: a row with title, slug, and description but no scenes, questions, or content yet.

write
sc_update_game

Updates a game's metadata, mechanics config, status, and scene order.

write
sc_tag_game_skill

Links a skill to a game with a weight controlling how much it contributes to mastery.

read
sc_list_game_scenes

Lists all scenes in a game ordered by scene order.

write
sc_create_game_scene

Creates a scene in a game: intro, content, cutscene, or other scene types.

write
sc_create_scene_layer

Creates a layer in a scene, with higher layer order rendering on top.

write
sc_create_scene_element

Adds a positioned element, such as text, character, or button, to a scene layer.

write
sc_create_element_trigger

Adds a trigger to an element or scene defining when something happens, such as onClick.

write
sc_create_trigger_action

Adds an action to a trigger defining what happens when it fires.

read
sc_get_game_detail

Gets full detail of a game: metadata, scenes, questions, and skill tags, for auditing.

write
sc_create_game_question

Creates a quiz question for a game.

write
sc_create_question_option

Adds an answer option to an MCQ or true/false question, marking exactly one as correct.

write
sc_create_drag_item

Adds a draggable item to a drag-and-drop question.

write
sc_create_drop_zone

Adds a drop target zone to a drag-and-drop question.

write
sc_create_game_character

Creates a reusable character or narrator definition for a game.

read
sc_audit_game

Runs a read-only diagnostic on a scene-mode game and returns a structured report of issues by severity.

read
sc_audit_institution_games

Runs sc_audit_game against every scene-mode game in an institution and returns a ranked rollup.

write
sc_repair_mcq_triggers

Repairs legacy MCQ wiring, rebuilding onCorrect/onIncorrect triggers. Defaults to a dry run.

write
sc_scaffold_story_game

Scaffolds a complete story-driven scene-mode game in one call, creating an intro scene and narrative content.

Game operations6 tools
write
sc_publish_game

Publishes a game, setting its status to published so learners can access it.

write
sc_unpublish_game

Unpublishes a game, setting its status back to draft so learners can no longer access it.

write
sc_clone_game

Duplicates an existing game, including scenes, questions, and skills, into a new draft.

write
sc_clone_template

Duplicates a credential template into a new inactive copy.

write
sc_clone_curriculum

Duplicates a curriculum and all of its steps into a new unpublished copy.

read
sc_get_game_analytics

Returns per-game analytics: attempts, unique learners, completion rate, pass rate, and average score.

Marketplace7 tools
read
sc_search_marketplace_templates

Full-text searches the marketplace for published templates, filterable by category and difficulty.

read
sc_get_marketplace_template

Fetches full details on a single marketplace template by slug.

write
sc_import_marketplace_template

Imports a previously purchased marketplace template into this institution.

read
sc_search_marketplace_paths

Full-text searches the marketplace for published learning-path listings, filterable by category.

read
sc_get_marketplace_path

Fetches full details on a single marketplace learning-path listing by slug.

write
sc_import_marketplace_path

Imports a previously confirmed learning-path purchase into this institution; does not perform the purchase itself.

write
sc_create_path_listing

Creates a draft marketplace listing from a curriculum, kicking off an async asset-freeze job.

Learning paths5 tools
read
sc_list_learning_paths

Lists badge-system learning paths for an institution with points required and linked badges.

read
sc_get_learning_path

Gets one learning path with its mapped games resolved to titles and required flags.

write
sc_upsert_learning_path

Creates or updates a badge-system learning path; omit path_id to create a new one.

write
sc_set_path_games

Replaces the full game mapping for a learning path in one call, validating every game exists first.

write
sc_remove_path_gamedestructive

Removes a single game from a learning path without rewriting the whole mapping.

Community4 tools
write
sc_create_community_post

Creates a community post in the institution's feed.

write
sc_pin_community_post

Toggles the pinned state on a community post.

read
sc_list_subgroups

Lists subgroups for the institution.

write
sc_create_subgroup

Creates a new subgroup for the institution with an auto-generated slug.

Email1 tools
write
sc_send_learner_email

Sends a templated email to a single learner, a list of learners, or every active verified learner in the institution.

Analytics5 tools
read
sc_get_institution_analytics

Returns a full analytics dashboard for an institution: learner, credential, game, and curriculum stats.

read
sc_export_csv

Exports institution data as CSV text for learners, credentials, templates, games, or the audit log.

read
sc_analytics_timeseries

Returns time-bucketed counts of credentials minted, learners joined, and game attempts.

read
sc_diagnose_institution

Runs a battery of health checks across an institution; call this first when connecting to a new one.

read
sc_get_next_best_action

Returns the top highest-leverage next actions for an institution.

Platform (superadmin)8 tools
read
sc_get_environment

Returns which environment the MCP server is targeting, staging or production.

read
sc_get_metrics

Returns platform KPIs: members, credentials minted, mint rate, and active templates.

read
sc_list_employers

Lists companies from the employers table.

read
sc_get_gmail_stats

Returns inbox stats for the StudentCenter operational email account.

read
sc_get_upcoming_tasks

Returns items needing attention in the next 7 days: pending verifications and stalled onboarding.

read
sc_get_recent_activity

Returns the last 10 notable platform events: new learners, minted credentials, and new institutions.

read
sc_check_institution_onboarding

Checks an institution's onboarding status: wallet, contract, admin, and verification flags.

read
sc_get_user_by_email

Resolves a user by email address, returning id, email, name, and created date.

Superadmin15 tools
write
sc_verify_institution

Sets or clears the is_verified flag on an institution.

write
sc_update_institution_tier

Changes an institution's subscription tier.

write
sc_create_skill

Adds a new skill to the global taxonomy.

write
sc_revoke_credentialdestructive

Revokes a minted credential, flipping the StatusList bit and cascading to any composite credential built from it.

write
sc_create_api_key

Provisions a new tenant API key for an institution, returning the raw key once.

write
sc_create_institution

Creates a new institution row, auto-generating a slug from the name if not provided.

write
sc_setup_institution_wallet

Provisions a thirdweb Engine server wallet for an institution.

write
sc_deploy_institution_contractdestructive

Deploys an ERC-721 soulbound credential contract for an institution on chain.

write
sc_transfer_contract_ownershipdestructive

Transfers the admin role of an institution's credential contract to an external wallet. Irreversible.

write
sc_set_featured_institution

Sets or clears the is_featured flag on an institution.

write
sc_add_institution_admin

Links a user as admin or owner of an institution.

write
sc_generate_game_thumbnail

Generates an AI image with Gemini and sets it as a game's thumbnail.

write
sc_generate_credential_image

Generates an AI badge or credential image with Gemini and sets it on the credential template.

write
sc_generate_credential_video

Animates a credential template's image into a short looping video with Google Veo 2.

write
sc_refund_curriculum_purchasedestructive

Refunds a confirmed Stripe learning-path purchase with explicit control over the Connect transfer and platform fee.

Scopes and permissions

Every tool falls into one of three scopes, and an API key is granted one or more of them at creation.

read

Views data only. Never changes anything.

write

Creates or updates records: invites, templates, curricula, games.

issue

Mints or records a credential or badge issuance on a learner's behalf.

issue is kept separate from ordinary writes because it is the scope that mints an on-chain credential rather than just updating a row, so a key can be given write access without also being able to mint.

9 tools are marked destructive: revokes, hard deletes, and the on-chain contract mint/deploy tools. They are still scoped normally, but treat them as irreversible.

Get a key

As an institution admin, open your institution's dashboard, go to Automation, then the API Keys tab, and create a key:

/institutions/<your-institution-slug>/dashboard/automation

Pick Read only, Read + Write, or Issue credentials, set an optional expiry, and copy the key. It is shown once.

Copy-paste config

The transport is JSON-RPC 2.0 over HTTP POST, with an optional SSE channel for clients that expect one. That stream only emits keepalives; it does not push notifications between requests.

.mcp.json

{
  "mcpServers": {
    "studentcenter": {
      "type": "http",
      "url": "https://www.studentcenter.io/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_KEY"
      }
    }
  }
}

Smoke test

curl -X POST "https://www.studentcenter.io/api/mcp" \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'

Include the Accept: application/json, text/event-stream header. This is the only one of our apps that also normalizes a missing Accept header, but send it anyway for consistency across clients.

Rate limits

120 requests per minute per API key, burstable up to 120 and refilling at 2 requests per second (token bucket). Exceeding it returns HTTP 429 with a Retry-After header, so back off and batch your work rather than polling in a tight loop.

The partner issuance API (/api/v1/*) has a separate bucket: 300 requests per minute per key.

Included with your account. Read the integration guide