> ## Documentation Index
> Fetch the complete documentation index at: https://docs.neoagent.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List Synced Devices

> The actual synced RMM device records behind a count — drill into which devices make up a company's total

<Info>
  This is an always-on, read-only tool — every agent has it on both the native tool surface and
  inside the code sandbox (`from neo.client import list_synced_devices`). There is nothing to
  enable. It is the device-record companion to [Get Synced Device Counts](/agents/tools/rmm/synced-device-counts).
</Info>

## What It Does

Returns the individual device records from `client_rmm_devices` — the RMM inventory Neo already
syncs and maps to PSA companies. Where [Get Synced Device Counts](/agents/tools/rmm/synced-device-counts)
answers *how many*, this answers *which ones*.

For each device the agent gets, scoped to the tenant:

* `rmm_device_id` — the RMM's device ID (usable with `find_configurations` and the RMM tools).
* `name` — the device hostname/name as synced.
* `device_type` — `WORKSTATION` / `SERVER` / `UNKNOWN`, classified at sync time (same classifier as the counts tool).
* `psa_company_id` and the resolved `company_name`.

Plus `data_as_of` (latest sync timestamp) and `truncated` (true when more devices matched than the limit returned).

## Why It Exists

A count alone can't be audited. When a reconciliation agent flags a company — say its contracted
workstation quantity disagrees with what's deployed — the next question is always "which devices?"
This tool names the concrete machines behind the number, and lets an agent inspect the unmapped
(coverage-gap) devices directly. Because the RMM↔PSA mapping and the workstation/server
classification are resolved **at sync time**, the records are stable and repeatable across runs.

## How to Use

* Pass `psa_company_id` to list one company's devices (the common drill-down case).
* Set `unmapped_only` to list only devices Neo could not match to a PSA company — the records
  behind the `unmapped_devices` coverage figure.
* Omit both to list across the whole tenant; large tenants may exceed `limit` (default 1000, max
  5000\), in which case `truncated` is `true` — narrow the scope or raise `limit`. Nothing is
  silently dropped: `returned` and `truncated` always tell you whether the page is complete.

The sandbox helper (`neo.client.list_synced_devices`) returns the same records with the same
arguments — use it when you are already assembling a report in Python (e.g. listing the workstations
behind each flagged company).

## Notes

* **Read-only** and tenant-scoped — it only reads data Neo has already synced; it never touches the RMM or PSA live.
* For **counts** only, prefer [Get Synced Device Counts](/agents/tools/rmm/synced-device-counts) — it is cheaper than listing and re-counting.
* For **live per-device state** (online/offline, last check-in, patch/AV status) or fields not in the synced inventory, use the live `*_rmm_request` tools instead — the synced record intentionally excludes volatile state.
* Part of the family of authoritative reads over Neo's synced internal data; the same pattern extends to other synced tables.
