Logitech Sync MCP
Provides read-only tools for inspecting Logitech Sync meeting-room equipment, including rooms, desks, devices, health, occupancy, coverage, environmental readings, and network information via the Logitech Sync Cloud API.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Logitech Sync MCPshow device health summary"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Logitech Sync MCP
A read-only Model Context Protocol server for the Logitech Sync Cloud API. It turns the API's place inventory endpoint into nine focused tools that AI clients can use to inspect rooms, desks, devices, health, occupancy, coverage, environmental readings, and network information.
The server is written in Python, managed with UV, and connects to Logitech Sync with mutual TLS (mTLS). Certificate material stays on the local machine and is never accepted as a tool argument or returned in a tool response.
This is an independent integration and is not affiliated with or endorsed by Logitech. See Notices.
This integration is strictly read-only. Logitech Sync Cloud API 0.1.4 exposes the inventory
operationGET /org/{orgId}/place; this project does not provide write, update, or delete
operations. Authorized administrators can obtain the vendor API documentation from Sync Portal.
Tools
Tool | Purpose |
| Validate the configuration, mTLS connection, license, and organisation access with a minimal request. |
| Read a native page of rooms or desks with explicit projection and cursor controls. |
| Search places and devices by name, ID, serial number, version, contract, IP address, MAC address, or hostname. |
| Summarise places, coverage, device types, models, versions, statuses, and health. |
| Find offline, warning, error, stale, or incomplete devices. |
| Report occupancy, known capacity, utilisation, and over-capacity places. |
| Read and filter available Spot and Rally Board sensor measurements without inventing health thresholds. |
| Audit contracts, licences, and warranties as of a given date. |
| Inventory IP addresses, MAC addresses, hostnames, and wired or Wi-Fi interfaces. |
All tools declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true.
Related MCP server: meraki-dashboard-api
Requirements
A Logitech Sync organisation ID from Sync Portal → Settings → Sync Cloud API
A PEM client certificate and its matching private key
A compatible Logitech Select, Essential, or Sync Plus license
Quick start
git clone https://github.com/bouchecousue/logitech-sync-mcp.git
cd logitech-sync-mcp
cp .env.example .envPlace your credentials at the default paths:
client-certificate/certificate.pem
client-certificate/privateKey.pemSet LOGITECH_SYNC_ORG_ID in .env, restrict the private key, then install and start the server:
chmod 600 client-certificate/privateKey.pem
uv sync --all-groups --no-editable
uv run --no-editable python run_server.pyThe last command starts a stdio MCP server and waits for protocol messages on standard input. See the complete Getting Started guide for certificate setup, client configuration, validation, and troubleshooting.
MCP client configuration
Generic stdio configuration:
{
"mcpServers": {
"logitech-sync": {
"command": "uv",
"args": [
"--directory",
"/path/to/logitech-sync-mcp",
"run",
"--no-editable",
"python",
"/path/to/logitech-sync-mcp/run_server.py"
]
}
}
}The server loads .env from the project directory. Keep credentials out of the MCP client configuration when possible so they are not duplicated across configuration files.
Configuration
Variable | Default | Description |
| none | Required organisation ID from Logitech Sync Portal. |
|
| Documented API server; override only for administration or testing. |
|
| Client certificate path; an absolute path is recommended. |
|
| Private key path; an absolute path is recommended. |
| public CA bundle | Optional custom CA bundle. |
|
| Overall timeout for one attempt. |
|
| Short in-memory cache to reduce quota usage. |
|
| Bounded retries for |
|
| Minimum interval between network attempts. |
|
| Explicitly allow HTTPX environment proxies and CA settings. |
| none | Offline fixture mode for tests and evaluations. |
The organisation ID is a separate value: the server never attempts to infer it from the X.509 certificate subject.
Pagination, quotas, and output
According to the supplied Logitech documentation, the API allows 14,400 requests per day, supports a sustained rate of one request per second, and recommends exponential backoff. The client therefore:
serialises network attempts at a minimum one-second interval;
honours
Retry-Afterwithout retrying early;applies bounded exponential backoff with jitter;
caches pages briefly and caps the cache at 256 pages;
detects cursor loops;
bounds workflows with
page_size,max_pages, andmax_results;exposes
nextResultOffsetwhen an aggregated result has another local page;keeps text and
structuredContentwithin a combined MCP response budget and reports truncation explicitly.
Tools support markdown and json text rendering and return schema-validated structuredContent. An omitted projection preserves Logitech's default projection, while [] requests place IDs only. Device child projections automatically include their required parent projection.
Security model
.env,client-certificate/, private-key formats, caches, and local tooling files are excluded from Git.On POSIX systems, startup fails if the private key is readable by the group or other users.
Server certificate verification remains enabled; the implementation has no
verify=Falsepath.HTTP redirects are disabled so the client certificate is not presented to another host.
PEM data is never exposed through MCP arguments or results.
Application logs never use stdout, which is reserved for the stdio protocol.
API-provided strings are treated as untrusted data and escaped in Markdown output.
The API URL and secret paths are administrator configuration, not model-controlled tool inputs.
Before publishing a fork or opening a pull request, run:
git status --short
git check-ignore -v .env client-certificate/privateKey.pemNever commit an organisation ID, certificate, private key, captured API response, or real inventory fixture.
Development
uv sync --all-groups --no-editable
uv run --no-editable ruff check .
uv run --no-editable ruff format --check .
PYTHONPATH=src uv run --no-sync pytest --cov=logitech_sync_mcp
uv run --no-editable python -m compileall -q srcThe live test consumes API quota and is disabled by default:
LOGITECH_SYNC_RUN_LIVE=1 uv run --no-editable pytest -m live tests/test_live.pyThe deterministic evaluation set uses the versioned synthetic fixture, never a live inventory.
Documentation
License
Released under the MIT License.
Available Tools
9 toolslogitech_sync_check_connectionCheck Logitech Sync connectionARead-onlyIdempotent
Verify live mTLS access, or validate the configured offline fixture.
Makes exactly one minimal GET request with ``limit=1`` and an empty projection, so only
a place id can be returned. In fixture mode no network connection or mTLS handshake is
attempted, and the result says so explicitly. It does not modify Logitech Sync. Use this
first after setup.
Returns a structured success envelope plus Markdown/JSON text. Configuration, TLS, 403,
throttling, and schema failures are returned as actionable MCP tool errors.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Text view: markdown for people or json for programmatic use. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| data | Yes | |
| meta | No | |
| summary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds significant context beyond annotations: explains it makes exactly one minimal GET request with limit=1 and empty projection, does not modify anything, and returns errors as actionable MCP tool errors. Annotations already indicate read-only and idempotent, but description enriches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise, well-structured, and front-loaded with purpose. Each sentence adds value without redundancy. Appropriate length for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (1 optional param, no nested objects, output schema exists), description is complete: covers behavior, error handling, return format, and use case. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 100% schema coverage; description adds little beyond schema's own description of response_format. Baseline of 3 is appropriate as schema already documents the parameter well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool verifies live mTLS access or validates offline fixture, with specific verb 'verify' and resource 'Logitech Sync connection'. It distinguishes from sibling tools which are all about reports or inventory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this first after setup', providing clear context for when to invoke. Describes two modes (live and fixture) with behavioral differences, but does not explicitly state when not to use it or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logitech_sync_get_coverage_reportGet Logitech Sync coverage reportARead-onlyIdempotent
Audit room/desk contracts, licenses, and device warranties at a given date.
Rows are classified as expired, expiring, active, or unknown expiration. Supply ``as_of``
for reproducible historical/evaluation queries; otherwise today's UTC date is used. Raw
epoch timestamps and ISO forms are both retained.
Returns status counts and chronologically sorted coverage rows. No renewal action occurs.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | Point-in-time date (YYYY-MM-DD); defaults to today's UTC date. | |
| desks | No | Inspect desk coverage. | |
| rooms | No | Inspect room coverage. | |
| max_pages | No | Maximum pages followed. | |
| page_size | No | API page size. | |
| unlicensed | No | Include unlicensed places. | |
| max_results | No | Maximum coverage rows returned. | |
| result_offset | No | Local coverage offset; reuse nextResultOffset with identical filters. | |
| response_format | No | Text view returned alongside structured content. | markdown |
| expiring_within_days | No | Horizon for classifying coverage as expiring. | |
| include_without_expiration | No | Include licenses/warranties with no returned expiration date. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| data | Yes | |
| meta | No | |
| summary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, etc. Description adds useful context: rows are classified, timestamps retained, sorted, and no renewal action occurs, reinforcing non-destructive behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then details. No redundant sentences. Could be slightly more structured but overall concise and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a report tool with output schema, description covers classification, sorting, and non-action. It doesn't detail all parameters or return structure, but output schema handles that. Adequate given complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 11 parameters. The description adds minimal extra meaning beyond what schema already provides (e.g., reiterates as_of usage). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
First sentence clearly states the resource ('room/desk contracts, licenses, and device warranties') and action ('audit'). The description distinguishes from siblings by focusing on coverage aspects, not inventory, occupancy, or device issues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides guidance on the as_of parameter for historical queries and notes that no renewal action occurs. However, it does not explicitly compare with sibling tools or state when to use this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logitech_sync_get_environment_reportGet Logitech Sync environment reportARead-onlyIdempotent
Aggregate Spot/Rally Board sensor readings with explicit numeric filters.
Supported measurements include CO2, pressure, temperature, humidity, TVOC, VOC index,
PM10, PM2.5, and presence. The workflow never invents safety thresholds or labels readings
dangerous; filtering only occurs when ``metric`` and caller-provided bounds are supplied.
Returns device readings, UTC sample timestamps, per-metric min/max/average, and scan status.
| Name | Required | Description | Default |
|---|---|---|---|
| desks | No | Inspect desk sensors. | |
| rooms | No | Inspect room sensors. | |
| metric | No | Optional sensor metric to filter (for example co2 or temperature). | |
| maximum | No | Optional finite inclusive maximum for the selected metric. | |
| minimum | No | Optional finite inclusive minimum for the selected metric. | |
| max_pages | No | Maximum pages followed. | |
| page_size | No | API page size. | |
| unlicensed | No | Include unlicensed places. | |
| max_results | No | Maximum sensor devices returned. | |
| result_offset | No | Local reading offset; reuse nextResultOffset with identical filters. | |
| response_format | No | Text view returned alongside structured content. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| data | Yes | |
| meta | No | |
| summary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses critical behavior: does not invent safety thresholds, filtering only with metric and bounds. Annotations already declare readOnlyHint and idempotentHint; description adds context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise, front-loaded with purpose, then measurements, behavioral note, and return structure. Every sentence adds value, no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists and high schema coverage, description covers tool purpose, behavioral constraints, and return components. Adequately complete for a read-only, idempotent tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description adds context about filtering behavior linking metric, minimum, maximum parameters, and lists supported measurements that hint at metric enum values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it aggregates Spot/Rally Board sensor readings with numeric filters, and lists supported measurements. It distinguishes from sibling tools like occupancy or inventory reports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for environment sensor data but does not explicitly state when to use this tool vs. alternatives. Sibling tools are listed but no direct comparison or exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logitech_sync_get_inventory_summarySummarize Logitech Sync inventoryARead-onlyIdempotent
Aggregate rooms, desks, coverage, device types/models/versions, status, and health.
Use this before deeper reports to understand inventory shape without returning every raw device. Pagination is bounded and all counts clearly indicate whether the scan completed.
Returns counters and ranked model/version buckets. It is read-only and uses a projection optimized for identity, coverage, and health aggregation.
| Name | Required | Description | Default |
|---|---|---|---|
| desks | No | Include desks. | |
| rooms | No | Include rooms. | |
| max_pages | No | Maximum pages followed. | |
| page_size | No | API page size. | |
| top_limit | No | Maximum model/version buckets returned. | |
| unlicensed | No | Include unlicensed places. | |
| response_format | No | Text view returned alongside structured content. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| data | Yes | |
| meta | No | |
| summary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that it is read-only and uses a projection optimized for identity, coverage, and health aggregation. It also mentions bounded pagination and that counts clearly indicate whether the scan completed. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at 4 sentences, front-loading the purpose and usage. Every sentence adds value without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 optional parameters with defaults, an output schema, and annotations, the description covers purpose, usage, behavior (read-only, aggregation, pagination bounding), and output nature (counters, ranked buckets). It is complete for an inventory summary tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (all 7 parameters described in the schema). The description does not add significant parameter-specific meaning beyond the schema; it focuses on tool behavior and output. Baseline of 3 is appropriate as the schema already provides adequate documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the tool aggregates rooms, desks, coverage, device types/models/versions, status, and health. It clearly distinguishes from siblings like logitech_sync_search_inventory by saying 'without returning every raw device' and contrasts with deeper reports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use this before deeper reports to understand inventory shape', providing direct guidance on when to use. It also notes pagination is bounded and counts indicate scan completion, helping the agent decide when this is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logitech_sync_get_occupancy_reportGet Logitech Sync occupancy reportARead-onlyIdempotent
Report live room occupancy, known capacity, utilization, and over-capacity state.
Logitech documents ``seatCount=0`` as unset, so this workflow marks capacity unknown and
never divides by zero or labels such rooms over capacity. Results are sorted by current
occupancy and can be filtered with caller-supplied thresholds.
Returns bounded room rows and aggregate occupancy/capacity metrics. Live values may change.
| Name | Required | Description | Default |
|---|---|---|---|
| max_pages | No | Maximum pages followed. | |
| page_size | No | API page size. | |
| unlicensed | No | Include unlicensed rooms. | |
| max_results | No | Maximum room rows returned. | |
| only_occupied | No | Return only rooms whose current occupancy is above zero. | |
| result_offset | No | Local room offset; reuse nextResultOffset with identical filters. | |
| response_format | No | Text view returned alongside structured content. | markdown |
| minimum_occupancy | No | Minimum current people count. | |
| minimum_utilization_percent | No | Optional occupancy/seatCount percentage; excludes unknown capacity. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| data | Yes | |
| meta | No | |
| summary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly, idempotent), the description discloses key behaviors: handling seatCount=0 to avoid division by zero, sorting by occupancy, filtering with thresholds, and noting live values. This adds significant context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (4 sentences) and front-loaded with the core purpose. No redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 9 parameters and an output schema, the description covers core functionality, edge cases, sorting, filtering, return structure, and live nature. It is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the description adds little parameter-specific meaning beyond mentioning caller-supplied thresholds. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reports live room occupancy, capacity, utilization, and over-capacity state. It distinguishes itself from sibling tools like get_coverage_report by focusing specifically on occupancy metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (when occupancy data is needed), but the description does not explicitly state when to use this tool over siblings or provide prerequisites/exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logitech_sync_list_device_issuesList Logitech Sync device issuesARead-onlyIdempotent
Diagnose offline, unhealthy, stale, or incomplete-peripheral devices.
Each returned device includes explicit reason codes and its containing room/desk. A stale
cutoff is only applied to Offline devices when the caller provides
``last_disconnection_before`` because Logitech defines ``lastSeen`` as the last
disconnection event, not a heartbeat. Timestamps remain UTC and retain raw epoch values.
Returns issue counts, reason counts, bounded issue details, and scan-completeness metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| desks | No | Inspect desk devices. | |
| rooms | No | Inspect room devices. | |
| max_pages | No | Maximum pages followed. | |
| page_size | No | API page size. | |
| unlicensed | No | Include unlicensed places. | |
| max_results | No | Maximum issue devices returned. | |
| include_error | No | Include devices with Error health. | |
| result_offset | No | Local issue offset; reuse nextResultOffset with identical filters. | |
| include_offline | No | Include Offline devices. | |
| include_warning | No | Include devices with Warning health. | |
| response_format | No | Text view returned alongside structured content. | markdown |
| last_disconnection_before | No | Optional ISO-8601 cutoff; include Offline devices whose last documented disconnection event occurred before it. | |
| include_peripheral_mismatches | No | Include expected/actual camera, speaker, hub, and mic mismatches. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| data | Yes | |
| meta | No | |
| summary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive. Description adds valuable context: stale cutoff only applies when last_disconnection_before provided, timestamps are UTC epoch, and explains return content (issue counts, reason codes, etc.).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise and front-loaded with main purpose. Every sentence adds meaningful detail without redundancy. Could benefit from better structure (e.g., bullet points for return content), but current form is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 13 parameters and output schema, the description covers key behavioral aspects (stale cutoff, return items) and the tool's scope. Does not explain every health status or filter, but output schema likely covers that. Sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-described individually. The description adds extra meaning by clarifying the interaction between stale cutoff and last_disconnection_before parameter, which is not evident from schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it diagnoses offline, unhealthy, stale, or incomplete-peripheral devices. Differentiates from sibling tools like list_places or check_connection by focusing on device issues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context on when to use this tool (diagnosing issues) and explains the last_disconnection_before parameter behavior, but does not explicitly compare with siblings or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logitech_sync_list_network_inventoryList Logitech Sync network inventoryARead-onlyIdempotent
Inventory reported device IPs, MACs, hostnames, and network interfaces.
Search by network identifier, place, or device, and optionally filter by interface mode. Missing network fields remain absent rather than being invented because reporting varies by device model and firmware. This tool does not scan the network or change configuration.
Returns bounded entries, interface-mode counts, and scan-completeness metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| desks | No | Include desk devices. | |
| query | No | Optional partial IP, MAC, hostname, device, or place text. | |
| rooms | No | Include room devices. | |
| max_pages | No | Maximum pages followed. | |
| page_size | No | API page size. | |
| unlicensed | No | Include unlicensed places. | |
| max_results | No | Maximum network devices returned. | |
| result_offset | No | Local device offset; reuse nextResultOffset with identical filters. | |
| interface_mode | No | Optional wired/wireless interface mode filter. | |
| response_format | No | Text view returned alongside structured content. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| data | Yes | |
| meta | No | |
| summary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly, idempotent, not destructive), description adds that missing fields remain absent (avoids hallucination), does not scan or change config, and returns bounded entries with metadata. Provides valuable behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise at 5 sentences covering purpose, search capability, behavioral note, actions not taken, and return type. No unnecessary words, but could be more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 parameters, output schema, and sibling tools, description covers main search and filter capability, return types, and key behavioral notes. Omits mention of desk/room/licensed filters, but these are in schema. Adequately complete for an inventory listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with detailed descriptions. Description adds a high-level summary of search and filter (query, interface_mode) but does not add new semantics. Baseline of 3 appropriate due to full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists network inventory with specific fields (IPs, MACs, hostnames, interfaces). Distinguishes from siblings by focusing on network rather than general inventory. Includes what it does and does not do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes search and filter options but does not explicitly compare to sibling 'logitech_sync_search_inventory'. Lacks when-to-use and when-not-to-use advice. Provides some context (does not scan network), but no alternative tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logitech_sync_list_placesList Logitech Sync placesARead-onlyIdempotent
Fetch one controlled page of rooms/desks using the native continuation cursor.
Use this primitive when exact API pagination or custom projections matter. It never follows
the cursor automatically. If an explicit projection requests device info, sensors, or
warranty while ``detail_level=concise``, the result is transparently promoted to detailed
output and reports that adjustment. A response that is too large fails with guidance
instead of silently discarding requested fields or inaccessible items.
Returns ``places`` and metadata including ``next_continuation`` and the effective
projection. Errors explain how to fix invalid scopes, projections, credentials, or quotas.
| Name | Required | Description | Default |
|---|---|---|---|
| desks | No | Include desks in this page. | |
| limit | No | Maximum places for this single API page. | |
| rooms | No | Include rooms in this page. | |
| projection | No | Fields to request. Omit for the API default; pass [] for place ids only. place.device is added automatically for nested device fields. Explicit device info, sensors, or warranty projections automatically promote concise output to detailed so requested fields are never discarded. | |
| unlicensed | No | Include unlicensed places, which only expose basic fields. | |
| continuation | No | Opaque cursor returned by a previous call; never decode or edit it. | |
| detail_level | No | concise selects high-signal fields; detailed preserves API fields. Concise is automatically promoted to detailed when an explicit projection requests device info (including peripherals/full network), sensors, or warranty. | concise |
| response_format | No | Text view returned alongside structured content. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| data | Yes | |
| meta | No | |
| summary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotency, read-only, and non-destructive nature. The description adds that the tool never auto-follows cursors, transparently promotes detail_level for certain projections, and reports large response failures with guidance. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured paragraph that front-loads the core purpose and then adds behavioral details. Every sentence provides necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, no required fields, output schema present), the description covers pagination, projection behavior, error handling, and response format comprehensively. It is fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, but the description adds significant value by explaining parameter interactions (e.g., projection promotion, detail_level auto-promotion, continuation usage) beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Fetch one controlled page of rooms/desks using the native continuation cursor,' specifying the verb, resource, and mechanism. The title reinforces this, and the tool is distinct from siblings like logitech_sync_search_inventory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises using this tool when exact API pagination or custom projections matter, and notes it never follows the cursor automatically. It doesn't explicitly state when not to use, but provides sufficient context for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logitech_sync_search_inventorySearch Logitech Sync inventoryARead-onlyIdempotent
Search across place and device inventory as one agent-oriented workflow.
This tool follows bounded pagination and dynamically requests identity, location, contract,
network, version, and health fields needed for useful matches. Use an exact id/serial for a
specific entity or partial text for discovery. It does not modify inventory.
Returns matching place/device objects plus complete/partial pagination metadata. Increase
``max_pages`` only when ``next_continuation`` shows the API scan was partial. When
``nextResultOffset`` is returned, repeat the same filters with that ``result_offset``.
| Name | Required | Description | Default |
|---|---|---|---|
| desks | No | Search desks. | |
| query | Yes | Case-insensitive text matched across ids, names, serials, versions, groups, locations, contracts, licenses, IPs, MACs, and hostnames. | |
| rooms | No | Search rooms. | |
| target | No | Search places, devices, or both. | any |
| max_pages | No | Maximum API pages followed for this search. | |
| page_size | No | API page size; 1000 minimizes quota usage. | |
| place_type | No | Optional Room or Desk filter. | |
| unlicensed | No | Include unlicensed places. | |
| device_type | No | Optional Logitech, Computer, or Generic device filter. | |
| max_results | No | Maximum matching entities returned. | |
| detail_level | No | concise or detailed match payloads. | concise |
| device_status | No | Optional Offline, Online, or InUse filter for device matches. | |
| health_status | No | Optional NoIssues, Warning, or Error filter for device matches. | |
| result_offset | No | Local match offset; reuse nextResultOffset with identical filters. | |
| response_format | No | Text view returned alongside structured content. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| data | Yes | |
| meta | No | |
| summary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. Description adds context about bounded pagination, dynamic field requests, and non-modification, which are consistent and go beyond annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise, well-structured, and front-loaded with the main purpose. Every sentence adds value, and there is no redundancy. The pagination guidance is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description covers core workflow, pagination handling, and non-destructive nature. With output schema present, return values need not be detailed. Could mention more about output structure but is sufficient for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage (all parameters described in schema). Description provides overall workflow context but does not add substantial per-parameter semantics beyond what schema already provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Search across place and device inventory as one agent-oriented workflow' and distinguishes from sibling tools like logitech_sync_list_places by specifying it searches both places and devices. The purpose is specific and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides explicit guidance: 'Use an exact id/serial for a specific entity or partial text for discovery.' It also explains pagination behavior with max_pages and result_offset. However, it does not explicitly state when to use alternatives or when not to use this tool, so it is not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
9 tool updates
v0.1.0- First observed
logitech_sync_check_connection - First observed
logitech_sync_get_coverage_report - First observed
logitech_sync_get_environment_report - First observed
logitech_sync_get_inventory_summary - First observed
logitech_sync_get_occupancy_report - First observed
logitech_sync_list_device_issues - First observed
logitech_sync_list_network_inventory - First observed
logitech_sync_list_places - First observed
logitech_sync_search_inventory
TDQS
Each tool has a clearly distinct purpose: connection check, coverage reports, environment sensors, inventory summary, occupancy, device issues, network inventory, places listing, and search. No overlap or ambiguity.
All tools follow a consistent pattern: 'logitech_sync_' + verb_noun (e.g., check_connection, get_coverage_report, list_device_issues). Underscores are used uniformly, and verbs are appropriate for the action.
9 tools is well-scoped for a monitoring/diagnostics server covering connection, reporting, inventory, issues, and search. Not excessive and each tool serves a specific need.
The tool set covers the main monitoring and diagnostic operations comprehensively: connection, coverage, environment, occupancy, issues, inventory, and search. Missing write/update operations, but the domain appears read-only, so minor gap.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Read-only MCP server for turva.dev, an agent-readiness audit and advisory service.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
XFA's remote MCP server — query device posture, compliance, policies & CVEs. Read-only.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceMCP server for the air-Q Cloud API, enabling remote retrieval of air quality sensor data and historical analysis through read-only tools like listing devices, fetching readings, and exporting charts or data.Apache 2.0
- FlicenseCqualityBmaintenanceA read-only MCP server for the Cisco Meraki Dashboard API that exposes 50 GET endpoints for understanding network topology from organization down to individual devices and ports.50-
- AlicenseNot gradedqualityCmaintenanceA read-only MCP server that provides tools to list and read devices, MDM servers, blueprints, configurations, apps, packages, users, and other resources from Apple Business Manager and Apple School Manager.MIT
- AlicenseAqualityCmaintenanceRead-only MCP server for the SentinelOne management API, exposing sites, endpoint agents, threats, and activity logs with aggregation tools for MSP/MSSP reporting.612MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/bouchecousue/logitech-sync-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server