Skip to main content
The ServiceNow app provides read/write access to the ServiceNow ITSM platform via its Table API. It can be used either as a Builder app (automations call ServiceNow instructions directly) or as a remote MCP server consumed by an AI Knowledge agent — covering incidents, change requests, problems, service catalog, requests, attachments, users and groups.

ITSM Tickets

Incidents, changes and problems with transitions and work notes

Service Catalog

List, inspect and order catalog items with variables

Generic Table Access

Query any ServiceNow table with encoded queries and aggregates

Prerequisites

  • A ServiceNow instance (URL format: https://<instance>.service-now.com)
  • Either Basic Auth credentials (user with itil / admin role) or an OAuth2 client (client_credentials flow)
  • Roles required for the intended tables: itil for incidents, change_manager for changes, problem_manager for problems, sn_request_write for catalog requests, etc.

Installation

  1. Go to Apps in your workspace
  2. Search for ServiceNow and install it
  3. Open the app instance configuration and fill in the required fields

Configuration

FieldDescription
Instance URLhttps://<instance>.service-now.com
Authentication Typebasic or oauth2
Username / PasswordRequired when authType = basic
OAuth2 Client ID / Client SecretRequired when authType = oauth2 (uses client_credentials grant)
MCP EndpointAuto-populated on install — URL of the MCP endpoint for this instance
MCP API KeyAuto-populated on install — signed key used in the mcp-api-key header. Do not modify
Credentials are stored as workspace secrets. MCP Endpoint and MCP API Key are generated automatically by the onInstall flow and are only needed to expose this instance as an MCP server (see the next tab).

Available Instructions

Every instruction resolves credentials via buildAppAuth (Basic or OAuth2 depending on authType). Most list operations accept limit, offset, fields (comma-separated) and displayValue (true/false/all) to control the response shape.
displayValue controls how reference/choice fields are rendered: true → labels, false → sys_ids, all → both (under value and display_value).

Generic Table Access

InstructionArguments
queryRecordstableName*, query (encoded query), fields, limit, offset, displayValue
getRecordtableName, sysId, fields, displayValue
getStatstableName*, query, count, sumFields, avgFields, groupBy

Incidents

InstructionArguments
listIncidentsquery, state (1=New, 2=InProgress, 3=OnHold, 6=Resolved, 7=Closed), priority (1=Critical → 4=Low), assignedTo, assignmentGroup, fields, limit, offset, displayValue
getIncidentsysId or number (e.g. INC0010001), fields, displayValue
createIncidentshortDescription*, description, callerId, category, subcategory, impact (1/2/3), urgency (1/2/3), priority, assignmentGroup, assignedTo, cmdbCi, contactType
updateIncidentsysId*, state, shortDescription, description, impact, urgency, priority, assignmentGroup, assignedTo, workNotes, comments, closeCode, closeNotes

Change Requests

InstructionArguments
listChangesquery, state, priority, type (normal/standard/emergency), assignedTo, assignmentGroup, fields, limit, offset, displayValue
getChangesysId*, fields, displayValue
createChangechangeType* (normal/standard/emergency), shortDescription*, description, category, priority, risk, impact, assignmentGroup, assignedTo, startDate, endDate, implementationPlan, backoutPlan, testPlan, cmdbCi
updateChangesysId*, shortDescription, description, priority, risk, impact, assignmentGroup, assignedTo, startDate, endDate, implementationPlan, backoutPlan, testPlan, workNotes
getChangeTransitionssysId*
transitionChangesysId, state (target state value)
startDate / endDate use the ServiceNow format YYYY-MM-DD HH:mm:ss (UTC on the instance timezone).

Problems

InstructionArguments
listProblemsquery, state, priority, assignedTo, assignmentGroup, fields, limit, offset, displayValue
getProblemsysId*, fields, displayValue
createProblemshortDescription*, description, category, impact, urgency, priority, assignmentGroup, assignedTo, cmdbCi
updateProblemsysId*, state, shortDescription, description, priority, assignmentGroup, assignedTo, workaround, causeNotes, fixNotes, workNotes

Service Catalog

InstructionArguments
listCatalogItemscatalog, category, query, limit, offset
getCatalogItemsysId* (returns the item with its variables / form fields)
orderCatalogItemsysId*, quantity, variables (object: form field values)

Requests & Request Items

InstructionArguments
listRequestsquery, fields, limit, offset, displayValue
getRequestsysId*, fields, displayValue
listRequestItemsquery, requestId (filter by parent request sys_id), fields, limit, offset, displayValue

Attachments

InstructionArguments
listAttachmentstableName, tableSysId
uploadAttachmenttableName, tableSysId, fileName, contentBase64, contentType

Users & Groups

InstructionArguments
listUsersquery, active, fields, limit, offset
getUsersysId or username, fields
listGroupsquery, active, fields, limit, offset
Arguments flagged with * are required.

DSUL Examples

Open an Incident From a Form

- ServiceNow.createIncident:
    shortDescription: VPN disconnects every 10 minutes
    description: '{{payload.message}}'
    callerId: '{{caller_sys_id}}'
    category: network
    impact: '2'
    urgency: '2'
    assignmentGroup: Network Support
    contactType: email
    output: incident

Assign and Resolve

- ServiceNow.updateIncident:
    sysId: '{{incident.sys_id}}'
    assignedTo: '{{engineer_sys_id}}'
    state: '2'
    workNotes: Investigating the VPN concentrator logs.
- ServiceNow.updateIncident:
    sysId: '{{incident.sys_id}}'
    state: '6'
    closeCode: Solved (Permanently)
    closeNotes: Rolled back the firmware to 7.2.1.

Query With an Encoded Query

- ServiceNow.queryRecords:
    tableName: incident
    query: active=true^priority=1^assignment_groupSTARTSWITHNetwork
    fields: number,short_description,assigned_to,priority
    limit: 50
    displayValue: all
    output: critical

Order a Catalog Item

- ServiceNow.getCatalogItem:
    sysId: '{{laptop_item_id}}'
    output: item
- ServiceNow.orderCatalogItem:
    sysId: '{{laptop_item_id}}'
    quantity: 1
    variables:
      laptop_model: macbook_pro_16
      delivery_date: 2026-05-01
    output: request

Aggregate Statistics

- ServiceNow.getStats:
    tableName: incident
    query: active=true
    count: true
    groupBy: priority,assignment_group
    output: stats

Attach a File

- ServiceNow.uploadAttachment:
    tableName: incident
    tableSysId: '{{incident.sys_id}}'
    fileName: vpn-logs.txt
    contentBase64: '{{logs_base64}}'
    contentType: text/plain

Error Handling

HTTP StatusErrorSolution
401UnauthorizedVerify credentials; for OAuth2, check the client_credentials grant is enabled on the app registry
403ForbiddenThe user/client lacks an ACL on the target table — grant itil, change_manager, problem_manager, or a table-specific role
404Not FoundVerify sys_id / number and that the record is not in a restricted domain
409ConflictState transition is not allowed — call getChangeTransitions to get valid targets
429Rate LimitedThe instance returned a X-RateLimit-* error — back off; ServiceNow also enforces per-user transaction quotas

Common Issues

“Instance not configured”instanceUrl is missing from the app config. Paste the full URL with scheme (https://acme.service-now.com). “Basic Auth requires username and password”authType is basic but one credential is empty. Either fill both or switch to oauth2. “OAuth2 requires clientId and clientSecret”authType is oauth2 but the client credentials are missing. Create an Application Registry in ServiceNow (System OAuth > Application Registry) with the client_credentials grant. “Invalid API key” (MCP) — The mcp-api-key header does not match the central app secret. Reinstall the app instance to regenerate a signed key. Empty results with a seemingly valid query — encoded queries are case-sensitive and ACL-filtered. Try displayValue: all and verify the effective roles of the account.

External Resources

ServiceNow Table API

Official Table API reference

Encoded Query Strings

Operators and syntax for query

OAuth Inbound Setup

Create an OAuth Application Registry

Tool Agents

Plug MCP servers into AI Knowledge agents