zia-look-up-cloud-app-name
Look up the canonical ZIA cloud-application name (e.g. ONEDRIVE, GOOGLE_DRIVE, SHAREPOINT_ONLINE, DROPBOX) given whatever the admin typed — friendly names like 'OneDrive', 'Google Drive', 'share point online', loose phrasings like 'sharepoint', or even numeric Shadow IT IDs. Cloud App Control, SSL Inspection, Web DLP, File Type Control, Bandwidth Classes, and Advanced Settings rules all require the canonical ZIA name in their `cloud_applications` field; passing the friendly name or a Shadow IT ID silently coerces to `NONE` and the rule does nothing. Use whenever an admin asks to add, remove, or filter on cloud applications in any policy rule, or asks 'what's the right name for X?'.
What this skill does
# ZIA: Look Up Cloud Application Name
## Keywords
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
## Why this skill exists
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](https://github.com/zscaler/zscaler-mcp-server/issues/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:
1. Trust the auto-resolution when calling those two tools.
2. Manually call the policy-engine catalog tools when the admin asks to *look up* the canonical name (without modifying a rule), or when they're working with another rule type (Web DLP, Cloud App Control) where auto-resolution is not yet wired.
## Scope Boundaries
**Which rule types use the cloud-app catalog** (and therefore need this skill):
- ✅ **SSL Inspection** (`zia_create/update_ssl_inspection_rule`) — field is `cloud_applications`. Auto-resolves friendly names.
- ✅ **Web DLP** (`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.
- ✅ **File Type Control** (`zia_create/update_file_type_control_rule`) — field is `cloud_applications`. Auto-resolves friendly names.
- ✅ **Cloud App Control** (`zia_create/update_cloud_app_control_rule`) — field is `cloud_applications`. Auto-resolves friendly names.
- ✅ **Cloud Firewall DNS** (`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):
- ❌ Cloud Firewall Filtering — uses network services / IP groups, not cloud apps
- ❌ Cloud Firewall IPS — no cloud-app scoping
- ❌ Sandbox — file-hash and behaviour-class scoping, not cloud-app
- ❌ URL Filtering — matches on `url_categories`, not the cloud-app catalog
**Use these tools in this skill:**
- `zia_list_cloud_app_ssl_policy(search="...")` — primary tool for SSL Inspection scope
- `zia_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 name
- The five rule create/update tools above — auto-resolve `cloud_applications` (or `applications`, on DNS) inputs, no extra step needed
**Do NOT call:**
- `zia_list_shadow_it_apps` to look up a policy-engine app name — wrong catalog
- Any non-cloud-app ZIA tool unless the admin explicitly asks to chain into another rule type
---
## Workflow
### Decision tree on admin intent
1. **"Add Google Drive and OneDrive to SSL inspection rule X"** — call `zia_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).
2. **"What's the canonical name for SharePoint Online?"** — call `zia_list_cloud_app_ssl_policy(search="sharepoint")` and return the `app` field of the matching entries. Do not modify any rule.
3. **"Show me all collaboration apps available for SSL inspection"** — call `zia_list_cloud_app_ssl_policy(app_class="ENTERPRISE_COLLABORATION", page_size=1000)` and project with `query="[*].{canonical: app, name: app_name}"`.
4. **"Add SharePoint to a Web DLP rule"** — Web DLP create/update does NOT yet auto-resolve. Call `zia_list_cloud_app_policy(search="sharepoint")` first, pick the canonical `app` value, then pass it explicitly into the DLP rule tool.
5. **Admin asks about Shadow IT (sanction state, custom tags, usage analytics)** — that's a different skill. Use `zia_list_shadow_it_apps`.
### Resolution pattern (fallback when auto-resolution is unavailable)
```python
# 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"],
)
```
### Ambiguity & confirmation
- If an admin input substring matches **multiple** canonical names (e.g. `"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.
- If an admin input cannot be resolved at all, the auto-resolver raises a `ValueError` containing the closest matches. Surface those suggestions to the admin verbatim.
### Reporting back
Whenever auto-resolution transformed any input, the response from the SSL inspection tool includes a `_cloud_applications_resolution` field, e.g.:
```json
{
"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."*
## Common gotchas
- **`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.
- **Shadow IT IDs do not work** — `655377` is a Shadow IT analytics ID, not a policy-engine app name. The resolver will reject it.
- **Case matters at the API**, but not for our resolver — it accepts `"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.
- **Other rule types (WebRelated in Cloud & DevOps
appbuilder-action-scaffolder
IncludedCreate, implement, deploy, and debug Adobe Runtime actions with consistent layout, validation, and error handling. Use this skill whenever the user needs to add actions to an App Builder project, understand action structure (params, response format, web/raw actions), configure actions in the manifest, use App Builder SDKs (State, Files, Events, database), deploy and invoke actions via CLI, debug action issues, or implement patterns such as webhook receivers, custom event providers, journaling consumers, large payload redirects, action sequence pipelines, and Asset Compute workers. Also trigger when users mention serverless functions in Adobe context, action logging, IMS authentication for actions, or cron-style scheduled actions.
orchestrating-datacloud
IncludedSalesforce Data Cloud product orchestrator for connect→prepare→harmonize→segment→act workflows. Use this skill when the user needs a multi-step Data Cloud pipeline, cross-phase troubleshooting, or data space and data kit management. TRIGGER when: user needs a multi-step Data Cloud pipeline, asks to set up or troubleshoot Data Cloud across phases, manages data spaces or data kits, or wants a cross-phase sf data360 workflow. DO NOT TRIGGER when: work is isolated to a single phase (use the matching phase-specific skill), the task is STDM/session tracing/parquet telemetry (use observing-agentforce), standard CRM SOQL (use querying-soql), or Apex implementation (use generating-apex).
github-project-automation
IncludedAutomate GitHub repository setup with CI/CD workflows, issue templates, Dependabot, and CodeQL security scanning. Includes 12 production-tested workflows and prevents 18 errors: YAML syntax, action pinning, and configuration. Use when: setting up GitHub Actions CI/CD, creating issue/PR templates, enabling Dependabot or CodeQL scanning, deploying to Cloudflare Workers, implementing matrix testing, or troubleshooting YAML indentation, action version pinning, secrets syntax, runner versions, or CodeQL configuration. Keywords: github actions, github workflow, ci/cd, issue templates, pull request templates, dependabot, codeql, security scanning, yaml syntax, github automation, repository setup, workflow templates, github actions matrix, secrets management, branch protection, codeowners, github projects, continuous integration, continuous deployment, workflow syntax error, action version pinning, runner version, github context, yaml indentation error
sf-datacloud
IncludedSalesforce Data Cloud product orchestrator for connect→prepare→harmonize→segment→act workflows. TRIGGER when: user needs a multi-step Data Cloud pipeline, asks to set up or troubleshoot Data Cloud across phases, manages data spaces or data kits, or wants a cross-phase `sf data360` workflow. DO NOT TRIGGER when: work is isolated to a single phase (use the matching sf-datacloud-* skill), the task is STDM/session tracing/parquet telemetry (use sf-ai-agentforce-observability), standard CRM SOQL (use sf-soql), or Apex implementation (use sf-apex).
fabric-cli
IncludedUse this skill for Fabric.so CLI workflows with the `fabric` terminal command: diagnose/install/login, search or browse a Fabric library, save notes/links/files, create folders, ask the Fabric AI assistant, manage tasks/workspaces, generate shell completion, check subscription usage, produce JSON output, and use Fabric as persistent agent memory. Do not use for Microsoft Fabric/Azure/Power BI `fab`, Daniel Miessler's Fabric framework, Python Fabric SSH, Fabric.js, or textile/fashion fabric.
lark
IncludedLark/Feishu CLI skills: lark-cli operations for docs, markdown, sheets, base, calendar, im, mail, task, okr, drive, wiki, slides, whiteboard, apps, approval, attendance, contact, vc, minutes, event. Use when the user needs to operate Lark/Feishu resources via lark-cli, send messages, manage documents, spreadsheets, calendars, tasks, OKRs, deploy web pages, or any Feishu/Lark workspace operations.