Skip to content
SZ-MCP
Get Support

The two API surfaces

SmartZone exposes two separate REST APIs, and SZ-MCP presents each as its own namespace. They are independent catalogues with independent tags — an endpoint on one is never reachable through the other.

wifiswitches
SmartZone APIWSG (wireless)SwitchM (switch)
Base path/wsg/api/public/{version}/switchm/api/{version}
Operations1,102238
Tags11742
Spec titleVirtual SmartZone - High ScaleSwitch Manager

Those counts come from the indexes bundled into the deployed Worker, built from specs vendored at version v14_0 (SmartZone 7.2.0). SZ-MCP also adds three operations the specs leave out but that work: POST /audit/list on wifi, and POST /switch/troubleshooting/ping and /traceroute on switches, so search covers 1,103 and 240.

The version is detected once, from your controller, when you save credentials — and the same value is used to build the base path for both namespaces. There is no separate SwitchM version to configure.

This matters because the SwitchM base path does carry the version, exactly as WSG’s does. A call to switches.call({ method: 'POST', path: '/switch' }) on a controller detected as v14_0 reaches /switchm/api/v14_0/switch.

Every primitive takes the raw path from the spec, starting with /. The base path is added server-side.

// Correct
await wifi.call({ method: 'GET', path: '/domains' });
await switches.call({ method: 'POST', path: '/switch', body: { page: 1, limit: 100 } });
// Wrong — the prefix is added for you
await wifi.call({ method: 'GET', path: '/wsg/api/public/v14_0/domains' });

The service ticket is added server-side too. Although serviceTicket appears as a query parameter on nearly every operation in the spec, you never pass it.

The two catalogues are shaped very differently, and it is worth knowing which one a question belongs to before searching.

The WSG API is where zones, AP groups, WLANs, authentication and the system itself live. Its biggest tags:

TagOperations
Access Point Configuration83
AP Group79
Ruckus Wireless AP Zone38
System33
Application Visibility Control32
Authentication Service29
Cluster Management27
WLAN25

SwitchM covers switch configuration, groups, VLANs, ports and health:

TagOperations
Switch Configuration16
Switch CLI Config CLI Template14
Switch BGP eVPN13
Switch11
Switch Group9
Switch Traffic9
Switch VLAN Setting8
Switch Health7

Worth internalising before pointing Claude at a production controller: these are configuration APIs, and on WSG most of their operations change things.

Methodwifiswitches
GET31265
POST26689
PUT8336
PATCH922
DELETE34946
Classified as writes704 of 1,102119 of 238

DELETE is the single most common method on the WSG surface. The method alone does not decide what is a write: SwitchM’s list endpoints are POSTs (POST /switch lists switches; GET /switch is 405) whose operationIds say add…, and SZ-MCP classifies them as reads, which is why SwitchM splits evenly. Every call Claude sends that is classified as a write goes through the write guard, which is on by default — see Security model.

Specs are vendored, not fetched from your controller at runtime. SZ-MCP ships two artefacts per surface:

  • A slim index bundled into the Worker, holding one entry per operation: method, path, operationId, tags, summary, a parameter summary, and hints: whether it is a read or a write, its pagination style, its required parameters and its body and response field names. This is what search_endpoints and list_endpoints_by_tag read, with no network call.
  • The full spec, stored in object storage and lazy-loaded the first time get_endpoint_details asks for that surface in a given isolate. That first load adds a few hundred milliseconds; subsequent calls in the same isolate are served from memory.