list_catalog_item_variables
Retrieve variables associated with a ServiceNow catalog item to understand required inputs and configure service requests effectively.
Instructions
List catalog item variables
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| catalog_item_id | Yes | The sys_id of the catalog item | |
| include_details | No | Whether to include detailed information about each variable | |
| limit | No | Maximum number of variables to return | |
| offset | No | Offset for pagination |
Implementation Reference
- The handler function that executes the tool logic. It queries the ServiceNow 'item_option_new' table for variables associated with the specified catalog item ID, supports pagination and detail levels, and returns a structured response.def list_catalog_item_variables( config: ServerConfig, auth_manager: AuthManager, params: ListCatalogItemVariablesParams, ) -> ListCatalogItemVariablesResponse: """ List all variables (form fields) for a catalog item. Args: config: Server configuration. auth_manager: Authentication manager. params: Parameters for listing catalog item variables. Returns: Response with a list of variables for the catalog item. """ # Build query parameters query_params = { "sysparm_query": f"cat_item={params.catalog_item_id}^ORDERBYorder", } if params.limit: query_params["sysparm_limit"] = params.limit if params.offset: query_params["sysparm_offset"] = params.offset # Include all fields if detailed info is requested if params.include_details: query_params["sysparm_display_value"] = "true" query_params["sysparm_exclude_reference_link"] = "false" else: query_params["sysparm_fields"] = "sys_id,name,type,question_text,order,mandatory" api_url = f"{config.instance_url}/api/now/table/item_option_new" # Make request try: response = requests.get( api_url, params=query_params, headers=auth_manager.get_headers(), timeout=config.timeout, ) response.raise_for_status() result = response.json().get("result", []) return ListCatalogItemVariablesResponse( success=True, message=f"Retrieved {len(result)} variables for catalog item", variables=result, count=len(result), ) except requests.RequestException as e: logger.error(f"Failed to list catalog item variables: {e}") return ListCatalogItemVariablesResponse( success=False, message=f"Failed to list catalog item variables: {str(e)}", )
- Pydantic model defining the input parameters for the list_catalog_item_variables tool, including catalog_item_id (required), include_details, limit, and offset.class ListCatalogItemVariablesParams(BaseModel): """Parameters for listing catalog item variables.""" catalog_item_id: str = Field(..., description="The sys_id of the catalog item") include_details: bool = Field(True, description="Whether to include detailed information about each variable") limit: Optional[int] = Field(None, description="Maximum number of variables to return") offset: Optional[int] = Field(None, description="Offset for pagination")
- Pydantic model defining the output response structure for the list_catalog_item_variables tool.class ListCatalogItemVariablesResponse(BaseModel): """Response from listing catalog item variables.""" success: bool = Field(..., description="Whether the operation was successful") message: str = Field(..., description="Message describing the result") variables: List[Dict[str, Any]] = Field([], description="List of variables") count: int = Field(0, description="Total number of variables found")
- src/servicenow_mcp/tools/__init__.py:18-22 (registration)Import statement in tools/__init__.py that exposes the list_catalog_item_variables function from catalog_variables.py for use in the MCP tools module.from servicenow_mcp.tools.catalog_variables import ( create_catalog_item_variable, list_catalog_item_variables, update_catalog_item_variable, )
- src/servicenow_mcp/tools/__init__.py:136-136 (registration)Inclusion in the __all__ list in tools/__init__.py, registering the tool function for export from the tools module."list_catalog_item_variables",