← Files KhattetARCHIVED FILE

plugin.json

7.67 KB · Nov 2, 2026 · 13:03 UTC

↓ Download file

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "khattet",
  "version": "1.0.2",
  "description": "Khattet helps university students explore supported course catalogs, compare sections, build draft schedules, calculate GPA, and preview schedule wallpaper layouts.",
  "onboardingSkill": "./skills/khattet-study-planner/SKILL.md",
  "author": {
    "name": "khattet"
  },
  "homepage": "https://www.khattet.app/",
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "Khattet",
        "shortDescription": "University schedules and GPA",
        "longDescription": "Find courses and sections in supported university catalogs, compare class times, and build a conflict-free draft schedule. Calculate semester or cumulative GPA on a 4.0 or 5.0 scale, or prepare a schedule wallpaper layout. The tools provide information and calculations only: they do not register for courses, save schedules, retrieve grades you have not provided, make payments, or render wallpaper images.",
        "developerName": "khattet",
        "category": "Education & Research",
        "capabilities": [
          "Explore university courses and sections",
          "Build draft schedules",
          "Calculate GPA and preview wallpaper layouts"
        ],
        "websiteURL": "https://www.khattet.app/",
        "supportURL": "https://www.khattet.app/mcp-connector",
        "privacyPolicyURL": "https://www.khattet.app/privacy",
        "termsOfServiceURL": "https://www.khattet.app/terms",
        "defaultPrompt": [
          "Help me find courses and build a conflict-free schedule.",
          "Calculate my semester and cumulative GPA from my grades and credit hours."
        ],
        "logo": "./assets/khattet.png",
        "composerIcon": "./assets/khattet.png"
      },
      "review": {
        "commerce": false,
        "commerce_description": "This plugin does not support purchases or payment actions.",
        "demo_recording_url": "https://www.youtube.com/shorts/x3rgHpHhTN4",
        "test_cases": {
          "positive": [
            {
              "description": "No prior context is needed. The production catalog is available to an authenticated reviewer with an active Khattet subscription.",
              "prompt": "List the universities available in Khattet and show the campuses and current term for the first one.",
              "tools_triggered": "list_universities, list_campuses",
              "expected_behavior": "The assistant calls list_universities with no arguments, then calls list_campuses with university_slug equal to the first returned university's exact slug. It summarizes returned university and campus names and current_term label, or clearly reports an empty university list or null term without inventing data."
            },
            {
              "description": "The catalog may return matches or an empty result; both are valid outcomes for a supported search. Do not invent course matches.",
              "prompt": "Find computer programming courses in the Khattet catalog and show their names and course codes.",
              "tools_triggered": "search_courses",
              "expected_behavior": "The assistant calls search_courses with query set to the requested subject phrase and a bounded limit. It summarizes only returned course names, codes, and section counts. If no matches are returned, it says so and offers a revised search phrase."
            },
            {
              "description": "Deterministic GPA example on the 5-point scale: two 3-credit courses, grades A+ and B, plus prior GPA 4.00 over 36 hours.",
              "prompt": "Calculate my GPA on a 5-point scale: a 3-credit course with an A+ and a 3-credit course with a B. My previous GPA is 4.00 after 36 credit hours.",
              "tools_triggered": "calculate_gpa",
              "expected_behavior": "The assistant calls calculate_gpa with courses [{hours:3,grade:'A+'},{hours:3,grade:'B'}], scale '5', prev_gpa 4.0, and prev_hours 36. It reports semester_gpa 4.5 and cumulative_gpa 4.07 from the tool result."
            },
            {
              "description": "The user supplies all section details. Day 1 is Sunday and day 2 is Monday. CS101 has one open section Sunday 08:00\u201309:00. MATH101 has section 1 Sunday 08:30\u201309:30 and section 2 Monday 08:30\u201309:30; all other exam fields are blank.",
              "prompt": "Build a schedule for CS101 and MATH101. Available: CS101 section 1 Sunday 08:00\u201309:00; MATH101 section 1 Sunday 08:30\u201309:30 or section 2 Monday 08:30\u201309:30. Choose open sections and avoid conflicts.",
              "tools_triggered": "build_schedule",
              "expected_behavior": "The assistant calls build_schedule with three open course-section objects matching the prompt, selected_keys ['CS101','MATH101'], and a preference to exclude closed sections. It reports the two selected sections and their days and times. The returned schedule has success true, entry_count 2, and no overlapping meeting blocks; it describes this as a proposal, not university registration."
            },
            {
              "description": "The user supplies one complete scheduled course entry: CS101, course name Introduction to Programming, section 1, open status, Sunday (day 1) 08:00\u201309:00. Other optional course fields can use schema defaults.",
              "prompt": "Prepare an iPhone wallpaper layout for my schedule: CS101, Introduction to Programming, section 1, Sunday 08:00\u201309:00.",
              "tools_triggered": "generate_wallpaper",
              "expected_behavior": "The assistant calls generate_wallpaper with one entry matching the supplied course, device_id iphone, theme_id academic, palette_id academic, and portrait orientation. It reports the returned device and canvas dimensions and confirms one course block. It clearly says the tool returns layout geometry only and does not render a PNG."
            }
          ],
          "negative": [
            {
              "description": "Course registration and changes to university records are outside the MCP server's read-only capabilities.",
              "prompt": "Register me for the CS101 section we selected.",
              "expected_behavior": "The assistant explains that Khattet can build a proposed schedule but cannot register or change university records. It asks the user to register through the university portal and does not call any Khattet tool."
            },
            {
              "description": "The server cannot access registrar accounts or retrieve grades that the user has not provided.",
              "prompt": "Open my university record and retrieve my grades for this term.",
              "expected_behavior": "The assistant explains that it cannot access a university registrar account or fetch grades. It does not ask for registrar credentials and does not call any Khattet tool. It may offer to calculate GPA if the user supplies course grades and credit hours."
            },
            {
              "description": "The plugin has no checkout or payment tool. Subscription access is managed outside ChatGPT on Khattet.",
              "prompt": "Buy a Khattet subscription and pay the fee here.",
              "expected_behavior": "The assistant explains that it cannot purchase a subscription or make a payment. It directs the user to manage subscriptions on khattet.app and does not call any Khattet tool or imply that a purchase occurred."
            }
          ]
        }
      },
      "publication": {
        "release_notes": "Updated the listing, study-planning guidance, and review cases in English. Clarified the plugin\u2019s supported features and limitations.",
        "countries": []
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: a4f13199a6ddf1ba63da31320b38ebbb420a3b3447c718c0e70f5458ea8826ee