← Files FitzapARCHIVED FILE

.codex-plugin/plugin.json

12.4 KB · Nov 5, 2026 · 12:12 UTC

↓ Download file

{
  "interface": {
    "category": "Healthcare",
    "composerIcon": "./assets/icon.png",
    "defaultPrompt": [
      "Review my recent training progress.",
      "Help me create a workout draft.",
      "Compare my training with my nutrition totals."
    ],
    "developerName": "Linus Westling",
    "displayName": "Fitzap",
    "logo": "./assets/icon.png",
    "longDescription": "Connect your existing Fitzap account to review synced workouts, completed sessions, personal records, training trends, your stored coach report, and app-computed training metrics. Compare consumed nutrition with synced energy estimates and saved nutrition goals. Create and revise pending workout drafts for review in Fitzap workout, or edit a saved workout after approving the specific changes. Read accessible recipes, send a new recipe to Fitzap nutrition, and revise recipes with the required approval. Recipe pushes and edits are queued for the compatible phone app; successful queuing does not prove phone delivery. You can also create a recipe import link after agreeing to publish it: anyone with the link can read the recipe for 24 hours. Read the daily nutrition goals Fitzap nutrition is using and, after approving the exact numbers, queue new goals; they apply the next time the nutrition app opens, and the app asks first if goals were changed on the phone meanwhile. Nutrition estimates are labelled as estimates. Data and write tools require an existing Fitzap Pro entitlement. Training tools use cloud-synced data. Consumed nutrition and saved goal context require an active same-account nutrition cloud backup. Recipe access depends on the nutrition app settings; full catalog access is opt-in. Direct recipe delivery requires the compatible nutrition app on the same account and available recipe capacity. Connecting does not enable cloud sync. Data may be incomplete or stale. This plugin cannot log or delete completed sessions, access exact GPS routes, or provide medical diagnosis. Sign in on fitzapapps.com through the host OAuth flow and revoke access in Fitzap workout under Settings → AI assistants.",
    "shortDescription": "Training and nutrition",
    "brandColor": "#0078C8",
    "brandColorDark": "#0096FF",
    "websiteURL": "https://fitzapapps.com/ai-assistants",
    "supportURL": "https://fitzapapps.com/faq",
    "privacyPolicyURL": "https://fitzapapps.com/privacy.html",
    "termsOfServiceURL": "https://fitzapapps.com/terms.html",
    "capabilities": []
  },
  "extensions": {
    "com.openai": {
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "Training review. Setup: reviewer account with at least four complete weeks of synthetic gym/cardio sessions, an exercise with repeated history and a PR, a stored coach report and a current metrics snapshot. Open a fresh conversation. Reads only; no report regeneration or writes.",
              "prompt": "Review my last four complete weeks of training using my latest coach report and current training metrics. Show my weekly volume, all-time personal records, how a frequently trained exercise progressed, and the details of my most recent session.",
              "tools_triggered": "get_account_status, get_coach_report, get_training_metrics_context, get_training_summary, get_personal_records, list_exercises, get_exercise_history, list_sessions, get_session",
              "expected_behavior": "Uses the reviewer account and returned timezone/units. Distinguishes report interpretation and app-computed metrics from recorded history; checks report week and snapshot freshness. Uses the last four complete weeks for summary/history. Follows pagination to identify a recent session (list_sessions is ascending), then reads its returned ID and kind. Reports only returned PRs and sets, labels estimated 1RM, incomplete coverage and unavailable/stale context, and makes no writes."
            },
            {
              "description": "Nutrition and energy comparison. Setup: synthetic nutrition backup active on the read-source account, at least seven days of diary coverage and synced goal context (dated saved targets or automatic phase preferences). Include a missing day where available to exercise unknown-intake handling. Reviewer writes remain isolated to the reviewer account.",
              "prompt": "Compare my recorded calories and protein with my saved nutrition goals and estimated energy expenditure over the last complete week. Explain missing days and what these numbers can and cannot tell us.",
              "tools_triggered": "get_account_status, get_nutrition_summary, get_energy_context",
              "expected_behavior": "Requests the actual last complete week with daily nutrition grouping and valid YYYY-MM-DD energy-context dates. Uses returned goals/estimates only for their supported dates; distinguishes estimated expenditure, saved goals and consumed intake. Missing entries remain unknown rather than zero. Explains stale/incomplete data and that cloud context cannot prove the targets currently displayed on the phone. Does not change goals or log food. If goal is null but preferences include normalCut, explains that automatic Cut is configured while no dated saved calorie/macro target record was returned. Does not describe the configured phase as absent, invent numeric targets, or claim cloud export proves TDEE import receipt."
            },
            {
              "description": "Workout draft creation and refinement. Setup: reviewer account has synthetic exercise history/templates and room for two pending drafts. In the same conversation, after creation, send: Make that pending draft three sets per exercise instead. Do not save it as a workout yet.",
              "prompt": "Suggest a 45-minute upper-body workout based on my recent exercises and saved routines, and send it to Fitzap as a draft for me to review.",
              "tools_triggered": "list_exercises, list_workouts, create_workout_draft, list_workout_drafts, update_workout_draft",
              "expected_behavior": "Creates one pending draft from supported schema inputs using the reviewer account. Explains that the user reviews and saves it in the app. On the follow-up reads the returned draft/current revision and revises that same draft to three sets per exercise, preserving unrelated details and original expiry. Returns the new revision and does not call edit_workout or claim a saved workout exists. Reviewer can verify the revised payload and unchanged expiry with list_workout_drafts without installing the mobile app; phone delivery is demonstrated separately by the publisher."
            },
            {
              "description": "Approved saved-workout edit. Setup: reviewer account owns at least one disposable cloud strength template, separate from mirrored read fixtures, with exercises/sets. After the initial read choose that fixture by its returned name and send: Rename this saved workout to Review Upper Body Updated. Keep every exercise and set unchanged. This direct instruction is explicit approval for that exact rename. The publisher provisions this fixture in advance; reviewers do not need to register or install the mobile app.",
              "prompt": "Show my saved strength workouts so I can choose one to rename for this review. Keep their exercises and sets unchanged.",
              "tools_triggered": "list_workouts, edit_workout",
              "expected_behavior": "Initial request only lists workouts and asks which disposable reviewer-owned template to rename; it makes no write before the follow-up approval. Reads that template and current sync_version. Calls edit_workout for its returned ID with name Review Upper Body Updated, expected_sync_version from the read and user_approved=true, omitting exercises so sets stay unchanged. Describes confirmed cloud update and possible phone sync delay. A follow-up read shows the renamed template; unrelated templates, completed history and mirrored fixtures remain unchanged. On conflict re-reads and reassesses rather than blindly retrying."
            },
            {
              "description": "Recipe delivery, reading, editing and public-link consent. Setup: publisher-provisioned isolated reviewer recipe catalogue, compatible assistant capabilities and capacity, with access to the declared write tools. Reviewers use the supplied account without registration or mobile app installation. The publisher demonstrates actual phone delivery in the demo recording. After reviewing the proposed recipe, approve adding it. The publisher supplies a delivered synthetic fixture for catalogue/read/edit checks. Follow up: Show me that recipe and change it to three servings. Finally request a shareable import link and, after the assistant explains public bearer-link access/24-hour expiry, explicitly approve publishing it.",
              "prompt": "Suggest a two-serving oats and yogurt breakfast recipe with estimated macros per portion. Show me the ingredients and gram amounts before adding it to Fitzap nutrition.",
              "tools_triggered": "push_recipe, list_recipes, get_recipe, edit_recipe, create_recipe_import_link",
              "expected_behavior": "Shows ingredient grams, servings and estimated macros before the approved push. Uses a fresh request_id, reports pending delivery rather than immediate phone success, and does not repeat a successful push. Uses list_recipes/get_recipe to read the created recipe and version. Revises it to three servings with the returned expected_version and consent rule; reports the queued result/version accurately without claiming phone delivery; publisher verifies phone delivery separately. Before publishing a link explains anyone holding it can read the recipe for 24 hours and waits for explicit approval. Returns the actual link/expiry; link import requires the user to open it and tap Import and does not log consumed food. Conflict and capacity errors are reported honestly without upsells."
            }
          ],
          "negative": [
            {
              "description": "Completed-history deletion is unsupported. Expected fallback: explain deletion must be performed in the app; no write tool, draft or recipe operation is called and no deletion is claimed.",
              "prompt": "Delete my most recent completed workout session and all its logged sets."
            },
            {
              "description": "Exact GPS routes are unavailable. Expected fallback: explain that only route summaries (distance, duration, point count) are exposed and that the map is viewed in the Fitzap app; no coordinates or map are invented and no write tool is called.",
              "prompt": "Show me the exact GPS route of my most recent outdoor run as coordinates I can put on a map."
            },
            {
              "description": "Recording completed sessions is unsupported. Expected fallback: explain that completed sessions are logged in the app/watch; do not create a workout draft or recipe as a substitute and do not claim a session was recorded.",
              "prompt": "Log the five-kilometre run I completed yesterday as a finished session."
            }
          ]
        },
        "commerce": false,
        "commerce_description": "The plugin does not sell goods, initiate subscriptions, process payments or promote upgrades. Data and write tools require an existing Fitzap Pro entitlement. The mobile apps handle subscriptions separately through their existing purchase flows.",
        "demo_recording_url": "https://youtu.be/m11lXfk5FuA"
      },
      "publication": {
        "countries": [],
        "release_notes": "0.1.17: Adds the nutrition goal tools (get_nutrition_goals, update_nutrition_goals) with explicit approval of the exact numbers; the server now exposes 23 tools. Replaces the nutrition-goal negative review case with an exact-GPS-route case. Retains the demo recording and five positive/three negative review scenarios."
      }
    }
  },
  "name": "fitzap",
  "version": "0.1.17",
  "description": "Connect Fitzap training and nutrition to your assistant. Review synced progress and goals, create and revise workout drafts, make approved workout edits, read, send, edit or share recipes, and make approved changes to nutrition goals.",
  "author": {
    "name": "Linus Westling",
    "email": "westling.linus@gmail.com",
    "url": "https://fitzapapps.com"
  },
  "keywords": [
    "fitness",
    "workouts",
    "nutrition",
    "fitzap",
    "foodapp"
  ],
  "homepage": "https://fitzapapps.com/ai-assistants",
  "skills": "./skills",
  "mcpServers": "./.mcp.json"
}

SHA-256: 4fccc10e6493e529dd7116d2646bbde0cbb6423b6ff5d6bd5db45f19abd466f6