ServiceNow MCP server demonstrates solid tool coverage with 16 well-structured read-only tools. All tools have descriptions (avg 180 chars) and explicit JSON schemas with typed parameters. Naming follows verb_noun convention consistently (sn_get_*, sn_list_*, sn_query_*). However, several tools lack output schema documentation, and error handling guidance is minimal. Parameter descriptions are generally good but some lack format/constraint details. No tool annotations (readOnlyHint, idempotentHint) despite all being read-only. Missing pagination guidance in some list-returning tools.
Perform aggregate queries (count, sum, avg, min, max) on any ServiceNow table with optional group by support. Uses the Table API aggregate endpoint. Useful for dashboards, counts by state/priority/group, SLA metrics, etc.
Search ServiceNow code (scripts, business rules, workflows, etc.) using the Code Search API. Supports full-text search with optional scope filtering.
Retrieve attachment metadata or content from a ServiceNow instance using the Attachment API. Resolution modes (pass one): - Omit all IDs → list/query attachment metadata (sys_attachment table) - sys_id → fetch single attachment metadata - sys_id + include_content → download attachment file content - table_sys_id + file_name → download first matching attachment content by file name Common queries on sys_attachment: - table_name=incident^table_sys_id=<sys_id> → attachments for a specific record - table_name=incident → all incident attachments - file_nameLIKE.pdf → find PDF attachments
Query ServiceNow users, groups, and group membership using the Table API. Pass the table name to select the identity type. Supported tables: - sys_user → Users - sys_user_group → Groups - sys_user_grmember → Group Membership (who is in which group) Tip: use encoded query on sys_user_grmember with 'group=<sys_id>' or 'user=<sys_id>' to resolve membership in either direction.
No output schemas documented for any tool. LLMs cannot predict response structure, forcing them to parse unstructured results and plan downstream calls blindly.
No tool annotations (readOnlyHint, idempotentHint) despite all 16 tools being read-only and safe to retry. Agents cannot distinguish safe tools from destructive ones.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
Query ServiceNow legacy workflow artifacts (wf_workflow, wf_activity, wf_transition, etc.) using the Table API.
Universal record fetcher. Resolves records by sys_id, record number, task type, or CMDB CI class. Resolution modes (pass one): - sys_id + table → fetch a single record directly - number (e.g. INC0012345) → auto-resolves table via sys_number prefix lookup, then fetches - table (task child) → query a task-family table (incident, change_request, sc_req_item, etc.) - ci_class → query a CMDB CI class (defaults to 'cmdb_ci' if omitted with no table) Task child tables: task, incident, problem, change_request, change_task, sc_request, sc_req_item, sc_task, sn_customerservice_case, sn_hr_core_case CMDB tables: cmdb_ci, cmdb_ci_server, cmdb_ci_vm_instance, cmdb_ci_cloud_service_account, cmdb_ci_appl, cmdb_ci_database, cmdb_ci_netgear, cmdb_rel_ci, cmdb_rel_type, cmdb_ci_ip_network
Query ServiceNow scripted artifacts (business rules, script includes, UI scripts, etc.) using the Table API. Pass the table name to select the artifact type.
Retrieve ServiceNow update sets and their files. Two modes: - Omit update_set_sys_id → list all update sets (sys_update_set table) - Pass update_set_sys_id → fetch files in that update set (sys_update_xml table)
Query ServiceNow Workflow Studio artifacts (wf_workflow_version, wf_workflow_stage, etc.) using the Table API.
Inspect ServiceNow table metadata. Two modes: - Pass 'table' → fetch full field definitions (sys_dictionary) for that table, including field type, label, max length, mandatory, reference target. - Pass 'name' (partial) → search sys_db_object for matching table names or labels. Use 'name' to discover a table, then 'table' to inspect its schema.
Search ServiceNow legacy workflows (pre-Workflow Studio) using the Workflow API. Supports full-text search on workflow names and descriptions.
List all configured ServiceNow instances (aliases, labels, URLs). Use this to discover available instance aliases before calling other tools.
Test connectivity to a ServiceNow instance. Omit 'instance' to ping the default, or pass an alias (e.g. 'prod') to test a specific one. Returns instance URL, authenticated user, and response time.
Generic read from any ServiceNow table using the Table API. Use this as an escape hatch for any table not covered by other tools (e.g. sys_properties, sys_security_acl, sys_email_action, sys_transform_map). Supports encoded query, field selection, dot-walking, display values, limit, and offset.
Read ServiceNow documentation from the official ServiceNowDocs GitHub repository. Three modes: - get_index: fetch llms.txt (LLM-optimized index) to discover structure and navigate - search: keyword search across publication titles and topic headings - get_file: directly fetch any file by path or raw URL Supports version/branch selection (e.g. 'australia', 'zurich', 'yokohama'). Dynamically resolves the default branch and validates branch existence.
Explain ServiceNow SDK (now-sdk) concepts and skills using the now-sdk CLI. Requires now-sdk >= 4.6.0 to be installed locally. Returns formatted documentation for a given skill (e.g. 'GlideRecord', 'REST API', 'Workflow').
Pagination parameters (limit, offset) present but no guidance on default limits, max results, or total count in responses. Tools returning lists (sn_query_table, sn_get_identity) lack explicit pagination documentation.
Error handling guidance absent. No descriptions of what errors tools return, how to recover, or what the LLM should do on failure (retry, ask user, abort).
sn_sdk_explain requires external dependency (now-sdk >= 4.6.0) but no validation or error message if missing. Tool will fail silently if dependency not installed.