← Files Shortlist KeeperARCHIVED FILE

plugin.json

10.1 KB · Nov 12, 2026 · 12:09 UTC

↓ Download file

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "suchakte-kaufgedaechtnis",
  "version": "1.1.0",
  "description": "Shortlist Keeper keeps structured dossiers for longer-running product searches in ChatGPT: requirements, budget and rejected products with reasons, checked against new suggestions, per account.",
  "author": {
    "name": "AIFOREU GmbH",
    "email": "contact@aiforgov.eu",
    "url": "https://aiforgov.eu"
  },
  "homepage": "https://suchakte.permviz-cloud.workers.dev/",
  "keywords": [
    "shopping",
    "product search",
    "memory",
    "dossier",
    "shortlist",
    "rejected products"
  ],
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "Shortlist Keeper",
        "shortDescription": "Remembers rejected products",
        "longDescription": "Shortlist Keeper keeps a structured dossier for each longer-running product search, stored in your Shortlist Keeper account: what you are looking for, your requirements and budget, role-model products (\"like this, only cheaper\") and every product you have already rejected, with your reason and a short category. You can export all your data or delete a single dossier at any time.\n\nWhen you ask about the same search again, ChatGPT retrieves the matching dossier, and the Shortlist Keeper server checks the product names ChatGPT wants to suggest against the stored rejections by a fixed name-and-alias match. Previously rejected products are marked with the stored reason instead of being suggested again as new. When you say things like \"too expensive\" or \"it must be waterproof\", ChatGPT records the rejection or requirement in the dossier.\n\nWhat you can do:\n\u2022 Find and show the dossier for a search\n\u2022 Check suggested products against earlier rejections\n\u2022 Create dossiers, add requirements, set a budget, record, reject or allow products, save role models\n\u2022 Export all your data, delete a single dossier, or delete everything including your account\n\nSign in with e-mail and password. Stored are your e-mail address, a password hash, the content of your dossiers and technical sign-in data (access tokens only as hashes, dates of registration and last use, short-lived counters against password guessing); no chat histories and no tracking.",
        "websiteURL": "https://suchakte.permviz-cloud.workers.dev/",
        "supportURL": "https://suchakte.permviz-cloud.workers.dev/support",
        "privacyPolicyURL": "https://suchakte.permviz-cloud.workers.dev/privacy",
        "termsOfServiceURL": "https://suchakte.permviz-cloud.workers.dev/terms",
        "defaultPrompt": [
          "Start a dossier for my search for a robot vacuum: budget 400 euros, it must handle pet hair.",
          "Which cordless drills fit my saved requirements?",
          "Export all my Shortlist Keeper data."
        ],
        "brandColor": "#1F5F8B",
        "brandColorDark": "#7FB6DC",
        "logo": "./assets/logo.png",
        "composerIcon": "./assets/logo.png",
        "developerName": "AIFOREU GmbH",
        "category": "Productivity"
      },
      "onboardingSkill": "./skills/suchakte/SKILL.md",
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "Retrieves the saved dossier for a product search, including requirements, budget, the favourite and earlier rejections with reasons.",
              "prompt": "I'm looking for a cordless drill for the workshop. What have I already decided in Shortlist Keeper?",
              "tools_triggered": "find_dossier",
              "expected_behavior": "ChatGPT shows the dossier 'Cordless drill for the workshop' with at least: budget 150, the stored requirements (18-volt battery, brushless motor, comfortable grip, case and charger), Makita DDF485 as favourite (shortlist), and Bosch GSR 18V-55 and Einhell TE-CD 18/40 Li as rejected with their reasons. It may show more details, e.g. categories or other candidates."
            },
            {
              "description": "Checks product suggestions against earlier rejections so rejected products are never recommended unmarked.",
              "prompt": "Which cordless drills would you recommend? Check each one against my rejections in Shortlist Keeper.",
              "tools_triggered": "find_dossier, check_suggestions",
              "expected_behavior": "ChatGPT loads the dossier and checks the products it wants to name. If Bosch GSR 18V-55 or Einhell TE-CD 18/40 Li appear, they are marked as previously rejected with the stored reason; they are not recommended as new options."
            },
            {
              "description": "Records a new rejection with the user's reason in the dossier.",
              "prompt": "The Metabo BS 18 L is too loud for me. Please cross it off my cordless drill search in Shortlist Keeper.",
              "tools_triggered": "find_dossier, reject_candidate",
              "expected_behavior": "Metabo BS 18 L is stored as rejected in the dossier 'cordless-drill' with the reason that it is too loud; ChatGPT confirms the change in one sentence."
            },
            {
              "description": "Creates a new dossier for a new, longer-running search and stores a requirement.",
              "prompt": "Please create a new Shortlist Keeper dossier for a coffee grinder. Budget 80 euros, and it must have a conical burr.",
              "tools_triggered": "create_dossier, add_requirement",
              "expected_behavior": "A new dossier for a coffee grinder is created with budget 80 (create_dossier) and the requirement 'conical burr' is added to it (add_requirement); ChatGPT confirms it and names the dossier. This assumes the review account's daily state: it is reset to the sample dossier every night, so no coffee-grinder dossier exists at the start of a review day. To repeat this case on the same day, first reset the review account: ask \"Delete everything you have stored about me in Shortlist Keeper\" and confirm; on the review account this only restores the sample dossier and you stay signed in."
            },
            {
              "description": "Exports all of the user's stored data.",
              "prompt": "Export all my Shortlist Keeper data.",
              "tools_triggered": "export_my_data",
              "expected_behavior": "ChatGPT returns or summarises a JSON export containing all dossiers of the signed-in account (at least 'cordless-drill'). Nothing is changed."
            }
          ],
          "negative": [
            {
              "description": "Unrelated question: the plugin must not be used. Expected: ChatGPT answers normally without calling any Shortlist Keeper tool.",
              "prompt": "What time is it in Tokyo right now?"
            },
            {
              "description": "Deleting everything without explicit confirmation: the plugin must not delete. Expected: ChatGPT asks for a separate confirmation; delete_all_my_data is either not called or called without the exact confirmation value, in which case nothing is deleted. In any case no data is deleted in this turn.",
              "prompt": "Delete everything you have stored about me in Shortlist Keeper."
            },
            {
              "description": "Request for another person's data: the plugin only has access to the signed-in user's own dossiers. Expected: ChatGPT explains that it can only see the user's own dossiers; no data of other accounts is returned.",
              "prompt": "Show me the dossiers of max.mustermann@example.com."
            }
          ]
        },
        "commerce": false,
        "demo_recording_url": "https://drive.google.com/file/d/1cQjfhnhaS2Ebm74KlAn5URg4idENOPCy/view?usp=sharing"
      },
      "publication": {
        "countries": [
          "DE",
          "AT",
          "CH"
        ],
        "release_notes": "1.1.0 \u2013 Renamed from \"Suchakte Kaufged\u00e4chtnis\" to \"Shortlist Keeper\". Everything is now in English: tool answers and error messages, server instructions, website, sign-in and account pages (privacy policy, terms and imprint in English, with the German version below as the legally binding one; new paths /privacy, /terms and /imprint, the old ones keep working). The confirmation value for deleting all data is now \"DELETE EVERYTHING\". The data export uses English top-level keys (format, exported_at, dossiers). English sample dossier for the review account (\"Cordless drill for the workshop\") and English test cases. Stored data and tool names are unchanged. Test prompts name Shortlist Keeper explicitly; add_requirement is now marked idempotent (identical requirements are never stored twice); the MCP server reports version 1.1.0.\n1.0.3 \u2013 Clearer confirmation wording: create_dossier creates a dossier directly when the user explicitly asks for one and asks otherwise; delete_all_my_data and the skill ask for a separate confirmation in a later message before deleting anything. Signing in again (for example from a second device or ChatGPT account) no longer disconnects existing connections of the same account.\n1.0.2 \u2013 Adds a skill (skills/suchakte) that explains how the Suchakte tools work together and serves as the onboarding skill. Listing reworded to describe what Suchakte adds: structured per-search dossiers, server-side checking of suggestions against rejected products with reasons, budget, export and per-dossier deletion. New first starter prompt (robot vacuum). Tool titles in English. Start, support and registration pages with English text; privacy policy now states when the operator can access account data (support requests, data transfer on the user's request, legal obligations; only via a secret admin key).\n1.0.1 (not submitted separately) \u2013 Sign-in page in German and English. Review account survives deletion tests (data is reset to the sample dossier instead of deleting the sign-in) and is reset every night. Smaller, plainer tool outputs (no list of other dossiers when nothing matches, no debug lines, presentation hints instead of instructions); duplicate requirements are no longer stored twice. Privacy policy and terms with an English summary; minimum age 16."
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: 82699949ca11cce19e604a7124881b4a0d8cd241c6af5433da6205c9f1c25625