Skip to main content
Glama

Add device via Bluetooth

connect_bluetooth

Scans for CyberBrick Bluetooth devices and auto-selects the matching board to complete pairing without UI interaction; verify the paired device afterward with device_list.

Instructions

Drive the app's real add-device flow (BluetoothDeviceManager.requestDevice — the same one the MyDeviceDialog UI uses): starts a BLE scan filtered to CyberBrick devices (companyIdentifier 17882, manufacturer data prefix [99]), then auto-selects the matching device so the chooser resolves without UI. After it resolves, the app marks the device and the caller can verify with device_list. MUTATING (pairs a device).

Input Schema

NameRequiredDescriptionDefault
deviceIdNoSelect the board with this deviceId (from device_list; on macOS a Chromium pseudo-address, not the chip MAC). Takes precedence over deviceName — use it for boards that share a name or were renamed (paired boards advertise as CyberBrick-[NNNN]).
timeoutMsNoHow long to wait for the chooser to resolve before cancelling. The B0 probe after selection has its own budget.
deviceNameNoPrefer a device whose advertised name matches this substring (case-insensitive). If omitted, the first discovered CyberBrick device is selected.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.4.0

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag non-readonly, non-idempotent, open-world, so the safety profile is covered; the description still adds real value by naming what the mutation is ('pairs a device'), describing the scan filter and the no-UI auto-selection, and noting that timeout cancels the chooser while the B0 probe has a separate budget. Only gap is the absence of stated permission/auth or failure semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and the key consequence ('MUTATING') packed into a single dense sentence plus a trailing verification hint. Some internal identifiers (BluetoothDeviceManager.requestDevice, B0 probe, manufacturer data prefix) are implementation noise, but they are compressed into parentheses rather than expanded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All three params are optional and fully schema-documented, so the description's remaining burden is what happens and what comes back; it covers the flow, the side effect, the timeout abort, and points to device_list for verification. Without an output schema it could say more about what a successful resolve returns, but an agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so deviceId precedence, deviceName substring matching, and timeoutMs budget are already fully documented in the schema. The description adds no parameter-level detail beyond what the structured fields provide, which is the baseline-3 case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb and resource wrapped in the actual mechanism: 'Drive the app's real add-device flow... starts a BLE scan filtered to CyberBrick devices... then auto-selects the matching device'. The BLE-scan-and-auto-select framing cleanly separates it from connect_serial and connect_scan_ports in the sibling set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear context for when to reach for it (BLE add-device pairing, no UI interaction needed) and a follow-up instruction to verify with device_list. It never states an explicit exclusion, e.g. use connect_serial for wired boards or device_ble_heal for repairing an existing link, so the agent must infer the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.