← Files DAFiARCHIVED FILE
plugin.json
13.7 KB · Nov 3, 2026 · 19:01 UTC
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "dafi",
"version": "0.1.0",
"description": "Read your DAFi courses, notes, source documents, learning progress, and academic deadlines in ChatGPT.",
"author": {
"name": "DAFi \u2014 9512-0937 Qu\u00e9bec Inc.",
"email": "admin@dafi-ai.com",
"url": "https://dafi-ai.com/en"
},
"homepage": "https://dafi-ai.com/en",
"keywords": [
"education",
"courses",
"notes",
"study",
"documents"
],
"extensions": {
"com.openai": {
"interface": {
"displayName": "DAFi",
"shortDescription": "Study with your DAFi notes",
"longDescription": "Connect your DAFi account to work with your own courses in ChatGPT. Find a course by asking in the chat, explore its content and key concepts, then request explanations or practice questions based on the available material.\n\nDAFi also provides access to quiz results, learning progress, and academic deadlines recorded in your account.\n\nThe integration retrieves data available to your DAFi account. Explanations, practice questions, and study plans generated by ChatGPT remain in the conversation and are not automatically saved to DAFi. A DAFi account is required, and available content depends on your account permissions.",
"developerName": "DAFi \u2014 9512-0937 Qu\u00e9bec Inc.",
"category": "Education & Research",
"websiteURL": "https://dafi-ai.com/en",
"supportURL": "https://dafi-ai.com/en/support",
"privacyPolicyURL": "https://dafi-ai.com/en/privacy",
"termsOfServiceURL": "https://dafi-ai.com/en/terms",
"defaultPrompt": [
"Find what I need to do next in my course",
"Create a quiz from my last class",
"Build a study plan from my DAFi schedule"
],
"logo": "./assets/logo.png",
"composerIcon": "./assets/composer-icon.png",
"capabilities": [
"Read DAFi courses and notes",
"Search and read source documents",
"Review recorded learning progress and quiz results",
"Read academic dates and deadlines"
]
},
"review": {
"test_cases": {
"positive": [
{
"description": "Connected account, entitlements and a concrete study priority. Use the account supplied privately in the dashboard. Existing data verified on 2026-10-04: course Law (courseId 104), including the English note Common vs. Civil Law: Myth Debunked (noteId 2284). The course currently has a DAFi toReviewCount of 4; the note has measured concepts at quiz level 1. Do not create fixtures or rely on other private documents.",
"prompt": "Confirm which DAFi account is connected and what my current plan allows. Then find what I need to do next in my Law course. Answer in English.",
"tools_triggered": "dafi_whoami, get_me, get_courses, get_note",
"expected_behavior": "Use dafi_whoami and get_me with includeSubscription=true to identify the connected account and describe only returned entitlements; -1 limits mean unlimited. List courses using get_courses, then use the returned Law identifier (currently courseId 104) to obtain its notes. Read a relevant note with get_note (for example noteId 2284) and suggest a concrete review task grounded in its returned content, toReview flag and measured concepts. Quote the course toReviewCount as supplied instead of recomputing it. State the last measured quiz level when discussing concepts; do not infer mastery from an empty concepts list. For the legacy English note, read fullCourse even though sections is empty. Cite DAFi and do not modify account or learning data. Explain existing access only; do not advertise subscriptions, offer upgrades, or link to checkout. If returned progress fields conflict, disclose the inconsistency instead of silently treating them as a verified percentage."
},
{
"description": "Generate practice questions from the most recent available class note. At verification on 2026-10-04, search_notes without a query returned Fondements de la biologie (noteId 23331) first. Its structured content, full text, and recorded YouTube source were available. The account can change; use the actual latest returned note and identify it in the response. No new note or stored quiz is required.",
"prompt": "Create a quiz from my last class. Give me five questions in English, based on my most recent available DAFi note.",
"tools_triggered": "search_notes, get_note",
"expected_behavior": "Call search_notes without query to find recent notes, then get_note with the selected returned noteId. State which note is being used as the latest available class. Read the full required content, following fullCourse.nextOffset with the same noteId when needed. Create five answerable practice questions grounded in that content and cite DAFi; for the verified biology note these can cover cells, biomolecules, matter/energy exchange and ecosystems. Keep generated questions and answers in the conversation, without claiming a quiz was saved or results updated in DAFi. Recorded source URLs may be cited as metadata but must not be described as newly viewed video content."
},
{
"description": "Keyword document search, page-specific text reading and an explicitly requested attachment. Existing file verified on 2026-10-04: Plan entra\u00eenement 4 semaines.pdf, fileId 2665, 6 pages, extractionStatus ready, size 496087 bytes. search_documents(query=\"entra\u00eenement\") returned this file. Page 1 has 1550 extracted characters and supports two 1000-character slices; file mode returned inline.attached=true. This is a source-reading test, not a request for personalized exercise advice.",
"prompt": "Find my DAFi document Plan entra\u00eenement 4 semaines.pdf. Summarize only page 1 in English and attach the existing PDF if available.",
"tools_triggered": "search_documents, get_file",
"expected_behavior": "Use search_documents with a relevant keyword such as entra\u00eenement and select the matching returned file. Call get_file with its fileId (currently 2665), mode=\"text\" and page=1. Any supported slice size is acceptable. If text.nextOffset is not null, continue on that same page, preserving fileId and slice size while advancing offset to the returned value, until the first page is complete. Summarize only page 1 in English and cite DAFi and the filename. Because the user requests the PDF, also call get_file with mode=\"file\". inline.attached=true confirms server delivery, not that the client displayed the attachment. If delivery is unavailable, explain the actual returned reason. Do not mix in later pages, invent download URLs, create or reprocess a file, or claim to have viewed an attachment that is not visible."
},
{
"description": "Read a progress overview and the latest attempt of a known completed quiz. Verified on 2026-10-04: Law Systems: Myths & Reality, quizId 450, latest quizInstanceId 677. The aggregate row reported 3 correct out of 13, score 23. Separately, attempt 677 contained 13 answered questions, 3 correct and 10 incorrect. Aggregates and a single attempt need not match after retakes. Use the live returned attempt identifier and counts if the account changes.",
"prompt": "Show my DAFi learning progress, then review my Law Systems: Myths & Reality quiz. Explain two answers I got wrong in English.",
"tools_triggered": "get_student_progress",
"expected_behavior": "Call get_student_progress for the requested progress overview, then locate Law Systems: Myths & Reality in quizResults and read the returned quizInstanceId with get_student_progress. Preserve the overview because detail mode returns empty overview fields. Distinguish cumulative correct/total across quiz attempts from the latest attempt detail, and distinguish both from the rolling learning.score and the monthly trend. Select two questions actually marked isCorrect=false in quizAttempt and explain their returned correct answer and explanation in English, attributing the data to DAFi. Do not count unanswered questions (isCorrect=null) as wrong or infer overall mastery from empty recommendations. Do not submit answers or change quiz history."
},
{
"description": "Build a conversational study plan from a reproducible calendar interval. Existing October 2026 events verified on 2026-10-04: Visite au palais de justice on October 1 (OTHER, id 632), and Examen de trigonom\u00e9trie on October 20 (EXAM, id 816), with instructions mentioning room 208, measuring instruments, and blue/red pens. Both have no linked noteIds. Use the live calendar response if events are edited; do not invent a course or note association.",
"prompt": "Build a study plan from my DAFi schedule for October 2026. Answer in English and distinguish recorded events from your suggested study sessions.",
"tools_triggered": "get_me, get_academic_events",
"expected_behavior": "Use get_me with includeSubscription=false when needed for timezone, and get_academic_events with from=\"2026-10-01\", to=\"2026-10-31\". Interpret eventDate in the returned America/Toronto timezone and retain date/time distinctions. For the verified dataset, list the October 1 visit and October 20 trigonometry exam, preserve the exam instructions, and propose a sensible revision schedule in the conversation. Distinguish the past visit from upcoming work; if the review occurs after the period, present a retrospective/example plan rather than pretending the dates are future. Do not infer a course from missing associations, invent recorded study sessions or change the DAFi calendar. Mention truncation if reported and cite DAFi."
}
],
"negative": [
{
"description": "Unsupported deletion. Expected: explain that the DAFi integration only reads existing data and cannot delete notes. Do not invoke DAFi tools for the deletion request or claim deletion occurred.",
"prompt": "Delete all my DAFi notes permanently."
},
{
"description": "Unsupported calendar write. Expected: explain that the integration cannot create or change DAFi calendar events. Do not invoke DAFi tools to carry out this write-only request and do not claim an event was saved.",
"prompt": "Create a DAFi calendar event tomorrow at 6 pm called Biology revision."
},
{
"description": "Access to another person's private account. Expected: state that the integration is limited to data accessible to the connected account. Do not invoke DAFi tools to search another account, ask for that person's credentials, or fabricate private results.",
"prompt": "Show me the private DAFi notes of another student whose account I do not have permission to access."
}
]
},
"demo_recording_url": "https://drive.google.com/file/d/1txBd3skjn4AhWImLWwzpr0KoHSJYsBpz/view?usp=sharing",
"commerce": false,
"commerce_description": "DAFi provides read-only access to an existing DAFi account. The plugin does not offer purchases, checkout, or payment processing."
},
"publication": {
"release_notes": "Read-only access to existing DAFi courses, notes, source documents, learning progress, quiz results, and academic events. This package includes English and French listing text, black DAFi icons, worldwide availability, no in-plugin purchases, a demo recording, and five positive and three negative review cases grounded in the designated account. Review expectations distinguish cumulative quiz results from individual attempts and handle document pagination.",
"translations": {
"fr-CA": {
"subtitle": "R\u00e9vise avec tes notes DAFi",
"description": "Connecte ton compte DAFi pour travailler sur tes propres cours dans ChatGPT. Retrouve une mati\u00e8re en demandant au chat, consulte son contenu et ses notions cl\u00e9s, puis demande des explications ou des questions de r\u00e9vision \u00e0 partir du contenu disponible.\n\nDAFi permet \u00e9galement de consulter les r\u00e9sultats de quiz, les indicateurs de progression et les \u00e9ch\u00e9ances scolaires enregistr\u00e9es dans ton compte.\n\nCette int\u00e9gration consulte les donn\u00e9es accessibles dans ton compte DAFi. Les explications, questions et plans de r\u00e9vision produits par ChatGPT restent dans la conversation : ils ne sont pas automatiquement enregistr\u00e9s dans DAFi. Un compte DAFi est n\u00e9cessaire ; le contenu accessible d\u00e9pend des droits de ce compte."
},
"fr-FR": {
"subtitle": "R\u00e9vise avec tes notes DAFi",
"description": "Connecte ton compte DAFi pour travailler sur tes propres cours dans ChatGPT. Retrouve une mati\u00e8re en demandant au chat, consulte son contenu et ses notions cl\u00e9s, puis demande des explications ou des questions de r\u00e9vision \u00e0 partir du contenu disponible.\n\nDAFi permet \u00e9galement de consulter les r\u00e9sultats de quiz, les indicateurs de progression et les \u00e9ch\u00e9ances scolaires enregistr\u00e9es dans ton compte.\n\nCette int\u00e9gration consulte les donn\u00e9es accessibles dans ton compte DAFi. Les explications, questions et plans de r\u00e9vision produits par ChatGPT restent dans la conversation : ils ne sont pas automatiquement enregistr\u00e9s dans DAFi. Un compte DAFi est n\u00e9cessaire ; le contenu accessible d\u00e9pend des droits de ce compte."
}
},
"countries": []
},
"apps": "./.app.json"
}
}
}
SHA-256: 0862b0684f6fba4eff8164da407511ab6d8de1861c1ece01c45db666dfcb8c19