Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
lw_ble_scanA

Kick off a passive BLE discovery sweep. The call returns a scan handle immediately; the sweep runs for up to timeout_s seconds (bounded 1–60) and then shuts itself down. Retrieve findings with lw_ble_scan_poll or abort early with lw_ble_scan_stop.

lw_ble_scan_pollC

Fetch everything a sweep has gathered so far, plus whether it is still running.

lw_ble_scan_stopB

End a sweep now and hand back everything it recorded before stopping.

lw_ble_connectB

Open a GATT session with a peripheral, addressed by its MAC. Returns a connection_id on success. The operation is wrapped in an outer timeout so a stalled driver call cannot leave the client waiting forever.

lw_ble_disconnectB

Close and forget an existing GATT session given its connection_id.

lw_ble_connection_statusB

Report the liveness of a session and the peripheral's identity details.

lw_ble_connection_listB

Enumerate every session the server currently holds.

lw_ble_discoverB

Walk the remote GATT database and dump its services, characteristics, and associated descriptors in one call.

lw_ble_readC

Fetch a characteristic's contents; the reply carries them as base64, hex, and a plain byte count.

lw_ble_writeB

Send bytes to a characteristic. Encode the payload as base64 (data_b64) or hex (data_hex); with_response selects write-with-response vs. fire-and-forget.

lw_ble_mtuB

Show the MTU agreed for a session; the useful per-packet payload is MTU minus three bytes of ATT overhead.

lw_ble_read_descriptorB

Read a descriptor's bytes by its attribute handle; handles come from lw_ble_discover.

lw_ble_write_descriptorC

Store bytes into a descriptor addressed by handle; encode the payload as base64 or hex.

lw_ble_subscribeB

Begin receiving notification events from a characteristic; returns a subscription_id that later calls use to manage the stream.

lw_ble_unsubscribeC

Stop a notification stream and release its buffered data.

lw_ble_poll_notificationsA

Drain whatever notifications are already queued, without waiting; an empty result means nothing has arrived yet. The dropped counter reports overflow that was shed while nobody was reading.

lw_ble_wait_notificationB

Wait up to timeout_s for the next notification and return it, or null if nothing arrives within the window.

lw_ble_subscription_listA

Show every notification stream the server is currently holding.

lw_ble_scan_listA

Show every discovery sweep the server knows about, finished or not.

lw_ble_dumpB

One-shot device recon: service table, every readable characteristic value, and the negotiated MTU in a single call. Characteristics that fail to read are reported in read_failures instead of aborting the whole dump.

lw_ble_engine_statusA

Report engine resource usage: live links, scans, notification streams, and whether the I/O bridge thread is healthy. Useful for diagnosing resource exhaustion in long-running sessions.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 21 tools

Disambiguation4/5

Most tools target a distinct resource+action (connect/disconnect, read/write, subscribe/unsubscribe), and the descriptions clearly separate similar-sounding pairs like scan_poll vs scan_list and poll_notifications vs wait_notification. The main soft spot is lw_ble_dump overlapping with lw_ble_discover + lw_ble_read, since dump bundles discovery and characteristic reads into one convenience call.

Naming Consistency4/5

All tools share the lw_ble_ prefix and snake_case, with a predictable verb_noun pattern (scan_stop, read_descriptor, poll_notifications, subscription_list). A few names are noun-only or omit the verb (mtu, dump, engine_status, connection_status), which is a minor deviation from the otherwise consistent scheme.

Tool Count4/5

At 21 tools this is on the heavier side, but the BLE domain legitimately spans scanning, connection management, GATT discovery, characteristic/descriptor I/O, notifications, and diagnostics, and each tool maps to a real operation. No tool looks like filler, though a couple (dump, engine_status) are arguably conveniences rather than primitives.

Completeness5/5

The surface covers the full BLE lifecycle: scan start/poll/stop/list, connect/disconnect/status/list, GATT discovery, characteristic read/write, descriptor read/write, notification subscribe/unsubscribe/poll/wait/list, MTU, plus dump and engine diagnostics. There are no obvious dead ends for typical central-role workflows.

Maintenance

ActivitySlowing
ResponsivenessNo issues