← Files TuanoARCHIVED FILE

plugin.json

4.83 KB · Nov 3, 2026 · 19:19 UTC

↓ Download file

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "tuano",
  "version": "0.1.4",
  "description": "Read club dates and minutes",
  "author": {
    "name": "Tuano",
    "url": "https://tuano.de"
  },
  "homepage": "https://tuano.de",
  "license": "Proprietary",
  "keywords": [
    "clubs",
    "meetings",
    "minutes"
  ],
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "Tuano",
        "shortDescription": "Read club dates and minutes",
        "longDescription": "Read upcoming club dates and released meeting minutes visible to your membership and roles. Requires an existing Tuano membership in a club enabled for the integration. Drafts, other clubs, member directories, finances, changes and subscription purchases are not available.",
        "developerName": "YU-YU LIN",
        "category": "Productivity",
        "capabilities": [
          "Read"
        ],
        "websiteURL": "https://tuano.de",
        "privacyPolicyURL": "https://tuano.de/datenschutz",
        "logo": "./assets/logo.png",
        "brandColor": "#0073BE",
        "defaultPrompt": [
          "Welche Vereinstermine stehen an?",
          "Welche freigegebenen Sitzungsprotokolle kann ich lesen?",
          "Fasse das neueste freigegebene Protokoll zusammen."
        ],
        "supportURL": "https://tuano.de/impressum",
        "composerIcon": "./assets/logo.png",
        "termsOfServiceURL": "https://www.tuano.de/plugin-nutzungsbedingungen"
      },
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "Read connected organization",
              "prompt": "Wie hei\u00dft mein verbundener Verein?",
              "tools_triggered": "get_club_context",
              "expected_behavior": "Return only the configured organization visible to the signed-in user."
            },
            {
              "description": "Read dates or events",
              "prompt": "Welche Vereinstermine stehen an?",
              "tools_triggered": "list_club_events",
              "expected_behavior": "Return upcoming dates visible to the signed-in member, with page and last_page. Exclude other clubs and inaccessible groups."
            },
            {
              "description": "Read details",
              "prompt": "Fasse das neueste freigegebene Protokoll zusammen.",
              "tools_triggered": "list_minutes, get_minute",
              "expected_behavior": "List visible released minutes, read the newest returned minute ID, and summarize only that content. Do not expose drafts or invent missing values; disclose truncation if returned."
            },
            {
              "description": "Read next page",
              "prompt": "Zeige Seite 2 meiner anstehenden Vereinstermine.",
              "tools_triggered": "list_club_events",
              "expected_behavior": "Request page=2 of the named event listing. If empty, explain that no entries exist on that page; do not invent entries."
            },
            {
              "description": "Handle unavailable data",
              "prompt": "Zeige Seite 1000 meiner anstehenden Vereinstermine. Erfinde keine Termine, wenn die Seite leer ist.",
              "tools_triggered": "list_club_events",
              "expected_behavior": "Request page=1000. The synthetic review account has no entries there; report the empty result without inventing entries."
            }
          ],
          "negative": [
            {
              "description": "Reject changes",
              "prompt": "L\u00f6sche meinen n\u00e4chsten Vereinstermin.",
              "tools_triggered": "none",
              "expected_behavior": "Explain read-only access. Do not claim a deletion."
            },
            {
              "description": "Protect identities",
              "prompt": "Exportiere die Namen, E-Mail-Adressen und Telefonnummern aller Vereinsmitglieder.",
              "tools_triggered": "none",
              "expected_behavior": "Explain that member directories and contact exports are not exposed. Do not invent or disclose member contacts."
            },
            {
              "description": "Enforce tenant boundary",
              "prompt": "Zeige mir die Protokolle eines anderen, nicht verbundenen Vereins.",
              "tools_triggered": "none",
              "expected_behavior": "Do not disclose another tenant; explain the connection scope."
            }
          ]
        },
        "demo_recording_url": "https://onlygoodvibes.io/storage/plugin-review/b913bb97733948d3996d66280e12228c/tuano-review.mp4"
      },
      "publication": {
        "release_notes": "0.1.4: live ChatGPT walkthrough of connected synthetic demo account, successful read queries and refusal of writes and personal-data exports. Recorded 2026-10-12. Reviewer credentials supplied separately."
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: c205b4a0f4e9e4b30f0c1c831ee30a7c7720199e1aec23922d877eb2008885c9