{"name":"io.github.mcp-dir/garmin-mcp","slug":"mcp-dir-garmin-mcp","title":"Garmin Connect (treinos)","description":"List, fetch, create, edit (replace), delete and schedule structured workouts on Garmin Connect (runn","url":"https://mcp.market/server/mcp-dir-garmin-mcp","rating":null,"grade":"B","score":72,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":20,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-08-30T19:38:42.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T07:55:31.615Z","last_ok_at":"2026-11-04T07:55:31.615Z","latency_ms":122},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/mcp-dir/garmin-mcp","website":null,"version":"0.1.0","remotes":[{"type":"streamable-http","url":"https://api.mcp.ai/p_garmin"}],"packages":[],"tools":[{"name":"authenticate","description":"MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header `Authorization: Bearer <token>` for a permanent, non-expiring connection. Or paste it here for a session-only login: call with { token: \"<jwt>\" } after the user pastes, or with no args to get the link.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"connect","description":"Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns connect_url for the toolkit and per-install URLs.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"garmin_delete_workout","description":"Delete a workout template from Garmin Connect by workout_id.\n\nBulk support: accepts workout_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"workout_id":{"type":"string"},"account":{"type":"string"},"workout_ids":{"type":"array","items":{"type":"string"}}},"required":["workout_id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"garmin_edit_workout","description":"Replace a workout: uploads a new workout from payload, then deletes workout_id (no native PUT). Returns new workout_id and previous_workout_id.\n\nBulk support: accepts workout_ids for batched execution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workout_id":{"type":"string"},"workout":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"account":{"type":"string"},"workout_ids":{"type":"array","items":{"type":"string"}}},"required":["workout_id","workout"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"garmin_get_scheduled_workout","description":"Get one scheduled workout entry by scheduled_workout_id.\n\nBulk support: accepts scheduled_workout_ids for batched execution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"scheduled_workout_id":{"type":"string"},"account":{"type":"string"},"scheduled_workout_ids":{"type":"array","items":{"type":"string"}}},"required":["scheduled_workout_id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"garmin_get_workout","description":"Get one workout template by workout_id (full structure: segments, steps, targets). Includes raw_data JSON string.\n\nBulk support: accepts workout_ids for batched execution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workout_id":{"type":"string"},"account":{"type":"string"},"workout_ids":{"type":"array","items":{"type":"string"}}},"required":["workout_id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"garmin_list_accounts","description":"List all Garmin logins linked to this install (id, email, label, created_at).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"account":{"type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"garmin_list_scheduled_workouts","description":"List calendar scheduled workouts for a given month/year from Garmin calendar-service.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"year":{"type":"number"},"month":{"type":"number"},"account":{"type":"string"}},"required":["year","month"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"garmin_list_workouts","description":"List saved workouts from Garmin Connect (workout-service). Returns summaries plus raw_data (full JSON string from Garmin).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"start":{"default":0,"type":"number"},"limit":{"default":20,"type":"number"},"account":{"type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"garmin_schedule_workout","description":"Schedule an existing workout onto the calendar. date must be YYYY-MM-DD (or ISO-8601 date prefix). Returns Garmin schedule response as raw_data.\n\nBulk support: accepts workout_ids for batched execution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workout_id":{"type":"string"},"date":{"type":"string"},"account":{"type":"string"},"workout_ids":{"type":"array","items":{"type":"string"}}},"required":["workout_id","date"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"garmin_submit_workout","description":"Create a new structured workout on Garmin Connect. Body must match Garmin API (workoutName, sportType, workoutSegments with ExecutableStepDTO / RepeatGroupDTO). You may omit displayOrder/displayable everywhere and the endCondition on RepeatGroupDTO — the server normalizes them automatically (see workout.description). Multi-sport: sportTypeKey multi_sport (typically sportTypeId 5) with one segment per discipline. Returns workout_id and raw_data.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"workout":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"account":{"type":"string"}},"required":["workout"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"garmin_unschedule_workout","description":"Remove workout from calendar by scheduled_workout_id (does not delete the workout template).\n\nBulk support: accepts scheduled_workout_ids for batched execution.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"scheduled_workout_id":{"type":"string"},"account":{"type":"string"},"scheduled_workout_ids":{"type":"array","items":{"type":"string"}}},"required":["scheduled_workout_id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"marketplace","description":"The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like \"find an MCP that does X\", \"consulta um CPF\", \"is there a tool for Y\". Core flow: action=search discovers MCPs by intent → describe returns one MCP's full profile (every tool with its id + params, pricing, auth) so you pick the right tool_id → invoke RUNS that tool. KEY: invoke works even when the MCP is NOT installed — it runs the tool pontualmente (one-off), without adding the MCP to the toolkit and without bloating the tool list. If the MCP needs a credential/login, invoke returns a connect link; if it is paid and the wallet is empty, invoke returns a checkout/top-up link (the user opens it, then you retry). Use install only to make an MCP PERMANENT in the active toolkit (its tools then show up natively in future sessions); prefer invoke for a single/occasional use. list_tools lists what is callable right now. subscribe/cancel handle per-MCP billing; report_bug sends feedback; request_mcp asks us to build a NEW MCP when nothing fits. Search/describe flag installed_in_toolkit vs installed_in_workspace. Writes (install/uninstall/subscribe/cancel and the one-off install behind invoke) require workspace owner/admin. It also carries the mcp.ai PROMPT LIBRARY, which is about ready-made prompt TEXT rather than MCPs: search_prompts finds one, get_prompt returns its full text with {{variables}} filled, and publish_prompt saves a prompt and returns a shareable mcp.ai/p/<slug> link that opens without login.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"action":{"default":"search","type":"string","enum":["search","describe","install","uninstall","subscribe","cancel","resume","report_bug","request_mcp","list_tools","invoke","search_prompts","get_prompt","publish_prompt"]},"query":{"default":"","type":"string"},"mcp_id":{"default":"","type":"string"},"limit":{"default":10,"type":"number"},"tier_slug":{"default":"","type":"string"},"immediate":{"default":false,"type":"boolean"},"cancel_reason":{"type":"string","enum":["too_expensive","missing_features","switched_service","unused","customer_service","too_complex","low_quality","other"]},"cancel_comment":{"default":"","type":"string"},"message":{"default":"","type":"string"},"report_context":{"default":"","type":"string"},"conversation":{"default":"[]","type":"string"},"request_name":{"default":"","type":"string"},"request_details":{"default":"","type":"string"},"tool_id":{"default":"","type":"string"},"arguments":{"default":"{}","type":"string"},"prompt_slug":{"default":"","type":"string"},"prompt_vars":{"default":"{}","type":"string"},"prompt_category":{"default":"","type":"string"},"prompt_tool":{"default":"","type":"string"},"prompt_title":{"default":"","type":"string"},"prompt_description":{"default":"","type":"string"},"prompt_body":{"default":"","type":"string"},"prompt_targets":{"default":[],"type":"array","items":{"type":"string","enum":["claude","chatgpt","cursor","lovable"]}}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"report_bug","description":"Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"message":{"type":"string"},"context":{"default":"","type":"string"},"conversation":{"default":"[]","type":"string"}},"required":["message"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"show_version","description":"Show the current MCP platform and adapter versions.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"toolkit_info","description":"Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":72,"grade":"B","scanned_at":"2026-09-27T05:31:25.486Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T05:31:25.449Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":12,"max":20,"notes":["remote reachable in 5536ms"]},"poisoning":{"score":15,"max":15,"notes":["16 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 3 write-action tools with no auth"]},"maintenance":{"score":15,"max":15,"notes":["last push 27 days ago"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://api.mcp.ai/p_garmin","reachable":true,"authRequired":false,"latencyMs":5536,"serverInfo":{"name":"mcp-ai","version":"0.9.351"}}],"packages":[],"repo":{"found":true,"owner":"mcp-dir","repo":"garmin-mcp","archived":false,"pushedAt":"2026-08-30T19:38:42Z","stars":0,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/207912538?v=4","ownerCreatedAt":"2025-04-16T18:01:51Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-08-30T19:38:42.000Z","score":20}}}},"grade_history":[],"reviews":[]}