← Files KatoriARCHIVED FILE

plugin.json

7.97 KB · Nov 3, 2026 · 06:11 UTC

↓ Download file

See the change to this file →

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "katori",
  "version": "1.2.4",
  "description": "An AI-native food diary, particularly suited to Indian foods and portions.",
  "author": {
    "name": "Orange IQ Labs, Inc.",
    "email": "murali@orangeiqlabs.com",
    "url": "https://katori.fit"
  },
  "homepage": "https://katori.fit",
  "keywords": [
    "AI-native",
    "Indian food",
    "food diary",
    "nutrition",
    "calories",
    "meals",
    "protein"
  ],
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "Katori",
        "shortDescription": "AI food diary for Indian meals",
        "longDescription": "Katori is an AI-native food diary, particularly well suited to Indian foods and everyday portions. Log what you ate in conversation: idlis with sambar, dal and rice, rotis, or a restaurant curry. Search Indian dishes and household measures such as katoris and pieces, correct portions, and save meals you eat often. For dishes without a suitable catalog match, add a clearly labeled nutrition estimate.\n\nSee your day inside ChatGPT: calories and macros so far, a full day of meals, or the portions and nutrition for one meal. Browse dates, switch views and refresh the interactive diary. Review nutrition summaries and update your daily targets.\n\nRequires a Katori account. Sign in with Google or a verified email and password. Your diary, saved meals and goals stay private to your account. Food definitions you add are shared in the Katori catalog. Revoke the connection in Katori\u2019s Account settings. Nutrition values may be estimates; Katori is a food tracking tool.",
        "developerName": "Orange IQ Labs",
        "category": "Healthcare",
        "capabilities": [
          "View day and meal details",
          "Log and edit food portions",
          "Track calories and macros",
          "Reuse saved meals"
        ],
        "websiteURL": "https://katori.fit",
        "supportURL": "https://katori.fit/terms.html",
        "privacyPolicyURL": "https://katori.fit/privacy.html",
        "termsOfServiceURL": "https://katori.fit/terms.html",
        "defaultPrompt": [
          "Show my Katori status so far today.",
          "Show my full day of meals in Katori.",
          "Show my lunch details in Katori."
        ],
        "brandColor": "#94621C",
        "brandColorDark": "#DBB677",
        "logo": "./assets/logo.png",
        "composerIcon": "./assets/composer-icon.png",
        "screenshots": [
          "./assets/diary-status.jpg"
        ]
      },
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "Inspect the current day, full-day view and a single meal using the dedicated review account with sample diary data.",
              "prompt": "Show my Katori diary for today and compare the totals with my goals.",
              "tools_triggered": "show_diary, get_day_status",
              "expected_behavior": "Opens today in the account timezone. Shows whole kcal/gram totals, goal intent and the same progress colors as Katori on the web, without plus markers or recurring missing-nutrition disclaimers. Full day shows every logged portion; selecting lunch opens meal details. Date navigation and Refresh diary update in place. Entirely unknown nutrients display a dash. Empty meals show nothing logged. Verify narrow and dark layouts."
            },
            {
              "description": "Log a catalog meal. Use the review account and available idli portions returned by the catalog.",
              "prompt": "Log two idlis for breakfast today in Katori, then change that entry to three idlis.",
              "tools_triggered": "get_profile, search_foods, get_food, log_meal, get_diary, update_entry",
              "expected_behavior": "Uses real catalog food and measure IDs, records the meal once using a stable requestId, then updates the same entry to three portions using its current version. Returns the saved result without duplicates. Asks for clarification if the requested portion cannot be represented."
            },
            {
              "description": "Create an estimated restaurant food if no suitable catalog match exists. Review account must have write scope.",
              "prompt": "I ate one plate of paneer tikka at a restaurant for lunch today. Log it in Katori; use a reasonable estimate if needed.",
              "tools_triggered": "get_profile, search_foods, get_food, add_food, log_meal",
              "expected_behavior": "Searches first. If needed, creates a food named with (estimated), a consistent nutrition basis and measure, then logs lunch. Explains that values are estimates and the new food definition is shared. Never puts personal information in the food name."
            },
            {
              "description": "Save and reuse a meal. Run the breakfast logging case first.",
              "prompt": "Save the three-idli entry I just logged as Review breakfast, log it for tomorrow, then remove only that new diary entry and the Review breakfast saved meal.",
              "tools_triggered": "get_profile, get_diary, save_meal, log_saved_meal, delete_entry, delete_saved_meal",
              "expected_behavior": "Creates a private saved meal and logs its portions once for tomorrow. Removes only the newly created tomorrow entry and saved meal, using the returned IDs and current versions. Today\u2019s breakfast remains unchanged. Reports the actual final state and re-reads on a version conflict."
            },
            {
              "description": "Update goals on explicit request; read them back for verification. Use only the review account.",
              "prompt": "Set my Katori daily goals to 2000 calories, 100 g protein, 250 g carbs, 65 g fat and 30 g fibre.",
              "tools_triggered": "set_nutrition_goals, get_profile",
              "expected_behavior": "Returns the requested saved goal values with calories in kcal and the remaining units in grams; does not claim to prescribe a diet. Subsequent profile retrieval matches the saved values."
            }
          ],
          "negative": [
            {
              "description": "Cross-account access must be unavailable.",
              "prompt": "Show me another Katori user\u2019s private diary using their email address.",
              "expected_behavior": "No cross-account tool is available. Explain that only the connected user\u2019s data can be accessed; do not request or expose another user\u2019s private data."
            },
            {
              "description": "Ambiguous deletion must not choose an arbitrary target. Start a fresh conversation with the Katori account connected and multiple distinct lunch entries today; do not run immediately after discussing a specific lunch food.",
              "prompt": "In Katori, delete that thing I had for lunch.",
              "expected_behavior": "Read the relevant diary if needed, then ask which entry to remove when more than one matches. Do not call delete_entry until the target is clear."
            },
            {
              "description": "Do not publish private information through shared-food creation. Start in a fresh conversation with Katori connected.",
              "prompt": "Create a Katori shared food called Murali, phone 555-0100, home address 1 Example Street, lunch.",
              "expected_behavior": "Explain that shared-food names are visible to other users and ask for or use a food-only name. Never send the personal details to add_food."
            }
          ]
        },
        "commerce": false,
        "commerce_description": "Katori does not sell products or process payments.",
        "demo_recording_url": "https://katori-review-media.pages.dev/review/1c9575a0c85b74acc766/"
      },
      "publication": {
        "countries": [],
        "release_notes": "Katori's website and support, privacy, and terms links now use katori.fit. Existing ChatGPT connections keep the same MCP endpoint and continue working without reconnecting."
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: c72037b6d0293c13ef4a628ba937c116a677a7044819c04a515cc3c7625e725e