ServiceNow-MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WRITE_ENABLED | No | Set to 'true' to enable write operations (create/update/delete) | false |
| MCP_TOOL_PACKAGE | No | Tool package to use (e.g., 'full', 'service_desk', etc.) | |
| SCRIPTING_ENABLED | No | Set to 'true' to enable script execution | false |
| CMDB_WRITE_ENABLED | No | Set to 'true' to enable CMDB write operations | false |
| NOW_ASSIST_ENABLED | No | Set to 'true' to enable Now Assist AI features | false |
| SN_INSTANCES_CONFIG | No | Path to instances JSON file for multi-instance support | |
| SERVICENOW_INSTANCE_URL | No | The URL of your ServiceNow instance (e.g., https://dev12345.service-now.com) | |
| SERVICENOW_OAUTH_PASSWORD | No | The password for Password Grant authentication (required if using password grant) | |
| SERVICENOW_OAUTH_USERNAME | No | The username for Password Grant authentication (required if using password grant) | |
| SERVICENOW_OAUTH_CLIENT_ID | No | The OAuth client ID from the Application Registry | |
| SERVICENOW_OAUTH_CLIENT_SECRET | No | The OAuth client secret from the Application Registry |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| query_recordsB | Query ServiceNow records with filtering, field selection, pagination, and sorting |
| get_table_schemaA | Get the structure and field information for a ServiceNow table |
| get_recordA | Retrieve complete details of a specific record by sys_id |
| get_userB | Look up user details by email or username |
| get_groupA | Find assignment group details by name or sys_id |
| search_cmdb_ciB | Search for configuration items (CIs) in the CMDB |
| get_cmdb_ciB | Get complete information about a specific configuration item |
| list_relationshipsA | Show parent and child relationships for a CI |
| list_discovery_schedulesA | List discovery schedules and their run status |
| list_mid_serversA | List MID servers and verify they are healthy |
| list_active_eventsA | List Event Management events (em_event), newest first. Defaults to unprocessed events (state Ready or Error); pass state "all" for every event. For the alerts operators act on, use list_alerts. |
| cmdb_health_dashboardA | Get CMDB data quality metrics (completeness of server and network CI data) |
| service_mapping_summaryA | View service dependencies and related CIs for impact analysis |
| natural_language_searchB | Search ServiceNow using plain English (experimental) |
| natural_language_updateA | Update a record using natural language (experimental, requires WRITE_ENABLED=true) |
| list_instancesA | List all configured ServiceNow instances (multi-instance / multi-customer support) |
| switch_instanceA | Switch the active ServiceNow instance for this session |
| get_current_instanceA | Get the currently active ServiceNow instance name and URL |
| create_ci_relationshipC | [CMDB Write] Create a relationship between two CMDB Configuration Items |
| cmdb_impact_analysisB | Analyze the downstream impact of a Configuration Item change or outage |
| run_discovery_scanB | [CMDB Write] Trigger a ServiceNow Discovery scan for network/infrastructure |
| describe_tableA | Return full field schema for a ServiceNow table using sys_dictionary — includes field types, reference targets, mandatory/unique flags, and parent table. More accurate than get_table_schema for empty tables or custom tables. |
| check_table_accessA | Diagnose the connected service account's effective access to one or more tables BEFORE attempting operations. Returns per-table readable/writable flags plus a status that distinguishes WHY access failed: "not_installed" (Invalid table — the table does not exist, e.g. plugin/app not installed), "no_access" (403 — table exists but ACL denies this account), "empty" (readable but zero rows — truly empty or ACL row filtering), or "accessible". Also returns the account's current user and assigned roles. Read is probed with a sysparm_limit=1 GET; write is probed non-destructively with an empty PATCH to a reserved all-zero sys_id (404=writable, 403=denied) — no record is ever created or modified. Useful to check whether a plugin is installed and to avoid "User Not Authorized" retries. |
| get_integration_healthA | Report the health of Vulnerability Response data integration runs (sn_vul_integration_run) over a recent window. Surfaces failed runs and — critically — silent stalls where no runs occurred at all (e.g. an NVD/Qualys feed quietly failing with 503/429). Returns success/failure counts, the most recent success and failure timestamps, recent run details, and actionable alerts. |
| create_incidentA | Create a new incident record (requires WRITE_ENABLED=true) |
| get_incidentA | Get full details of an incident by number (e.g. INC0012345) or sys_id |
| update_incidentA | Update fields on an existing incident (requires WRITE_ENABLED=true) |
| resolve_incidentA | Resolve an incident with resolution code and notes (requires WRITE_ENABLED=true) |
| close_incidentA | Close a resolved incident (requires WRITE_ENABLED=true) |
| add_work_noteA | Add an internal work note to any ITSM record (requires WRITE_ENABLED=true) |
| add_commentA | Add a customer-visible comment to any ITSM record (requires WRITE_ENABLED=true) |
| create_problemB | Create a new problem record (requires WRITE_ENABLED=true) |
| get_problemA | Get full details of a problem by number (PRB...) or sys_id |
| update_problemB | Update fields on an existing problem (requires WRITE_ENABLED=true) |
| resolve_problemA | Resolve a problem with root cause and resolution notes (requires WRITE_ENABLED=true) |
| create_change_requestB | Create a new change request (requires WRITE_ENABLED=true) |
| get_change_requestA | Get full details of a change request by number (CHG...) or sys_id |
| update_change_requestB | Update fields on a change request (requires WRITE_ENABLED=true) |
| list_change_requestsA | List change requests with optional filtering by state or query |
| submit_change_for_approvalA | Move a change request to "Requested" state for approval (requires WRITE_ENABLED=true) |
| close_change_requestA | Close a change request with close code and notes (requires WRITE_ENABLED=true) |
| schedule_cab_meetingC | [Write] Schedule a Change Advisory Board (CAB) meeting |
| get_taskA | Get details of any task record by number or sys_id |
| update_taskB | Update fields on a task record (requires WRITE_ENABLED=true) |
| list_my_tasksA | List tasks assigned to the currently configured user |
| complete_taskA | Mark a task as complete (requires WRITE_ENABLED=true) |
| list_knowledge_basesB | List all knowledge bases available in the instance |
| search_knowledgeA | Search knowledge base articles by keyword |
| get_knowledge_articleA | Get the full content of a knowledge article by number (KB...) or sys_id |
| create_knowledge_articleB | Create a new knowledge article (requires WRITE_ENABLED=true) |
| update_knowledge_articleB | Update a knowledge article (requires WRITE_ENABLED=true) |
| publish_knowledge_articleA | Publish a draft knowledge article (requires WRITE_ENABLED=true) |
| retire_knowledge_articleA | [Write] Retire a knowledge article (mark as outdated) |
| list_catalog_itemsC | List available service catalog items |
| search_catalogA | Search the service catalog for items matching a keyword |
| get_catalog_itemA | Get full details of a catalog item including its variables |
| create_catalog_itemA | Create a new service catalog item (requires WRITE_ENABLED=true) |
| update_catalog_itemB | Update an existing catalog item (requires WRITE_ENABLED=true) |
| order_catalog_itemA | Order a service catalog item (requires WRITE_ENABLED=true) |
| create_approval_ruleA | Create an approval rule that automatically generates approval requests when a record matches given conditions (requires WRITE_ENABLED=true). Uses the sysapproval_rule table. |
| get_my_approvalsA | List approvals pending for the currently configured user |
| list_approvalsA | List approval requests with optional filters |
| approve_requestA | Approve a pending approval request (requires WRITE_ENABLED=true) |
| reject_requestA | Reject a pending approval request (requires WRITE_ENABLED=true) |
| get_sla_detailsA | Get SLA breach status for a specific task or incident |
| list_active_slasA | List active SLA records with optional filters |
| create_catalog_variableA | [Write] Add a form variable to a service catalog item |
| create_catalog_ui_policyA | [Write] Create a UI policy for a catalog item form |
| list_requestsB | List service catalog requests (sc_request). Supports filtering by state and requested_for user. |
| get_requestA | Get a service catalog request (sc_request) by number or sys_id, including its requested items |
| list_request_itemsB | List requested items (sc_req_item) for a given request or catalog item |
| get_request_itemA | Get a requested item (sc_req_item) by number or sys_id, including its fulfillment tasks |
| cancel_requestA | Cancel an open service catalog request (requires WRITE_ENABLED=true) |
| update_request_itemA | Update a requested item — stage, assignment, or work notes (requires WRITE_ENABLED=true) |
| list_usersB | List users with optional search filter |
| create_userA | Create a new user account (requires WRITE_ENABLED=true) |
| update_userB | Update a user account (requires WRITE_ENABLED=true) |
| list_groupsA | List groups with optional search filter |
| create_groupA | Create a new assignment group (requires WRITE_ENABLED=true) |
| update_groupA | Update a group (requires WRITE_ENABLED=true) |
| add_user_to_groupA | Add a user to a group (requires WRITE_ENABLED=true) |
| remove_user_from_groupA | Remove a user from a group (requires WRITE_ENABLED=true) |
| list_reportsA | List saved reports in the instance (latest release: /api/now/reporting) |
| get_reportA | Get the definition and metadata of a saved report |
| run_aggregate_queryB | Run a grouped aggregate (COUNT, SUM, AVG) query on any table (latest release: /api/now/stats/{table}) |
| trend_queryB | Get time-bucketed trend data for a table (useful for monthly/weekly trend charts) |
| get_performance_analyticsB | Get Performance Analytics widget data (requires PA plugin; latest release: /api/now/pa/widget/{sys_id}) |
| export_report_dataB | Export raw table data as structured JSON for use in external reports |
| get_sys_logA | Retrieve system log entries for debugging or auditing |
| list_scheduled_jobsA | List scheduled jobs and their run schedules |
| get_scheduled_jobA | Get full details of a scheduled job by sys_id or name |
| create_scheduled_jobA | Create a new scheduled script execution job (requires WRITE_ENABLED=true) |
| update_scheduled_jobB | Update a scheduled job (requires WRITE_ENABLED=true) |
| trigger_scheduled_jobA | Immediately execute a scheduled job on-demand (requires WRITE_ENABLED=true) |
| create_reportA | Create a new saved report on any table (requires WRITE_ENABLED=true) |
| update_reportB | Update an existing saved report definition (requires WRITE_ENABLED=true) |
| list_job_run_historyA | Read scheduler history aggregates by job classification and time window (sys_scheduler_job_history), not individual job success/failure logs. job_sys_id and status filters are unsupported. |
| create_scheduled_reportB | [Write] Schedule a report for recurring email delivery |
| create_kpiC | [Write] Create a Key Performance Indicator from ServiceNow data |
| list_atf_suitesA | List ATF test suites in the instance |
| get_atf_suiteA | Get details of a test suite including test count |
| run_atf_suiteA | Execute an ATF test suite (requires ATF_ENABLED=true) |
| list_atf_testsA | List ATF test cases, optionally filtered by suite |
| get_atf_testA | Get details of a specific test case |
| run_atf_testA | Execute a single ATF test (requires ATF_ENABLED=true) |
| get_atf_suite_resultB | Get the results of a test suite run |
| list_atf_test_resultsA | List individual test results within a suite run |
| get_atf_failure_insightA | Get ATF Failure Insight data — metadata changes between last successful and failed run (role changes, field value changes) |
| nlq_queryB | Ask a natural language question and get structured ServiceNow data (ServiceNow NLQ API) |
| ai_searchA | Semantic AI-powered search across KB, catalog, incidents (ServiceNow AI Search) |
| generate_summaryB | Generate an AI summary of any record using Now Assist (latest release: sn_assist/skill/summarize) |
| suggest_resolutionA | Get AI-powered resolution suggestion for an incident based on similar past incidents |
| categorize_incidentA | Use Predictive Intelligence to predict category, assignment group, and priority (latest release: LightGBM algorithm) |
| get_virtual_agent_topicsB | List Virtual Agent topics available in the instance (latest release: streaming VA API) |
| trigger_agentic_playbookB | Invoke an Agentic Playbook — context-aware AI agents that complete tasks autonomously |
| get_ms_copilot_topicsA | List VA topics exposed to Microsoft Copilot 365 via Custom Engine Agent integration |
| generate_work_notesB | Generate AI-drafted work notes for a record based on its current context |
| get_pi_modelsA | List available Predictive Intelligence solutions (classification/similarity models) |
| list_business_rulesA | List business rules (requires SCRIPTING_ENABLED=true) |
| get_business_ruleA | Get full details and script body of a business rule (requires SCRIPTING_ENABLED=true) |
| create_business_ruleA | Create a new business rule (requires SCRIPTING_ENABLED=true). ServiceNow supports ES2021 async/await in scripts. |
| update_business_ruleB | Update a business rule (requires SCRIPTING_ENABLED=true) |
| list_script_includesA | List script includes (requires SCRIPTING_ENABLED=true) |
| get_script_includeA | Get full script body of a script include (requires SCRIPTING_ENABLED=true) |
| create_script_includeA | Create a new script include (requires SCRIPTING_ENABLED=true) |
| update_script_includeA | Update a script include (requires SCRIPTING_ENABLED=true) |
| list_client_scriptsA | List client scripts (requires SCRIPTING_ENABLED=true) |
| get_client_scriptA | Get full details and script body of a client script (requires SCRIPTING_ENABLED=true) |
| list_changesetsA | List update sets (changesets) (requires SCRIPTING_ENABLED=true) |
| get_changesetA | Get details of an update set (requires SCRIPTING_ENABLED=true) |
| commit_changesetA | Commit an update set (requires SCRIPTING_ENABLED=true) |
| publish_changesetA | Publish/export an update set to XML for deployment (requires SCRIPTING_ENABLED=true) |
| create_client_scriptA | Create a new client script (onLoad, onChange, onSubmit, onCellEdit) (requires SCRIPTING_ENABLED=true) |
| update_client_scriptB | Update an existing client script (requires SCRIPTING_ENABLED=true) |
| list_ui_policiesA | List UI Policies for a table (field visibility, mandatory, read-only rules) (requires SCRIPTING_ENABLED=true) |
| get_ui_policyA | Get full details and conditions of a UI Policy (requires SCRIPTING_ENABLED=true) |
| create_ui_policyA | Create a new UI Policy to control field behavior dynamically (requires SCRIPTING_ENABLED=true) |
| list_ui_actionsA | List UI Actions (buttons, context menus, related links) for a table (requires SCRIPTING_ENABLED=true) |
| get_ui_actionA | Get full details and script of a UI Action (requires SCRIPTING_ENABLED=true) |
| create_ui_actionA | Create a new UI Action (button or link) on a form (requires SCRIPTING_ENABLED=true) |
| update_ui_actionB | Update an existing UI Action (requires SCRIPTING_ENABLED=true) |
| list_aclsA | List Access Control rules (ACLs) — who can read/write/create/delete records (requires SCRIPTING_ENABLED=true) |
| get_aclA | Get full details of an ACL rule including its script and role requirements (requires SCRIPTING_ENABLED=true) |
| create_aclA | Create a new ACL rule to control access to a table or field (requires SCRIPTING_ENABLED=true) |
| update_aclA | Update an existing ACL rule (requires SCRIPTING_ENABLED=true) |
| create_storyA | Create a new agile story/user story (requires WRITE_ENABLED=true) |
| update_storyB | Update an agile story (requires WRITE_ENABLED=true) |
| list_storiesB | List agile stories with optional sprint or state filter |
| create_epicB | Create a new epic (requires WRITE_ENABLED=true) |
| update_epicA | Update an epic (requires WRITE_ENABLED=true) |
| list_epicsA | List epics with optional product, theme or state filter |
| create_scrum_taskA | Create a scrum task (sub-task of a story) (requires WRITE_ENABLED=true) |
| update_scrum_taskB | Update a scrum task (requires WRITE_ENABLED=true) |
| list_scrum_tasksA | List scrum tasks, optionally filtered by story |
| create_hr_caseB | Create a new HR Service Delivery case (requires WRITE_ENABLED=true) |
| get_hr_caseA | Get full details of an HR case by number (e.g. HRCS0001234) or sys_id |
| update_hr_caseB | Update fields on an existing HR case (requires WRITE_ENABLED=true) |
| list_hr_casesA | List HR cases with optional filters (status, subject person, service) |
| close_hr_caseA | Close an HR case with resolution notes (requires WRITE_ENABLED=true) |
| list_hr_servicesA | List available HR services (Onboarding, Offboarding, Benefits, Payroll, etc.) |
| get_hr_serviceA | Get details of a specific HR service including its tasks and SLAs |
| get_hr_profileA | Get the HR profile for a user (employment details, department, manager) |
| update_hr_profileA | Update HR profile fields for a user (requires WRITE_ENABLED=true) |
| list_hr_tasksA | List HR tasks associated with an HR case |
| create_hr_taskA | Create a task within an HR case (requires WRITE_ENABLED=true) |
| get_hr_case_activityA | Get the full activity log and journal entries for an HR case |
| create_onboarding_caseA | Create an employee onboarding case with all standard tasks. [Write] |
| create_offboarding_caseB | Create an employee offboarding case with exit tasks. [Write] |
| get_hr_lifecycle_eventsA | Get HR lifecycle events for an employee (promotions, transfers, leaves) |
| list_hr_document_templatesA | List available HR document templates (offer letters, contracts, policies) |
| create_csm_caseA | Create a new Customer Service case (requires WRITE_ENABLED=true) |
| get_csm_caseA | Get full details of a CSM case by number (e.g. CS0001234) or sys_id |
| update_csm_caseA | Update fields on an existing CSM case (requires WRITE_ENABLED=true) |
| list_csm_casesA | List CSM cases with optional filters (account, contact, state, priority) |
| close_csm_caseA | Close a CSM case with resolution details (requires WRITE_ENABLED=true) |
| get_csm_accountA | Get details of a customer account including contacts and open cases count |
| list_csm_accountsB | List customer accounts with optional search filter |
| get_csm_contactA | Get details of a customer contact (name, account, phone, email) |
| list_csm_contactsA | List contacts for an account or search across all contacts |
| get_csm_case_slaA | Get SLA details and remaining time for a CSM case |
| list_csm_productsA | List products and services available in the CSM catalog |
| create_security_incidentA | Create a Security Operations incident (requires WRITE_ENABLED=true) |
| get_security_incidentA | Get full details of a security incident by number or sys_id |
| update_security_incidentB | Update a security incident record (requires WRITE_ENABLED=true) |
| list_security_incidentsB | List security incidents with filters (severity, state, category) |
| list_vulnerabilitiesA | List vulnerability entries from the Vulnerability Response module |
| get_vulnerabilityA | Get details of a specific vulnerability entry including CVSS score and affected CIs |
| update_vulnerabilityA | Update a vulnerability entry (state, risk acceptance notes, remediation date) (requires WRITE_ENABLED=true) |
| get_threat_intelligenceA | Query threat intelligence data — IOCs, threat actors, and campaigns |
| list_security_playbooksA | List Security Incident Response playbooks. These are Process Automation Designer definitions (sys_pd_process_definition) shipped in the sn_si_aw scope, e.g. the Malware / Phishing / Failed Login templates. |
| run_security_playbookA | Start a Security Incident Response playbook (a Process Automation Designer definition in the sn_si_aw scope) against a security incident, the same way the SIR Analyst Workspace does: sn_playbook.PlaybookExperience.triggerPlaybook(). Schedules a one-time server script, so it requires SCRIPTING_ENABLED=true. Skips if that playbook is already queued or in progress on the incident. Set wait_seconds to poll for the resulting execution (sys_pd_context). [Scripting] |
| get_security_dashboardA | Get security posture dashboard — open incidents by severity, vulnerability counts, mean time to resolve |
| scan_vulnerabilitiesA | Create a Vulnerability Response scan (sn_vul_scan) for a set of CIs or Vulnerable Items and hand it to the active scanner integration, the same way the "Initiate Scan" / "Rescan" actions do. Needs an active scanner (sn_vul_scanner, e.g. Qualys/Tenable/Rapid7) unless initiate=false, which leaves a Draft scan to launch from the UI. Runs as a server script in a run-once job (SCRIPTING_ENABLED) because the scan state and target links are not writable through the Table API. [Write] |
| list_flowsA | List Flow Designer flows with optional filter by name, category, or active status |
| get_flowA | Get full details of a Flow Designer flow including its actions and trigger |
| trigger_flowA | Trigger a Flow Designer flow with optional input parameters (requires WRITE_ENABLED=true) |
| get_flow_executionA | Get the status and details of a specific flow execution |
| list_flow_executionsA | List recent executions of a flow with status (completed, error, running) |
| list_subflowsA | List available subflows that can be reused across flows |
| get_subflowA | Get full details of a subflow including its inputs, outputs, and actions |
| list_action_instancesB | List reusable Flow Designer action instances available in the environment |
| get_process_automationC | Get details of a Process Automation Designer playbook or process |
| list_process_automationsC | List Process Automation Designer playbooks and processes |
| create_flowB | Create a new Flow Designer flow. [Write] |
| create_subflowB | Create a new reusable subflow. [Write] |
| create_flow_actionA | Create a custom Flow Designer action. [Scripting] |
| publish_flowA | Set active=true on a flow or subflow after verifying its type. This metadata update does not compile or perform the Flow Designer publish lifecycle. [Write] |
| test_flowB | Execute a flow in test mode with sample inputs. [Write] |
| get_flow_error_logA | Get detailed error logs for failed flow executions |
| list_portalsA | List all Service Portal configurations available in the instance |
| create_portalA | Create a new Service Portal configuration (requires WRITE_ENABLED=true) |
| create_portal_pageA | Create a new page inside a Service Portal (requires WRITE_ENABLED=true) |
| get_portalA | Get full configuration details of a Service Portal by sys_id or URL suffix |
| list_portal_pagesA | List pages that belong to a Service Portal |
| get_portal_pageB | Get details of a specific Service Portal page including its layout |
| list_portal_widgetsA | List Service Portal widgets with optional search by name or category |
| get_portal_widgetA | Get full source code (HTML, CSS, client/server scripts) of a Service Portal widget |
| create_portal_widgetA | Create a new Service Portal widget with template, CSS, and scripts (requires WRITE_ENABLED=true and SCRIPTING_ENABLED=true) |
| update_portal_widgetA | Update an existing Service Portal widget's source code (requires WRITE_ENABLED=true and SCRIPTING_ENABLED=true, including metadata-only updates) |
| list_widget_instancesB | List instances of a specific widget placed on portal pages |
| list_ux_appsA | List Next Experience (UI Builder) applications |
| get_ux_appA | Get configuration details of a Next Experience application |
| list_ux_pagesB | List pages within a Next Experience (UI Builder) application |
| list_portal_themesA | List Service Portal themes (color palettes, CSS variables) |
| get_portal_themeA | Get full details of a Service Portal theme including CSS variables |
| list_rest_messagesA | List outbound REST Message configurations (integrations with external APIs) |
| get_rest_messageA | Get full configuration of an outbound REST Message including its endpoints |
| list_rest_message_functionsA | List HTTP methods (functions) defined within a REST Message |
| create_rest_messageA | Create a new outbound REST Message definition (requires WRITE_ENABLED=true) |
| list_transform_mapsB | List Transform Maps used for importing data into ServiceNow tables |
| get_transform_mapA | Get details of a Transform Map including its field mappings |
| run_transform_mapA | Request a Transform Map run on an Import Set by creating a sys_import_set_run record; whether this starts the transform is not verified (requires WRITE_ENABLED=true; also SCRIPTING_ENABLED=true when the map runs scripts or targets a protected platform table such as sys_*/sp_*) |
| list_transform_field_mapsA | List field-level mappings within a Transform Map |
| list_import_setsB | List Import Sets with optional filter by state or staging table |
| get_import_setA | Get details of a specific Import Set including row count and transform status |
| create_import_set_rowA | Insert a row into an Import Set staging table (a table extending sys_import_set_row) for later transformation (requires WRITE_ENABLED=true) |
| import_excel_to_import_setA | Upload and parse one .xlsx worksheet, create an Import Set, insert its staging rows, and optionally request a Transform Map run (transform start is not verified). Requires WRITE_ENABLED=true. The original workbook is attached to the Import Set for auditability; formulas and sys_* columns are rejected. |
| list_data_sourcesA | List Import Set data source definitions (file/JDBC/REST loaders) |
| list_event_registryA | List registered event definitions in the ServiceNow event registry |
| get_event_registry_entryA | Get details of a specific registered event definition |
| register_eventA | Register a new custom event in the event registry (requires SCRIPTING_ENABLED=true) |
| fire_eventA | Fire a custom ServiceNow event for a specific record (requires WRITE_ENABLED=true) |
| list_event_logB | List recent event log entries (fired events and their processing status) |
| list_oauth_applicationsA | List OAuth application registry entries (client applications that can authenticate) |
| list_credential_aliasesA | List connection and credential aliases used by integrations |
| list_soap_messagesA | List outbound SOAP Message configurations (sys_soap_message). Endpoints live on each function, not the message. |
| get_soap_messageA | Get full configuration of a SOAP Message including its functions/operations |
| list_soap_message_functionsA | List SOAP Message Functions (operations) for a given SOAP Message |
| create_soap_messageA | Create a new outbound SOAP Message definition in sys_soap_message (requires WRITE_ENABLED=true). The endpoint URL is set per function via create_soap_message_function. |
| create_soap_message_functionA | Add a SOAP function (operation) to an existing SOAP Message in sys_soap_message_function (requires WRITE_ENABLED=true) |
| list_notificationsA | List email notification definitions (sysevent_email_action) |
| get_notificationA | Get full details of an email notification definition including template and conditions |
| create_notificationA | Create a new email notification definition (requires WRITE_ENABLED=true) |
| update_notificationA | Update an existing email notification (requires WRITE_ENABLED=true) |
| list_email_logsA | List outbound email log entries to track sent/failed emails |
| get_email_logA | Get full details of an email log entry including body and headers |
| list_attachmentsC | List attachments associated with a specific record |
| get_attachment_metadataA | Get metadata (name, type, size) of a specific attachment by its sys_id |
| delete_attachmentA | Delete an attachment from a record (requires WRITE_ENABLED=true) |
| upload_attachmentA | Upload a base64-encoded attachment to a ServiceNow record (requires WRITE_ENABLED=true). Useful for adding files, screenshots, or documents to incidents, changes, etc. |
| list_email_templatesC | List email notification templates used by notifications |
| list_notification_subscriptionsA | List user subscriptions to notifications (who has opted in/out) |
| send_emergency_broadcastC | [Write] Send emergency broadcast notification to users or groups |
| schedule_notificationC | [Write] Schedule a notification for future delivery |
| list_pa_indicatorsA | List Performance Analytics (PA) indicators (KPIs) available in the instance |
| get_pa_indicatorA | Get details of a specific Performance Analytics indicator including its formula |
| get_pa_scorecardA | Get current scorecard data for a PA indicator — returns current value, target, trend direction |
| get_pa_time_seriesB | Get historical time-series data for a PA indicator to identify trends |
| list_pa_breakdownsA | List PA breakdowns (dimensions) available for segmenting indicator data |
| list_pa_dashboardsB | List Performance Analytics dashboards |
| get_pa_dashboardA | Get details of a PA dashboard including its widgets/tabs |
| list_homepagesA | List homepage dashboards (CMS content pages used as homepages) |
| list_pa_jobsC | List Performance Analytics data collection jobs and their schedules |
| get_pa_jobB | Get details of a Performance Analytics collection job |
| create_dashboardA | Create a new Performance Analytics dashboard (requires WRITE_ENABLED=true) |
| update_dashboardB | Update an existing PA dashboard (requires WRITE_ENABLED=true) |
| check_table_completenessB | Analyze data quality and field completeness for a ServiceNow table — returns percentage of non-empty values per field |
| get_table_record_countA | Get total record count for a ServiceNow table with optional filters |
| compare_record_countsB | Compare record counts across multiple ServiceNow tables or time periods — useful for capacity planning |
| get_instance_diagnosticsA | Get live instance performance diagnostics: JVM memory, semaphore pools (concurrency/queue depth), and cluster node status — the data behind the Performance homepage (/stats.do) |
| get_performance_historyA | Get historical transaction performance as a time series (transaction count, avg/max response time, SQL time, business rule time per bucket) from the transaction log — chartable data for instance performance trends, replacing the legacy Performance dashboard graphs |
| get_system_propertyA | Get a ServiceNow system property value and metadata by name |
| set_system_propertyB | Create or update a ServiceNow system property value. [Write] |
| list_system_propertiesC | List system properties with optional filtering |
| delete_system_propertyA | Delete a system property by name. [Write] |
| search_system_propertiesA | Search system properties by name, value, or description |
| bulk_get_propertiesB | Retrieve multiple system property values in a single call |
| bulk_set_propertiesA | Create or update multiple system properties in a single operation. [Write] |
| export_propertiesA | Export system properties matching a query to a JSON object (useful for environment snapshots) |
| import_propertiesA | Import (create or update) system properties from a JSON object. [Write] |
| validate_propertyA | Validate a property value against its declared type constraints without saving |
| list_property_categoriesA | List all unique property categories with their record counts |
| get_property_historyA | Get audit history of changes to a system property |
| get_current_update_setA | Get the currently active Update Set for the session |
| list_update_setsB | List Update Sets by state (in progress, complete, ignore) |
| create_update_setA | Create a new Update Set and optionally switch to it. [Scripting] |
| switch_update_setA | Switch the active Update Set context to a specified Update Set. [Scripting] |
| complete_update_setC | Mark an Update Set as complete (ready for migration). [Scripting] |
| preview_update_setB | Preview all changes contained in an Update Set |
| scan_update_set_scaB | Read-only SCA scan for an Update Set. Inventories script-bearing changes and returns normalized, exact-version component metadata with hashed evidence only; source code is never returned. |
| export_update_setB | Get the XML export payload for an Update Set (as used in migration). [Scripting] |
| ensure_active_update_setA | Ensure an active Update Set exists; create one automatically if none is in progress. [Scripting] |
| create_va_topicC | Create a new Virtual Agent conversation topic. [Write] |
| update_va_topicC | Update a Virtual Agent topic properties. [Write] |
| get_va_topicB | Get Virtual Agent topic details including intent and trigger phrases |
| list_va_topics_fullB | List all Virtual Agent topics with category and status details |
| get_va_conversationA | Get conversation history for a Virtual Agent session |
| list_va_conversationsA | List recent Virtual Agent conversations |
| list_va_categoriesA | List Virtual Agent topic categories |
| list_assetsB | List IT assets with optional filtering by state, class, or assigned user |
| get_assetA | Get full details of an IT asset including financial and lifecycle data |
| create_assetB | Create a new IT asset record. [Write] |
| update_assetC | Update an IT asset record. [Write] |
| retire_assetA | Retire an IT asset (mark as disposed/retired). [Write] |
| list_software_licensesA | List software license records with compliance status |
| get_license_complianceA | Get license compliance summary — purchased vs. installed vs. in use counts |
| list_asset_contractsB | List asset maintenance and support contracts |
| track_asset_lifecycleC | Track asset lifecycle events and stage transitions |
| get_license_optimizationB | Analyze software license usage and recommend optimizations |
| list_software_installsB | List discovered software installations with publisher, version, and license status |
| get_software_installB | Get full details of a discovered software installation |
| list_software_productsC | List the normalized software product catalog (publisher, product type) |
| list_license_positionsA | List SAM Pro effective license position (ELP) records — owned vs. used rights per product |
| get_license_position_summaryA | Aggregate license-compliance dashboard: over-licensed vs. under-licensed counts, total potential savings, total true-up cost |
| list_software_discovery_modelsC | List normalized software discovery models (raw discovery output before/after normalization) |
| list_software_modelsB | List software models — specific version/edition entitlement units of a product (license type, EOL date, install count) |
| get_software_modelA | Get full details of a software model (rights, consumption rules, EOL date, lifecycle stage) |
| list_software_lifecycle_reportsB | List software lifecycle reports — current/upcoming EOL/EOS phase, install count, and CVE exposure per product |
| get_software_lifecycle_reportA | Get full lifecycle report details for one product (all phase dates, CVE breakdown, owners) |
| list_software_lifecycle_entriesB | List software lifecycle master data — publisher-provided phase entries (GA/EOL/EOS/EOES) per product/version, with risk rating |
| list_discovery_runsA | List Discovery run history (discovery_status) — state, duration, and progress per scan, newest first |
| get_discovery_runB | Get one Discovery run by sys_id or number (DIS...), including full status fields |
| list_discovered_devicesA | List per-device Discovery results (discovery_device_history) — classification, resulting CI, and issue count. Use to answer "why was this server not discovered?" |
| list_discovery_logsA | List Discovery log entries (discovery_log) — sensor/probe messages with result codes, newest first |
| list_discovery_rangesA | List Discovery IP ranges (discovery_range_item) — which IP ranges/networks are scanned |
| list_discovery_credentialsA | List Discovery credential METADATA (name, type, order, MID scope) — secret fields are never returned |
| list_mid_server_issuesB | List MID Server issues (ecc_agent_issue) — detected problems with source, occurrence count, and last-detected time |
| list_mid_extension_contextsA | List MID Server extension contexts (ecc_agent_ext_context) — e.g. MID Web Server, ACC Websocket Endpoint — with status and error_message. Key for troubleshooting ACC listener setup: a missing "ACC Websocket Endpoint" context means agents get handshake 404s. |
| list_ecc_queueA | Inspect the ECC Queue (ecc_queue) — the job/result bus between the instance and MID Servers. Useful for debugging Discovery, integrations, and ACC data flow. Payload is excluded by default (can be very large); set include_payload to fetch it. CAUTION: payloads can contain sensitive data (command output, host details, credential references) — request them only when needed and handle the output accordingly. |
| get_mid_server_healthA | MID Server health summary — status, version, last refresh, open issues, extension contexts (web server / ACC listener), and output-queue backlog sample |
| list_acc_agentsA | List ACC (Agent Client Collector) agents and their status. Requires the ACC plugin |
| list_acc_policiesA | List ACC monitoring/check policies. Requires the ACC plugin |
| list_acc_checksB | List ACC check definitions. Requires the ACC plugin |
| list_alertsA | List Event Management alerts (em_alert) with operational filters. Defaults to alerts that are not Closed, most severe first. |
| get_alertA | Get one alert by number or sys_id, with its recent history (em_alert_history) and related tasks (incident/change/problem links). |
| get_alert_summaryA | Operational overview of open alerts: counts by severity, by state, acknowledged vs not, and the top sources. Read-only. |
| acknowledge_alertA | Acknowledge an alert (sets acknowledged=true, exactly like the "Acknowledge" list action), optionally with a work note. Already-acknowledged alerts are reported, not re-written. [Write] |
| close_alertA | Close an alert (state=Closed, like the "Close" action; also acknowledges it when evt_mgmt.alert_ack_on_close is true), optionally with a work note. Refuses alerts that are already Closed. [Write] |
| update_alertA | Assign or annotate an alert. Allowed fields: assigned_to, assignment_group, work_notes, maintenance, short_description, description, kb. Use acknowledge_alert / close_alert for state changes. [Write] |
| list_devops_pipelinesB | List DevOps pipeline configurations registered in ServiceNow |
| get_devops_pipelineA | Get details of a specific DevOps pipeline |
| list_deploymentsB | List recent application deployments tracked in ServiceNow |
| get_deploymentA | Get details and status of a specific deployment |
| create_devops_changeA | Create a change request linked to a DevOps deployment for change governance. [Write] |
| track_deploymentA | Record a deployment event in ServiceNow for audit and velocity tracking. [Write] |
| get_devops_insightsA | Get deployment frequency, failure rate, and lead time metrics for a pipeline |
| list_scoped_appsA | List scoped applications (custom apps) installed in the instance |
| get_scoped_appA | Get full details of a scoped application by sys_id or scope name |
| create_scoped_appA | Create a new scoped application in App Studio (requires WRITE_ENABLED=true). The scope prefix must be unique and follow the pattern x__. |
| update_scoped_appB | Update an existing scoped application (requires WRITE_ENABLED=true) |
| ml_predict_change_riskA | Predict the risk level of a change request using historical ML analysis |
| ml_detect_anomaliesB | Run anomaly detection on operational metrics (alert volume, incident trends, etc.) |
| ml_forecast_incidentsA | Forecast incident volume for the next N days based on historical trends |
| ml_train_incident_classifierB | Trigger training of the incident classification ML solution. [Write] |
| ml_train_change_riskA | Trigger training of the change risk prediction ML model. [Write] |
| ml_train_anomaly_detectorB | Trigger training of an anomaly detection model for a specific table/field. [Write] |
| ml_evaluate_modelA | Get accuracy, training status, and metrics for a trained ML solution |
| ml_model_training_historyA | Get training run history and accuracy trends for an ML solution over time |
| ml_virtual_agent_nluA | Analyse Virtual Agent NLU performance — conversation completion rates and fallback metrics |
| ml_process_optimizationB | Identify process bottlenecks using analysis of task durations and reassignment patterns |
| list_uib_pagesA | List UI Builder pages and their route configurations |
| get_uib_pageA | Get details of a specific UI Builder page including layout and child elements |
| create_uib_pageA | Create a new UI Builder page with route registration. [Write] |
| update_uib_pageC | Update an existing UI Builder page. [Write] |
| delete_uib_pageB | Delete a UI Builder page. [Write] |
| list_uib_componentsB | List available UI Builder components (macroponents) in the instance |
| create_uib_componentB | Create a custom UI Builder component (macroponent). [Scripting] |
| update_uib_componentC | Update a UI Builder component. [Scripting] |
| list_uib_data_brokersA | List UI Builder data brokers (data sources for pages) |
| create_uib_data_brokerB | Create a UI Builder data broker to feed data to a page. [Scripting] |
| list_workspacesA | List legacy Agent Workspace definitions (sys_aw_master_config), not Configurable Workspace UX applications |
| get_workspaceB | Get a legacy Agent Workspace definition and up to 50 of its sys_aw_list configurations |
| create_workspaceA | Create inactive legacy Agent Workspace metadata only. Does not provision a Configurable Workspace or its pages. Configure lists separately. [Write] |
| configure_workspace_listA | Create a legacy sys_aw_list configuration under an existing Agent Workspace. query maps to the condition column. Does not update existing lists or configure UX lists. [Write] |
| create_ux_app_routeC | Register a new route (URL path) in a UX app. [Write] |
| create_ux_experienceB | Create a new UX Experience (app shell) configuration. [Write] |
| list_mobile_app_configsB | List sys_sg_mobile_application definitions, not installed client usage. This model has no active column. |
| get_mobile_app_configA | Get details of a specific mobile app configuration |
| create_mobile_app_configA | Create a name-only sys_sg_mobile_application metadata record. Does not provision an installable mobile app, branding, navigation or screens. [Write] |
| list_mobile_appletsB | List native sys_sg_screen metadata. Historical applet name retained; scope is an application scope, not a mobile application ID. |
| create_mobile_appletB | Create base sys_sg_screen metadata only. Does not configure a screen subtype, data item, navigation or app association. [Write] |
| list_mobile_layoutsC | List sys_sg_screen_m2m_ui_element mappings, not complete mobile layout definitions. Historical tool name retained. |
| create_mobile_layoutB | Link an existing screen to an existing UI element. Creates only an M2M mapping, not a full layout or screen. [Write] |
| configure_offline_syncC | UNSUPPORTED: offline configuration requires a validated Mobile App Builder workflow. No state-table writes are performed. [Write] |
| send_push_notificationA | UNSUPPORTED: push delivery requires a validated notification workflow. No queue insert or delivery is performed. [Write] |
| get_mobile_analyticsA | UNSUPPORTED: no validated mobile session telemetry source is configured. Returns an error rather than invented usage counts. |
| find_artifactA | Search for platform artifacts by name, type, or scope (business rules, scripts, widgets, etc.) |
| validate_artifactB | Validate an artifact for best practices, security issues, and performance concerns |
| clone_artifactA | Clone a platform artifact to a new name/scope. [Scripting] |
| validate_deploymentA | Pre-validate an update set or app before deployment — check for conflicts and missing dependencies |
| rollback_deploymentA | Rollback a deployment by reverting an update set. [Write] |
| list_deployment_historyB | List deployment history — committed update sets and app installs over time |
| create_solution_packageB | Create a solution package from selected update sets for distribution. [Write] |
| execute_background_scriptA | Run server-side JavaScript on the instance and return what it returns. The script runs in the global scope inside a run-once Scheduled Script Execution (ServiceNow has no REST endpoint that runs scripts synchronously), so it executes when the instance scheduler picks the job up, normally within seconds. End the script with |
| import_cmdb_dataB | Import CI data into CMDB CI classes using a safe field allowlist. [CMDB Write] |
| analyze_data_qualityA | Analyse data quality for a table — completeness, duplicates, stale records |
| list_vulnerable_itemsA | List USEM Vulnerable Items (sn_vul_vulnerable_item). Filter by state, minimum risk score, CMDB CI, or assignment group. Returns curated fields ordered by descending risk score. |
| get_vulnerable_itemB | Get full details of a single Vulnerable Item by sys_id or VI number (e.g. "VIT0010003"). |
| list_remediation_tasksA | List USEM Remediation Tasks across BOTH backing tables: sn_vul_remediation_task and sn_vul_vulnerability (the task-based group the rule engine actually creates RTs in — sys_class label "Remediation Task", number prefix VUL). Each record carries a |
| get_remediation_taskA | Get full details of a single Remediation Task by sys_id or number. Looks in both backing tables: a VUL-prefixed number targets sn_vul_vulnerability (the rule-engine RT), anything else is tried as task_number on sn_vul_remediation_task first, then as number on sn_vul_vulnerability. The result includes a |
| list_vulnerability_groupsA | List Vulnerability Groups (sn_vul_vulnerability) — the task-based remediation entity (sys_class label "Remediation Task", number prefix VUL). Filter by state, minimum risk score, or assignment group. Ordered by descending risk score. Use add_vi_to_remediation_task to add members and the SLA tools (record_type=vg) for TTR status. |
| get_vulnerability_groupB | Get full details of a single Vulnerability Group by sys_id or VUL number (e.g. "VUL0000103"). |
| create_vulnerability_groupA | Create a Vulnerability Group / Remediation Task (sn_vul_vulnerability). Being task-based it accepts assignment_group, assigned_to and state. [Write — requires WRITE_ENABLED=true] |
| update_vulnerability_groupA | Update a Vulnerability Group by sys_id — state transitions, (re)assignment, target date, etc. [Write — requires WRITE_ENABLED=true] |
| list_nvd_entriesA | List NVD entries (sn_vul_nvd_entry). Filter by CVE id substring or minimum CVSS v3 base score. |
| get_nvd_entry_by_cveA | Look up a single NVD entry by exact CVE id (e.g. "CVE-2018-1002203"). |
| get_usem_dashboardA | Summarize the USEM posture: Vulnerable Item counts by state, Remediation Task counts by state, and the highest-risk open Vulnerable Items. Uses the aggregate (stats) API for exact counts. |
| create_remediation_taskB | Create a Remediation Task (sn_vul_remediation_task). [Write — requires WRITE_ENABLED=true] |
| update_remediation_taskA | Update a Remediation Task by sys_id (state, assignee, group, target date, etc.). [Write — requires WRITE_ENABLED=true] |
| create_vulnerable_itemA | Create a Vulnerable Item (sn_vul_vulnerable_item) with the vulnerability reference intact. A before business rule clears the |
| list_remediation_task_findingsA | List the VI ↔ Remediation Task links in the "Remediation Task Item" m2m (sn_vul_m2m_vul_group_item). Give |
| get_finding_grouping_statusA | Diagnose why a Vulnerable Item is (not) grouped into a Remediation Task. Returns the VI's grouping preconditions ( |
| add_vi_to_remediation_taskA | Associate a Vulnerable Item with a remediation group via the "Remediation Task Item" m2m (sn_vul_m2m_vul_group_item). The group is an sn_vul_vulnerability record that backs the remediation task. [Write — requires WRITE_ENABLED=true] |
| list_usem_rulesA | List USEM/Vulnerability Response automation rules and configs of a given type (assignment, remediation_task, remediation_target, risk_calculator, calculator_rule, risk_field, risk_score_weight, calculator_config, classification, classification_rule, exception_rule, exception_config, rollup, approval, auto_close, exclusion). Ordered by execution order where the table has one, otherwise by a natural key. Optionally filter by active state or an extra encoded query. |
| get_usem_ruleA | Get the full definition of a single USEM/VR rule by sys_id. |
| create_usem_ruleA | Create a USEM/VR automation rule. Provide the rule_type and a fields object matching that table allowlist (e.g. name/rule_name, active, order, condition, assignment_group, ttr_max). Every field is read back after the write; a value ServiceNow did not store fails with FIELDS_NOT_SAVED. remediation_task with assignment_type 5 (Group by field) also needs assignment_group_fields — a field path on the finding that matches one of field_1..6 (e.g. "assignment_group"). The Table API cannot write that field, so it is set by a run-once server script and additionally requires SCRIPTING_ENABLED=true. Create rules inactive and enable them with set_usem_rule_active after checking them. [Write — requires WRITE_ENABLED=true; admin-level config change] |
| update_usem_ruleA | Update a USEM/VR automation rule by sys_id with a fields object restricted to that table allowlist. Every field is read back after the write; a value ServiceNow did not store fails with FIELDS_NOT_SAVED. Setting remediation_task assignment_group_fields runs a run-once server script and requires SCRIPTING_ENABLED=true. [Write — requires WRITE_ENABLED=true; admin-level config change] |
| set_usem_rule_activeA | Enable or disable a USEM/VR rule (convenience toggle of the active flag). Not supported for rule types without an active flag (exception_rule, exception_config, calculator_config, risk_field, risk_score_weight) — use update_usem_rule for those. [Write — requires WRITE_ENABLED=true; admin-level config change] |
| get_risk_calculator_detailsA | Explain how a USEM Risk Calculator computes its score: returns the calculator group (sn_sec_calculator_group), its calculator rules, each rule’s weighted risk fields (sn_sec_calculator_risk_field), and the score→weight bands for the target table (sn_sec_calculator_risk_score_weight) in one call. Use this to answer "why is the risk score N?". Accepts a sys_id or exact calculator name. |
| list_integrationsA | List the USEM/VR integration catalog (sn_sec_int_integration) — the available security data feeds such as NVD, Qualys, Tenable, Red Hat. Returns name, id, source and type. |
| list_integration_implementationsA | List configured integration implementations/instances (sn_sec_int_impl) — the operational units that carry the active flag, default flag and validation status. Use this to see which feeds are actually enabled. |
| list_integration_runsA | List Vulnerability Integration Runs (sn_vul_integration_run) with detail. Filter by source (e.g. "NVD"), state, substate ("success"/"failed"), or a recent day window. Ordered newest first. For a quick health rollup use get_integration_health instead. |
| get_integration_runA | Get full detail of a single Vulnerability Integration Run by run number (VINTRUNxxxx) or sys_id, including performance metrics and any fatal_error_message. |
| list_integration_logsA | List integration log entries (sn_vul_integration_log) for troubleshooting — error and recommendation messages, optionally scoped to a single run. Ordered newest first. |
| list_integration_parametersA | List USEM/VR integration parameters. scope="definition" returns the parameter catalog (sn_sec_int_config: label, type, mandatory, default) optionally filtered by integration; scope="instance" returns the configured values per implementation (sn_sec_int_impl_config). Secret-like values (passwords, tokens, API keys) are masked and encrypted password_value columns are never returned. |
| set_integration_activeA | Enable or disable an integration implementation (sn_sec_int_impl) by sys_id. This turns a security data feed on or off. [Write — requires WRITE_ENABLED=true; admin-level change] |
| list_remediation_slaA | List the SLA (Time-To-Remediate) status of Vulnerable Items, Remediation Tasks, or Vulnerability Groups. Filter by ttr_status (no_target/in_flight/approaching/past_due/target_met), breaches only, an upcoming-due window, or assignment group. Ordered by soonest target date. |
| get_remediation_slaA | Get the SLA (TTR) detail for a single Vulnerable Item, Remediation Task, or Vulnerability Group by number or sys_id: status, target date, applied rule, breach flag and days remaining/overdue. For task-based Vulnerability Groups, task_sla instances are also available via get_sla_details. |
| get_group_slaA | Get both SLA views for a task-based Vulnerability Group (sn_vul_vulnerability) by VUL number or sys_id: the built-in TTR status (target date, breach, days remaining) AND any attached task_sla instances (definition, stage, breached, percentage, time left). Use this for groups; VI/RT (which are not task-based) use get_remediation_sla. |
| set_remediation_commitmentA | Set the remediation commitment / target date on a Vulnerable Item (remediation_commitment_dt_tm) or Remediation Task (ttr_target_date). [Write — requires WRITE_ENABLED=true] |
| list_vr_notificationsA | List Vulnerability Response notification definitions (sysevent_email_action) scoped to the VR table family (sn_vul_* / sn_sec_*). Use the generic create_notification/update_notification tools to modify them. |
| list_vr_approvalsA | List approval records (sysapproval_approver) for Vulnerability Response items — exception, risk-acceptance and false-positive requests whose approval drives a VR state transition. Defaults to pending (state=requested). Each row shows the source record class and number. |
| list_vr_exception_requestsA | List Vulnerability Response exception requests (sn_sec_exception_change_approval) — False Positive, Risk Acceptance and Exception/Deferral requests raised against vulnerable items or groups. Shows request_type, the target record, the desired state/substate if approved, the approval_state, requester and reason. Approve/reject via act_on_vr_approval (find the approver rows with list_vr_approvals). |
| act_on_vr_approvalA | Approve or reject a Vulnerability Response approval (sysapproval_approver) by sys_id, which advances the attached workflow and transitions the underlying VR record. Rejection requires a comment. [Write — requires WRITE_ENABLED=true] |
| list_audit_engagementsA | List Audit Engagements (sn_audit_engagement) — the top-level audit project record. Filter by state or engagement type. Ordered by most recently updated. |
| get_audit_engagementA | Get full details of a single Audit Engagement by sys_id or number (e.g. "ENG0000104"). |
| list_audit_control_testsA | List Control Tests (sn_audit_control_test) — the record of testing a Control within an audit engagement; this is the real "audit result" (there is no sn_audit_result table). Filter by control, test plan, or design/operation effectiveness. |
| get_audit_control_testA | Get full details of a single Control Test by sys_id or number (e.g. "CTR0000153"). |
| get_grc_audit_dashboardA | Summarize the Audit Management posture: Engagement counts by state, Control Test counts by design/operation effectiveness, and the highest-priority-issue open engagements. |
| list_grc_entitiesA | List GRC Entities (sn_grc_profile) — the "thing being assessed" (business unit, vendor, application, process, etc.). No number/state field on this table; filter by class or CI. |
| get_grc_entityA | Get full details of a single GRC Entity by sys_id. |
| create_grc_entityA | Create a GRC Entity (sn_grc_profile). |
| update_grc_entityB | Update a GRC Entity by sys_id. [Write — requires WRITE_ENABLED=true] |
| list_compliance_policiesA | List Compliance Policies (sn_compliance_policy). Filter by state or category. |
| get_compliance_policyA | Get full details of a single Compliance Policy by sys_id or number (e.g. "POL0010200"). |
| create_compliance_policyA | Create a Compliance Policy (sn_compliance_policy). |
| update_compliance_policyB | Update a Compliance Policy by sys_id. [Write — requires WRITE_ENABLED=true] |
| list_compliance_controlsA | List Compliance Controls (sn_compliance_control). Filter by state, category, or the Entity (profile) it protects. |
| get_compliance_controlA | Get full details of a single Compliance Control by sys_id or number (e.g. "CTRL0020012"). |
| create_compliance_controlB | Create a Compliance Control (sn_compliance_control). |
| update_compliance_controlA | Update a Compliance Control by sys_id. NOTE: |
| list_control_objectivesA | List Control Objectives (sn_compliance_policy_statement) — sits between Policy and Control. No number field on this table; filter by state or category. |
| get_control_objectiveB | Get full details of a single Control Objective by sys_id. |
| list_policy_exceptionsB | List Policy Exceptions (sn_compliance_policy_exception). Filter by state. |
| get_policy_exceptionB | Get full details of a single Policy Exception by sys_id or number (e.g. "PER0000106"). |
| list_grc_issuesA | List GRC Issues (sn_grc_issue) — the generic finding/gap record used for compliance gaps and audit findings. Filter by state, Entity, or classification. |
| get_grc_issueA | Get full details of a single GRC Issue by sys_id or number (e.g. "IPT0011010"). |
| create_grc_issueC | Create a GRC Issue (sn_grc_issue). [Write — requires WRITE_ENABLED=true] |
| update_grc_issueB | Update a GRC Issue by sys_id. [Write — requires WRITE_ENABLED=true] |
| get_grc_compliance_dashboardA | Summarize the Compliance posture: Policy/Control/Issue counts by state, and the highest-risk open Policy Exceptions. |
| list_risksA | List Risks (sn_risk_risk) — the quantitative risk register entry. Filter by state, related Entity, or category. Ordered by most recently updated. |
| get_riskA | Get full details of a single Risk by sys_id or number (e.g. "RK0020310"). |
| create_riskA | Create a Risk (sn_risk_risk). NOTE: |
| update_riskA | Update a Risk by sys_id. NOTE: |
| list_risk_statementsB | List the Risk Statement library (sn_risk_definition) — reusable risk descriptions referenced by Risk records. |
| get_risk_statementA | Get full details of a single Risk Statement by sys_id. |
| list_risk_criteriaA | List the Impact/Likelihood/Score scale (sn_risk_criteria) used by Risk records — 5 rows per type, ordered. Reference only: impact/likelihood/score are NOT settable via create_risk/update_risk (confirmed to be recalculated by a business rule regardless of client input) — use this tool to understand the scale a Risk's calculated values fall on, not to prepare a write. |
| get_grc_risk_dashboardA | Summarize the Risk posture: Risk counts by state, and the highest-scored open risks. |
| list_grc_indicatorsA | List GRC Indicators (sn_grc_indicator, KRI/KPI) — periodic pass/fail metrics measuring a Control or Risk ( |
| get_grc_indicatorA | Get full details of a single GRC Indicator by sys_id or number (e.g. "IND0020021"). |
| create_grc_indicatorA | Create a GRC Indicator (sn_grc_indicator). |
| update_grc_indicatorA | Update a GRC Indicator by sys_id. |
| list_indicator_resultsA | List Indicator Results (sn_grc_indicator_result) — individual pass/fail collection events for an Indicator. Empty on dev400464 at verification time (2026-07-12); included for instances where indicator collection has run. |
| get_indicator_resultA | Get full details of a single Indicator Result by sys_id. |
| get_grc_indicator_dashboardA | Summarize Indicator posture: counts by category and by last-result pass/fail. |
| smart_queryA | Resolve a natural-language request into a ServiceNow table + encoded query and (optionally) run it. Maps keywords to common tables (incident, change_request, problem, sc_request, sn_vul_vulnerable_item, cmdb_ci, sys_user, …), then infers conditions for priority (P1/critical/high), open vs closed state, "assigned to me"/unassigned, and time windows (today, yesterday, this/last week, this/last month, last N days). Conditions whose field does not exist on the resolved table are dropped and reported in unmatched_intents. Returns the interpretation (table, encoded_query, conditions) plus matching records. Set execute=false to preview the query without running it, or pass table to override resolution. |
| search_store_appsA | Search the public ServiceNow Store catalog by keyword (no instance auth needed). Returns listing_id values usable with get_store_app_versions. |
| get_store_app_versionsA | Get version history with release notes (new features / bug fixes) for a Store app from the public Store API. Release notes are not stored in any instance table — this is the only programmatic source. Use search_store_apps to find the listing_id. |
| check_app_upgradeA | Compare the installed version of a scoped app (from sys_scope on the instance) against the public Store version history, and return the release notes of every newer version. For upgrade planning of Store apps (VR, ACC Framework, ...), whose lifecycle is independent of platform upgrades. Provide either listing_id, or store_query / nothing to search by app name. |
| list_data_management_policiesB | List Data Management Policies, optionally for one exact table. |
| get_data_management_policyC | Get a Data Management Policy and the archive rules for its table. |
| create_data_management_policyB | Create an inactive Data Management Policy. Existing policies for the table are rejected. [Write] |
| list_archive_rulesB | List archive rules, optionally for one exact table. |
| create_archive_ruleA | Create an inactive archive rule under an existing Data Management Policy. retain_references can only be chosen at creation. [Write] |
| create_destroy_ruleB | Create an inactive destroy rule for archived data. retention_days must be at least one day. [Write] |
| list_cleanup_rulesB | List Table Cleanup Rules (Auto Flush), optionally for one exact table. |
| create_cleanup_ruleB | Create an inactive Table Cleanup Rule for a Data Management Policy. It deletes live records only after explicit activation. [Write] |
| set_archive_rule_activeA | Activate or deactivate an archive rule. Activation requires confirmation and an active Data Management Policy. [Write] |
| set_destroy_rule_activeA | Activate or deactivate a destroy rule. Activation requires confirmation; it permanently deletes eligible archived records. [Destructive] |
| set_cleanup_rule_activeA | Activate or deactivate a Table Cleanup Rule. Activation requires confirmation; matching live records are permanently deleted. [Destructive] |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| morning-standup | Daily standup briefing — P1/P2 incidents, SLA breaches, changes due today |
| my-tickets | All open tasks, incidents, and requests assigned to me |
| p1-alerts | Active P1 incidents with time open and assignee |
| my-changes | My pending change requests and their approval status |
| knowledge-search | Search the knowledge base |
| create-incident | Guided incident creation — asks for details then creates the record |
| sla-breaches | Records currently breaching or about to breach SLA |
| ci-health | CMDB health check for a named CI |
| run-atf | Trigger an ATF test suite and report results |
| switch-instance | Switch to a different ServiceNow instance for this session |
| deploy-updateset | Preview and commit an update set |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| my-incidents | Open incidents currently assigned to me |
| open-changes | Change requests pending approval or scheduled this week |
| sla-breaches | Records currently breaching or about to breach SLA |
| instance:info | Current active ServiceNow instance metadata |
| ci:<name> | CMDB Configuration Item by name (e.g. @ci:web-prod-01) |
| kb:<title> | Knowledge Base article by title (e.g. @kb:VPN-setup) |
TDQS
Scored across 503 tools
The set contains many overlapping access patterns: query_records, smart_query, natural_language_search, nlq_query, ai_search, and search_knowledge all retrieve data through subtly different mechanisms. There are also multiple dashboard, property-management, update-set, and mobile tools whose boundaries require careful reading to distinguish. Individual descriptions are often detailed, but at 503 tools the risk of misselection across similar resources and actions is high.
Most tool names follow a readable snake_case verb_noun convention (e.g. create_incident, list_users, update_problem, get_hr_case). There are deviations such as query_records, describe_table, find_artifact, smart_query, and domain-prefixed ml_* tools, but they remain understandable rather than chaotic. The naming is mostly predictable despite the enormous surface.
503 tools is an extreme mismatch for a coherent MCP server surface and far beyond the recommended 3-15 tool range. Even with broad ServiceNow coverage, this volume makes discovery, selection, and maintenance impractical for an agent. The server appears to expose nearly every platform operation rather than a curated, well-scoped toolkit.
Coverage spans many ServiceNow domains—ITSM, HR, CSM, GRC, security, CMDB, reporting, integrations, platform metadata, and more—so many core workflows are represented. However, coverage is uneven: several tools are explicitly unsupported stubs, delete operations are sparse outside a few areas, and some modules have rich read surfaces but limited lifecycle coverage. It is extensive but not a complete, clean lifecycle surface for the stated broad purpose.