npx claudepluginhub zscaler/zscaler-mcp-server --plugin zscalerThis skill uses the workspace's default tool permissions.
canonical cloud application name, ssl inspection cloud_applications, sharepoint name, onedrive name, google drive name, dropbox name, web dlp cloud applications, cloud app control application name, application catalog, ZIA cloud app token, cloud_applications field, NONE response cloud applications
Creates one ZIA Cloud App Control rule for granular action-level enforcement on cloud apps like Dropbox, ChatGPT, GitHub (e.g., ALLOW_FILE_SHARE_UPLOAD, DENY_AI_ML_CHAT by category). Chains to app lookup and time interval skills.
Guides Checkpoint Harmony Email (Avanan) security policy management: DLP, anti-phishing, anti-malware, quarantine, allow/block lists. Covers types, actions, enable/disable workflows, effects, and tuning best practices for MSP admins.
Prevents silent decimal mismatch bugs in EVM ERC-20 tokens via runtime decimals lookup, chain-aware caching, bridged-token handling, and normalization. For DeFi bots, dashboards using Python/Web3, TypeScript/ethers, Solidity.
Share bugs, ideas, or general feedback.
canonical cloud application name, ssl inspection cloud_applications, sharepoint name, onedrive name, google drive name, dropbox name, web dlp cloud applications, cloud app control application name, application catalog, ZIA cloud app token, cloud_applications field, NONE response cloud applications
ZIA exposes two distinct cloud-application catalogs that look the same but are not interchangeable:
| Catalog | Tool(s) | Identifier |
|---|---|---|
| Shadow IT analytics | zia_list_shadow_it_apps, zia_list_shadow_it_custom_tags | numeric id (e.g. 655377), friendly name (e.g. Sharepoint Online) |
| Policy-engine catalog | zia_list_cloud_app_policy, zia_list_cloud_app_ssl_policy | canonical app name app (e.g. SHAREPOINT_ONLINE), display app_name |
Policy rules — SSL Inspection, Web DLP, Cloud App Control, File Type Control, Bandwidth Classes, Advanced Settings — accept only the canonical app value from the policy-engine catalog in their cloud_applications field. Passing a Shadow IT numeric ID, a friendly display name, or even a slightly mistyped value causes ZIA to silently coerce it to NONE instead of raising a validation error. That's the failure mode behind issue #56.
The SSL Inspection create/update tools (zia_create_ssl_inspection_rule, zia_update_ssl_inspection_rule) already resolve friendly names automatically via the in-process resolver. The agent's job in this skill is to:
Which rule types use the cloud-app catalog (and therefore need this skill):
zia_create/update_ssl_inspection_rule) — field is cloud_applications. Auto-resolves friendly names.zia_create/update_web_dlp_rule) — field is cloud_applications. Does not auto-resolve; look up the canonical name with this skill first, then pass it in.zia_create/update_file_type_control_rule) — field is cloud_applications. Auto-resolves friendly names.zia_create/update_cloud_app_control_rule) — field is cloud_applications. Auto-resolves friendly names.zia_create/update_cloud_firewall_dns_rule) — field is named applications, not cloud_applications (an inconsistency in the underlying ZIA API). Same catalog, same vocabulary, same auto-resolution. The DNS-related sub-categories (DNS tunnels, network apps, DoH providers like CLOUDFLARE_DOH) live inside this same catalog.Which rule types do NOT use the cloud-app catalog (do not chain to this skill for them):
url_categories, not the cloud-app catalogUse these tools in this skill:
zia_list_cloud_app_ssl_policy(search="...") — primary tool for SSL Inspection scopezia_list_cloud_app_policy(search="...") — primary tool for DLP / Cloud App Control / File Type Control / DNS scope (single canonical catalog)zia_list_shadow_it_apps(query="...") — only when the admin is asking about Shadow IT analytics (sanction state, usage), NOT when they need a policy-engine app namecloud_applications (or applications, on DNS) inputs, no extra step neededDo NOT call:
zia_list_shadow_it_apps to look up a policy-engine app name — wrong catalogzia_update_ssl_inspection_rule directly with cloud_applications=["Google Drive", "OneDrive"]. The tool auto-resolves friendly names. If the response includes _cloud_applications_resolution, echo the mapping back to the admin (so they see what was actually stored).zia_list_cloud_app_ssl_policy(search="sharepoint") and return the app field of the matching entries. Do not modify any rule.zia_list_cloud_app_ssl_policy(app_class="ENTERPRISE_COLLABORATION", page_size=1000) and project with query="[*].{canonical: app, name: app_name}".zia_list_cloud_app_policy(search="sharepoint") first, pick the canonical app value, then pass it explicitly into the DLP rule tool.zia_list_shadow_it_apps.# Step 1: search the policy-engine catalog server-side
candidates = zia_list_cloud_app_ssl_policy(search="onedrive")
# Step 2: project to {canonical, name} pairs
# Same call with a JMESPath query:
candidates = zia_list_cloud_app_ssl_policy(
search="onedrive",
query="[*].{canonical: app, name: app_name}",
)
# Step 3: confirm the exact canonical name the admin wants if multiple matches
# (e.g. ONEDRIVE vs ONEDRIVE_PERSONAL)
# Step 4: pass the canonical name(s) into the policy rule tool
zia_update_ssl_inspection_rule(
rule_id="...",
cloud_applications=["ONEDRIVE", "ONEDRIVE_PERSONAL"],
)
"sharepoint" → SHAREPOINT_ONLINE, SHAREPOINT_FOR_BUSINESS), ask the admin which they intended before calling the rule tool. The auto-resolver will refuse ambiguous substrings with strict=True, so it's faster to disambiguate up front.ValueError containing the closest matches. Surface those suggestions to the admin verbatim.Whenever auto-resolution transformed any input, the response from the SSL inspection tool includes a _cloud_applications_resolution field, e.g.:
{
"id": 1324023,
"name": "SSL_1",
"cloud_applications": ["ONEDRIVE", "GOOGLE_DRIVE"],
"_cloud_applications_resolution": {
"resolved": {
"OneDrive": {"enums": ["ONEDRIVE"], "match": "display_name"},
"Google Drive": {"enums": ["GOOGLE_DRIVE"], "match": "display_name"}
},
"unresolved": [],
"ambiguous": {}
}
}
Echo the resolved mapping back to the admin so they always see which canonical name each friendly name became — e.g. "I added ONEDRIVE (resolved from 'OneDrive') and GOOGLE_DRIVE (resolved from 'Google Drive') to rule SSL_1."
NONE in the rule after a successful update = the input was not a recognised canonical name, the API silently coerced it. Always rely on auto-resolution (or explicit lookup) — never let a literal admin string flow into cloud_applications unchanged.655377 is a Shadow IT analytics ID, not a policy-engine app name. The resolver will reject it."onedrive", "OneDrive", "ONEDRIVE", all map to ONEDRIVE.zia_create_ssl_inspection_rule / zia_update_ssl_inspection_rule silently activate the resolver. Set resolve_cloud_apps=False only if you've already validated the canonical name yourself.zia_list_cloud_app_policy first to look up the canonical name, then pass it.zia_activate_configuration().