← monPIFCONTENT HISTORY

Update to monPIF

Snapshot Oct 31, 2026 · 00:20 UTC · version 2.0.2

WHAT CHANGED

Package or technical metadata updated

Package or technical metadata updated

Observed in package metadata. These changes alone do not establish a new customer-facing feature.

Save monPIF and check future changes in Following.

Up to 3 plugins free · no card required.

All fields and original values.

These are saved file metadata. Open a changed file to read its text edits.

Package file

Before

Oct 3, 2026 · 12:02 UTC

99340b3981928bbd49668b8dcb1b792d6629a674d4fd536a1050588e425f692f

After

Oct 31, 2026 · 00:20 UTC

ffef7e6284a0c06a9c007c3e324be9f9d2224b59fb3dac958a4c5494384d5155

Package file

Before

Oct 3, 2026 · 12:02 UTC

127

After

Oct 31, 2026 · 00:20 UTC

98

Package file

Before

Oct 3, 2026 · 12:02 UTC

{"sha256":"559088851905816f59d3b071523a434d869d788b336ac4eda14284e4c8b74237","size":2614}

After

Oct 31, 2026 · 00:20 UTC

Not present

Package file

Before

Oct 3, 2026 · 12:02 UTC

Not present

After

Oct 31, 2026 · 00:20 UTC

{"sha256":"9d3a6da0f3ace2f04cdfcb73a8a48f752639f3e2f8062996ed49343c3dc42a14","size":2558}

Compare saved observations

Download comparison JSON

Changed files

Choose a file to see its text changes. Binary or large files show metadata only.

.app.json →

.codex-plugin/plugin.json →

assets/icon-dark.svg →

assets/icon.svg →

assets/logo-dark.svg →

assets/logo.svg →

mcp.json →

plugin.json →

plugin.json

− removed · + added

--- before
+++ after
@@ -0,0 +1,89 @@
+{
+  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
+  "name": "app-6a3474d16cc88191ad49d2b12b06c1bc",
+  "version": "2.0.2",
+  "description": "MonPIF connects ChatGPT to the Common Core Curriculum framework (Tronc commun) of the F\u00e9d\u00e9ration Wallonie-Bruxelles (Belgium). Information about learning objectives is retrieved from the MonPIF database, which is built from the official curriculum texts.\n\nDesigned for homeschooling families, MonPIF helps you:\n\n- explore the official learning objectives by subject and grade level;\n- plan the school year;\n- link everyday activities to the learning objectives they relate to;\n- prepare your Individual Learning Plan (PIF) with reference to the official FWB texts.\n\nAsk a question and ChatGPT looks up the relevant learning objectives in the curriculum framework. You get educational guidance based on the official curriculum, without having to navigate the framework yourself.\n\nSigning in with your MonPIF account is optional and gives access to your children, school years, curriculum coverage, preparations, activities and journal sessions.\n\nCurrently covers primary school levels P1 to P3.",
+  "author": {
+    "name": "Joris Cimpaka-Kapeta"
+  },
+  "extensions": {
+    "com.openai": {
+      "interface": {
+        "displayName": "monPIF",
+        "shortDescription": "Support for Home Education",
+        "longDescription": "MonPIF connects ChatGPT to the Common Core Curriculum framework (Tronc commun) of the F\u00e9d\u00e9ration Wallonie-Bruxelles (Belgium). Information about learning objectives is retrieved from the MonPIF database, which is built from the official curriculum texts.\n\nDesigned for homeschooling families, MonPIF helps you:\n\n- explore the official learning objectives by subject and grade level;\n- plan the school year;\n- link everyday activities to the learning objectives they relate to;\n- prepare your Individual Learning Plan (PIF) with reference to the official FWB texts.\n\nAsk a question and ChatGPT looks up the relevant learning objectives in the curriculum framework. You get educational guidance based on the official curriculum, without having to navigate the framework yourself.\n\nSigning in with your MonPIF account is optional and gives access to your children, school years, curriculum coverage, preparations, activities and journal sessions.\n\nCurrently covers primary school levels P1 to P3.",
+        "developerName": "Joris Cimpaka-Kapeta",
+        "category": "Education & Research",
+        "capabilities": [],
+        "websiteURL": "https://www.monpif.be",
+        "supportURL": "https://www.monpif.be/legal",
+        "privacyPolicyURL": "https://www.monpif.be/confidentialite",
+        "termsOfServiceURL": "https://www.monpif.be/conditions",
+        "defaultPrompt": [
+          "Pour cet \u00e9pisode de \"C\u2019est pas sorcier\", cr\u00e9e des questions pour les P1 et P2 en lien avec le r\u00e9f\u00e9rentiel du Tronc commun.",
+          "On a fait de la cuisine, quels attendus cela couvre-t-il en P2 ?",
+          "\u00c0 partir de cet attendu en P2, propose-moi des activit\u00e9s concr\u00e8tes \u00e0 faire \u00e0 la maison."
+        ],
+        "composerIcon": "./assets/icon.svg",
+        "composerIconDark": "./assets/icon-dark.svg",
+        "logo": "./assets/logo.svg",
+        "logoDark": "./assets/logo-dark.svg"
+      },
+      "review": {
+        "test_cases": {
+          "positive": [
+            {
+              "description": "Public tool, no sign-in: discover which school levels are available.",
+              "prompt": "Quels niveaux scolaires sont disponibles dans monPIF ?",
+              "tools_triggered": "listCycles",
+              "expected_behavior": "ChatGPT calls listCycles without asking the user to sign in, then states, from the tool output, that the primary cycle is available for P1, P2 and P3 only."
+            },
+            {
+              "description": "Public tool, no sign-in: list the official learning goals of a subject and level.",
+              "prompt": "Quels sont les attendus de math\u00e9matiques en P3 ?",
+              "tools_triggered": "listGoals",
+              "expected_behavior": "ChatGPT calls listGoals with cycle=primaire, level=3 and the maths domain (it may call listDomains first to resolve the slug), without sign-in, and presents the official goals returned by the tool using their exact wording."
+            },
+            {
+              "description": "Public tool, no sign-in: match an everyday activity to official learning goals.",
+              "prompt": "On a fait de la cuisine, quels attendus cela couvre-t-il en P2 ?",
+              "tools_triggered": "findGoals",
+              "expected_behavior": "ChatGPT calls findGoals with a cooking-related query, cycle=primaire and level=2, without sign-in, and lists the matching official P2 goals as returned by the tool, without inventing goals."
+            },
+            {
+              "description": "Account tool (OAuth): list the signed-in user's children. Requires the demo account provided in the review details.",
+              "prompt": "Donne-moi des infos sur mes enfants.",
+              "tools_triggered": "list_children",
+              "expected_behavior": "The private tool first returns an authentication-required result and ChatGPT shows the Connect monPIF button. After the reviewer signs in to monPIF with the demo account and approves access, ChatGPT calls list_children again and shows only the demo account's child (first name, last name, birth date)."
+            },
+            {
+              "description": "Account tool (OAuth): curriculum coverage for the current school year. Requires the demo account provided in the review details.",
+              "prompt": "O\u00f9 en est mon enfant cette ann\u00e9e ? Combien d'attendus sont d\u00e9j\u00e0 couverts ?",
+              "tools_triggered": "get_coverage_stats",
+              "expected_behavior": "Once signed in with the demo account, ChatGPT calls list_school_years to find the active school year, then get_coverage_stats, and reports the total, covered and uncovered goals and the coverage percentage, with a breakdown by subject domain."
+            }
+          ],
+          "negative": [
+            {
+              "description": "Unrelated request: weather is outside monPIF's scope (official curriculum and school-year planning). monPIF tools must not be called; ChatGPT answers normally or says it cannot help with this using monPIF.",
+              "prompt": "Quelle m\u00e9t\u00e9o fera-t-il \u00e0 Bruxelles demain ?"
+            },
+            {
+              "description": "Unrelated writing task that involves neither the FWB curriculum nor the user's children or school-year data. monPIF tools must not be called; ChatGPT helps with its own capabilities.",
+              "prompt": "Aide-moi \u00e0 \u00e9crire un mail poli \u00e0 mon propri\u00e9taire pour demander une r\u00e9paration."
+            },
+            {
+              "description": "Level not available: only P1 to P3 are in the catalogue today. monPIF must not invent goals for P6; the safe fallback is to say that only P1 to P3 are currently available (listCycles may be called to confirm).",
+              "prompt": "Donne-moi la liste officielle des attendus de sciences en P6."
+            }
+          ]
+        },
+        "commerce": false
+      },
+      "publication": {
+        "release_notes": "Adds OAuth sign-in (authorization code with PKCE S256, Client ID Metadata Documents) so users can connect their monPIF account and use the account tools: children, school years, curriculum coverage, preparations, activities and journal sessions. The public curriculum tools (listGoals, findGoals, getGoal, getStats, listDomains, listCycles) remain available without signing in. The listing text was revised to remove absolute claims. The MCP server URL is unchanged."
+      },
+      "apps": "./.app.json"
+    }
+  }
+}
Full technical diff · 9 changed fields

changed /files/.app.json/sha256

BEFORE
"99340b3981928bbd49668b8dcb1b792d6629a674d4fd536a1050588e425f692f"
AFTER
"ffef7e6284a0c06a9c007c3e324be9f9d2224b59fb3dac958a4c5494384d5155"

changed /files/.app.json/size

BEFORE
127
AFTER
98

removed /files/.codex-plugin~1plugin.json

BEFORE
{
  "sha256": "559088851905816f59d3b071523a434d869d788b336ac4eda14284e4c8b74237",
  "size": 2614
}
AFTER
Field is absent

added /files/assets~1icon-dark.svg

BEFORE
Field was absent
AFTER
{
  "sha256": "9d3a6da0f3ace2f04cdfcb73a8a48f752639f3e2f8062996ed49343c3dc42a14",
  "size": 2558
}

added /files/assets~1icon.svg

BEFORE
Field was absent
AFTER
{
  "sha256": "9d3a6da0f3ace2f04cdfcb73a8a48f752639f3e2f8062996ed49343c3dc42a14",
  "size": 2558
}

added /files/assets~1logo-dark.svg

BEFORE
Field was absent
AFTER
{
  "sha256": "9d3a6da0f3ace2f04cdfcb73a8a48f752639f3e2f8062996ed49343c3dc42a14",
  "size": 2558
}

added /files/assets~1logo.svg

BEFORE
Field was absent
AFTER
{
  "sha256": "9d3a6da0f3ace2f04cdfcb73a8a48f752639f3e2f8062996ed49343c3dc42a14",
  "size": 2558
}

added /files/mcp.json

BEFORE
Field was absent
AFTER
{
  "sha256": "07f8eb81d365361cd58642e749b870301cfa2194d4ff823cdb564fb3f131f49b",
  "size": 194
}

added /files/plugin.json

BEFORE
Field was absent
AFTER
{
  "sha256": "9429a1cecb3e39094b765036a09e78b660915e46edc54edd2def1c8e19134a9d",
  "size": 7963
}
Full snapshot data
{
  "files": {
    ".app.json": {
      "sha256": "ffef7e6284a0c06a9c007c3e324be9f9d2224b59fb3dac958a4c5494384d5155",
      "size": 98
    },
    "assets/icon-dark.svg": {
      "sha256": "9d3a6da0f3ace2f04cdfcb73a8a48f752639f3e2f8062996ed49343c3dc42a14",
      "size": 2558
    },
    "assets/icon.svg": {
      "sha256": "9d3a6da0f3ace2f04cdfcb73a8a48f752639f3e2f8062996ed49343c3dc42a14",
      "size": 2558
    },
    "assets/logo-dark.svg": {
      "sha256": "9d3a6da0f3ace2f04cdfcb73a8a48f752639f3e2f8062996ed49343c3dc42a14",
      "size": 2558
    },
    "assets/logo.svg": {
      "sha256": "9d3a6da0f3ace2f04cdfcb73a8a48f752639f3e2f8062996ed49343c3dc42a14",
      "size": 2558
    },
    "mcp.json": {
      "sha256": "07f8eb81d365361cd58642e749b870301cfa2194d4ff823cdb564fb3f131f49b",
      "size": 194
    },
    "plugin.json": {
      "sha256": "9429a1cecb3e39094b765036a09e78b660915e46edc54edd2def1c8e19134a9d",
      "size": 7963
    }
  }
}

SHA-256 of public snapshot: 3bf9191a599bed5415b5d2dd2fccb3b433429d0b744491702e432105b4faf73d