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 →