AI-native

    Give your school an AI agent.

    Qalabash exposes a public REST API and an MCP server so external AI agents (ChatGPT, Claude, your own) can read and write your school's data directly. Add students, mark attendance, post grades, send announcements — all by conversation, never by clicks.

    1. Mint an API key

    Only school admins can create keys.

    1. Sign in and open Settings → API & AI Agents.
    2. Click New key, name it (e.g. "ChatGPT assistant"), pick scope.
    3. Copy the qal_live_… key. It's shown once.

    Scopes: read (list only), write (create & update), admin (everything).

    2. Connect an AI agent (MCP)

    Native support for Claude Desktop, ChatGPT custom connectors, and any MCP-compatible client.

    MCP endpoint

    Streamable HTTP transport.

    https://tcrtlmnrwglhasmuxzxt.supabase.co/functions/v1/mcp

    Claude Desktop

    Add this to ~/Library/Application Support/Claude/claude_desktop_config.json:

    {
      "mcpServers": {
        "qalabash": {
          "url": "https://tcrtlmnrwglhasmuxzxt.supabase.co/functions/v1/mcp",
          "transport": "http",
          "headers": {
            "Authorization": "Bearer qal_live_YOUR_KEY_HERE"
          }
        }
      }
    }

    Available tools

    What an agent can do once connected.

    get_schoollist_classescreate_classlist_studentscreate_studentlist_teachersmark_attendancerecord_gradespost_announcement

    3. Or call the REST API

    Plain HTTP. Use it from any backend or script.

    Base URL & auth

    https://tcrtlmnrwglhasmuxzxt.supabase.co/functions/v1/api-v1

    Every request needs Authorization: Bearer qal_live_…

    Create a class

    curl -X POST "https://tcrtlmnrwglhasmuxzxt.supabase.co/functions/v1/api-v1/classes" \
      -H "Authorization: Bearer qal_live_YOUR_KEY" \
      -H "Content-Type: application/json" \
      -d '{"name":"Form 1 A","grade_level":"Form 1","capacity":35}'

    Add a student

    curl -X POST "https://tcrtlmnrwglhasmuxzxt.supabase.co/functions/v1/api-v1/students" \
      -H "Authorization: Bearer qal_live_YOUR_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "full_name":"Amina Diallo",
        "class_id":"<class-uuid>",
        "guardian_name":"Fatou Diallo",
        "guardian_phone":"+221771234567"
      }'

    Mark attendance (bulk)

    curl -X POST "https://tcrtlmnrwglhasmuxzxt.supabase.co/functions/v1/api-v1/attendance" \
      -H "Authorization: Bearer qal_live_YOUR_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "class_id":"<class-uuid>",
        "date":"2026-06-12",
        "entries":[
          {"student_id":"<id>","status":"present"},
          {"student_id":"<id>","status":"absent"}
        ]
      }'

    Endpoint reference

    MethodPathPurpose
    GET
    /schoolSchool profile
    GET
    /classesList classes
    POST
    /classesCreate class
    GET
    /studentsList students (filter: class_id)
    POST
    /studentsAdd student
    GET
    /teachersList teachers
    POST
    /attendanceBulk mark attendance
    POST
    /gradesBulk record grades
    POST
    /announcementsPost announcement

    Privacy: API keys are scoped to your school's workspace. We store only a hash of each key — if you lose it, revoke and create a new one. Every action by an agent is recorded with created_via_api = true on the row.

    Need a connector for a service we don't list? Email hello@qalabash.io.

    Have questions? We're here to help.

    Talk to a human — we'll guide you through everything from setup to scaling.

    Contact us