hosts
- mcp.fitmeproject.com
plugin.json
- name
- fitme
- version
- 0.1.0
- description
- Manage your Fitme training plans and track workouts from ChatGPT.
- author
- Kyrylo Provorov
- extensions
- com.openai
mcp.json
- fitmestreamable-httphttps://mcp.fitmeproject.com/
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "fitme",
"version": "0.1.0",
"description": "Manage your Fitme training plans and track workouts from ChatGPT.",
"extensions": {
"com.openai": {
"interface": {
"displayName": "Fitme",
"shortDescription": "Plan and track your workouts",
"longDescription": "Connect your Fitme account to search the exercise library, create and manage training plans, log workout sets, and review your workout history in ChatGPT. Read exercise instructions and use your saved measurement units when recording reps and weights. A Fitme account and sign-in are required. Creating a plan makes it active. You can also rename or replace plans, switch your active plan, and delete plans or workout sessions when requested.",
"defaultPrompt": [
"Show my active Fitme plan and next workout.",
"Find squat exercises in my Fitme exercise library.",
"Show my most recent finished Fitme workout."
],
"websiteURL": "https://fitmeproject.com",
"supportURL": "https://fitmeproject.com/support",
"privacyPolicyURL": "https://fitmeproject.com/privacy-policy",
"termsOfServiceURL": "https://fitmeproject.com/terms",
"logo": "./assets/icon.png",
"composerIcon": "./assets/icon.png",
"developerName": "Kyrylo Provorov"
},
"review": {
"test_cases": {
"positive": [
{
"description": "Exercise discovery. Setup: signed in to a dedicated review account; exercise catalog contains squat exercises.",
"prompt": "Find squat exercises in Fitme and show me how to do one.",
"tools_triggered": "list_exercises, get_exercise",
"expected_behavior": "Call list_exercises with search=\"squat\", then get_exercise using an id returned by that search. Describe that returned exercise and its instructions. Do not invent ids or instructions; explain an empty catalog result honestly."
},
{
"description": "Create a plan. Setup: dedicated review account with metric units and the standard exercise catalog. This test makes the new plan active. Start a fresh conversation.",
"prompt": "Create and save a beginner gym plan called Marketplace Demo for general fitness: one 30-minute workout, once a week, with Barbell Back Squat and two sets of 10 reps, 60 seconds rest and 20 kg. This is synthetic demo data.",
"tools_triggered": "get_profile, list_plan_options, list_exercises, create_plan",
"expected_behavior": "Read get_profile to confirm metric units and list_plan_options for valid options. Find Barbell Back Squat using list_exercises and use its returned id. Call create_plan with name=\"Marketplace Demo\", frequency=1, workout_duration=30, experience_level=\"beginner\", place=\"gym\", goal=\"general-health-fitness\", one workout and one exercise. Each of two sets must have reps_recommended=10, rest_recommended=60, weight_recommended=20. Report the saved id and that this is now active. If the write returns a warning, report saved-with-warning and do not repeat create_plan. If the account is not metric, explain the fixture mismatch before writing; do not store 20 kg as 20 lbs."
},
{
"description": "Metadata-only update. Setup: run the create-plan case once and ensure exactly one non-deleted Marketplace Demo plan exists. Record its workout ids before this case.",
"prompt": "Rename my Marketplace Demo plan to Marketplace Demo Revised. Keep every workout, exercise and set as it is.",
"tools_triggered": "list_plans, get_plan, update_plan",
"expected_behavior": "Resolve the exact owned plan through list_plans/get_plan. Call update_plan with that planId and name=\"Marketplace Demo Revised\" only; omit workouts. Report the new name. The returned workout ids and exercise/set contents must be unchanged."
},
{
"description": "Session tracking. Setup: the preceding renamed demo plan has one workout, two unlogged sets and no open session; metric review account. Log synthetic data only.",
"prompt": "Start the workout in Marketplace Demo Revised, record 10 reps at 20 kg for its first set, then finish the session. This is synthetic demo data.",
"tools_triggered": "list_plans, get_plan, start_workout_session, log_set, finish_workout_session",
"expected_behavior": "Resolve the owned plan and its workout id. Pass that workoutId to start_workout_session; use the first session set id from its response (or get_workout_session), not a plan-set id. Call log_set with repsCompleted=10 and weightCompleted=20, then finish_workout_session with the returned sessionId. Report the completed session based on the results. Do not fabricate a logged second set."
},
{
"description": "History and units. Setup: run the session-tracking case; review account remains metric. The latest completed session contains the synthetic 10-rep, 20 kg logged squat set.",
"prompt": "Show my most recent finished Fitme workout and the recent logged history for its first exercise, including units.",
"tools_triggered": "get_profile, list_workout_sessions, get_workout_session, get_exercise_history",
"expected_behavior": "Read get_profile for units. Call list_workout_sessions with status=\"finished\" and use the most recent returned session id with get_workout_session. Call get_exercise_history with that session exercise's library exerciseId. Show the logged 10 reps and 20 kg from returned data; do not treat unlogged sets as completed or convert stored units."
}
],
"negative": [
{
"description": "Fitme has no nutrition logging tools. Explain that meals/macros cannot be saved through this connection; do not invoke any Fitme tool or claim a meal was saved.",
"prompt": "Save my breakfast in Fitme: two eggs and a slice of toast, with the calories and macros."
},
{
"description": "Fitme has no wearable-import tools. Explain that this connection cannot import Apple Watch data; do not invoke Fitme tools or invent imported records.",
"prompt": "Import last night's sleep and today's heart-rate readings from my Apple Watch into Fitme."
},
{
"description": "Fitme has no booking tools. Explain that the connection cannot book gym classes; do not invoke Fitme tools or claim a reservation.",
"prompt": "Book me a spin class at my local gym tomorrow at 7pm through Fitme."
}
]
},
"commerce": false,
"commerce_description": "The ChatGPT plugin has no paid features or purchases.",
"demo_recording_url": "https://www.youtube.com/watch?v=IJZfwLEahac"
},
"publication": {
"release_notes": "Initial Fitme plugin: exercise discovery, training plan management, workout session tracking, set logging, and workout history through the existing authenticated Fitme MCP server.",
"countries": [
"AD",
"AE",
"AF",
"AG",
"AI",
"AL",
"AM",
"AO",
"AQ",
"AR",
"AS",
"AT",
"AU",
"AW",
"AX",
"AZ",
"BA",
"BB",
"BD",
"BE",
"BF",
"BG",
"BH",
"BI",
"BJ",
"BL",
"BM",
"BN",
"BO",
"BQ",
"BR",
"BS",
"BT",
"BV",
"BW",
"BY",
"BZ",
"CA",
"CC",
"CD",
"CF",
"CG",
"CH",
"CI",
"CK",
"CL",
"CM",
"CN",
"CO",
"CR",
"CU",
"CV",
"CW",
"CX",
"CY",
"CZ",
"DE",
"DJ",
"DK",
"DM",
"DO",
"DZ",
"EC",
"EE",
"EG",
"EH",
"ER",
"ES",
"ET",
"FI",
"FJ",
"FK",
"FM",
"FO",
"FR",
"GA",
"GB",
"GD",
"GE",
"GF",
"GG",
"GH",
"GI",
"GL",
"GM",
"GN",
"GP",
"GQ",
"GR",
"GS",
"GT",
"GU",
"GW",
"GY",
"HK",
"HM",
"HN",
"HR",
"HT",
"HU",
"ID",
"IE",
"IL",
"IM",
"IN",
"IO",
"IQ",
"IR",
"IS",
"IT",
"JE",
"JM",
"JO",
"JP",
"KE",
"KG",
"KH",
"KI",
"KM",
"KN",
"KP",
"KR",
"KW",
"KY",
"KZ",
"LA",
"LB",
"LC",
"LI",
"LK",
"LR",
"LS",
"LT",
"LU",
"LV",
"LY",
"MA",
"MC",
"MD",
"ME",
"MF",
"MG",
"MH",
"MK",
"ML",
"MM",
"MN",
"MO",
"MP",
"MQ",
"MR",
"MS",
"MT",
"MU",
"MV",
"MW",
"MX",
"MY",
"MZ",
"NA",
"NC",
"NE",
"NF",
"NG",
"NI",
"NL",
"NO",
"NP",
"NR",
"NU",
"NZ",
"OM",
"PA",
"PE",
"PF",
"PG",
"PH",
"PK",
"PL",
"PM",
"PN",
"PR",
"PS",
"PT",
"PW",
"PY",
"QA",
"RE",
"RO",
"RS",
"RW",
"SA",
"SB",
"SC",
"SD",
"SE",
"SG",
"SH",
"SI",
"SJ",
"SK",
"SL",
"SM",
"SN",
"SO",
"SR",
"SS",
"ST",
"SV",
"SX",
"SY",
"SZ",
"TC",
"TD",
"TF",
"TG",
"TH",
"TJ",
"TK",
"TL",
"TM",
"TN",
"TO",
"TR",
"TT",
"TV",
"TW",
"TZ",
"UA",
"UG",
"UM",
"US",
"UY",
"UZ",
"VA",
"VC",
"VE",
"VG",
"VI",
"VN",
"VU",
"WF",
"WS",
"YE",
"YT",
"ZA",
"ZM",
"ZW"
]
}
}
},
"author": {
"name": "Kyrylo Provorov"
}
}
Client extensions
Data this package carries for particular clients. The directory lists the clients named and never reads what is addressed to them.
- com.openai