Announcing CIMD support for MCP Client registration
Learn more

ServiceNow MCP vs API? The Right Architecture Choice for Your Agent

TL;DR

  • ServiceNow ships an official native MCP server (the MCP Server Console, generally available in the Zurich release) and a long-standing REST API. They are not two views of the same thing; they sit at different layers, with different entitlements.
  • The native MCP server authenticates with OAuth 2.0 Authorization Code Grant only (PKCE for public clients, full OAuth 2.1 on the roadmap), requires a Now Assist or AI Native SKU, and consumes Assist currency on every tool call.
  • The native MCP server exposes admin-packaged, governed capabilities: Now Assist Skills, Knowledge Graph, subflows, and Scripted REST APIs. It does not expose raw Table API CRUD by default. The REST API exposes the full platform with no Now Assist entitlement and no Assist metering.
  • For a multi-tenant B2B agent, every user on every customer instance still needs a per-user credential. ServiceNow's AI Control Tower governs what happens inside the instance; it does not store, refresh, or revoke the credentials your agent holds across your customer base.
  • Scalekit's ServiceNow connector wraps the REST surface as 112 per-user OAuth 2.0 tools with a vaulted token lifecycle and a 90-day audit trail, so the MCP vs API decision does not change your agent's auth infrastructure.

Your agent needs to work ServiceNow: open and resolve incidents, file change requests, read the CMDB, and act as the engineer who asked. ServiceNow now gives you two front doors. The native MCP Server Console publishes governed tools inside ServiceNow's AI stack; the REST API exposes the raw platform the way integrations have used it for years. They make different tradeoffs on entitlement, cost, and how much you own. Here is how to pick, and how to wire either one to a production agent.

What ServiceNow MCP and ServiceNow API actually are

Before comparing them, it helps to be precise about what each object is, because for ServiceNow the two paths are not symmetric. One is a governed AI control plane; the other is the platform's raw integration surface.

The native ServiceNow MCP Server (MCP Server Console)

The MCP Server Console is ServiceNow's control plane for publishing and governing MCP tools. It reached general availability in the Zurich release; the current console lists Zurich Patch 9 or Australia Patch 2 as its minimum platform version. An administrator packages capabilities (Now Assist Skills, Knowledge Graph, subflows and actions, and Scripted REST APIs) and publishes them as governed tools that any MCP client can call. See the official reference on Exploring MCP Server Console.

How an agent connects to it

Authentication is OAuth 2.0 Authorization Code Grant, currently the only supported flow, configured through the Machine Identity Console under Inbound integrations. PKCE applies for public clients, and Client ID Metadata Documents (CIMD) are supported from Australia Patch 1 or Zurich Patch 7 onwards; Dynamic Client Registration is deliberately not supported. Transport is Streamable HTTP for remote clients. Every call runs through AI Control Tower and AI Gateway, so it is identity-verified, permission-scoped, metered, and audited.

The ServiceNow REST API surface

The REST API is the platform's integration surface, available on every instance and every version with no Now Assist entitlement. It is not one API; it is a family. The Table API does generic CRUD and query against any table, and dedicated APIs cover Change Management, the CMDB (including the Identification and Reconciliation Engine), Service Catalog, Import Set, Aggregate statistics, Attachments, and Knowledge. The full reference lives in the ServiceNow REST API documentation.

How an agent authenticates to the REST API

The REST API accepts Basic authentication, OAuth 2.0 across several grant types, and mutual TLS. OAuth 2.0 is the right path for agents acting on behalf of a user, since basic authentication is disabled by policy on many enterprise instances and on new developer instances by default. There is no Assist consumption; REST calls are standard integration traffic.

What your agent can actually do

Capability coverage is where the two paths diverge most sharply, because the native MCP server only exposes what an administrator chose to publish, while the REST API exposes the platform.

The capability table

The table below covers the actions ServiceNow agents reach for most. Read the MCP column as "available only if an admin packaged it," and the REST column as "available directly."

Capability
Native ServiceNow MCP Server
ServiceNow REST API
Query and list incidents, changes, problems
Yes, if published as a tool
Yes, Table and scoped APIs
Create, update, resolve incidents
Yes, via a Now Assist skill or published action
Yes, incident and Table API
Generic CRUD on any table
Only if an admin publishes it
Yes, Table API on any table
CMDB read plus identify and reconcile (IRE)
Only if packaged
Yes, CMDB API and IRE
Change Management workflow (normal, standard, emergency)
Only if packaged
Yes, Change Management API
Service Catalog order and fulfillment
Only if packaged
Yes, Service Catalog API
Aggregate statistics and reporting
Only if packaged
Yes, Aggregate API
Bulk import (Import Set)
Rarely packaged
Yes, Import Set API
Trigger Flow Designer flows and Now Assist skills
Yes, its core strength
Partial, flows only via REST
Governed approval and human-in-the-loop
Yes, via AI Control Tower
No, you build it
Runs without a Now Assist entitlement
No
Yes
Consumes Assist currency per call
Yes
No

Where the native MCP server draws the line

The native server is built for governed, user-facing work inside ServiceNow's AI stack. Its strength is orchestrating Now Assist Skills, flows, and approvals with human-in-the-loop consent. Its constraint is that raw platform breadth is not there unless an administrator packages each capability first, and packaging is a deliberate governance act, not a default.

Where the REST API surface goes further

If your agent needs generic table access, CMDB reconciliation from an external system of record, bulk import, or aggregate reporting, the REST API already exposes it. That breadth is exactly what Scalekit's connector wraps: 112 prebuilt tools spanning incidents, changes, problems, CMDB, Service Catalog, Import Sets, and Aggregate queries, documented on the Scalekit ServiceNow connector page.

The auth path each one puts you on

Both paths can act as the individual user, and both respect ServiceNow ACLs. What differs is the flow you are locked into and what that implies once you have more than one tenant.

Native MCP: OAuth 2.0 authorization code, per user

The native server enforces the Authorization Code Grant with browser-based consent. That is correct for interactive, user-present agents, and it integrates with third-party identity providers such as Okta, Microsoft Entra, and Ping Identity. It is a hard constraint for headless work: there is no static-credential or client-credentials shortcut for the MCP path today. Understanding Client ID Metadata Documents is increasingly important as MCP client registration evolves.

REST API: basic, OAuth, and mutual TLS

The REST API is more flexible. It supports the Authorization Code Grant for per-user delegation, plus service-oriented grants and mutual TLS for background integrations. For an agent acting as a specific engineer, per-user OAuth is the right model; for scheduled jobs, the REST path has options the MCP path does not.

The multi-tenant reality

A B2B agent serving fifty engineers across eight customer ServiceNow instances produces one credential per user per instance. The MCP path gives you an OAuth token per user; the REST path gives you a credential per user. Neither path stores, refreshes, or revokes those credentials for you across your customer base. That is infrastructure you build or buy. This is exactly the challenge covered in depth when moving from single-tenant to multi-tenant tool calling agent auth.

What you own in production

Operational surface area is the difference between a demo and a system that survives a Now Assist license review and a security audit.

On the native MCP path

ServiceNow owns hosting, schema updates, and governance. You still own client-side OAuth token storage per user, refresh handling, revocation when someone leaves, and the entitlement itself. AI Control Tower and AI Gateway give you observability inside the instance, which is real value, but only for traffic that flows through that one instance.

On the REST API path

You own the full stack: endpoint selection, request construction, pagination, retries, error handling, and the entire token lifecycle. You also own LLM-ready tool schemas for every API surface you touch, and you re-own them each time an API version or field changes. Writing the schema is the hard part, not the API call, and every connector you build is a connector you now maintain.

Assist currency and rate limits

Cost is a first-class production constraint here. Native MCP tool calls run as Now Assist actions and consume Assist currency, with skills exposed as tools consuming their usual assists plus one per invocation. REST calls consume no Assist currency; they are bound instead by the instance's inbound API rate limits and transaction quotas. For high-volume or background agents, that difference compounds quickly. It is worth reading about why MCP can be up to 32× more expensive than CLI to understand how protocol choice affects cost at scale.

When to use MCP, when to use the API

The decision is rarely about capability alone; it is about who your agent serves, whether you hold the Now Assist entitlement, and how many customer instances you span.

Use the native ServiceNow MCP server when

  • Your agent is interactive and lives inside ServiceNow's AI stack, and your users are present for the OAuth consent flow.
  • You already own a Now Assist or AI Native SKU and want AI Control Tower governance, metering, and human-in-the-loop approvals as first-class features.
  • The work is orchestrating Now Assist Skills, subflows, and approvals rather than raw record manipulation.
  • You want ServiceNow to own tool hosting and schema maintenance, and Assist consumption is acceptable.

Use the ServiceNow REST API when

  • Your agent needs generic Table access, CMDB reconciliation, bulk import, or aggregate reporting that no one has packaged as an MCP tool.
  • You do not hold a Now Assist entitlement, or you cannot absorb Assist currency on every call.
  • Your agent runs headless or on a schedule, where OAuth service grants and mutual TLS fit and interactive consent does not.
  • You are building a multi-tenant product across many customer instances and need per-user scope you control, not per-instance tool packaging.

Connecting ServiceNow to your agent with Scalekit

Scalekit exposes ServiceNow as a single OAuth 2.0 connector that wraps the REST surface as prebuilt tools, and it can serve the same connector through a Virtual MCP endpoint. The flow below follows discovery, then scope, then execution. The connection name you pass must match the one you created in the dashboard, character for character.

Authorize the user once

The user grants access once; Scalekit runs the OAuth flow against ServiceNow and vaults the token. The agent never touches the raw credential.

import { ScalekitClient } from "@scalekit-sdk/node"; const scalekit = new ScalekitClient( process.env.SCALEKIT_ENVIRONMENT_URL!, process.env.SCALEKIT_CLIENT_ID!, process.env.SCALEKIT_CLIENT_SECRET! ); const identifier = "user_123"; // your own system's user id const { link } = await scalekit.actions.getAuthorizationLink({ connectionName: "servicenow", identifier, }); console.log("Authorize ServiceNow:", link);

Scope the tools to the user

The agent does not load a 112-tool catalog. It loads only the tools this user's connected account is authorized to call, which reduces token overhead and improves tool-selection accuracy. Surface reduction is the lever, not better prompting.

const { tools } = await scalekit.tools.listScopedTools(identifier, { filter: { connectionNames: ["servicenow"], toolNames: [ "servicenow_incident_list", "servicenow_incident_get", "servicenow_incident_create", "servicenow_incident_resolve", ], }, pageSize: 100, });

Wire the scoped tools into LangChain

Each scoped tool becomes a LangChain tool whose executor calls executeTool for the same user. Scalekit resolves that user's vaulted token server-side and makes the real ServiceNow call.

import { DynamicStructuredTool } from "@langchain/core/tools"; import { ChatOpenAI } from "@langchain/openai"; import { createReactAgent } from "@langchain/langgraph/prebuilt"; import { z } from "zod"; const lcTools = tools.map((t) => new DynamicStructuredTool({ name: t.tool.definition.name, description: t.tool.definition.description, schema: z.object({}).passthrough(), func: async (args) => { const result = await scalekit.actions.executeTool({ connector: "servicenow", identifier, toolName: t.tool.definition.name, toolInput: args, }); return JSON.stringify(result); }, }) ); const llm = new ChatOpenAI({ model: "gpt-4o" }); const agent = createReactAgent({ llm, tools: lcTools });

Or point your agent at a Virtual MCP server

If you prefer the MCP wire protocol, Scalekit gives the same connector a per-user Virtual MCP endpoint with nothing to host. Mint a short-lived, user-scoped token before each run and connect any MCP-capable framework, such as Google ADK.

import { Agent } from "@google/adk/agents"; import { MCPToolset, StreamableHTTPConnectionParams, } from "@google/adk/tools/mcp"; const toolset = new MCPToolset({ connectionParams: new StreamableHTTPConnectionParams({ url: "https://mcp.scalekit.com/servicenow", headers: { Authorization: `Bearer ${userScopedToken}` }, }), }); const agent = new Agent({ name: "itsm-agent", model: "gemini-2.0-flash", tools: await toolset.getTools(), });

The credential problem neither ServiceNow surface solves for you

The auth-model difference between the two paths is real, but it hides a problem that sits underneath both. In a multi-tenant agent, credential management is the same shape whichever front door you chose.

What ServiceNow gives you

ServiceNow enforces identity well. Both paths run as the authenticated user, ACLs apply on every call, and the native MCP server adds AI Control Tower governance and AI Gateway observability inside the instance. What the user cannot do, the agent cannot do. That is the posture a security auditor wants to see.

What you still have to build

ServiceNow governs what happens inside a single instance. It does not manage the credentials your agent holds across your customer base. Fifty engineers across eight instances means fifty tokens to store encrypted, fifty to refresh before they expire, and fifty to revoke when someone offboards. The token type differs between MCP and REST; the infrastructure required does not. The patterns around secure token management for AI agents at scale apply equally to both paths.

Where Scalekit fits

Scalekit's ServiceNow connector handles the OAuth flow, per-tenant token vaulting, automatic refresh, and revocation for the REST path, and serves the same connector as a Virtual MCP endpoint. The credentials never enter the agent runtime or the LLM context. The MCP vs API decision stops changing your auth infrastructure. Compare plans on the Scalekit pricing page.

Observability and multi-tenant isolation for ServiceNow agents

For a B2B ServiceNow agent, the two hardest production problems are proving who did what and keeping one customer's data away from another's. Both are infrastructure decisions, not prompt decisions.

Downstream tool-calling auth logs

A shared service account makes every ServiceNow write look identical in the audit trail, which breaks attribution the moment a second user shows up. Scalekit resolves the real user credential per call and records who triggered which tool and what came back, with a 90-day, SIEM-ready history. Audit trails for agent auth in B2B SaaS explains the event surface and why per-user attribution matters in enterprise deployments.

Virtual MCP for multi-tool, multi-tenant agents

Most ServiceNow agents also touch Slack, a knowledge base, or a ticketing tool. A Virtual MCP server gives you one server definition per agent role, declares exactly which tools it can see, and mints a per-user session token before each run. The endpoint is static; the identity is per-user; there is no MCP server for you to deploy, host, or maintain.

Prebuilt agent patterns to start from

ServiceNow work maps cleanly onto existing templates. The incident response agent and the new hire provisioning agent both run on the same per-user auth model, and the support ticket automation agent shows the cross-tool pattern. Browse the full set from the Scalekit connectors overview.

Which one to build against

The choice is not MCP or REST in the abstract; it is a function of who your agent serves and what you already own.

If your agent is interactive and inside ServiceNow's AI stack

If your users work in ServiceNow's AI experiences, you hold a Now Assist entitlement, and you want AI Control Tower governance with human-in-the-loop approvals, the native MCP Server Console is the right path. Package the skills you need, accept the Assist consumption, and let ServiceNow own hosting.

If your agent is background, multi-tenant, or cross-instance

If your agent runs headless, spans many customer instances, needs raw platform breadth, or cannot pay Assist currency per call, build against the REST API and let Scalekit own the per-user credential layer. The Scalekit ServiceNow connector gives you that surface without new auth code per connector.

The decision in one line

If the agent lives inside one customer's ServiceNow AI stack, use the native MCP server. If it acts across your customers on their behalf, build on the REST API and solve credentials at the infrastructure layer, because that is the part neither ServiceNow front door solves for you.

Talk to the people building this

If you are wiring ServiceNow into a production agent, come compare notes: join the Scalekit community on Slack, or talk to us about ServiceNow agent actions for hands-on help.

FAQs

What is the ServiceNow MCP Server Console?

The MCP Server Console is ServiceNow's control plane for publishing and governing MCP tools, generally available as of the Zurich release. Administrators package capabilities such as Now Assist Skills, Knowledge Graph, and Scripted REST APIs and expose them as governed tools any MCP client can call.

Does the native ServiceNow MCP server require a special license?

Yes. The native MCP server requires a Now Assist or AI Native SKU. Every tool call also consumes Assist currency. The REST API has no such entitlement requirement and incurs no Assist metering.

Which OAuth flows does the ServiceNow MCP server support?

Currently only the OAuth 2.0 Authorization Code Grant, with PKCE for public clients. Client Credentials and other service-oriented grants are not supported on the MCP path. The REST API supports a wider range of grant types including mutual TLS.

Can I use ServiceNow MCP for headless or scheduled agents?

Not easily. The native MCP path requires browser-based consent via the Authorization Code Grant. Headless or background agents are better served by the REST API, which supports service-oriented OAuth grants and mutual TLS.

How does Scalekit help with multi-tenant ServiceNow agents?

Scalekit wraps the ServiceNow REST surface as 112 per-user OAuth 2.0 tools, handles token vaulting, automatic refresh, and per-user revocation across all your customer instances. It also exposes the same connector as a Virtual MCP endpoint, so you do not need separate auth infrastructure for each ServiceNow front door.

What is the blast radius if an API key or token is leaked in a ServiceNow integration?

With a shared API key or service account credential, a leak exposes all tenants sharing that credential. With per-user OAuth tokens managed via Scalekit, exposure is scoped to the individual user's token, which is short-lived and revocable without affecting other users or tenants.

Does the ServiceNow REST API expose the full platform?

Yes. The REST API family covers Table CRUD, Change Management, CMDB and IRE, Service Catalog, Import Sets, Aggregate statistics, Attachments, and Knowledge—all without a Now Assist entitlement. The native MCP server only exposes what an administrator explicitly packages.

What happens to the credential when an engineer leaves my customer's organization?

Neither ServiceNow path automatically revokes credentials your agent holds for that user across your customer base. You must build or buy that revocation infrastructure. Scalekit handles this at the grant level: revoking a user's connection invalidates their token without affecting other users or tenants.

No items found.
Agent
Auth Quickstart
On this page
Share this article
Agent
Auth Quickstart

Acquire enterprise customers with
zero upfront cost.

Every feature unlocked. No hidden fees.