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 get_synced_device_counts). There is nothing to
enable.What It Does
Returns authoritative device counts for the current tenant fromclient_rmm_devices — the RMM
inventory Neo already syncs and maps to PSA companies. Because the RMM↔PSA company mapping and the
workstation/server classification are resolved at sync time, the numbers are stable and
repeatable across runs.
In a single call the agent gets, scoped to the tenant:
- Per-company counts:
workstations,servers,unknown, andtotal, with the PSA company name resolved. - Tenant-wide totals across all companies.
- The mapped-vs-unmapped split (how many devices Neo could match to a PSA company) — a coverage signal.
data_as_of— the timestamp of the latest device sync.
Why It Exists
Recurring reporting and reconciliation agents (billing reconciliation, license/seat true-ups, asset audits) used to re-pull the live RMM and re-match hundreds of company names by hand on every run. That re-derivation is fragile: the same monthly report could swing between runs purely because the hand-rolled joins landed differently. This tool removes that work — the agent reads the already-resolved, already-mapped inventory instead.How to Use
Prefer this tool over a live*_rmm_request pull whenever you need device counts (not live
per-device state):
- Omit
psa_company_idto get every company; pass it to narrow to one company. include_unmapped(default true) adds the “Unmapped” bucket as its own row; the mapped/unmapped totals are always returned regardless.- Always state
data_as_ofin the report so readers know how current the figures are, and treat a largeunmapped_devicescount or a non-zerounknownbucket as a coverage caveat rather than a silent omission.
neo.client.get_synced_device_counts) returns the same data with the same
arguments — use it when you are already assembling the report in Python.
Notes
- Read-only and tenant-scoped — it only reads data Neo has already synced; it never touches the RMM or PSA live.
- Device type is normalized to
workstation/server/unknownfrom each RMM’s metadata; devices with no clear type signal fall intounknownrather than inflating the workstation total. - This is the first of a family of authoritative reads over Neo’s synced internal data; the same pattern will extend to other synced tables.
