Skip to main content
Glama

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

sn_read

yes

query / get / count records on any table

sn_write

no (destructive)

create / update / delete / batch

sn_aggregate

yes

stats and grouped statistics

sn_schema

yes

tables, fields, CMDB classes, field references

sn_graph

yes

Service Graph: relations, traverse, dependents, impact, CSDM

sn_catalog

no

catalog items, categories, variables, ordering

sn_files

no

attachments: list, upload, download, delete

sn_code

yes

the instance's own scripts, rules, policies, ACLs

sn_ops

yes

system log, health, jobs, properties, stats

sn_knowledge

yes

read what the server already knows: notes, saved queries, history, cache

sn_state

no

write the server's own local memory: notes, saved queries, cache

sn_journal

no (destructive)

list applied writes, revert one

sn_admin

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=true refuses every write.

  • SN_ALLOWED_TABLES / SN_DENIED_TABLES restrict which tables may be touched.

  • SN_MAX_BATCH bounds a batch.

  • The instance URL must be https:// (or http:// for local development).

  • Every write is journalled; sn_local action=undo reverts 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 (sn_mcp_server)

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 https://<instance>/sncapps/mcp-server/mcp/<name>, OAuth 2.0.

ITSM MCP Server (sn_itsm_mcp_server)

First-party ITSM tools: incident.get_details, incident.modify, change.lifecycle, change.analyze, change.query, change.relation, requester tools.

CSM MCP Server

get_case_tasks, get_customer_service_cases, case_summarization, resolution_notes_generation, sentiment_analysis.

MCP for Enterprise Architecture

Includes Related Entities Resolver, whose traverse mode does multi-level impact analysis from a single CI.

This server does not compete on raw connectivity — ServiceNow already has that covered. It exists for the gaps the first-party servers leave:

  1. One unified namespace across every table, not one tool per domain and a choice of 500 names.

  2. A local store. Notes, a record cache, saved queries, call history and a journalled write log with undo. Nothing above has one.

  3. A batch action that applies many writes in one HTTP request.

  4. Schema-aware parameters named after the documented sysparm_* query parameters, so behaviour is predictable.

  5. 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

GET/POST/PUT/PATCH/DELETE /api/now/table/{table} and /{sys_id}

Aggregate (stats)

GET /api/now/stats/{table} with sysparm_aggregate

Batch

POST /api/now/v1/batch with rest_requests[] (id, method, relative url, Base64 body)

CMDB class schema

GET /api/now/cmdb/meta/{className} — the only documented class-introspection endpoint

CMDB relations

GET /api/now/table/cmdb_rel_ci (the traversal table), types resolved from cmdb_rel_type

Attachments

GET/POST/DELETE /api/now/attachment

Service Catalog

/api/sn_sc/servicecatalog/items, .../{sys_id}, .../{sys_id}/order_now — note the API has its own root, not /api/now/...

Update sets

GET/POST /api/now/table/sys_update_set

Server-side script

No documented REST endpoint exists. Point SN_SCRIPTED_REST_URL at a Scripted REST API you control.

Two things are deliberately not hardcoded, because ServiceNow's public contract does not name them:

  • sys_csdm_domain_model and sys_csdm_context are probed through sys_db_object first. 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

SN_INSTANCE_URL

https://yourcompany.service-now.com (required)

SN_USERNAME / SN_PASSWORD

basic auth

SN_OAUTH_CLIENT_ID / SN_OAUTH_CLIENT_SECRET / SN_OAUTH_TOKEN_URL

OAuth2 client credentials (instead of basic)

SN_SCRIPTED_REST_URL

path of a Scripted REST API that executes server-side script, e.g. /api/sn_gsc/v1/execute

SN_READ_ONLY

true refuses every write

SN_ALLOWED_TABLES

comma-separated allow list

SN_DENIED_TABLES

comma-separated deny list

SN_REQUIRE_CONFIRM

false drops the confirm=true requirement

SN_MAX_BATCH

maximum operations in one batch (default 100)

SN_STORE_PATH

where the local store lives

SN_TIMEOUT

HTTP timeout in seconds (default 60)

Run

.venv/bin/snowmcp            # stdio
.venv/bin/python -m snowmcp  # the same

Use 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: 120

It 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=30 cannot see a mutation of limit: 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 reason survives 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       # both

The 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 --json

Current 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.

mutmut caches its verdicts in mutants/. After changing a test, run rm -rf mutants or 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 tools
sn_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.

NameRequiredDescriptionDefault
textNo
groupNo
limitNo
suiteNo
actionNoupdate_sets
scriptNo
confirmNo
update_setNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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_aggregateB
Read-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.

NameRequiredDescriptionDefault
queryNo
tableNo
actionNostats
group_byNo
aggregateNoCOUNT
group_by_2No

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

NameRequiredDescriptionDefault
itemNo
textNo
limitNo
actionNoitems
confirmNo
categoryNo
quantityNo
variablesNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_codeB
Read-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).

NameRequiredDescriptionDefault
nameNo
textNo
limitNo
scopeNo
tableNo
actionNosearch
sys_idNo
artefactNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

NameRequiredDescriptionDefault
nameNo
tableNo
actionNolist
sys_idNo
confirmNo
content_base64No

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_graphA
Read-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).

NameRequiredDescriptionDefault
kindNoauto
depthNo
limitNo
modelNo
actionNorelations
sys_idNo
targetNo
directionNoboth

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_journalB
Destructive

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).

NameRequiredDescriptionDefault
limitNo
actionNojournal
confirmNo
entry_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_knowledgeC
Read-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.

NameRequiredDescriptionDefault
keyNo
bodyNo
nameNo
limitNo
tableNo
actionNonote_list
sys_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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_opsB
Read-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).

NameRequiredDescriptionDefault
levelNo
limitNo
actionNohealth
sourceNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_readB
Read-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.

NameRequiredDescriptionDefault
limitNo
queryNo
tableNo
actionNoquery
fieldsNo
offsetNo
sys_idNo
order_byNo
display_valueNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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_schemaA
Read-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).

NameRequiredDescriptionDefault
nameNo
limitNo
tableNo
actionNofields
patternNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
keyNo
bodyNo
nameNo
tagsNo
limitNo
tableNo
titleNo
actionNonote_write
fieldsNo
sys_idNo
payloadNo
encoded_queryNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_writeA
Destructive

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.

NameRequiredDescriptionDefault
tableNo
actionNocreate
fieldsNo
sys_idNo
confirmNo
operationsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 13 tool updatesv1.0.0
    • First observedsn_admin
    • First observedsn_aggregate
    • First observedsn_catalog
    • First observedsn_code
    • First observedsn_files
    • First observedsn_graph
    • First observedsn_journal
    • First observedsn_knowledge
    • First observedsn_ops
    • First observedsn_read
    • First observedsn_schema
    • First observedsn_state
    • First observedsn_write

TDQS

A3.5/5.0

Scored across 13 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness5/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to interact with ServiceNow through MCP, providing schema inspection, record CRUD, attachments, audit, Flow Designer, and platform investigations with policy-guarded access.
    15
    1,918 PyPI
    4
    MIT
  • F
    license
    A
    quality
    F
    maintenance
    AI-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.
    100
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects AI assistants to a ServiceNow instance, providing tools for Table API CRUD, incident lifecycle, CMDB queries, knowledge search, and user lookup.
    38 npm
    MIT