← Files Kalori: Chat Nutrition TrackerARCHIVED FILE
.codex-plugin/plugin.json
18.2 KB · Nov 4, 2026 · 06:11 UTC
{
"name": "kalori",
"version": "1.1.4",
"description": "Nutrition for 490+ JP chains",
"author": {
"name": "KALBI LIMITED LIABILITY COMPANY",
"url": "https://kalori.jp"
},
"homepage": "https://kalori.jp",
"mcpServers": "./.mcp.json",
"interface": {
"displayName": "Kalori: Chat Nutrition Tracker",
"shortDescription": "Nutrition for 490+ JP chains",
"longDescription": "Kalori is a nutrition-tracking app you use by chatting. Tell ChatGPT what you ate and Kalori logs it, then ask how much is left for today against your calorie and protein, fat, and carbohydrate targets, how your nutrition went this week, or what would fit the rest of your budget at dinner. Weight and exercise are logged the same way, and everything is saved to the linked Kalori account.\n\nIn the Kalori iPhone app, users can also choose to import sleep (time asleep and sleep stages) and heart data (resting heart rate and heart rate variability) from Apple Health. Import is off by default and is turned on per category in the app; only daily summaries are stored, ChatGPT reads them only through read-only tools, and they are not used for goal calculations. Users can turn import off at any time and choose to delete the records already imported.\n\nNutrition values come from Kalori's catalog of Japanese convenience stores and restaurant chains: 490+ chains (Seven-Eleven, Lawson, FamilyMart, Saizeriya, Sukiya, McDonald's Japan and more), refreshed nightly from official chain sources, plus generic dishes for home cooking and non-chain meals. Every item carries a nutritionSource marker: official means the chain publishes the value, partial means published values completed with AI estimates, and estimated means every value is AI-estimated.\n\nA linked Kalori account is required. Personal-record features are available according to the linked account's existing access, and usage limits apply. The plugin does not offer purchases or subscription management.\n\nMain workflows: (1) log what was eaten by describing it, and correct the portion, date, or components in plain language; (2) review the day's totals and what remains against personal calorie and PFC targets; (3) record weight and exercise, review the weight trend, and read imported sleep and heart data alongside meals; (4) find something that fits the remaining budget, for example high-protein and under 500 kcal at Seven-Eleven, and render the choice as a meal-plan card whose totals are computed server-side from catalog values, so the numbers shown are not model estimates.\n\nSearch terms, filters, and result counts are retained as the linked account's search history to improve catalog coverage; each call also records the IP address and user-agent in private operational logs that are deleted automatically after about seven days. The tools accept no precise location, chat transcripts, or third-party account identifiers, and personal records are only ever reached through the user's own linked account.",
"developerName": "KALBI LIMITED LIABILITY COMPANY",
"category": "Healthcare",
"capabilities": [
"Log meals by describing what was eaten or by picking catalog items",
"Correct a logged meal's portion, date, or components in plain language",
"Review a day's or week's calories and PFC against personal targets",
"Record weight and exercise and review the weight trend",
"Log strength workouts with exercises and sets, and review past sessions",
"Register daily supplements so their label nutrients count toward each day",
"Save meal sets and repeat past meals exactly as logged",
"Change goals and meal budgets, applied only after the user confirms",
"Find meals that fit the remaining calorie or PFC budget",
"Search 460+ Japanese convenience-store and restaurant chains, filtered by calorie and PFC ranges",
"Look up several dishes in a single call when planning a meal or a shopping list",
"Render a meal-plan card whose totals are computed server-side from catalog values",
"Match a packaged food's nutrition label to the catalog product",
"Label every value as published by the chain, partially estimated, or fully estimated",
"List supported chains and re-fetch the exact nutrition of a catalog item by id",
"Read sleep and heart summaries the user chose to import from Apple Health (read-only)",
"Keep the key points of a review, only when the user agrees, and continue from them in a later chat"
],
"websiteURL": "https://kalori.jp",
"supportURL": "https://kalori.jp/ja/contact/",
"privacyPolicyURL": "https://kalori.jp/ja/privacy/",
"termsOfServiceURL": "https://kalori.jp/ja/terms/",
"defaultPrompt": [
"\u663c\u306b\u30bb\u30d6\u30f3\u306e\u30b5\u30e9\u30c0\u30c1\u30ad\u30f3\u3068\u304a\u306b\u304e\u308a\u3092\u98df\u3079\u305f\u306e\u3067\u8a18\u9332\u3057\u3066",
"\u4eca\u65e5\u306f\u3042\u3068\u4f55kcal\u98df\u3079\u3089\u308c\u308b\uff1f\u305f\u3093\u3071\u304f\u8cea\u306f\u8db3\u308a\u3066\u308b\uff1f",
"\u6b8b\u308a\u306e\u30ab\u30ed\u30ea\u30fc\u306b\u53ce\u307e\u308b\u5915\u98df\u3092\u30bb\u30d6\u30f3-\u30a4\u30ec\u30d6\u30f3\u3067\u7d44\u3093\u3067"
],
"brandColor": "#258039",
"brandColorDark": "#3fb950",
"composerIcon": "./assets/logo.png",
"logo": "./assets/logo.png"
},
"extensions": {
"com.openai": {
"review": {
"test_cases": {
"positive": [
{
"description": "Read the sleep and heart summaries the user chose to import from Apple Health. Both tools are read-only; the pre-created demo account has three days of synthetic data, and the answer reports the values without giving medical advice.",
"prompt": "\u76f4\u8fd13\u65e5\u306e\u7761\u7720\u6642\u9593\u3068\u5b89\u9759\u6642\u5fc3\u62cd\u6570\u3092\u6559\u3048\u3066",
"tools_triggered": "get_sleep, get_heart_rate_summary",
"expected_behavior": "Calls get_sleep and get_heart_rate_summary for the last three days and reports each night's time asleep (with deep, REM, and core sleep) and each day's resting heart rate and heart rate variability from the demo account, without diagnosing or giving medical advice."
},
{
"description": "Several dishes in one call. search_foods accepts a queries array so the model does not call the tool repeatedly, and never packs several dish names into one query string.",
"prompt": "\u30b5\u30e9\u30c0\u30c1\u30ad\u30f3\u3068\u304a\u306b\u304e\u308a\u3068\u307f\u305d\u6c41\u306e\u30ab\u30ed\u30ea\u30fc\u3092\u307e\u3068\u3081\u3066\u8abf\u3079\u3066",
"tools_triggered": "search_foods",
"expected_behavior": "One search_foods call with queries=[\"\u30b5\u30e9\u30c0\u30c1\u30ad\u30f3\",\"\u304a\u306b\u304e\u308a\",\"\u307f\u305d\u6c41\"]. The answer reports each term separately with chain items and their calories, and names any term listed in notFound as not found rather than guessing it."
},
{
"description": "Compose a meal from catalog items and render it as a card whose totals are computed server-side.",
"prompt": "\u30bb\u30d6\u30f3-\u30a4\u30ec\u30d6\u30f3\u306e\u5546\u54c1\u3067\u3001700kcal\u4ee5\u5185\u30fb\u305f\u3093\u3071\u304f\u8cea30g\u4ee5\u4e0a\u306e\u5915\u98df\u306e\u7d44\u307f\u5408\u308f\u305b\u3092\u4f5c\u3063\u3066",
"tools_triggered": "search_foods, show_meal_plan",
"expected_behavior": "Searches Seven-Eleven candidates, then calls show_meal_plan with the chosen items and the 700 kcal / 30 g target. The card lists the items with server-computed total calories and PFC and a fulfillment bar against that target, and the answer repeats those totals rather than adding the numbers itself."
},
{
"description": "Look up a generic Japanese dish. Generic dishes carry AI-estimated values marked nutritionSource=estimated, so the answer must label them as estimates rather than as published figures.",
"prompt": "\u30e9\u30fc\u30e1\u30f3\u306e\u30ab\u30ed\u30ea\u30fc\u3068PFC\u3092\u6559\u3048\u3066",
"tools_triggered": "search_foods",
"expected_behavior": "search_foods returns generic ramen entries alongside chain ramen products. The generic entries carry calories and PFC marked as estimated, and the answer presents them as estimates; a named chain product with its own official values is quoted as that product's published figure."
},
{
"description": "Every tool requires linking a pre-created Kalori demo account. Tools are listed while signed out and return an authentication challenge, which is what prompts the account-linking UI.",
"prompt": "\u4eca\u65e5\u306e\u663c\u3054\u306f\u3093\u306b\u30bb\u30d6\u30f3-\u30a4\u30ec\u30d6\u30f3\u306e\u30b5\u30e9\u30c0\u30c1\u30ad\u30f3\u3092\u98df\u3079\u305f\u306e\u3067\u8a18\u9332\u3057\u3066",
"tools_triggered": "search_foods, log_meals",
"expected_behavior": "Without a linked account, search_foods (and every other tool) returns an authentication error carrying _meta[\"mcp/www_authenticate\"] and ChatGPT offers to connect Kalori. After the reviewer signs in with the pre-created, sample-data demo credentials supplied only in the review portal (no account creation, MFA, SMS, email confirmation, invitation, or private network required), the same request looks the item up with search_foods and logs it with log_meals, and the answer confirms what was recorded."
}
],
"negative": [
{
"description": "Adjacent food request the app does not serve: booking a table. Kalori holds nutrition data for chain menus and has no reservation capability.",
"prompt": "\u8fd1\u304f\u306e\u30ec\u30b9\u30c8\u30e9\u30f3\u3092\u4e88\u7d04\u3057\u3066\u304f\u3060\u3055\u3044",
"expected_behavior": "No Kalori tool is invoked. The app cannot search for venues or make reservations, so the model asks for the missing booking details or answers on its own."
},
{
"description": "A grocery task that mentions a food item but asks for a reminder, not nutrition data.",
"prompt": "\u660e\u65e5\u306e\u671d\u306b\u725b\u4e73\u3092\u8cb7\u3046\u30ea\u30de\u30a4\u30f3\u30c0\u30fc\u3092\u8a2d\u5b9a\u3057\u3066",
"expected_behavior": "No Kalori tool is invoked even though a food word appears. The app provides nutrition lookups and food logging, not reminders or task management."
},
{
"description": "Everyday request with no connection to food or nutrition.",
"prompt": "\u4eca\u65e5\u306e\u6771\u4eac\u306e\u5929\u6c17\u306f\uff1f",
"expected_behavior": "No Kalori tool is invoked. The request is entirely outside the app's scope and the model answers from its own sources."
}
]
},
"demo_recording_url": "https://youtu.be/P_5Ps227Ilw",
"commerce": false,
"commerce_description": "Nutrition search and private food records; no purchases or checkout."
},
"publication": {
"release_notes": "Listing and tool update; adds read access to sleep and heart data that the user chooses to import, and saved review notes.\n\n- Renamed the listing to \"Kalori: Chat Nutrition Tracker\" and changed the subtitle to the chain catalog; the description now explains the opt-in Apple Health import and its data handling, and a test case covers get_sleep and get_heart_rate_summary.\n\n- Added get_sleep and get_heart_rate_summary: read the nightly sleep summaries (time asleep and sleep stages) and the daily resting heart rate and heart rate variability that the user chose to import from Apple Health in the Kalori iPhone app. Import is off by default and chosen per category; only daily summaries are stored, they are not used for goal calculations, and both tools are read-only within the linked account.\n- Added save_review_note and get_review_notes: keep the key points of a review only when the user asks or agrees, and read them back in a later chat. A saved note can be undone from its result card and is deleted with the account.\n- Clarified the descriptions of search_foods, log_meals, and get_food_details; their inputs still accept the previous forms.",
"translations": {
"ja-JP": {
"subtitle": "\u30b3\u30f3\u30d3\u30cb\u30fb\u5916\u98df490\u30c1\u30a7\u30fc\u30f3\u8d85\u306e\u6804\u990a",
"description": "Kalori \u306f\u3001\u30c1\u30e3\u30c3\u30c8\u3067\u6804\u990a\u7ba1\u7406\u304c\u3067\u304d\u308b\u30a2\u30d7\u30ea\u3067\u3059\u3002\u98df\u3079\u305f\u3082\u306e\u3092\u4f1d\u3048\u308c\u3070\u8a18\u9332\u3057\u3001\u30ab\u30ed\u30ea\u30fc\u3068\u305f\u3093\u3071\u304f\u8cea\u30fb\u8102\u8cea\u30fb\u70ad\u6c34\u5316\u7269\u306e\u76ee\u6a19\u306b\u5bfe\u3057\u3066\u4eca\u65e5\u3042\u3068\u3069\u308c\u304f\u3089\u3044\u98df\u3079\u3089\u308c\u308b\u304b\u3001\u4eca\u9031\u306e\u6804\u990a\u306f\u3069\u3046\u3060\u3063\u305f\u304b\u3001\u6b8b\u308a\u306b\u53ce\u307e\u308b\u5915\u98df\u306f\u4f55\u304b\u3001\u3068\u3044\u3063\u305f\u76f8\u8ac7\u306b\u4f1a\u8a71\u3067\u7b54\u3048\u307e\u3059\u3002\u4f53\u91cd\u3084\u904b\u52d5\u3082\u540c\u3058\u3088\u3046\u306b\u8a18\u9332\u3067\u304d\u3001\u3059\u3079\u3066\u9023\u643a\u3057\u305f Kalori \u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002\n\nKalori \u306e iPhone \u30a2\u30d7\u30ea\u3067\u306f\u3001Apple \u306e\u30d8\u30eb\u30b9\u30b1\u30a2\u304b\u3089\u7761\u7720\uff08\u7720\u3063\u305f\u6642\u9593\u3068\u7761\u7720\u306e\u6bb5\u968e\uff09\u3068\u5fc3\u62cd\uff08\u5b89\u9759\u6642\u5fc3\u62cd\u6570\u3068\u5fc3\u62cd\u5909\u52d5\uff09\u306e\u53d6\u308a\u8fbc\u307f\u3092\u9078\u3076\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u53d6\u308a\u8fbc\u307f\u306f\u521d\u671f\u8a2d\u5b9a\u3067\u306f\u30aa\u30d5\u3067\u3001\u30a2\u30d7\u30ea\u3067\u9805\u76ee\u3054\u3068\u306b\u30aa\u30f3\u306b\u3057\u307e\u3059\u3002\u4fdd\u5b58\u3059\u308b\u306e\u306f\u65e5\u3054\u3068\u306e\u8981\u7d04\u3060\u3051\u3067\u3001ChatGPT \u304b\u3089\u306f\u8aad\u307f\u53d6\u308a\u5c02\u7528\u306e\u30c4\u30fc\u30eb\u3067\u306e\u307f\u8aad\u307f\u3001\u76ee\u6a19\u306e\u8a08\u7b97\u306b\u306f\u4f7f\u3044\u307e\u305b\u3093\u3002\u53d6\u308a\u8fbc\u307f\u306f\u3044\u3064\u3067\u3082\u30aa\u30d5\u306b\u3067\u304d\u3001\u53d6\u308a\u8fbc\u3093\u3060\u8a18\u9332\u3092\u524a\u9664\u3059\u308b\u304b\u3082\u9078\u3079\u307e\u3059\u3002\n\n\u6804\u990a\u5024\u306f\u3001\u65e5\u672c\u306e\u30b3\u30f3\u30d3\u30cb\u30a8\u30f3\u30b9\u30b9\u30c8\u30a2\u3068\u5916\u98df\u30c1\u30a7\u30fc\u30f3\u306e\u6804\u990a\u30c7\u30fc\u30bf\u30ab\u30bf\u30ed\u30b0\u304b\u3089\u5f15\u304d\u307e\u3059\u3002\u30bb\u30d6\u30f3-\u30a4\u30ec\u30d6\u30f3\u3001\u30ed\u30fc\u30bd\u30f3\u3001\u30d5\u30a1\u30df\u30ea\u30fc\u30de\u30fc\u30c8\u3001\u30b5\u30a4\u30bc\u30ea\u30e4\u3001\u3059\u304d\u5bb6\u3001\u30de\u30af\u30c9\u30ca\u30eb\u30c9\u306a\u3069490\u30c1\u30a7\u30fc\u30f3\u8d85\u306e\u5546\u54c1\u3092\u6bce\u6669\u3001\u5404\u30c1\u30a7\u30fc\u30f3\u306e\u516c\u5f0f\u60c5\u5831\u304b\u3089\u66f4\u65b0\u3057\u3066\u3044\u308b\u307b\u304b\u3001\u81ea\u708a\u3084\u30c1\u30a7\u30fc\u30f3\u4ee5\u5916\u306e\u5916\u98df\u306e\u305f\u3081\u306e\u4e00\u822c\u7684\u306a\u6599\u7406\u540d\u3082\u53ce\u9332\u3057\u3066\u3044\u307e\u3059\u3002\u5404\u5546\u54c1\u306b\u306f\u6804\u990a\u5024\u306e\u7531\u6765\uff08official\uff1d\u30c1\u30a7\u30fc\u30f3\u306e\u516c\u8868\u5024 / partial\uff1d\u516c\u8868\u5024\u306e\u6b20\u640d\u3092AI\u63a8\u5b9a\u3067\u88dc\u5b8c / estimated\uff1d\u5168\u9805\u76eeAI\u63a8\u5b9a\uff09\u304c\u4ed8\u304d\u307e\u3059\u3002\n\nKalori\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u9023\u643a\u304c\u5fc5\u8981\u3067\u3059\u3002\u500b\u4eba\u306e\u8a18\u9332\u6a5f\u80fd\u306f\u3001\u9023\u643a\u3057\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u65e2\u5b58\u306e\u5229\u7528\u6a29\u306b\u5f93\u3063\u3066\u5229\u7528\u3067\u304d\u307e\u3059\u3002\u5229\u7528\u56de\u6570\u306a\u3069\u306e\u4e0a\u9650\u304c\u9069\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u30d7\u30e9\u30b0\u30a4\u30f3\u306f\u8cfc\u5165\u3084\u5b9a\u671f\u8cfc\u5165\u306e\u7ba1\u7406\u3092\u884c\u3044\u307e\u305b\u3093\u3002\n\n\u4e3b\u306a\u4f7f\u3044\u65b9: \u2460\u98df\u3079\u305f\u3082\u306e\u3092\u4f1d\u3048\u3066\u8a18\u9332\u3057\u3001\u91cf\u30fb\u65e5\u4ed8\u30fb\u5185\u8a33\u3092\u8a00\u8449\u3067\u76f4\u3059 \u2461\u305d\u306e\u65e5\u306e\u5408\u8a08\u3068\u3001\u30ab\u30ed\u30ea\u30fc\u30fbPFC\u306e\u76ee\u6a19\u306b\u5bfe\u3059\u308b\u6b8b\u308a\u3092\u78ba\u8a8d\u3059\u308b \u2462\u4f53\u91cd\u30fb\u904b\u52d5\u3092\u8a18\u9332\u3057\u3066\u4f53\u91cd\u306e\u63a8\u79fb\u3092\u898b\u3066\u3001\u53d6\u308a\u8fbc\u3093\u3060\u7761\u7720\u30fb\u5fc3\u62cd\u3082\u98df\u4e8b\u3068\u3042\u308f\u305b\u3066\u8aad\u3080 \u2463\u6b8b\u308a\u306b\u5408\u3046\u3082\u306e\u3092\u63a2\u3057\uff08\u4f8b: \u30bb\u30d6\u30f3-\u30a4\u30ec\u30d6\u30f3\u3067\u9ad8\u305f\u3093\u3071\u304f\u30fb500kcal\u4ee5\u4e0b\uff09\u3001\u9078\u3093\u3060\u7d44\u307f\u5408\u308f\u305b\u3092\u732e\u7acb\u30ab\u30fc\u30c9\u306b\u3059\u308b\uff08\u5408\u8a08\u306f\u30ab\u30bf\u30ed\u30b0\u306e\u5024\u304b\u3089\u30b5\u30fc\u30d0\u30fc\u5074\u3067\u8a08\u7b97\u3059\u308b\u306e\u3067\u3001AI \u304c\u8a08\u7b97\u3057\u305f\u6570\u5b57\u3067\u306f\u3042\u308a\u307e\u305b\u3093\uff09\u3002\n\n\u691c\u7d22\u8a9e\u30fb\u6761\u4ef6\u30fb\u7d50\u679c\u4ef6\u6570\u306f\u3001\u9023\u643a\u3057\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u691c\u7d22\u5c65\u6b74\u3068\u3057\u3066\u30ab\u30bf\u30ed\u30b0\u6539\u5584\u306e\u305f\u3081\u306b\u4fdd\u6301\u3057\u307e\u3059\u3002\u5404\u547c\u3073\u51fa\u3057\u306eIP\u30a2\u30c9\u30ec\u30b9\u3068User-Agent\u306f\u3001\u7d047\u65e5\u3067\u81ea\u52d5\u524a\u9664\u3055\u308c\u308b\u975e\u516c\u958b\u306e\u904b\u7528\u30ed\u30b0\u306b\u3082\u8a18\u9332\u3055\u308c\u307e\u3059\u3002\u4f4d\u7f6e\u60c5\u5831\u30fb\u30c1\u30e3\u30c3\u30c8\u306e\u5185\u5bb9\u30fb\u4ed6\u793e\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u8b58\u5225\u5b50\u306f\u53d7\u3051\u53d6\u3089\u305a\u3001\u500b\u4eba\u306e\u8a18\u9332\u306b\u306f\u9023\u643a\u3057\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u7d4c\u7531\u3067\u3057\u304b\u89e6\u308c\u307e\u305b\u3093\u3002"
}
}
}
}
},
"apps": "./.app.json"
}
SHA-256: d6d87c11807422b91a3dc385bae79d56f38c5e51efa66612145077f6f0e66227