snowmcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@snowmcplist open P1 incidents assigned to my team"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
snowmcp — a consolidated ServiceNow MCP server
One MCP server for a ServiceNow instance. Thirteen tools instead of the 17–500 that other ServiceNow MCP servers expose, with a local store that remembers what it learns.
Why thirteen tools
Every ServiceNow MCP server in the wild exposes one tool per operation:
sn_query, sn_get, sn_create, sn_update, sn_delete, sn_aggregate,
sn_schema, sn_relationships, sn_attach, sn_syslog, … and the list
goes on. That is the wrong shape for an agent. Each tool's schema competes
for context, and the model has to work out which of 500 names to reach for
before it can do anything.
Here each tool covers a domain, and an action parameter selects the
operation. One schema does the work of many, and a single call can carry a
whole job — sn_write with action=batch applies many changes in one HTTP
request instead of one call per change.
Tool | Read-only | What it covers |
| yes | query / get / count records on any table |
| no (destructive) | create / update / delete / batch |
| yes | stats and grouped statistics |
| yes | tables, fields, CMDB classes, field references |
| yes | Service Graph: relations, traverse, dependents, impact, CSDM |
| no | catalog items, categories, variables, ordering |
| no | attachments: list, upload, download, delete |
| yes | the instance's own scripts, rules, policies, ACLs |
| yes | system log, health, jobs, properties, stats |
| yes | read what the server already knows: notes, saved queries, history, cache |
| no | write the server's own local memory: notes, saved queries, cache |
| no (destructive) | list applied writes, revert one |
| no | update sets, scripts, ATF tests, users, groups, roles |
Thirteen tools, no tool carrying more than eight actions. Read-only tools
carry readOnlyHint: true, so a client running with trust: untrusted only
asks for approval on the tools that can actually change the instance — and
sn_journal's undo is marked destructive because it does.
Related MCP server: @onlyflows/servicenow-mcp
What it stores
sn_local is the server's own memory, all local — nothing leaves the box:
knowledge base — markdown notes the agent writes and re-reads
record cache — records already fetched, so a second lookup costs no API call
saved queries — a named query becomes one call later, not ten
call history — what the agent already did, so it does not do it twice
write journal — every applied write, with a plan to revert it
Safety
Every write needs
confirm=true. The server refuses without it.SN_READ_ONLY=truerefuses every write.SN_ALLOWED_TABLES/SN_DENIED_TABLESrestrict which tables may be touched.SN_MAX_BATCHbounds a batch.The instance URL must be
https://(orhttp://for local development).Every write is journalled;
sn_local action=undoreverts it.
How this relates to ServiceNow's own MCP servers
ServiceNow ships official MCP servers, and that changes what a third-party server is for:
Server | What it is |
MCP Server Console ( | A platform product for building MCP servers on an instance. Exposes any REST API, AI skills, subflows, actions and Knowledge Graph schemas as tools. Streamable HTTP at |
ITSM MCP Server ( | First-party ITSM tools: |
CSM MCP Server |
|
MCP for Enterprise Architecture | Includes Related Entities Resolver, whose |
This server does not compete on raw connectivity — ServiceNow already has that covered. It exists for the gaps the first-party servers leave:
One unified namespace across every table, not one tool per domain and a choice of 500 names.
A local store. Notes, a record cache, saved queries, call history and a journalled write log with undo. Nothing above has one.
A batch action that applies many writes in one HTTP request.
Schema-aware parameters named after the documented
sysparm_*query parameters, so behaviour is predictable.Client-side graph traversal with resolved relationship-type labels.
Endpoints it calls
Verified against ServiceNow's own API reference, not assumed.
Area | Endpoint |
Table API |
|
Aggregate (stats) |
|
Batch |
|
CMDB class schema |
|
CMDB relations |
|
Attachments |
|
Service Catalog |
|
Update sets |
|
Server-side script | No documented REST endpoint exists. Point |
Two things are deliberately not hardcoded, because ServiceNow's public contract does not name them:
sys_csdm_domain_modelandsys_csdm_contextare probed throughsys_db_objectfirst. If the instance does not have them, the tool says so plainly instead of returning a confusing 404.CMDB class field lists are read from the instance, never hardcoded — CSDM class models are extensible per instance.
Install
python -m venv .venv
.venv/bin/pip install -e .Configure
Copy .env.example to your environment and fill it in.
Variable | Meaning |
|
|
| basic auth |
| OAuth2 client credentials (instead of basic) |
| path of a Scripted REST API that executes server-side script, e.g. |
|
|
| comma-separated allow list |
| comma-separated deny list |
|
|
| maximum operations in one batch (default 100) |
| where the local store lives |
| HTTP timeout in seconds (default 60) |
Run
.venv/bin/snowmcp # stdio
.venv/bin/python -m snowmcp # the sameUse it from Hermes
Full walkthrough - hermes mcp add, the trust model, the safety switches and
troubleshooting: docs/HERMES_SETUP.md.
mcp_servers:
servicenow:
command: "/home/agent/projects/snowmcp/.venv/bin/python"
args: ["-m", "snowmcp"]
env:
PYTHONPATH: "/home/agent/projects/snowmcp/src"
SN_INSTANCE_URL: "${env:SN_INSTANCE_URL}"
SN_USERNAME: "${env:SN_USERNAME}"
SN_PASSWORD: "${env:SN_PASSWORD}"
SN_STORE_PATH: "/home/agent/.hermes/data/snowmcp/store.sqlite3"
enabled: false
trust: untrusted
timeout: 120It is registered in this profile's config with enabled: false. Set the
instance details in your profile's secret store, then flip enabled to
true (or run hermes mcp test servicenow to check the connection).
trust: untrusted makes Hermes ask for approval on any write-capable tool
call. The server's own confirm=true requirement still applies on top.
Four test tiers
Tier 1 - unit: domain rules in isolation, no I/O. Tier 2 - integration: real components against real collaborators. Tier 3 - QA: whole-system, from the composition root, plus architecture. Tier 4 - mutation: the tests must actually fail when the code is wrong.
There is a fifth kind of test that pays for itself, even though it is not a tier of its own: the contract test. For each entry point that talks to the outside world, assert the exact request it makes - the path, the method, every query parameter, the body - not only what comes back. Result-level tests pass while the request quietly changes shape. Contract tests catch that, and they are what closes most mutation survivors.
Three contract rules that the mutation gate taught us the hard way:
Test the default, not just the explicit value. A contract test that always passes
limit=30cannot see a mutation oflimit: int = 200. Every service is also called with only its required arguments, and the resulting request is pinned.Test the defensive branches. A guard for "the result is not a list" changes nothing about what the happy path returns, so the happy-path test cannot see it. Those branches are tested directly.
Assert the whole message, not a substring.
assert "not part of the public contract" in reasonsurvives a mutation of any other word in that message.
Architecture
Clean Architecture, dependencies pointing strictly inward:
src/snowmcp/domain/ business rules, value objects, policy. No framework.
src/snowmcp/application/ use cases, ports, endpoint policy.
src/snowmcp/adapters/ HTTP transport, SQLite store, MCP surface.
src/snowmcp/infrastructure/ configuration and the composition root.tests/qa/test_architecture.py parses every import and fails the build on an
outward dependency, so the rule is enforced rather than merely described.
Development
make setup # uv venv + pytest, pytest-cov, mutmut, hypothesis
make test # the suite
make coverage # 100% branch coverage, enforced
make mutation # mutation testing + the score gate
make gate # bothThe mutation gate reports a score and enforces a floor
(MIN_MUTATION_SCORE, currently 88). It is a ratchet: raise it as survivors
are closed, never lower it.
.venv/bin/python scripts/mutation_gate.py --min-score 88 --jsonCurrent score: 88.89% — 2337 of 2629 mutants killed, 290 survived, 2 timed out. The gate refuses to score a partial run, and counts a timeout against the score rather than crediting it: a worker killed for overrunning neither passed nor failed, so it proves nothing about the coverage.
The gate also refuses results that belong to a different version of the
source. mutmut records a hash of every function it mutated; the gate
recomputes those hashes from the current source and fails if any of them
differ. This matters because two mutation runs that share the mutants/
directory — the second starting with rm -rf mutants while the first is
still going — produce verdicts about mutations of code that is no longer
there, and the mutant names are identical in both, so only the hashes
reveal it.
Scope: the mutation gate covers src/snowmcp/domain/ and
src/snowmcp/application/ — the business rules and use cases. The adapters
(transport, SQLite store, MCP surface) are excluded by an explicit
only_mutate in pyproject.toml, because a mutant there is a changed
default limit or a renamed dict key rather than a wrong rule, and the
contract tests already pin those exactly. The scope is declared in the
config so the score is never mistaken for a full-tree number.
Coverage says a line ran; only mutation testing says a wrong answer would
have been caught. Most surviving mutants are argument mutants - a changed
default, a removed keyword argument - which is why the contract tests
(tests/integration/test_*_contracts.py) matter as much as the unit tests.
The work queue is the survivors, grouped by function. The current
largest clusters are GraphService.relations (12) and
CodeService.where_used (9); everything else is seven or fewer. Closing
them means one of four things each time: a contract test that pins the
exact request, a test that exercises the default value of a parameter
rather than an explicit one, a test of the defensive branch, or an
assertion on the journal entry a write leaves behind. Every round of
fixes so far has raised the score and never lowered it.
Some survivors are equivalent mutants and cannot be killed by any test: a fallback value that is only reachable in a branch the code never takes. Those are recorded rather than chased — a test contorted to kill one would be asserting something the code does not promise.
mutmutcaches its verdicts inmutants/. After changing a test, runrm -rf mutantsor the next run replays stale results. A full scoped run takes about an hour on four cores, so run it in the background - and do not run other suites while it does, or the workers will be killed for overrunning and the score will be understated.
Licence
MIT.
Available Tools
13 toolssn_adminC
Administrative surfaces. action=update_sets, action=set_update_set (bind writes to an update set - needs confirm=true), action=script (run a server-side script - needs confirm=true), action=atf (run tests - needs confirm=true), action=users, action=groups, action=roles, action=memberships.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | ||
| group | No | ||
| limit | No | ||
| suite | No | ||
| action | No | update_sets | |
| script | No | ||
| confirm | No | ||
| update_set | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnly=false, destructive=false, idempotent=false; the description adds genuinely new behavioral facts: that set_update_set *binds* subsequent writes to an update set, and that script/atf/set_update_set gate on confirm=true. That is real disclosure beyond the structured fields. It stops short of describing side effects or scope of a server-side script, holding it at 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded paragraph enumerating actions with minimal filler; the parenthetical confirm notes are terse and earn their place. It could be tightened by grouping the three confirm-requiring actions instead of repeating the phrase.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an eight-parameter, eight-action tool with zero schema descriptions, the description leaves too much undocumented — an agent cannot tell what 'text', 'suite', 'group', or 'limit' apply to for a given action. The output schema covers return values, but per-action parameter mapping is the critical missing piece.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across eight parameters, so the description carries the full burden and only partially delivers: it implies script/update_set usage per action and documents confirm, but text, group, limit, suite, and the interaction between action and its inputs are never explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It frames the tool as an 'administrative surfaces' dispatcher and enumerates the eight actions, with verbs supplied for three of them (set_update_set 'bind writes', script 'run a server-side script', atf 'run tests'). But users/groups/roles/memberships are bare nouns with no stated effect, and nothing distinguishes this from siblings like sn_write or sn_code that plausibly overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states confirm=true is required for three mutating actions, which is a useful precondition, but there is no guidance on when to pick this tool over sn_read (for listing users/groups) or sn_code (for running scripts). An agent has to infer the routing decision entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sn_aggregateBRead-onlyIdempotent
Aggregate over a table. action=stats (COUNT/SUM/AVG/MIN/MAX) or action=group (grouped statistics). One call answers 'how many', 'how many per group' without pulling records.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| table | No | ||
| action | No | stats | |
| group_by | No | ||
| aggregate | No | COUNT | |
| group_by_2 | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds that results are computed without pulling records, which is useful, but says nothing about cost, limits, or empty-result behavior beyond what annotations and the output schema convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no waste, the action modes front-loaded and the value proposition last. Efficient and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema and annotations carry return shape and safety, and the description covers the core action modes, but with 6 undocumented params and 0% coverage the agent lacks guidance on query/table formats and the two-level grouping.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across 6 params, so the description must compensate. It clarifies the action enum and the aggregate values (COUNT/SUM/AVG/MIN/MAX) and hints at group_by semantics, but leaves query, table, group_by_2, and the relationship between the two group fields entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Aggregate over a table') and enumerates the two action modes (stats vs group) with the aggregates supported. It's clearly distinguishable from a record-fetching sibling like sn_read via the 'without pulling records' framing, though it never names an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'One call answers how many / how many per group without pulling records' implies usage versus record retrieval but doesn't explicitly say when to prefer this over sn_read or other siblings, nor any exclusions. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sn_catalogB
Service Catalog. action=items (browse), action=categories, action=variables (an item's form fields), action=order (submit an order - needs confirm=true).
| Name | Required | Description | Default |
|---|---|---|---|
| item | No | ||
| text | No | ||
| limit | No | ||
| action | No | items | |
| confirm | No | ||
| category | No | ||
| quantity | No | ||
| variables | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, so the safety profile is partly covered. The description adds one genuinely useful behavioral fact beyond the annotations: order submission is gated on confirm=true. It does not say what turns non-idempotent, whether orders are reversible, or what auth is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the resource then lists modes telegraphically. Nothing is wasted, but the compression crosses into ambiguity in places (e.g. 'action=variables (an item's form fields)' does not read cleanly).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, mutation-capable, multi-mode catalog tool with zero schema descriptions, the description is thin: it leaves the mapping from parameters to actions unexplained and gives no guidance on paging (limit) or text search. The presence of an output schema removes the need to describe returns, but the invocation gaps remain large.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 8 parameters, so the description must carry the whole burden. It only explains 'action' and 'confirm'; item, text, limit, category, quantity, and variables are never mentioned, including which action consumes item vs category vs variables.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Identifies the resource (Service Catalog) and enumerates the four modes with a short gloss for each (browse, an item's form fields, submit an order). An agent can tell what each action does, though it cannot tell this tool apart from siblings like sn_read or sn_write, which also touch ServiceNow records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The action enumeration implicitly routes mode selection, and 'action=order ... needs confirm=true' is an explicit precondition for the risky mode. But there is no statement of when to use this versus sn_read/sn_write/sn_aggregate, and no exclusion guidance anywhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sn_codeBRead-onlyIdempotent
Find the instance's own automation. action=search (scripts mentioning a string), action=list (artefacts of a kind), action=read (one artefact), action=where_used (every reference to a name; scope='code' searches only the scripts, scope='schema' only the dictionary, empty searches both).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| text | No | ||
| limit | No | ||
| scope | No | ||
| table | No | ||
| action | No | search | |
| sys_id | No | ||
| artefact | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral detail about how where_used scoping narrows the search surface, but says nothing about limits, result truncation, or the cost of broad searches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence, front-loaded with the purpose before the action breakdown. The nested parentheses are slightly heavy but every clause carries real information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and annotations cover the safety profile. But for an 8-parameter, 0%-coverage multi-action tool, the missing parameter-to-action mapping is a real gap that would cause wrong invocations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the load. It explains the action enum and the scope values well, but leaves name, text, limit, table, sys_id, and artefact undocumented, and never maps which parameter belongs to which action (e.g. read needs sys_id vs name).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Find') and resource ('the instance's own automation'), then enumerates all four actions with parenthetical meanings, so an agent knows what the tool does. It does not distinguish itself from siblings like sn_read or sn_schema, which prevents a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The per-action glosses imply when each action applies (search vs list vs read vs where_used), and the scope semantics ('code'/'schema'/empty) are useful. However, there is no explicit guidance on when to use sn_code instead of the sibling tools, so the agent must infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sn_filesC
Record attachments. action=list, action=download, action=upload (needs confirm=true), action=delete (needs confirm=true).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| table | No | ||
| action | No | list | |
| sys_id | No | ||
| confirm | No | ||
| content_base64 | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The confirm-flag requirement for upload and delete adds real safety context. But the description openly advertises a delete action while annotations declare destructiveHint=false, giving the agent a conflicting signal about whether this tool can remove data irreversibly. It also says nothing about permissions, size limits, or what upload/download return despite no annotation coverage for those traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the resource and then maps each action, with the critical confirm constraint attached to the right actions. No filler, though the extremely telegraphic style ('Record attachments.') costs a little clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating, 6-parameter tool with zero schema documentation, the description is too thin: it omits how name/table/sys_id/content_base64 interact per action and how download content is returned. An output schema exists, which relieves some burden, but the per-action parameter contract is still missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 6 parameters, so the description must compensate and it largely does not. It explains action and confirm semantics well, but name, table, sys_id, and content_base64 are left entirely undocumented in both schema and description – an agent cannot tell, for example, whether sys_id is the record ID or the attachment ID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (attachments on records) and enumerates the four supported operations (list, download, upload, delete) with their action values, which maps directly onto the action enum. It does not explicitly differentiate itself from siblings like sn_read or sn_write, but the resource is specific enough that an agent knows this is the attachment tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It does state per-action preconditions (upload and delete need confirm=true), which is useful usage information. However, it gives no guidance on when to prefer this tool over the sibling tools, no exclusivity rules, and no explanation of when each action is appropriate beyond the enum names themselves.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sn_graphARead-onlyIdempotent
Work the CMDB Service Graph. action=relations (a CI's edges), action=traverse (walk outward), action=dependents (what breaks if this CI goes away), action=impact (what depends on a table, field or script), action=csdm (the Common Service Data Model domains).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | auto | |
| depth | No | ||
| limit | No | ||
| model | No | ||
| action | No | relations | |
| sys_id | No | ||
| target | No | ||
| direction | No | both |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: it does not disclose traversal cost, truncation behavior at the default limit of 200, or what 'depth' actually does when walking the graph.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the resource front-loaded and the five modes packed in parentheses. Every clause carries information; nothing is redundant or restated from the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and annotations cover safety. But for an 8-parameter graph traversal tool with zero schema descriptions, the definition leaves key operational questions (how deep is safe, what gets truncated, what identifiers go in sys_id vs target vs model) unanswered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for 8 parameters, so the description carries the burden. It does add genuine meaning for 'action' (glossing each enum value beyond the bare names) and hints at 'kind' via 'a table, field or script'. However depth, limit, model, sys_id, target and direction are left completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (CMDB Service Graph) and enumerates five concrete query modes with plain-language glosses, e.g. 'dependents (what breaks if this CI goes away)'. An agent can tell it is a read/query tool for graph relationships, though nothing distinguishes it from the schema-oriented sibling sn_schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The action list implicitly tells the agent which mode corresponds to which question, which is more than most tools offer. But there is no explicit when-to-use-this-vs-sn_schema/sn_aggregate guidance, no prerequisites (e.g. must a sys_id exist first), and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sn_journalBDestructive
The write journal. action=journal (list applied writes and how to revert them), action=undo (revert one - needs confirm=true, and it changes the instance).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| action | No | journal | |
| confirm | No | ||
| entry_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and non-idempotence; the description corroborates this by warning that undo 'changes the instance' and adds the useful detail that confirm=true is required. It does not disclose scope of the revert (single entry only?), whether the undo itself is journaled or reversible, or any permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, no filler, with the destructive warning about undo placed inline where it matters. Every clause carries information an agent needs before invoking either mode.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be described. But for a destructive 4-parameter tool with 0% schema description coverage, the definition never explains how to target a specific journal entry for undo, nor which parameters apply to which action — a real gap for the mutation path.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning, and it only explains action and confirm. The limit and entry_id parameters are never mentioned — critically, nothing says that entry_id identifies which write undo reverts, leaving the undo path underspecified despite a 4-parameter schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (the write journal) and names both operating modes with their effects, so an agent can distinguish listing applied writes from reverting one. It does not contrast itself against siblings like sn_write or sn_admin, which is the only missing piece.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two actions are explained with the condition that undo requires confirm=true and mutates the instance, which gives implied guidance on which mode to pick. However there is no explicit statement of when to reach for this tool versus sn_write to inspect or change writes, and no guidance on prerequisites for journal mode.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sn_knowledgeCRead-onlyIdempotent
Read what the server already knows. action=note_read, action=note_search, action=note_list, action=saved_list, action=saved_run (run a saved query), action=history (what was already called), action=cache_get, action=cache_list.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | ||
| body | No | ||
| name | No | ||
| limit | No | ||
| table | No | ||
| action | No | note_list | |
| sys_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered externally. The description adds almost nothing beyond listing action names — no note about what 'history' or 'cache' contain, whether saved_run executes arbitrary stored queries, or any limits/scope of results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loaded, but the action list is a flat comma-separated run-on with only two parenthetical hints. No wasted prose, yet the structure does not help the agent parse per-action behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with eight actions, seven parameters, and no per-parameter documentation, the description is far too thin to support correct invocation — the agent cannot know, for example, that saved_run likely needs a name and note_read likely needs a key. The presence of an output schema excuses return-value detail, but not the action/parameter contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across seven parameters (key, body, name, limit, table, sys_id), and the description provides no mapping of which parameter applies to which action. The action enum values are already fully listed in the schema, so the description adds essentially no semantic content beyond structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The lead sentence 'Read what the server already knows' combined with the action list conveys a read-only knowledge-retrieval tool with eight sub-operations. However, it never distinguishes itself from read-oriented siblings like sn_read, sn_state, or sn_journal, so an agent cannot tell which namespace of 'knowledge' this covers without guessing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is given, and no sibling is named as an alternative. An agent facing sn_read, sn_state, sn_journal, and sn_knowledge has no basis in the description for choosing among them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sn_opsBRead-onlyIdempotent
Instance operations. action=log (system log), action=health (version and key stats), action=jobs (scheduler queue), action=properties (system properties, secrets masked), action=stats (aggregate counts).
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | ||
| limit | No | ||
| action | No | health | |
| source | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond that, notably that properties are returned with secrets masked, and it characterizes what health, jobs, and stats provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence, front-loads the resource, and then enumerates actions efficiently with no filler. Every clause maps to a supported action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values need not be detailed, and annotations cover safety. However, for a multi-action tool with four params and 0% schema descriptions, the definition should explain level, limit, and source, and should give some sibling-routing context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the four parameters. It explains all five action enum meanings, but it leaves level, limit, and source completely undocumented, meaning most parameters remain semantically opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear resource ("Instance operations") and enumerates the five concrete actions it supports, so an agent can infer it is an operational/diagnostic query tool. It does not differentiate itself from siblings such as sn_admin, sn_state, or sn_journal, which keeps it below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It lists action values, which helps choose the action parameter, but it gives no guidance on when to use this tool versus the many sibling tools, and no exclusions or prerequisites. The internal action list is useful but does not substitute for tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sn_readBRead-onlyIdempotent
Read ServiceNow records. action=query (list records matching an encoded query), action=get (one record by sys_id), action=count (how many match). Use this instead of a separate tool per table.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| table | No | ||
| action | No | query | |
| fields | No | ||
| offset | No | ||
| sys_id | No | ||
| order_by | No | ||
| display_value | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds the mode-switching model but says nothing about pagination, default limit of 100, or the effect of display_value — all behaviors an agent would want disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose, then the action taxonomy, then a consolidation rationale. Nothing is redundant and the final sentence earns its place by telling the agent this replaces per-table tools.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema means return values needn't be explained, but a nine-parameter generic read tool needs pagination semantics (limit/offset), field selection, ordering and display_value called out. With 0% schema coverage and no such guidance, the description is too thin for the tool's surface area.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across nine parameters, so the description carries the full burden — yet it only explains the three action enum values and gestures at query ("encoded query") and sys_id. limit, offset, fields, order_by, table and display_value are left entirely undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Read ServiceNow records") and enumerates the three action modes with concrete meaning for each. It doesn't differentiate against the closest sibling, sn_aggregate, which plausibly overlaps on the count case, but the core purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear in-tool selection guidance — query to list, get for one record by sys_id, count for the total — which is the main ambiguity an agent faces here. It stops short of saying when to prefer sn_aggregate or sn_write, and offers no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sn_schemaARead-onlyIdempotent
Introspect the instance's data model. action=tables (list tables), action=fields (a table's dictionary entries), action=class (a CMDB class definition), action=references (who references a field).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| limit | No | ||
| table | No | ||
| action | No | fields | |
| pattern | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is fully covered by structured data; 'introspect' is consistent with that. The description adds nothing beyond the annotation about result size, pagination/limit behavior, or whether introspection reflects cached vs live metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the core purpose first, followed by a compact action cheat-sheet. No filler; every clause carries an action meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists (return values need not be described), read-only annotations covering safety, and an action dispatch model fully enumerated, the description supplies enough for an agent to pick the right mode. Remaining param-to-action binding gaps are the only shortfall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, so the description must compensate. It usefully maps the four action enum values to behaviors, but leaves name, table, pattern, and limit unlinked to specific actions (e.g., which action consumes 'pattern', or that 'limit' caps table listing), leaving real ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Introspect the instance's data model', which distinguishes metadata exploration from the data-access siblings like sn_read. It then enumerates the four modes of introspection, so the agent can tell what the tool covers without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The action list implies when each mode is used (tables to list, fields for a dictionary, class for CMDB, references for field usage), but there is no explicit when-to-use, when-not-to-use, or routing to siblings such as sn_read or sn_admin for overlapping lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sn_stateB
Write to the server's own local memory. action=note_write, action=note_delete, action=saved_save, action=cache_put. Nothing here touches the ServiceNow instance.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | ||
| body | No | ||
| name | No | ||
| tags | No | ||
| limit | No | ||
| table | No | ||
| title | No | ||
| action | No | note_write | |
| fields | No | ||
| sys_id | No | ||
| payload | No | ||
| encoded_query | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the description does not need to restate basic safety. It adds important context that all writes are local and do not affect the ServiceNow instance. It does not disclose persistence, lifecycle, or the consequences of note_delete/cache_put, which is a meaningful gap for a multi-action write tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the local-memory scope before listing actions. Every sentence earns its place in a limited sense, but the action list is a raw enumeration rather than a structured explanation. It is concise without being padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required. However, with 12 optional parameters and four actions, the description is far too sparse to support correct invocation. It does not explain action-specific parameters, deletion behavior, or caching semantics, leaving the agent with major operational gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the tool has 12 parameters, so the description must compensate. It only names the four action values and gives no meaning for key, body, payload, table, fields, sys_id, encoded_query, and the other parameters, nor which parameters apply to which action. The action list adds minimal value over the schema enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: write to the server's own local memory. It also distinguishes itself from the ServiceNow-facing siblings by saying 'Nothing here touches the ServiceNow instance.' However, bundling four distinct actions into one tool makes the core purpose somewhat broad.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: for local-memory writes rather than ServiceNow instance operations. It does not explain when to choose each of the four actions or when to prefer a sibling tool such as sn_journal or sn_write. The contrast with instance-touching tools is useful but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sn_writeADestructive
Change ServiceNow records. action=create, action=update, action=delete, or action=batch (apply many operations in ONE request). Every write needs confirm=true, and every write is journalled so it can be reverted.
| Name | Required | Description | Default |
|---|---|---|---|
| table | No | ||
| action | No | create | |
| fields | No | ||
| sys_id | No | ||
| confirm | No | ||
| operations | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description adds valuable behavioral context beyond those annotations: every write requires confirm=true, writes are journalled, and they can be reverted. It does not detail per-action effects or auth requirements, but it substantially improves the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tightly written sentences with no wasted text. The core purpose is front-loaded, followed immediately by action meanings and the confirm/journaling safety rule.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. Annotations cover the destructive safety profile and the description adds the confirm/journaling workflow, but for a six-parameter write tool with 0% schema description coverage, the missing action-specific parameter guidance leaves the definition only partially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across six parameters, so the description must compensate. It explains action values and the confirm requirement, plus that batch applies many operations in one request, but it says nothing about table, fields, sys_id, or the structure of operations, leaving most parameter semantics undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: "Change ServiceNow records," and enumerates the supported write actions. It distinguishes this from read-oriented siblings implicitly through the write/change framing, but does not explicitly name an alternative tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the tool for writes by enumerating create/update/delete/batch and notes that batch is for many operations in one request. However, it gives no explicit when-not-to-use guidance or comparison to siblings such as sn_read or sn_journal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
13 tool updates
v1.0.0- First observed
sn_admin - First observed
sn_aggregate - First observed
sn_catalog - First observed
sn_code - First observed
sn_files - First observed
sn_graph - First observed
sn_journal - First observed
sn_knowledge - First observed
sn_ops - First observed
sn_read - First observed
sn_schema - First observed
sn_state - First observed
sn_write
TDQS
Scored across 13 tools
Tools are cleanly partitioned by domain (schema, read, write, aggregate, graph, catalog, files, code, ops, knowledge, state, journal, admin), so an agent can generally pick the right one. Minor overlap remains: sn_ops action=stats versus sn_aggregate action=stats, and sn_code action=where_used versus sn_graph action=impact, though their descriptions mostly clarify the intended scope.
All tool names follow a strict sn_<domain> snake_case pattern with no mixing of conventions. The action=... parameter style is used uniformly across every multi-action tool, making the surface highly predictable.
Thirteen tools is well-scoped for a broad platform like ServiceNow, and the multi-action design consolidates many operations into coherent domains. Each tool earns its place without bloating the surface.
The surface covers the full lifecycle: schema introspection, CRUD via sn_read/sn_write, aggregation, CMDB graph traversal, catalog ordering, attachments, code search, instance operations, local memory, write journaling/undo, and admin surfaces. No obvious dead ends for the stated ServiceNow automation purpose.
Maintenance
Related MCP Connectors
Manage tickets, run agents and workflows, query tables, and search workspace knowledge.
Read-only MCP access to a documented IT fleet: state, changes, posture. 15 tools.
A read-only verified record of agent-operable GTM tools: search, fetch, compare, track changes.
Agent-native notes, tasks, dev-docs, vaults, sync & handoffs. MCP + OpenAPI dual surface.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables AI agents to interact with ServiceNow through MCP, providing schema inspection, record CRUD, attachments, audit, Flow Designer, and platform investigations with policy-guarded access.151,918 PyPI4MIT
- AlicenseAqualityDmaintenanceThe most comprehensive ServiceNow MCP server. 17 tools for full CRUD, CMDB graph traversal, background scripts, ATF testing, and more.17110 npm13MIT
- FlicenseAqualityFmaintenanceAI-powered ServiceNow developer toolkit for Claude Code with 116 tools covering script generation, code review, portal and catalog development, notifications, user and group management, CRUD operations, dictionary overrides, data migration, bidirectional integrations, ATF testing, performance analysis, technical documentation, and issue diagnosis.1001-
- AlicenseNot gradedqualityDmaintenanceConnects AI assistants to a ServiceNow instance, providing tools for Table API CRUD, incident lifecycle, CMDB queries, knowledge search, and user lookup.38 npmMIT