jsn
The complete command surface

Every feature.
No treasure hunt.

The homepage shows the few workflows worth leading with. This page shows the whole thing: core records, diagnostics, developer tools, agent support, and the commands behind each one.

28 capabilities · command examples · terminal output
1

Explore

1

Search ServiceNow documentation from the CLI

Search, sync, and read ServiceNow documentation locally from the terminal with JSN.

3 commands
jsn docs syncDownload + index (incremental after first run)
jsn docs search "bill mcdermott"Full-text + semantic search
jsn docs show 2635Read a doc from the terminal
Preview terminal output
Updating existing clone at /home/jace/.cache/servicenow-cli/docs/source ...
Already up to date.
Docs DB found — running incremental refresh...
Docs sync complete
Open feature →
2

The docs, in the browser

The same index as a local web UI — search, filter by bundle, read in a viewer.

2 commands
jsn docs serveStart the local web UI
jsn docs serve --exposeShare on your network
Preview terminal output
ServiceNow docs search listening on http://127.0.0.1:3000
Open feature →
3

Query ServiceNow records from the command line

Query any ServiceNow table with encoded queries, limits, counts, and JSON output using the JSN CLI.

2 commands
jsn records list --table incident --limit 4Query any table with styled output
jsn records list --table incident --query "priority=1" --jsonEncoded queries, JSON for pipes
Preview terminal output
4 incident(s)


number          short_description                                 priority        state       assigned_to      
--------------  ------------------------------------------------  --------------  ----------  ---------------  
INC0000014      Missing my home directory test-1                  1 - Critical    Closed      Bud Richman      
INC0000601      The USB port on my PC stopped working             5 - Planning    Closed                       
INC0009004      Defect tracking tool is down.                     3 - Moderate    Closed                       
INC0000005      CPU load high for over 10 minutes                 1 - Critical    Closed      Bud Richman      

  → create: jsn inc create --description "..." — Create a new incidents
  → filter: jsn inc list --query "priority=1" — Filter: critical only
  → next: jsn inc list --limit 4 --offset 4 — Next page (offset 4)
Open feature →
4

Traverse ServiceNow CMDB relationships from the CLI

Follow ServiceNow CMDB relationships from the terminal to inspect connected configuration items and dependencies.

2 commands
jsn cmdb relationships --ci <sys_id>BFS traversal, zero deps
jsn cmdb relationships --ci <sys_id> --depth 5 --type "Depends on"Depth, type, class filters
Preview terminal output
CMDB: ThinkStation S20 (Computer)
Sys ID: 01a9ec0d3790200044e0bfc8bcbe5dc3
────────────────────────────────────────────────────────
▶ RELATIONSHIPS (23)
────────────────────────────────────────────────────────
▶ PARENTS
  (none)

**YOU ARE HERE** ThinkStation S20 (Computer)

▶ CHILDREN
└─ ↓ Blackberry (Service) — Applicative Flow To::Applicative Flow From
   ├─ ↓ Email (Service) — Depends on::Used by
   │  ├─ ↓ IronMail-SD-01 (Email Server) — Depends on::Used by
   │  ├─ ↓ IronMail-SD-02 (Email Server) — Depends on::Used by
   │  └─ ↓ EXCHANGE-NY-02 (Email Server) — Depends on::Used by
   └─ ↓ INSIGHT-NY-03 (Server) — Depends on::Used by


  → show: jsn cmdb show 01a9ec0d3790200044e0bfc8bcbe5dc3 — Full record for the root CI
  → impact: jsn cmdb relationships --ci 01a9ec0d3790200044e0bfc8bcbe5dc3 --impact — Impact analysis: upstream only
  → deeper: jsn cmdb relationships --ci 01a9ec0d3790200044e0bfc8bcbe5dc3 --depth 5 — Traverse deeper (max depth 5)
  → filter: jsn cmdb relationships --ci 01a9ec0d3790200044e0bfc8bcbe5dc3 --type "<rel type>" --class "<ci class>" — Filter by relationship type or CI class
Open feature →
5

Catalog variables

A request item with its variables resolved — plain REST doesn't do this.

1 command
jsn requests show RITM0010001Request with catalog variables
Preview terminal output
Request RITM0010001


RITM0010001 (Requested Item)

─ Core ─
  number:  RITM0010001
  sys_id:  02dedb44839e8b10f7bfc670ceaad36c
  sys_class_name:  Requested Item
  state:  Open
  active:  true
  short_description:  Submit a nulledge knowledge speaking session
  description:  
  priority:  4 - Low
  urgency:  3 - Low
  impact:  3 - Low

─ People ─
  opened_by:  System Administrator

─ Status ─
  approval:  Approved
  approval_set:  2026-07-20 18:47:16
  escalation:  Normal
  made_sla:  true

─ Dates & Times ─
  opened_at:  2026-07-20 18:47:11
  sys_created_on:  2026-07-20 18:47:11
  sys_updated_on:  2026-07-20 18:47:16
  due_date:  2026-07-22 18:47:11
  sla_due:  UNKNOWN
  activity_due:  UNKNOWN

─ System ─
  sys_domain:  global
  sys_domain_path:  /
  sys_created_by:  admin
  sys_updated_by:  system
  sys_mod_count:  2

─ Other ─
  backordered:  false
  billable:  false
  business_duration:  
  business_service:  
  calendar_duration:  
  cat_item:  Knowledge Speaking Session
  close_notes:  
  cmdb_ci:  
  comments:  
  comments_and_work_notes:  
  company:  
  configuration_item:  
  contact_type:  
  context:  
  contract:  
  correlation_display:  
  correlation_id:  
  delivery_plan:  DEFAULT
  delivery_task:  
  estimated_delivery:  
  flow_context:  
  follow_up:  
  group_list:  
  knowledge:  false
  location:  
  order:  
  order_guide:  
  parent:  
  price:  $0.00
  quantity:  1
  reassignment_count:  0
  recurring_frequency:  
  recurring_price:  $0.00
  request:  REQ0010001
  requested_for:  System Administrator
  route_reason:  
  sc_catalog:  
  service_offering:  
  skills:  
  stage:  Assess or Scope Task
  task_effective_number:  RITM0010001
  task_for:  
  time_worked:  
  universal_request:  
  upon_approval:  Proceed to Next Task
  upon_reject:  Cancel all future Tasks
  user_input:  
  work_notes:  
  work_notes_list:  

─ Catalog Variables ─
  Topic:  Moveworks!  What is Slate?  He can tell you!
  Speaker:  Teo

Link:  https://dev227772.service-now.com/requested_item.do?sys_id=02dedb44839e8b10f7bfc670ceaad36c


  → update: jsn req update RITM0010001 --data '{...}' — Update this request
  → list: jsn req list — Back to all requests
Open feature →
6

Search ServiceNow application code from the CLI

Search ServiceNow scripts, script includes, business rules, and other application code from the terminal.

2 commands
jsn codesearch search GlideAjax --limit 5Search script and client-side artifacts
jsn codesearch search approval --scope x_my_app --limit 5Restrict a search to an application scope
Preview terminal output
5 code match(es) for "GlideAjax"

sys_ui_page  $pwd_change  .client_script
    var ga = new GlideAjax('PwdAjaxChangePassword');
sys_ui_page  $pwd_enrollment_form_container  .client_script
    function sendRequest() {
Open feature →
7

Saved query snippets

Save a table query locally and run it again against the active profile.

2 commands
jsn snippets save docs-open-inc --table incident --query 'active=true'Save a named query locally
jsn snippets run docs-open-incRun the saved query against ServiceNow
Preview terminal output
Saved snippet "docs-open-inc"
Open feature →
8

Record tools beyond CRUD

Work with attachments, aggregates, and table inspection alongside normal record queries.

3 commands
jsn records attachments --helpList, inspect, and add record attachments
jsn records aggregate --table incident --countAggregate records without downloading every row
jsn records inspect incident INC0000060Inspect a record and its table context
Preview terminal output
Work with attachments on a record

Commands:
  list  List attachments on a record
  get <attachment-id>  Download an attachment to a local file
  add <file>  Upload a file as a new attachment on a record (mutation)
Open feature →
9

Form and UI behavior inspection

Inspect form layouts, client scripts, and UI policies from the terminal.

3 commands
jsn forms show incidentInspect sections and form elements
jsn clientscripts list --query 'nameLIKEincident' --limit 3Find client scripts affecting a table
jsn uipolicies list --query 'nameLIKEincident' --limit 3Find UI policies affecting a table
Preview terminal output
Form: incident → Default view

── Notes ──
  watch_list
  work_notes_list
  comments
  work_notes

── Related Records ──
  parent_incident
  problem_id
  rfc
  caused_by
Open feature →
10

Schema and platform metadata

Inspect tables, columns, relationships, script includes, and instance properties.

3 commands
jsn tables list --limit 3Discover tables
jsn columns list --query 'name=incident' --limit 5Inspect a table's columns
jsn includes list --limit 3List script includes
Preview terminal output
3 tables(s)
sn_build_agent_conversation  Build Agent Conversation
sn_build_agent_message       Build Agent Message
event telemetry              Event telemetry
Open feature →
2

Diagnose

1

Capture and compare ServiceNow performance

Capture repeatable ServiceNow performance snapshots and compare runs from the JSN command line.

3 commands
jsn perf capture --label baselineCapture a read-only performance snapshot
jsn perf show RUN_IDDisplay the saved capture and its collectors
jsn perf compare RUN_A RUN_BCompare two saved captures
Preview terminal output
Performance capture 20260912T003811Z: complete
Status: complete
jsn version: 4.3.3
Collectors: ecc_queue, error_warning_summary, event_queue, flow_executions, platform_health, record_counts, scheduled_and_cleanup, transactions
ECC queue: 385
Open feature →
2

Check ServiceNow platform health from the CLI

Inspect ServiceNow nodes, queues, sessions, semaphores, memory pressure, and transaction health from one terminal command.

1 command
jsn platform health --all-nodesRead node and platform health
Preview terminal output
Platform health: 1 node(s)

NODE STATUS  TYPE             QUEUE  AGE  SESSIONS  DEFAULT SEM  DB
-----------  ---------------  -----  ---  --------  -----------  --
online       db272e3277020010bf05d4082b106185      0    0         9         0/16  44.28071283922618 ms

Security: raw XML excluded, sensitive fields excluded
Open feature →
3

Transaction summaries

Group transaction counts and response times by transaction type.

1 command
jsn transactions --query 'sys_created_on>=javascript:gs.daysAgoStart(1)'Summarize count, average, minimum, and maximum response time
Preview terminal output
Transactions by type: 8 type(s)

CLASS       TYPE           COUNT  AVG       MIN       MAX
----------  -------------  -----  --------  --------  --------
api         batch_rest        21  60 ms     20 ms     308 ms
ui          form            1018  114.38 ms  6 ms      6133 ms
api         rest            2554  62.42 ms   8 ms     7383 ms
job         scheduler        602  24548.24 ms 36 ms     234718 ms
Open feature →
4

Monitor ServiceNow system logs from the CLI

List and inspect ServiceNow system log entries from the terminal to diagnose warnings and failures.

2 commands
jsn logs list --limit 3Find matching log entries
jsn logs follow --level error --tail 3 --interval 500Tail new errors until stopped
Preview terminal output
3 log entry(s)

Warning  QueryEventLogger  Invalid query detected, please check logs for details [Unknown field name in table sys_ui_policy]
Error    sn_codesearch     Search table record for null in search group sn_devstudio.Studio Search Group
Warning  QueryEventLogger  Invalid query detected, please check logs for details [Unknown field duration in table sys_flow_context]
Open feature →
5

Inspect and diagnose ServiceNow flows from the CLI

Inspect ServiceNow flows, actions, executions, and diagnostics without navigating the Flow Designer UI.

2 commands
jsn flows executions --limit 3Inspect flow executions
jsn flows doctorRun flow diagnostics
Preview terminal output
3 flow execution(s)

FLOW                            STATUS    DURATION
send_notifications               Complete  92 seconds
send_notifications               Complete  104 seconds
Scheduled Document Collaboration Complete 67 seconds
Open feature →
3

Change

1

Create and update ServiceNow records from the CLI

Create and update ServiceNow records from the terminal with explicit fields and write-back verification.

2 commands
jsn incidents create --description "Demo: read me in the hero" --data '{"urgency":"3","impact":"3"}'Create an incident with fields
jsn records create --table incident --data '{"short_description":"..."}'Any table
Preview terminal output
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ⚠  Default update set in scope [x_8821_test]
  Changes are contained to this scope, but a named
  update set is still recommended for tracking.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Created incidents INC0010019


INC0010019 (incident)

─ Core ─
  number:  INC0010019
  sys_id:  3b753e3c83be8f10f7bfc670ceaad3e7
  sys_class_name:  incident
  state:  1
  active:  true
  short_description:  Demo: read me in the hero
  description:  
  priority:  5
  urgency:  3
  impact:  3

─ People ─
  opened_by:  6816f79cc0a8016401c5a33be04be441

─ Status ─
  approval:  not requested
  escalation:  0
  made_sla:  true

─ Dates & Times ─
  opened_at:  2026-08-17 03:13:22
  sys_created_on:  2026-08-17 03:13:22

  → view: jsn inc show INC0010019 — View the new incidents
Open feature →
2

Catalog item one-liner

Create a catalog item with its variables in a single command.

2 commands
jsn catalogitems create --name "Demo Hero Laptop" --variable "model:string:Model" --variables '{"model":"X1 Carbon"}'Item + variables, one shot
jsn catalogitems show <id>See the item with variables resolved
Preview terminal output
Created: Demo Hero Laptop (1 variable(s))
Open feature →
3

Safely delete ServiceNow records from the CLI

Delete ServiceNow records with confirmation gates, force flags, and read-only profiles that block destructive commands.

2 commands
jsn records delete --table incident --sys-id <id>Deletes are blocked without --force
jsn records delete --table incident --sys-id <id> --forceForce flag skips the confirmation
Preview terminal output
Error: Delete record from incident (57e8723483fe8f10f7bfc670ceaad3aa) — confirmation required. Pass --force to skip, or set skip_confirmations on the profile to disable prompts.

This is a destructive action. Ask your user to confirm, then re-run:
  jsn records delete --force
Or set skip_confirmations on the profile to disable prompts:
  jsn auth login <instance> --skip-confirmations
jsn records delete --table incident --sys-id 57e8723483fe8f10f7bfc670ceaad3aa --force
Deleted record from incident
Open feature →
4

Bulk ServiceNow record operations

Run controlled bulk updates and deletes against ServiceNow tables with explicit queries and safety checks.

2 commands
jsn records bulk --table incident --query "active=true" --set '{"state":"2"}'Dry-run: shows the count + sample first
jsn records bulk ... --executeCommit after reviewing
Preview terminal output
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ⚠  Default update set in scope [x_8821_test]
  Changes are contained to this scope, but a named
  update set is still recommended for tracking.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Dry run: 40 record(s) in incident would be updated
Open feature →
5

Manage ServiceNow update sets from the CLI

Inspect, select, and work with ServiceNow update sets while making changes from the terminal.

2 commands
jsn updatesets listSee every set and its state
jsn updatesets export "My Set" --out set.xmlExport to XML via the fluent endpoint
Preview terminal output
3 update set(s)


name                            state       application           application.scope     
------------------------------  ----------  --------------------  --------------------  
Holly Export Test C             In prog...  test                  x_8821_test           
Holly Export Test B             In prog...  test                  x_8821_test           
Holly Export Test A             Complete    test                  x_8821_test
Open feature →
6

Scopes and domain separation

Control application scope and domain context alongside update sets.

2 commands
jsn scopes list --limit 3List application scopes
jsn domains currentShow the current domain context
Preview terminal output
3 scope(s)

Contact card component       sn_contact_card       active
Asset Management for mobile  sn_me_assets           active
@servicenow/sn-cb-slide-modal sn_cb_slide_modal      active
Open feature →
7

Integration artifacts

Inspect scripted REST APIs, REST messages, SOAP messages, email, and import definitions.

3 commands
jsn scrapi list --limit 3List scripted REST API operations
jsn restmessage list --limit 3List REST message definitions
jsn soapmessages list --limit 3List SOAP message definitions
Preview terminal output
3 operation(s)
Get Conversations          GET    /conversations
Get Is Generated By AI     GET    /{scopeId}/getIsGeneratedByAI
Update Message             PATCH  /conversations/{conversationId}/messages/{messageId}
Open feature →
4

Automate

1

Agent skill installer

One command drops the full playbook into any AI agent — no MCP server to stand up.

1 command
jsn skill installInstall for Hermes, Claude, Codex, Cursor, OpenCode, Copilot and more
Preview terminal output
? Where should the jsn skill be installed?
❯◉ Hermes Agent
 ◯ GitHub Copilot
 ◯ VS Code (Copilot Instructions)
 ◯ Claude Code
 ◉ Cursor
 ◯ Agents (open standard)
 ◯ OpenCode

~/.hermes/profiles/holly/skills/servicenow/SKILL.md
(space to toggle, enter to confirm)
Open feature →
2

Flow subflow context

See the whole flow structure — triggers, actions, nested subflows.

1 command
jsn flows show "Service Catalog item request"Flow structure with subflow expansion
Preview terminal output
Flow: Service Catalog item request

  Status: Active | Version: 2
  Sys ID: 30f3d26187e92300e0ef0cf888cb0b91
  Link: https://dev227772.service-now.com/sys_hub_flow.do?sys_id=30f3d26187e92300e0ef0cf888cb0b91

▶ TRIGGER
──────────────────────────────────────────────────
  Name: Service Catalog
  Type: Service Catalog

⚡ FLOW STRUCTURE
──────────────────────────────────────────────────
1. ↪ Requested Item Manager Approval
   1. Ask For Approval
     Record: {{subflow.requested_item}}
     Table: Requested Item
     Approval Field: approval
     Journal Field: approval_history
     Rules: ApprovesAnyU[{{subflow.requested_item.requested_for.manager}}]OrRejectsAnyU[{{subflow.requested_item.requested_for.manager}}]
     Due Date: {"action":"none","date_type":"actual","date":"{{}}","duration":1,"duration_type":"days","schedule":"","schedule_label":""}
Open feature →
3

Background script execution

Run GlideScript on the instance from your terminal.

1 command
jsn eval --script 'gs.info("hello");'Execute on the instance, session + CSRF handled
Preview terminal output
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ⚠  Default update set in scope [x_8821_test]
  Changes are contained to this scope, but a named
  update set is still recommended for tracking.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Script executed ⚠️ Records without explicit sys_scope will land in global. Use $scopeSysId variable.


  → eval: jsn eval --script '...' — Execute a background script on the ServiceNow instance
Open feature →
5

Verify

1

Run ServiceNow ATF tests from the CLI

Discover and execute ServiceNow Automated Test Framework tests from the terminal and inspect their results.

2 commands
jsn atf listFind tests
jsn atf run <test_sys_id>Run + poll (confirm-gated)
Preview terminal output
3 record(s)


name                            sys_class_name        active                sys_updated_on          
------------------------------  --------------------  --------------------  ----------------------  
SKILLS MGMT: Skill level in...  Test                  false                 2019-11-23 23:13:07     
CHG:High Risk With Ui Actio...  Test                  false                 2019-09-12 06:32:32     
RecordAction With Mappings      Test                  true                  2016-07-18 15:17:04
Open feature →
6

Connect

1

ServiceNow CLI authentication and setup

Configure JSN for a ServiceNow instance with OAuth or basic authentication, profiles, read-only mode, and safe mutation settings.

2 commands
jsn setupInteractive wizard: add/switch/remove/modify instances
jsn auth modify <name>Toggle read-only, skip confirmations, include counts, domain
Preview terminal output
# Use `jsn scopes` to change scope, `jsn updatesets set` to change updateset
PROFILE   USER      [SCOPE]           UPDATE SET
dev227772 System... [x_8821_test]     Default

? What would you like to do?
❯ Add a new instance
  Switch to a different instance
  Remove an instance
  Modify an instance

↑↓ navigate • ⏎ select
Open feature →
7

Extend

1

Call the ServiceNow REST API from the CLI

Use JSN as a practical raw REST escape hatch when a higher-level ServiceNow command does not exist.

1 command
jsn rest --table incident --query 'sysparm_limit=3'Make a raw REST API request
Preview terminal output
GET api/now/table/incident
Returned incident: INC0000060
Short description: Unable to connect to email
State: 7
Priority: 3
Open feature →