create_catalog_category
Create new service catalog categories in ServiceNow to organize and structure catalog items for users. Define title, description, parent category, icon, and order.
Instructions
Create a new service catalog category.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title of the category | |
| description | No | Description of the category | |
| parent | No | Parent category sys_id | |
| icon | No | Icon for the category | |
| active | No | Whether the category is active | |
| order | No | Order of the category |
Implementation Reference
- Main handler function that implements the create_catalog_category tool by making a POST request to ServiceNow's sc_category table API.def create_catalog_category( config: ServerConfig, auth_manager: AuthManager, params: CreateCatalogCategoryParams, ) -> CatalogResponse: """ Create a new service catalog category in ServiceNow. Args: config: Server configuration auth_manager: Authentication manager params: Parameters for creating a catalog category Returns: Response containing the result of the operation """ logger.info("Creating new service catalog category") # Build the API URL url = f"{config.instance_url}/api/now/table/sc_category" # Prepare request body body = { "title": params.title, } if params.description is not None: body["description"] = params.description if params.parent is not None: body["parent"] = params.parent if params.icon is not None: body["icon"] = params.icon if params.active is not None: body["active"] = str(params.active).lower() if params.order is not None: body["order"] = str(params.order) # Make the API request headers = auth_manager.get_headers() headers["Accept"] = "application/json" headers["Content-Type"] = "application/json" try: response = requests.post(url, headers=headers, json=body) response.raise_for_status() # Process the response result = response.json() category = result.get("result", {}) # Format the response formatted_category = { "sys_id": category.get("sys_id", ""), "title": category.get("title", ""), "description": category.get("description", ""), "parent": category.get("parent", ""), "icon": category.get("icon", ""), "active": category.get("active", ""), "order": category.get("order", ""), } return CatalogResponse( success=True, message=f"Created catalog category: {params.title}", data=formatted_category, ) except requests.exceptions.RequestException as e: logger.error(f"Error creating catalog category: {str(e)}") return CatalogResponse( success=False, message=f"Error creating catalog category: {str(e)}", data=None, )
- Pydantic BaseModel defining the input parameters and validation schema for the create_catalog_category tool.class CreateCatalogCategoryParams(BaseModel): """Parameters for creating a new service catalog category.""" title: str = Field(..., description="Title of the category") description: Optional[str] = Field(None, description="Description of the category") parent: Optional[str] = Field(None, description="Parent category sys_id") icon: Optional[str] = Field(None, description="Icon for the category") active: bool = Field(True, description="Whether the category is active") order: Optional[int] = Field(None, description="Order of the category")
- src/servicenow_mcp/utils/tool_utils.py:375-381 (registration)Tool registration entry in get_tool_definitions() dictionary, associating the tool name with its handler function, schema, description, and serialization method."create_catalog_category": ( create_catalog_category_tool, CreateCatalogCategoryParams, str, # Expects JSON string "Create a new service catalog category.", "json_dict", # Tool returns Pydantic model ),
- src/servicenow_mcp/tools/__init__.py:10-11 (registration)Import and export of the create_catalog_category function in the tools package __init__.py, making it available for use.from servicenow_mcp.tools.catalog_tools import ( create_catalog_category,