Skip to content
Development
Skill

/sites

Datto RMM site management: site hierarchy and identifiers, proxy and patch-window settings, site-scoped device/alert queries, and create/update/delete operations for client locations.

From plugin
msp-claude-plugins
52200 skills146 agents200 commands4 MCP

Claude Code

$ npx -y skills add wyre-ai/msp-claude-plugins --skill sites --agent claude-code

SKILL.md

sites.SKILL.md
name: "Datto RMM Sites"
description: >
  Datto RMM site management: site hierarchy and identifiers, proxy and
  patch-window settings, site-scoped device/alert queries, and
  create/update/delete operations for client locations.
when_to_use: >-
  When listing, managing, and configuring client locations. Use when: datto site, rmm site, client
  site, site management, location management, site settings, site proxy, or site devices.

Datto RMM Site Management

Overview

Sites in Datto RMM represent client organizations or locations. Each site contains devices, has its own settings, and can have site-level variables. Sites provide organizational hierarchy and enable scoped operations - alerts, jobs, and reports can all be filtered by site.

Anti-triggers

  • **The client as a billing entity** — use `autotask-crm`; as a

documentation entity, `itglue-organizations`; as a SOC tenant, `rocketcyber-accounts`. None of these share IDs with a Datto RMM site.

  • **The endpoints themselves rather than the grouping** — use

`datto-rmm-devices`.

MCP Tools

| Tool | Tier | Purpose | |------|------|---------| | `datto_list_sites` / `datto_get_site` | read | Sites (customers) and one site's detail | | `datto_get_site_patches` | admin (unclassified) | Patch status rolled up across a site's devices |

Tiers are Conduit's classification. REST examples later in this skill show what the tools call underneath.

Key Concepts

Site Hierarchy

Account
└── Sites (many)
    └── Devices (many per site)
        └── Alerts, Jobs, Audit Data

Site Types

Sites can represent:

  • **Client companies** - External customers
  • **Internal locations** - Your own offices
  • **Projects** - Temporary groupings
  • **Departments** - Internal divisions

Site Identifiers

| Identifier | Type | Description | |------------|------|-------------| | `siteUid` | string | Globally unique identifier | | `siteId` | integer | Legacy numeric ID | | `name` | string | Display name |

Field Reference

A `Site` carries identifiers, `onDemand`/`splapiEnabled` flags, optional `proxySettings`, device/alert counts, and a `settings` object (auto-patch approval, patch window, timezone). See [references/fields.md](references/fields.md) for the complete interfaces.

Common Workflows

Site Lookup by Name

async function findSiteByName(client, name) {
  const response = await client.request('/api/v2/sites?max=250');
  const sites = response.sites || [];

  // Exact match first
  const exact = sites.find(s =>
    s.name.toLowerCase() === name.toLowerCase()
  );
  if (exact) return { found: true, site: exact };

  // Partial match
  const matches = sites.filter(s =>
    s.name.toLowerCase().includes(name.toLowerCase())
  );

  if (matches.length === 0) {
    return { found: false, suggestions: [] };
  }

  if (matches.length === 1) {
    return { found: true, site: matches[0] };
  }

  return {
    found: false,
    ambiguous: true,
    suggestions: matches.map(s => ({
      name: s.name,
      uid: s.uid,
      deviceCount: s.devicesCount
    }))
  };
}

Site health scoring (device status + alert priority weighted into a 0-100 score), a multi-site summary sorted by open alerts, an onboarding checklist validator, and a safe CRUD wrapper are in [references/examples.md](references/examples.md).

API Patterns

  • `GET /api/v2/sites?max=250` - list all sites
  • `GET /api/v2/site/{siteUid}` - get a single site
  • `GET /api/v2/site/{siteUid}/devices?max=250` - devices at a site
  • `GET /api/v2/site/{siteUid}/alerts/open` / `.../alerts/resolved?max=250` - site-scoped alerts
  • `POST /api/v2/sites` - create a site
  • `POST /api/v2/site/{siteUid}` - update a site
  • `DELETE /api/v2/site/{siteUid}` - delete a site (devices become unassigned, not deleted)

See [references/api.md](references/api.md) for full request/response examples.

Gotchas

  • **Deleting a site does not delete its devices** - they become unassigned, not removed. Move or reassign devices deliberately before deleting.
  • **Site names must be unique** - creating a duplicate name fails with 400.
  • **Set the site's timezone deliberately** - `settings.timezone` drives when the patch window actually runs.
  • **Health scoring is a convention, not an API field** - `openAlertsCount`/`devicesCount` are raw counts; any "healthy/warning/critical" status is computed client-side (see reference examples).

See [references/errors.md](references/errors.md) for the full site API error table.

Site Naming Conventions

**Recommended Format:** `{ClientName} - {Location/Purpose}`

Examples:

  • `Acme Corp - Main Office`
  • `Acme Corp - Remote Workers`
  • `TechStart Inc - Data Center`
  • `Internal - IT Department`

Related Skills

  • [Datto RMM Devices](../devices/SKILL.md) - Site device management
  • [Datto RMM Alerts](../alerts/SKILL.md) - Site alert views
  • [Datto RMM Variables](../variables/SKILL.md) - Site variables
  • [Datto RMM API Patterns](../api-patterns/SKILL.md) - Authentication and pagination
Read more
@wyre-technology
Ships withmsp-claude-plugins

One command to supercharge Claude Code for MSP workflows. Then restart Claude Code. That's it. Documentation: mcp.wyre.ai

52200 skills146 agents4 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
52
Star history of wyre-technology/msp-claude-plugins on GitHub, a chart by star-history.com

Other skills on msp-claude-plugins.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about sites.

Which coding agents can use sites?
sites installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.