Netskope MCP Server
by johnneerdael
# Netskope NPA MCP Server
A Model Context Protocol (MCP) server for managing Netskope Network Private Access (NPA) infrastructure through Large Language Models (LLMs).
## Warning
Still lots of work needs to be done for all 50 tools to be operational, i strongly advise against using this with any production environment
## Demonstration
https://github.com/johnneerdael/netskope-mcp/raw/refs/heads/main/demo.mov
## Installation
### Option 1: NPM Package
Install the package using npm:
```bash
npm install @johnneerdael/netskope-mcp
```
### Option 2: Local Development
Clone the repository and install dependencies:
```bash
git clone https://github.com/johnneerdael/netskope-mcp.git
cd netskope-mcp
npm install
npm run build
```
### MCP Configuration
Add the following configuration to your MCP settings file:
#### Windows with WSL
For NPM installation:
```json
{
"mcpServers": {
"netskope-mcp": {
"command": "wsl.exe",
"args": [
"bash",
"-c",
"source ~/.nvm/nvm.sh && NETSKOPE_BASE_URL=https://your-tenant.goskope.com NETSKOPE_API_KEY=your-token npx -y @johnneerdael/netskope-mcp"
]
}
}
}
```
For local development:
```json
{
"mcpServers": {
"netskope-mcp": {
"command": "wsl.exe",
"args": [
"bash",
"-c",
"cd /path/to/netskope-mcp && NETSKOPE_BASE_URL=https://your-tenant.goskope.com NETSKOPE_API_KEY=your-token node dist/cli.js"
]
}
}
}
```
#### Linux and macOS
For NPM installation:
```json
{
"mcpServers": {
"netskope-mcp": {
"command": "npx",
"args": ["-y", "@johnneerdael/netskope-mcp"],
"env": {
"NETSKOPE_BASE_URL": "https://your-tenant.goskope.com",
"NETSKOPE_API_KEY": "your-token"
}
}
}
}
```
For local development:
```json
{
"mcpServers": {
"netskope-mcp": {
"command": "node",
"args": ["dist/cli.js"],
"cwd": "/path/to/netskope-mcp",
"env": {
"NETSKOPE_BASE_URL": "https://your-tenant.goskope.com",
"NETSKOPE_API_KEY": "your-token"
}
}
}
}
```
## Environment Variables
The Netskope NPA MCP Server requires the following environment variables to be configured for proper operation:
### Required Variables
- **NETSKOPE_BASE_URL**
- **Description**: The base URL of your Netskope tenant
- **Format**: Full URL including protocol
- **Example**: `https://your-tenant.goskope.com`
- **Usage**: Used for all API communications with your Netskope tenant
- **Note**: Must be the complete tenant URL without any path components
- **NETSKOPE_API_KEY**
- **Description**: API token for authentication with Netskope services
- **Format**: String token from Netskope admin console
- **Example**: `030f31f7d57fd94834af57a3edc4bbda`
- **Usage**: Required for authenticating all API requests
- **Security Note**: Keep this token secure and never commit it to version control
### Configuration Examples
#### Development Environment
```bash
export NETSKOPE_BASE_URL="https://dev-tenant.goskope.com"
export NETSKOPE_API_KEY="your-development-token"
```
#### Production Environment
```bash
export NETSKOPE_BASE_URL="https://prod-tenant.goskope.com"
export NETSKOPE_API_KEY="your-production-token"
```
### AlertsTools
- **getAlertConfig**
- **Description**: Retrieves the current alert configuration settings for publishers, including notification preferences for various events such as upgrades and connection status changes.
- **Required Parameters**: None
- **Response Schema**:
```typescript
{
adminUsers: string[], // Array of admin user emails to notify
eventTypes: string[], // Array of event types to monitor
selectedUsers: string // Additional users to notify
}
```
- **Event Types**:
- `UPGRADE_WILL_START`: Notification before a publisher upgrade begins
- `UPGRADE_STARTED`: Notification when upgrade process initiates
- `UPGRADE_SUCCEEDED`: Notification upon successful upgrade completion
- `UPGRADE_FAILED`: Notification if upgrade process fails
- `CONNECTION_FAILED`: Notification when publisher connection issues occur
- **Usage Examples**:
1. "Check which administrators are configured to receive upgrade notifications: Use `getAlertConfig` to return the current list of admin users and their notification preferences."
2. "Verify the alert configuration before a planned maintenance window: Use `getAlertConfig` to ensure the right team members will be notified of upgrade events."
3. "Audit the publisher monitoring setup: Use `getAlertConfig` to show which critical events are being tracked and who receives notifications."
- **updateAlertConfig**
- **Description**: Updates the alert configuration settings for publishers, allowing customization of notification preferences for various system events including upgrades and connection status changes.
- **Required Parameters**:
```typescript
{
adminUsers: string[], // Array of admin user emails to receive notifications
eventTypes: string[], // Array of event types to monitor
selectedUsers: string // Additional users to receive notifications
}
```
- **Response Schema**: Same as getAlertConfig
- **Usage Examples**:
1. "Configure notifications: Update alert settings to ensure critical events are properly monitored."
2. "Modify recipients: Adjust the list of administrators who receive specific types of alerts."
3. "Event selection: Customize which event types trigger notifications for different user groups."
### LocalBrokerTools
- **listLocalBrokers**
- **Description**: Lists all configured local brokers in your Netskope environment. Local brokers are used for on-premises Zero Trust Network Access (ZTNA) scenarios where end-users connect to a Local Broker instead of a Cloud Broker to access private applications hosted on-premises.
- **Required Parameters**: None
- **Optional Parameters**:
- `fields`: Array of specific fields to return in the response
- **Response Schema**:
```typescript
{
status: 'success' | 'not found',
total: number,
data: Array<{
id: number, // Unique identifier for the local broker
name: string, // Display name of the local broker
common_name: string, // Common name used for broker identification
registered: boolean // Registration status of the broker
}>
}
```
- **Usage Examples**:
1. "Monitor your local broker deployment by listing your local brokers to get an overview of all registered brokers and their current status."
2. "Verify high availability setup: Check if you have multiple local brokers configured per site by reviewing the list of deployed brokers."
3. "Audit broker registration: List all local brokers to identify any unregistered instances that need attention."
- **createLocalBroker**
- **Description**: Creates a new local broker instance for handling on-premises ZTNA traffic. This is typically used when setting up new sites or expanding capacity for existing locations.
- **Required Parameters**:
```typescript
{
name: string // Name for the new local broker
}
```
- **Response Schema**:
```typescript
{
status: 'success' | 'not found',
data: {
id: number, // Assigned unique identifier
name: string, // Configured broker name
common_name: string, // Assigned common name
registered: boolean // Initial registration status
}
}
```
- **Usage Examples**:
1. "Deploy a new site: Create a local broker twice to ensure high availability for a new office location."
2. "Expand capacity: Add additional local brokers to handle increased on-premises traffic by creating new broker instances."
3. "Initialize HA setup: Create multiple local brokers with descriptive names indicating their site and role."
- **getLocalBroker**
- **Description**: Retrieves detailed information about a specific local broker by its ID. Use this to monitor the status and configuration of individual broker instances.
- **Required Parameters**:
- `id`: Numeric identifier of the local broker to retrieve
- **Response Schema**:
```typescript
{
status: 'success' | 'not found',
data: {
id: number, // Broker's unique identifier
name: string, // Broker's display name
common_name: string, // Broker's common name
registered: boolean // Current registration status
}
}
```
- **Usage Examples**:
1. "Check broker health: Retrieve specific broker details to verify its registration status and configuration."
2. "Troubleshoot connectivity: Get detailed information about a broker that's experiencing issues."
3. "Verify deployment: Confirm the successful creation of a new broker by retrieving its details."
- **updateLocalBroker**
- **Description**: Updates the configuration of an existing local broker. This allows you to modify broker settings such as its name while maintaining its identity and connections.
- **Required Parameters**:
```typescript
{
id: number, // Identifier of broker to update
name: string // New name for the broker
}
```
- **Response Schema**:
```typescript
{
status: 'success' | 'not found',
data: {
id: number, // Broker's identifier
name: string, // Updated broker name
common_name: string, // Broker's common name
registered: boolean // Current registration status
}
}
```
- **Usage Examples**:
1. "Rename for clarity: Update a broker's name to better reflect its location or role in your infrastructure."
2. "Standardize naming: Modify broker names to follow updated naming conventions across your organization."
3. "Update HA pair: Adjust broker names to clearly indicate primary and secondary roles."
- **deleteLocalBroker**
- **Description**: Removes a local broker from your Netskope configuration. Use this when decommissioning brokers or cleaning up unused instances.
- **Required Parameters**:
- `id`: Numeric identifier of the local broker to delete
- **Response Schema**:
```typescript
{
status: 'success' | 'not found'
}
```
- **Usage Examples**:
1. "Decommission old brokers: Remove brokers that are no longer needed or have been replaced."
2. "Clean up test instances: Delete temporary brokers created for testing purposes."
3. "Site consolidation: Remove brokers from decommissioned locations while maintaining service at active sites."
- **getBrokerConfig**
- **Description**: Retrieves the global configuration settings for local brokers, including hostname configurations that affect all broker instances.
- **Required Parameters**: None
- **Response Schema**:
```typescript
{
status: 'success' | 'not found',
data: {
hostname: string // Global hostname configuration
}
}
```
- **Usage Examples**:
1. "Review global settings: Check the current hostname configuration affecting all local brokers."
2. "Prepare for changes: Verify existing configuration before planning updates."
3. "Audit configuration: Ensure hostname settings align with your network architecture."
- **updateBrokerConfig**
- **Description**: Updates the global configuration settings for all local brokers, allowing you to modify system-wide broker behavior.
- **Required Parameters**:
```typescript
{
hostname: string // New hostname configuration
}
```
- **Response Schema**:
```typescript
{
status: 'success' | 'not found',
data: {
hostname: string // Updated hostname configuration
}
}
```
- **Usage Examples**:
1. "Modify global settings: Update the hostname configuration to reflect network changes."
2. "Infrastructure updates: Adjust broker configurations to accommodate new networking requirements."
3. "Standardize setup: Ensure consistent hostname configuration across all broker instances."
- **generateLocalBrokerRegistrationToken**
- **Description**: Generates a new registration token for a specific local broker, enabling secure registration with the Netskope management plane.
- **Required Parameters**:
- `id`: Numeric identifier of the local broker
- **Response Schema**:
```typescript
{
status: 'success' | 'not found',
data: {
token: string // Generated registration token
}
}
```
- **Usage Examples**:
1. "Secure new broker: Generate a token to safely register a newly deployed local broker."
2. "Re-register broker: Create a new token when needing to re-establish broker registration."
3. "Token rotation: Generate new registration tokens as part of security maintenance."
### PolicyTools
- **listRules**
- **Description**: Lists all policy rules configured in your Netskope Private Access environment. These rules define access controls for private applications using Zero Trust Network Access (ZTNA) principles.
- **Required Parameters**: None
- **Optional Parameters**:
- `fields`: Array of specific fields to return
- `filter`: Filter criteria for the rules
- `limit`: Maximum number of rules to return
- `offset`: Number of rules to skip
- `sortby`: Field to sort by
- `sortorder`: Sort direction ('asc' or 'desc')
- **Response Schema**:
```typescript
{
data: {
rules: Array<{
id: number,
name: string,
description?: string,
enabled: boolean,
action: 'allow' | 'block',
policy_group_id: number,
priority: number,
conditions: Array<{
type: 'private_app' | 'user' | 'group' | 'organization_unit' | 'location' | 'device',
operator: 'in' | 'not_in' | 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'starts_with' | 'ends_with',
value: string | string[] | number | number[]
}>,
created_at: string,
updated_at: string
}>
},
status: 'success' | 'error',
total: number
}
```
- **Usage Examples**:
1. "Audit access policies to review all configured rules and their conditions to ensure proper access controls."
2. "Prioritize rules: List rules sorted by priority to understand the order of policy evaluation and identify potential conflicts."
3. "Filter specific policies: Retrieve rules related to specific applications or user groups using the filter parameter."
- **getRule**
- **Description**: Retrieves detailed information about a specific policy rule by its ID. Use this to examine individual rule configurations and conditions.
- **Required Parameters**:
- `id`: Numeric identifier of the policy rule
- **Optional Parameters**:
- `fields`: Array of specific fields to return
- **Response Schema**:
```typescript
{
data: {
id: number,
name: string,
description?: string,
enabled: boolean,
action: 'allow' | 'block',
policy_group_id: number,
priority: number,
conditions: Array<{
type: 'private_app' | 'user' | 'group' | 'organization_unit' | 'location' | 'device',
operator: 'in' | 'not_in' | 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'starts_with' | 'ends_with',
value: string | string[] | number | number[]
}>,
created_at: string,
updated_at: string
},
status: 'success' | 'error'
}
```
- **Usage Examples**:
1. "Troubleshoot access issues: Examine specific rule details to understand why access might be blocked or allowed."
2. "Verify rule conditions: Check the exact conditions configured for a critical access policy."
3. "Review rule history: Check creation and update timestamps to track policy changes."
- **createRule**
- **Description**: Creates a new policy rule to control access to private applications. Rules can be based on various conditions including user identity, device status, and location.
- **Required Parameters**:
```typescript
{
name: string, // Rule name
description?: string, // Optional rule description
enabled: boolean, // Rule status
action: 'allow' | 'block', // Access action
policy_group_id: number, // Associated policy group
priority: number, // Rule priority
conditions: Array<{
type: 'private_app' | 'user' | 'group' | 'organization_unit' | 'location' | 'device',
operator: 'in' | 'not_in' | 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'starts_with' | 'ends_with',
value: string | string[] | number | number[]
}>
}
```
- **Usage Examples**:
1. "Implement least privilege access: Create rules that grant access only to specific applications based on user roles and device status."
2. "Set up location-based policies: Define rules that restrict access based on user location for compliance requirements."
3. "Configure group-based access: Create rules that allow specific user groups to access designated private applications."
- **updateRule**
- **Description**: Updates an existing policy rule's configuration. Use this to modify access controls, conditions, or rule properties.
- **Required Parameters**:
- `id`: Numeric identifier of the rule to update
- `data`: Updated rule configuration following the same schema as create_rule
- **Response Schema**:
```typescript
{
data: {
// Updated rule details (same as get_rule response)
},
status: 'success' | 'error'
}
```
- **Usage Examples**:
1. "Adjust access conditions: Modify rule conditions to accommodate new security requirements or organizational changes."
2. "Update rule priority: Change a rule's priority to ensure proper policy evaluation order."
3. "Enable/disable rules: Toggle rule status during maintenance or when implementing policy changes."
- **deleteRule**
- **Description**: Removes a policy rule from your configuration. Use with caution as this permanently removes the access control policy.
- **Required Parameters**:
- `id`: Numeric identifier of the rule to delete
- **Response Schema**:
```typescript
{
status: 'success' | 'error'
}
```
- **Usage Examples**:
1. "Clean up obsolete policies: Remove rules that are no longer needed or have been superseded by new policies."
2. "Policy consolidation: Delete redundant rules after merging policy configurations."
3. "Remove temporary rules: Clean up temporary access policies created for specific projects or maintenance."
### PrivateAppsTools
- **createPrivateApp**
- **Description**: Creates a new private application in your Netskope environment. This allows you to define and configure applications that will be accessible through your Zero Trust Network Access (ZTNA) infrastructure.
- **Required Parameters**:
```typescript
{
app_name: string, // Name of the private application
host: string, // Host address of the application
clientless_access: boolean, // Enable clientless access
is_user_portal_app: boolean, // Show in user portal
protocols: Array<{
port: string, // Port number
type: 'tcp' | 'udp' // Protocol type
}>,
publisher_tags?: Array<{ // Optional publisher tags
tag_name: string
}>,
publishers: Array<{ // Associated publishers
publisher_id: string,
publisher_name: string
}>,
trust_self_signed_certs: boolean, // Trust self-signed certificates
use_publisher_dns: boolean, // Use publisher DNS
allow_unauthenticated_cors?: boolean, // Optional CORS settings
allow_uri_bypass?: boolean, // Optional URI bypass
bypass_uris?: string[], // Optional bypass URIs
real_host?: string, // Optional real host
app_option?: Record<string, unknown> // Additional options
}
```
- **Response Schema**:
```typescript
{
data: {
allow_unauthenticated_cors: boolean,
allow_uri_bypass: boolean,
uribypass_header_value: string,
bypass_uris: string[],
app_option: Record<string, unknown>,
clientless_access: boolean,
host: string,
id: number,
is_user_portal_app: boolean,
name: string,
protocols: Array<{
ports: string[],
type: string
}>,
real_host: string,
service_publisher_assignments: Array<{
primary: boolean,
publisher_id: number,
publisher_name: string,
reachability: {
error_code: number,
error_string: string,
reachable: boolean
},
service_id: number
}>,
tags: Array<{
tag_id: number,
tag_name: string
}>,
trust_self_signed_certs: boolean,
use_publisher_dns: boolean
},
status: 'success' | 'not found'
}
```
- **Usage Examples**:
1. "Deploy internal application: Create a private app definition for an internal web service with specific protocol and security settings."
2. "Configure high availability: Set up a private application with multiple publishers for redundancy."
3. "Enable secure access: Create a private app with strict security settings and specific bypass rules."
- **updatePrivateApp**
- **Description**: Updates the configuration of an existing private application, allowing modification of access settings, protocols, and security parameters.
- **Required Parameters**:
```typescript
{
id: number, // Application ID
// All other fields same as create_private_app
}
```
- **Response Schema**: Same as create_private_app
- **Usage Examples**:
1. "Modify security settings: Update certificate trust settings and CORS configuration for enhanced security."
2. "Adjust access parameters: Update protocols or bypass rules to accommodate changing requirements."
3. "Publisher reassignment: Modify the list of publishers handling the application traffic."
- **deletePrivateApp**
- **Description**: Removes a private application from your Netskope configuration. This action permanently removes the application definition and associated access controls.
- **Required Parameters**:
- `id`: Numeric identifier of the private application
- **Response Schema**:
```typescript
{
status: number,
result: string
}
```
- **Usage Examples**:
1. "Decommission service: Remove a private application that is no longer in use."
2. "Clean up test apps: Delete temporary applications used for testing."
3. "Remove deprecated services: Clean up old application definitions during infrastructure updates."
- **getPrivateApp**
- **Description**: Retrieves detailed configuration information about a specific private application.
- **Required Parameters**:
- `id`: Numeric identifier of the private application
- **Response Schema**: Same as create_private_app response
- **Usage Examples**:
1. "Audit configuration: Review detailed settings of a private application for compliance checks."
2. "Troubleshoot access: Examine application configuration to resolve connectivity issues."
3. "Verify settings: Confirm proper configuration after making changes to the application."
- **listPrivateApps**
- **Description**: Retrieves a list of all configured private applications with their configurations.
- **Required Parameters**: None
- **Optional Parameters**:
- `fields`: Specific fields to return
- `filter`: Filter criteria
- `query`: Search query
- `limit`: Maximum number of results
- `offset`: Number of results to skip
- **Response Schema**:
```typescript
{
data: Array<{
// Same fields as get_private_app response
}>,
status: 'success' | 'not found',
total: number
}
```
- **Usage Examples**:
1. "Inventory applications: Get a complete list of all private applications for audit purposes."
2. "Filter by criteria: Search for applications with specific configurations or tags."
3. "Paginated review: Retrieve applications in manageable chunks for large deployments."
- **getPrivateAppTags**
- **Description**: Retrieves all tags associated with private applications, useful for organizing and categorizing applications.
- **Required Parameters**: None
- **Optional Parameters**:
- `query`: Search query for tags
- `limit`: Maximum number of tags
- `offset`: Number of tags to skip
- **Response Schema**:
```typescript
{
data: Array<{
tag_id: number,
tag_name: string
}>,
status: 'success' | 'not found'
}
```
- **Usage Examples**:
1. "List categories: Retrieve all tags to understand application categorization."
2. "Search tags: Find specific tags matching certain criteria."
3. "Tag inventory: Review all available tags for standardization purposes."
- **createPrivateAppTags**
- **Description**: Associates new tags with a private application for better organization and management.
- **Required Parameters**:
- `id`: Application identifier
- `tags`: Array of tag objects
- **Usage Examples**:
1. "Categorize apps: Add organizational tags to group related applications."
2. "Environment labeling: Tag applications based on their deployment environment."
3. "Team assignment: Add tags to indicate which team owns or manages the application."
- **updatePrivateAppTags**
- **Description**: Updates the tags associated with one or more private applications.
- **Required Parameters**:
- `ids`: Array of application identifiers
- `tags`: Array of updated tag objects
- **Usage Examples**:
1. "Bulk tag update: Modify tags for multiple applications simultaneously."
2. "Tag standardization: Update tags to conform to new naming conventions."
3. "Ownership changes: Update tags to reflect new team assignments."
- **updatePrivateAppPublishers**
- **Description**: Updates the publisher assignments for private applications, controlling which publishers handle application traffic.
- **Required Parameters**:
```typescript
{
private_app_ids: string[], // Application IDs
publisher_ids: string[] // Publisher IDs
}
```
- **Usage Examples**:
1. "Load balancing: Distribute application traffic across multiple publishers."
2. "Publisher migration: Move applications to new or different publishers."
3. "HA configuration: Add backup publishers for high availability."
- **deletePrivateAppPublishers**
- **Description**: Removes publisher assignments from private applications.
- **Required Parameters**:
```typescript
{
private_app_ids: string[], // Application IDs
publisher_ids: string[] // Publisher IDs to remove
}
```
- **Usage Examples**:
1. "Publisher decommission: Remove old publishers from application configurations."
2. "Clean up assignments: Remove unnecessary publisher assignments."
3. "Reconfigure routing: Remove publishers during traffic flow updates."
- **getDiscoverySettings**
- **Description**: Retrieves the current discovery settings for private applications, which control how applications are discovered and monitored.
- **Required Parameters**: None
- **Usage Examples**:
1. "Review discovery: Check current application discovery configuration."
2. "Audit settings: Verify discovery parameters for compliance."
3. "Monitor configuration: Examine how applications are being discovered and tracked."
- **getPolicyInUse**
- **Description**: Retrieves the active policies associated with specified private applications.
- **Required Parameters**:
- `ids`: Array of application identifiers
- **Usage Examples**:
1. "Policy audit: Review which policies are affecting specific applications."
2. "Access control review: Verify policy assignments for security compliance."
3. "Troubleshoot access: Check policies when investigating access issues."
### PublishersTools
- **listPublishers**
- **Description**: Lists all publishers configured in your Netskope environment. Publishers are the components that handle private application traffic and require proper management for optimal performance.
- **Required Parameters**: None
- **Optional Parameters**:
- `fields`: Specific fields to return in the response
- **Response Schema**:
```typescript
{
data: {
publishers: Array<{
apps_count: number,
assessment: {
ca_certs_status: {
hashes: string[],
last_modified: number
},
eee_support: boolean,
hdd_free: string,
hdd_total: string,
ip_address: string,
latency: number,
version: string
},
capabilities: {
DTLS: boolean,
EEE: boolean,
auto_upgrade: boolean,
nwa_ba: boolean,
pull_nsconfig: {
orgkey_exist: boolean,
orguri_exist: boolean
}
},
common_name: string,
connected_apps: string[],
id: number,
lbrokerconnect: boolean,
name: string,
publisher_upgrade_profiles_id: number,
registered: boolean,
status: 'connected' | 'not registered',
stitcher_id: number,
sticher_pop: string,
upgrade_request: boolean,
upgrade_status: {
upstat: string
}
}>
},
status: 'success' | 'not found',
total: number
}
```
- **Usage Examples**:
1. "Monitor deployment: List all publishers to check their connection status and capabilities."
2. "Audit configuration: Review publisher settings and associated applications."
3. "Capacity planning: Check the number of apps and load across publishers."
- **getPublisher**
- **Description**: Retrieves detailed information about a specific publisher, including its configuration, status, and capabilities.
- **Required Parameters**:
- `id`: Numeric identifier of the publisher
- **Response Schema**: Same as individual publisher in list_publishers response
- **Usage Examples**:
1. "Health check: Get detailed status information for a specific publisher."
2. "Troubleshoot connectivity: Examine publisher capabilities and connection status."
3. "Version verification: Check publisher version and upgrade status."
- **createPublisher**
- **Description**: Creates a new publisher instance in your Netskope environment.
- **Required Parameters**:
```typescript
{
name: string, // Publisher name
lbrokerconnect?: boolean, // Optional local broker connection
publisher_upgrade_profiles_id?: number // Optional upgrade profile assignment
}
```
- **Response Schema**: Same as get_publisher response
- **Usage Examples**:
1. "Deploy new publisher: Create a publisher for a new data center location."
2. "Expand capacity: Add publishers to handle increased application traffic."
3. "Configure HA: Create additional publishers for high availability setup."
- **patchPublisher**
- **Description**: Partially updates a publisher's configuration, allowing modification of specific settings while maintaining others.
- **Required Parameters**:
```typescript
{
name: string, // Publisher name
id?: number, // Optional publisher ID
lbrokerconnect?: boolean, // Optional local broker connection
publisher_upgrade_profiles_id?: number // Optional upgrade profile assignment
}
```
- **Response Schema**: Same as get_publisher response
- **Usage Examples**:
1. "Update name: Change publisher name to match new naming convention."
2. "Modify connection: Update local broker connection settings."
3. "Assign profile: Link publisher to an upgrade profile."
- **updatePublisher**
- **Description**: Performs a complete update of a publisher's configuration, replacing all settings with the provided values.
- **Required Parameters**:
```typescript
{
id: number, // Publisher ID
name: string, // Publisher name
lbrokerconnect?: boolean, // Optional local broker connection
tags?: Array<{ // Optional tags
tag_id: number,
tag_name: string
}>
}
```
- **Response Schema**: Same as get_publisher response
- **Usage Examples**:
1. "Full reconfiguration: Update all publisher settings at once."
2. "Tag management: Update publisher tags and configuration together."
3. "Reset settings: Replace existing configuration with new values."
- **deletePublisher**
- **Description**: Removes a publisher from your Netskope configuration. Use with caution as this affects application access.
- **Required Parameters**:
- `id`: Numeric identifier of the publisher to delete
- **Response Schema**:
```typescript
{
status: 'success' | 'error'
}
```
- **Usage Examples**:
1. "Decommission publisher: Remove a publisher that's being retired."
2. "Clean up test instances: Delete publishers used for testing."
3. "Remove unused: Clean up publishers that are no longer needed."
- **bulkUpgradePublishers**
- **Description**: Initiates upgrades for multiple publishers simultaneously.
- **Required Parameters**:
```typescript
{
publishers: {
apply: {
upgrade_request: boolean // Whether to request upgrade
},
id: string[] // Array of publisher IDs
}
}
```
- **Response Schema**:
```typescript
{
data: {
publishers: Array<PublisherResponse>
},
status: 'success' | 'not found'
}
```
- **Usage Examples**:
1. "Mass upgrade: Upgrade all publishers in a specific region."
2. "Staged rollout: Upgrade a subset of publishers at once."
3. "Emergency patching: Apply critical updates to multiple publishers."
- **getReleases**
- **Description**: Retrieves information about available publisher releases.
- **Required Parameters**: None
- **Response Schema**:
```typescript
{
data: Array<{
docker_tag: string,
is_recommended: boolean,
release_type: 'Beta' | 'Latest' | 'Latest-1' | 'Latest-2',
version: string
}>,
status: 'success' | 'not found'
}
```
- **Usage Examples**:
1. "Version planning: Check available releases for upgrade planning."
2. "Release tracking: Monitor new versions and recommendations."
3. "Compatibility check: Verify release types before upgrading."
- **getPrivateApps**
- **Description**: Retrieves the list of private applications associated with a specific publisher.
- **Required Parameters**:
- `publisherId`: Numeric identifier of the publisher
- **Response Schema**: Application-specific response
- **Usage Examples**:
1. "App inventory: List all applications handled by a publisher."
2. "Load assessment: Check number and type of apps on a publisher."
3. "Migration planning: Review apps before moving to a different publisher."
- **generatePublisherRegistrationToken**
- **Description**: Creates a new registration token for a publisher, enabling secure registration with the Netskope control plane.
- **Required Parameters**:
- `publisherId`: Numeric identifier of the publisher
- **Response Schema**:
```typescript
{
data: {
token: string // Registration token
},
status: string
}
```
- **Usage Examples**:
1. "Initial setup: Generate token for new publisher registration."
2. "Re-registration: Create new token for publisher reconnection."
3. "Security refresh: Rotate registration tokens periodically."
### UpgradeProfileTools
- **listUpgradeProfiles**
- **Description**: Lists all upgrade profiles configured in your Netskope environment. Upgrade profiles define when and how publisher upgrades are performed.
- **Required Parameters**: None
- **Response Schema**:
```typescript
{
data: {
upgrade_profiles: Array<{
id: number,
external_id: number,
name: string,
docker_tag: string,
enabled: boolean,
frequency: string, // Cron format: minute hour day * DAY_OF_WEEK
timezone: string, // Standard timezone identifier
release_type: 'Beta' | 'Latest' | 'Latest-1' | 'Latest-2',
created_at: string,
updated_at: string,
next_update_time?: number,
num_associated_publisher: number,
upgrading_stage?: number,
will_start?: boolean
}>
},
status: 'success' | 'not found',
total: number
}
```
- **Usage Examples**:
1. "Review upgrade schedules: List all profiles to understand when different publishers are scheduled for upgrades."
2. "Audit configurations: Check all upgrade profiles for consistency in settings and schedules."
3. "Monitor upgrade status: View which profiles are actively upgrading or scheduled for updates."
- **getUpgradeProfile**
- **Description**: Retrieves detailed information about a specific upgrade profile, including its schedule and configuration.
- **Required Parameters**:
- `id`: Numeric identifier of the upgrade profile
- **Response Schema**: Same as individual profile in list_upgrade_profiles
- **Usage Examples**:
1. "Verify settings: Check specific profile configuration before an upgrade window."
2. "Troubleshoot upgrades: Examine profile details when investigating upgrade issues."
3. "Monitor progress: Track the status of an ongoing upgrade process."
- **createUpgradeProfile**
- **Description**: Creates a new upgrade profile to manage automated publisher upgrades. Profiles control when and how updates are applied to publishers.
- **Required Parameters**:
```typescript
{
name: string, // Profile name
enabled: boolean, // Profile status
docker_tag: string, // Docker image tag for upgrade
frequency: string, // Cron schedule format
timezone: string, // Timezone for schedule
release_type: 'Beta' | 'Latest' | 'Latest-1' | 'Latest-2'
}
```
- **Usage Examples**:
1. "Schedule maintenance: Create a profile for regular off-hours upgrades."
2. "Beta testing: Set up a profile for testing new releases on selected publishers."
3. "Regional updates: Create profiles aligned with different timezone maintenance windows."
- **updateUpgradeProfile**
- **Description**: Updates an existing upgrade profile's configuration, allowing modification of schedule, release type, and other settings.
- **Required Parameters**:
- `id`: Profile identifier
- `data`: Updated profile configuration (same schema as create_upgrade_profile)
- **Response Schema**:
```typescript
{
data: {
// Updated profile details (same as get_upgrade_profile response)
},
status: 'success' | 'not found'
}
```
- **Usage Examples**:
1. "Adjust schedule: Modify upgrade timing to better align with maintenance windows."
2. "Change release track: Update profile to use a different release type."
3. "Enable/disable upgrades: Toggle profile status during change freeze periods."
- **deleteUpgradeProfile**
- **Description**: Removes an upgrade profile from your configuration. Use with caution as this affects automated upgrade scheduling.
- **Required Parameters**:
- `id`: Numeric identifier of the profile to delete
- **Response Schema**:
```typescript
{
status: 'success' | 'not found'
}
```
- **Usage Examples**:
1. "Remove obsolete profiles: Clean up unused upgrade configurations."
2. "Profile consolidation: Delete redundant profiles after consolidating upgrade schedules."
3. "Clean up test profiles: Remove temporary profiles used for upgrade testing."
### SteeringTools
- **updatePublisherAssociation**
- **Description**: Updates the association between private applications and publishers, allowing you to modify which publishers handle specific application traffic.
- **Required Parameters**:
```typescript
{
private_app_ids: string[], // Array of private application IDs
publisher_ids: string[] // Array of publisher IDs
}
```
- **Response Schema**:
```typescript
{
status: 'success' | 'error',
data: {
private_app_ids: string[],
publisher_ids: string[]
}
}
```
- **Usage Examples**:
1. "Reassign publishers: Update which publishers handle specific private applications."
2. "Load distribution: Modify publisher assignments for better traffic distribution."
3. "HA configuration: Set up multiple publishers for application redundancy."
- **deletePublisherAssociation**
- **Description**: Removes associations between private applications and publishers, effectively stopping those publishers from handling the applications' traffic.
- **Required Parameters**:
```typescript
{
private_app_ids: string[], // Array of private application IDs
publisher_ids: string[] // Array of publisher IDs to remove
}
```
- **Response Schema**: Same as update_publisher_association
- **Usage Examples**:
1. "Remove associations: Stop specific publishers from handling certain applications."
2. "Clean up configuration: Remove unnecessary publisher assignments."
3. "Prepare for decommission: Remove applications before retiring a publisher."
- **getUserDiagnostics**
- **Description**: Retrieves diagnostic information about user access to private applications, helping troubleshoot connectivity issues.
- **Required Parameters**: None
- **Response Schema**:
```typescript
{
status: 'success' | 'error',
data: {
user_id: string,
diagnostics: Array<{
private_app_id: string,
private_app_name: string,
publisher_id: string,
publisher_name: string,
status: string,
timestamp: string
}>
}
}
```
- **Usage Examples**:
1. "Access troubleshooting: Investigate user connectivity issues to private applications."
2. "Audit access patterns: Review which publishers users are connecting through."
3. "Monitor performance: Check connection status and timing for user access."
- **getDeviceDiagnostics**
- **Description**: Retrieves diagnostic information about device access to specific private applications.
- **Required Parameters**:
- `deviceId`: Device identifier
- `privateAppId`: Private application identifier
- **Response Schema**:
```typescript
{
status: 'success' | 'error',
data: {
device_id: string,
private_app_id: string,
diagnostics: Array<{
publisher_id: string,
publisher_name: string,
status: string,
timestamp: string
}>
}
}
```
- **Usage Examples**:
1. "Device troubleshooting: Investigate specific device connectivity issues."
2. "Application access: Check device-specific access to private applications."
3. "Connection history: Review device connection patterns and status."
### ValidationTools
- **validateName**
- **Description**: Validates names for various resources (publishers, private apps, policies, etc.) to ensure they meet naming requirements.
- **Required Parameters**:
```typescript
{
resourceType: 'publisher' | 'private_app' | 'policy' | 'policy_group' | 'upgrade_profile',
name: string,
tagType?: 'publisher' | 'private_app'
}
```
- **Response Schema**:
```typescript
{
status: 'success' | 'error',
data: {
valid: boolean,
message?: string
}
}
```
- **Usage Examples**:
1. "Name validation: Check if a proposed resource name meets requirements."
2. "Tag verification: Validate tag names before creation."
3. "Policy naming: Ensure policy names follow conventions."
- **validateResource**
- **Description**: Validates complete resource configurations before creation or update operations.
- **Required Parameters**:
```typescript
{
resourceType: 'publisher' | 'private_app' | 'policy' | 'policy_group' | 'upgrade_profile',
data: {
name: string,
// Additional resource-specific fields
}
}
```
- **Response Schema**:
```typescript
{
status: 'success' | 'error',
data: {
valid: boolean,
errors?: string[]
}
}
```
- **Usage Examples**:
1. "Configuration validation: Verify resource settings before creation."
2. "Update verification: Validate changes before applying updates."
3. "Compliance check: Ensure resources meet required standards."
- **searchResources**
- **Description**: Searches for publishers or private applications based on specified criteria.
- **Required Parameters**:
```typescript
{
resourceType: 'publishers' | 'private_apps',
query: string
}
```
- **Response Schema**: Resource-specific response format
- **Usage Examples**:
1. "Resource search: Find resources matching specific criteria."
2. "Publisher lookup: Search for publishers by name or attributes."
3. "Application discovery: Find private apps matching search terms."