get_script_include
Retrieve a specific script include from ServiceNow by providing its ID or name. Connects to ServiceNow instances to fetch data via the API for streamlined access and integration.
Instructions
Get a specific script include from ServiceNow
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| script_include_id | Yes | Script include ID or name |
Implementation Reference
- Main handler function that executes the tool logic: fetches a specific Script Include from ServiceNow by sys_id (prefixed with 'sys_id:') or name using the REST API.def get_script_include( config: ServerConfig, auth_manager: AuthManager, params: GetScriptIncludeParams, ) -> Dict[str, Any]: """Get a specific script include from ServiceNow. Args: config: The server configuration. auth_manager: The authentication manager. params: The parameters for the request. Returns: A dictionary containing the script include data. """ try: # Build query parameters query_params = { "sysparm_display_value": "true", "sysparm_exclude_reference_link": "true", "sysparm_fields": "sys_id,name,script,description,api_name,client_callable,active,access,sys_created_on,sys_updated_on,sys_created_by,sys_updated_by" } # Determine if we're querying by sys_id or name if params.script_include_id.startswith("sys_id:"): sys_id = params.script_include_id.replace("sys_id:", "") url = f"{config.instance_url}/api/now/table/sys_script_include/{sys_id}" else: # Query by name url = f"{config.instance_url}/api/now/table/sys_script_include" query_params["sysparm_query"] = f"name={params.script_include_id}" # Make the request headers = auth_manager.get_headers() response = requests.get( url, params=query_params, headers=headers, timeout=30, ) response.raise_for_status() # Parse the response data = response.json() if "result" not in data: return { "success": False, "message": f"Script include not found: {params.script_include_id}", } # Handle both single result and list of results result = data["result"] if isinstance(result, list): if not result: return { "success": False, "message": f"Script include not found: {params.script_include_id}", } item = result[0] else: item = result script_include = { "sys_id": item.get("sys_id"), "name": item.get("name"), "script": item.get("script"), "description": item.get("description"), "api_name": item.get("api_name"), "client_callable": item.get("client_callable") == "true", "active": item.get("active") == "true", "access": item.get("access"), "created_on": item.get("sys_created_on"), "updated_on": item.get("sys_updated_on"), "created_by": item.get("sys_created_by", {}).get("display_value"), "updated_by": item.get("sys_updated_by", {}).get("display_value"), } return { "success": True, "message": f"Found script include: {item.get('name')}", "script_include": script_include, } except Exception as e: logger.error(f"Error getting script include: {e}") return { "success": False, "message": f"Error getting script include: {str(e)}", }
- Pydantic BaseModel defining the input schema for the get_script_include tool: requires script_include_id (str).class GetScriptIncludeParams(BaseModel): """Parameters for getting a script include.""" script_include_id: str = Field(..., description="Script include ID or name")
- src/servicenow_mcp/utils/tool_utils.py:632-638 (registration)Tool registration in the central tool_definitions dictionary used by the MCP server to expose the tool."get_script_include": ( get_script_include_tool, GetScriptIncludeParams, Dict[str, Any], # Expects dict "Get a specific script include from ServiceNow", "raw_dict", # Tool returns raw dict ),
- src/servicenow_mcp/tools/__init__.py:60-66 (registration)Imports and exposes the get_script_include function in the tools package __init__ for easy access.from servicenow_mcp.tools.script_include_tools import ( create_script_include, delete_script_include, get_script_include, list_script_includes, update_script_include, )