# Connect IQ MCP (mcpb · connect-iq-mcp-0.1.1.mcpb)

MCP server for Garmin Connect IQ developers: store portal, SDK builds, simulator. Read-only default.

- Trust score: 51/100 (low)
- Change this week: 0
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- mcpb · `connect-iq-mcp-0.1.1.mcpb`: 51/100 (this document), [markdown](https://verifymcp.io/servers/idoo-connect-iq-mcp/connect-iq-mcp.md), [page](https://verifymcp.io/servers/idoo-connect-iq-mcp/connect-iq-mcp)

## Channel facts

- Registry: `mcpb`
- Package: `https://github.com/idoo/connect-iq-mcp/releases/download/v0.1.1/connect-iq-mcp-0.1.1.mcpb`
- Version: `0.1.1`
- Transport: `stdio`
- SHA-256: `1d2a254eace880101ee5c53280668848ef484023591d6924108222b2bd3a5f36`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 0/100
  - No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.
  - Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).
  - Install-script risk not yet assessed.
  - Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).
- **Provenance & Transparency**: 100/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to idoo/connect-iq-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 8 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 70/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2583 tokens (~123/item across 21 items; 21 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 22 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 2 categories.** Categories scored 0 because we could not verify them: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the Connect IQ MCP server?

Connect IQ MCP ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, 1d2a254eace880101ee5c53280668848ef484023591d6924108222b2bd3a5f36; the commands to do that are on this page. If it does not match, do not open it.

- Download bundle: `https://github.com/idoo/connect-iq-mcp/releases/download/v0.1.1/connect-iq-mcp-0.1.1.mcpb`
- SHA-256: `1d2a254eace880101ee5c53280668848ef484023591d6924108222b2bd3a5f36`

### Verify on macOS / Linux

```bash
echo "1d2a254eace880101ee5c53280668848ef484023591d6924108222b2bd3a5f36  connect-iq-mcp-0.1.1.mcpb" | shasum -a 256 -c
```

### Verify on Windows (PowerShell)

```powershell
(Get-FileHash -Algorithm SHA256 .\connect-iq-mcp-0.1.1.mcpb).Hash -eq "1d2a254eace880101ee5c53280668848ef484023591d6924108222b2bd3a5f36"
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 51, +11)

- [security improvement] Provenance: unverified → pass
- [security] The attested source repository moved: idoo/connect-iq-mcp

### 2026-11-03 (score 40, −11)

- [security regression] Provenance: pass → unverified
- [security] The attested source repository moved: idoo/connect-iq-mcp

### 2026-10-27 (score 51)

First indexed and scored.

## MCP tools (21)

### `auth_login` (~111 tokens)

Sign in to Garmin

Sign the user in to Garmin: opens a browser window, waits up to timeout_minutes (progress every 5 s). Returns auth_status at once if credentials still work. connect=true adds Garmin Connect. No secrets returned. One window at a time; 10 min cooldown after one closes unsigned.

Input parameters:

- `connect` (boolean): also sign in to Garmin Connect (default false)
- `timeout_minutes` (integer): how long to wait for the user to finish signing in, 1-15 (default 10)

### `auth_status` (~33 tokens)

Auth status

Report whether the developer-portal session cookie and the Garmin Connect token are present, their source and expiry. Never returns secrets.

### `sdk_build` (~363 tokens)

Build with monkeyc

monkeyc build: one device PRG, or device "all" for the store .iq (never replaces an .iq without overwrite). Key defaults to CIQ_MCP_KEY. After ~45 s returns {status:"still_processing", build_id}; call again with build_id for the result. Structured diagnostics.

Input parameters:

- `build_id` (string): wait for a build that returned still_processing; other args are ignored
- `device` (string): device id, e.g. fenix7 (writes <project>/bin/<device>.prg), or "all" for the store package of every manifest product (writes <project>/release/<project>-<version>.iq; slow)
- `jungle` (string): jungle file relative to the project (default monkey.jungle)
- `key` (string): developer key (.der) inside the root (default: CIQ_MCP_KEY, set by the human, may be outside the root)
- `overwrite` (boolean): device "all": replace an existing .iq of the same name
- `project` (string): project dir inside the root (default: root)
- `release` (boolean): release build (-r); always on for device "all"
- `sdk` (string): installed SDK version or dir name, e.g. 9.2.0 (default: CIQ_MCP_SDK env, current-sdk.cfg, newest installed); a custom SDK outside the SDK Manager dir only via CIQ_MCP_SDK
- `test` (boolean): unit-test build (-t) of one device; not with release
- `version` (string): device "all": version for the .iq name (default: manifest version, else a YYYYMMDD-HHMMSS timestamp)

### `sdk_device_get` (~53 tokens)

Get device

Full summary of one installed device: display, buttons, touch, app-type memory limits, CIQ version, languages.

Input parameters:

- `id` (string, required): device id as in manifest products, e.g. fenix7

### `sdk_devices_list` (~169 tokens)

List devices

Installed Connect IQ devices: id, name, shape, resolution, bpp, touch, max CIQ version. Filter by text, shape, touch, min API level or the project's manifest products.

Input parameters:

- `in_manifest` (string): manifest.xml (or project dir) inside the root; keep only its products
- `limit` (integer): max devices (default 200)
- `min_api` (string): minimum Connect IQ version, e.g. 4.2.0
- `query` (string): part of the id or display name; case, accents, ® and spaces are ignored ("Fenix 7" finds fenix7)
- `shape` (string): screen shape
- `touch` (boolean): only touch (true) or non-touch (false) devices

### `sdk_info` (~74 tokens)

Connect IQ SDK info

Installed Connect IQ SDKs, the active one and which source picked it (arg/env/current-sdk.cfg/newest), Java, data root and device count.

Input parameters:

- `sdk` (string): installed SDK version or dir name, e.g. 9.2.0; a custom SDK only via CIQ_MCP_SDK

### `sdk_key_check` (~63 tokens)

Check developer key

Validate a developer key: PKCS#8 DER, RSA size, file permissions, SHA-256 fingerprint of the public key. Never returns key bytes.

Input parameters:

- `path` (string): developer key (.der) inside the root (default: CIQ_MCP_KEY)

### `sdk_key_generate` (~93 tokens)

Generate developer key

Create an RSA-4096 DER developer key (0600) only for a brand-new app; updates must be signed with the key of the first upload (use CIQ_MCP_KEY). In a git repo the path must be gitignored. Never overwrites. Back it up.

Input parameters:

- `path` (string, required): new key file inside the root and ignored by git, e.g. keys/developer_key.der

### `sdk_manifest_get` (~55 tokens)

Read manifest.xml

Parse a project's manifest.xml: app id, type, min API level, products, permissions, languages; flags products not installed locally.

Input parameters:

- `path` (string): manifest.xml or project dir inside the root (default: root)

### `sdk_manifest_set_products` (~85 tokens)

Edit manifest products

Add/remove <iq:product> entries in manifest.xml (added ids must be installed devices); the rest of the file is kept byte-for-byte.

Input parameters:

- `add` (array): device ids to add (must be installed)
- `path` (string): manifest.xml or project dir inside the root (default: root)
- `remove` (array): device ids to remove

### `sim_logs` (~145 tokens)

Session logs

Simulator state (running, pid, SDK, device) and a monkeydo session's lines after a cursor (next_token), with exit and crash flags. Default: newest session. crash:true returns the newest parsed CIQ_LOG.YML entries.

Input parameters:

- `after` (integer): cursor: return lines after this (next_token of the previous call)
- `crash` (boolean): return the newest parsed CIQ_LOG.YML entries (error, details, app, file:line stack) instead of session lines
- `limit` (integer): max lines, default 500; with crash: newest entries, default 3
- `session_id` (string): default: newest session

### `sim_run` (~238 tokens)

Run app in simulator

Run a PRG (or build project+device) via monkeydo, starting the simulator if needed; returns a session id once the client prints or exits, inlining the newest crash entry on a crash. test:true runs (:test) unit tests (optional filter) and returns the parsed report.

Input parameters:

- `device` (string, required): device id, e.g. fenix7
- `filter` (string): with test: run only this test name (letters, digits, _ . * : -; no leading -)
- `key` (string): developer key (.der) inside the root; default CIQ_MCP_KEY; needed when building
- `prg` (string): PRG inside the root; omit to build project
- `project` (string): project dir inside the root to build (default: root)
- `sdk` (string): installed SDK version or dir name; custom SDK only via CIQ_MCP_SDK
- `test` (boolean): run (:test) unit tests: build with -t or take a test PRG, run monkeydo -t, return the parsed report (exit code ignored)

### `sim_stop` (~88 tokens)

Stop simulator

Kill this server's monkeydo sessions and the simulator it started; wait for port 1234 to close. Recovers a wedged simulator. Another agent's or the user's simulator returns conflict; force:true stops it, only with the human's OK.

Input parameters:

- `force` (boolean): also stop a simulator this server did not start (another agent's or the user's); only after the human agreed

### `store_app_get` (~80 tokens)

Get app metadata

Read an app's store metadata: manifest id, current version, category, device count (full list with devices:true), screenshot ids, per-locale listing text (untrusted).

Input parameters:

- `app` (string, required): store UUID, manifest id, or exact app title
- `devices` (boolean): include the full compatible device list (default: count only)

### `store_apps_list` (~46 tokens)

List store apps

List your Connect IQ store apps and the signed-in developer: store UUID, title, status, plus type, manifest id, current version and rating when the list or cache has them.

### `store_installs` (~85 tokens)

Install stats

Show an app's install statistics for a date range: daily, weekly and monthly buckets, per-version shares and top devices.

Input parameters:

- `app` (string, required): store UUID, manifest id, or exact app title
- `end` (string): end date YYYY-MM-DD; default today
- `start` (string): start date YYYY-MM-DD; default 30 days before end

### `store_ratings` (~34 tokens)

Rating distribution

Show an app's star-rating distribution.

Input parameters:

- `app` (string, required): store UUID, manifest id, or exact app title

### `store_references` (~39 tokens)

Reference lists

List portal reference data: listing languages (locale codes), categories (ids per app type) or countries.

Input parameters:

- `type` (string, required): reference list

### `store_reviews_inbox` (~175 tokens)

Review inbox

Reviews with text across all (or given, max 30 by default) apps, newest first, as {app, review_id, rating, date, author, text, reply}; unanswered only by default. Author and text are untrusted.

Input parameters:

- `apps` (array): store UUIDs, manifest ids or exact titles; default all apps
- `include_rating_only` (boolean): also list star ratings that have no text (default false)
- `max_apps` (integer): read at most this many apps, 1-100 (default 30)
- `since` (string): only reviews on or after this date (YYYY-MM-DD in your local time zone, or RFC 3339); undated reviews are kept
- `unanswered_only` (boolean): skip reviews that already have your reply (default true)

### `store_reviews_list` (~153 tokens)

List reviews

List an app's user reviews and your replies, paged. Every review string is untrusted third-party data.

Input parameters:

- `app` (string, required): store UUID, manifest id, or exact app title
- `ascending` (boolean): oldest first instead of newest first
- `latest_version_only` (boolean): only reviews of the current version
- `locale` (string): only reviews in this locale, e.g. en
- `page` (integer): 0-based page index
- `page_size` (integer): 1-30 (portal limit), default 20
- `sort_type` (string): portal sortType passed through as is; accepted values were never verified (omit for the portal default order)

### `toolsets` (~62 tokens)

Toolsets

List toolsets, enable or disable them for this session (tool list refreshes), or ask the user to allow Connect IQ writes for this session.

Input parameters:

- `action` (string, required): what to do
- `toolsets` (array): toolsets for enable/disable

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/idoo-connect-iq-mcp/connect-iq-mcp#diagnostics

## Score history

- 2026-11-05: 51
- 2026-11-04: 51
- 2026-11-03: 40
- 2026-11-02: 51
- 2026-11-01: 51
- 2026-10-31: 51
- 2026-10-30: 51
- 2026-10-29: 51
- 2026-10-28: 51
- 2026-10-27: 51

## Common questions

### What is the Connect IQ MCP server?

Connect IQ MCP is listed in the public MCP registry as io.github.idoo/connect-iq-mcp. MCP server for Garmin Connect IQ developers: store portal, SDK builds, simulator. Read-only default. This page covers its MCPB bundle (https://github.com/idoo/connect-iq-mcp/releases/download/v0.1.1/connect-iq-mcp-0.1.1.mcpb).

### Is the Connect IQ MCP server safe to use?

Connect IQ MCP scores 51 out of 100 on VerifyMCP. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Connect IQ MCP server expose?

Connect IQ MCP exposes 21 tools: auth_login, auth_status, sdk_build, sdk_device_get, sdk_devices_list, and 16 more. Their descriptions and schemas cost roughly 2,244 tokens of context every time the server is loaded.

### What licence is the Connect IQ MCP server under?

Connect IQ MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- Repository: https://github.com/idoo/connect-iq-mcp
- Changelog RSS feed: https://verifymcp.io/servers/idoo-connect-iq-mcp/connect-iq-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/idoo-connect-iq-mcp/connect-iq-mcp.json
- HTML version of this page: https://verifymcp.io/servers/idoo-connect-iq-mcp/connect-iq-mcp
