Three ways to let an AI agent build on ServiceNow
What I showed at The Null Edge: MCP, Skills, and a CLI. Three ways to give an AI agent access to a live ServiceNow instance, and how to choose by what you must prove later.
Yesterday I spoke at The Null Edge. The talk was "SN AI Engineer: MCP, Skills, and CLI". Thank you to every speaker. The videos will appear on the The Null Edge YouTube channel.
This post is the short version of my talk.
The agents are already here
AI agents already write to ServiceNow instances. The question is not if. The question is how much control you keep.
Sam Kececi wrote that soon, the cost of making software will be zero. I agree that code is cheap now. But building software in ServiceNow is not going to zero soon. Writing code is only part of the job. The platform, permissions, testing, and governance still matter. So the way you give an agent access matters too.
In the talk I used one instance and one agent for every demo.
1. MCP: give the agent tools, not an API
An MCP server sits between the agent and the instance. In my demo it is ten tools on a Cloudflare Worker. The tools query, get, create, and update records, read live table schema, run a server script, switch update sets, and run ATF suites and instance scans.
What I like about it:
- The agent never holds the password. The server does.
- The tools are typed and describe themselves.
- You decide the tool list.
- One server works for Claude, Cursor, and other clients.
The agent proves its own work. It switches to a dedicated update set, builds, runs an instance scan, then runs an ATF suite. A human reviews the result. The server polls the CI/CD API, so the agent sees one result.
What hurts:
- You deploy, own, and secure a server.
- An open
/mcpendpoint is an open instance. - A script tool is a sharp tool.
- The server has no memory of what it changed.
2. Skills: raw REST and a good AGENTS.md
This path has no server and no SDK. It needs an agent, a credential file, and the Table API. A short AGENTS.md carries the rules, and a skill loads only when the agent needs it.
The rules are simple. Discover the fields in sys_dictionary first. Query tight, with fields, a limit, and display values. Use POST and PATCH, never PUT. Re-read after each write.
What I like about it:
- You start in a minute, with no infrastructure.
- It works on any table, with any agent and any model.
- ACLs scope the agent for free.
- The brief is plain text you can review.
Then you hit a cliff:
- Rules are prose, so the agent can skip them.
- A wrong field in
sysparm_queryis ignored. A typo looks like success. - The credentials sit next to the agent.
- Flow Designer is not a Table API job. Flows and workspaces span many tables with no map.
I showed this with a catalog item. With only the Table API, the agent needs many tables, guesses variable type numbers, uses no update set, and ends with an undo that is a list of DELETE calls.
3. CLI: a lifecycle the agent must follow
sndev is my product: a CLI and a desktop app. The agent writes a manifest. sndev plans it, runs it, checks it, and can undo it.
The lifecycle is preflight, plan, preview, execute, validate, test, and drift. No write happens before preflight and plan pass. Execute is idempotent, so a second run makes no duplicates. State is saved on disk, so you can inspect each step. If a run fails, sndev repair names the recovery and sndev patch fixes forward. sndev backout is the last resort.
The agent does not guess what is valid. It asks the tool. At the time of the talk the registry held 281 operations in 61 skill families (sndev ops, v0.37.0, checked on 2026-10-15). The agent asks the registry, not its training data.
Four checks never write:
sndev preflightlists every problem in one run, with where and why.sndev show --diagramdraws a flow as a graph and checks its wiring, offline.sndev previewcompares the plan with live records.sndev drift --outsidelists changes that nosndevrun wrote, and how to adopt them.
The desktop app uses the same engine. Each manifest is a card that moves from Drafted to Executed to Tested to Completed. Before auto mode runs a step, an approval card shows the exact command. Ask puts your own agent inside the app. The default is Draft only: the agent reads and drafts, and it cannot write to the instance. To let it write, you turn on Full access yourself.
I will be honest about the limits. The CLI does less than raw REST. It writes only what its registry knows. A manifest is more work than one call. It has no ad-hoc script execution, by design. And it is a paid product. What it does, it can prove and undo.
How to choose
Pick by what you must prove later.
| MCP | Skills | CLI | |
|---|---|---|---|
| Setup | Deploy a Worker | Copy one file | Install a binary |
| Guardrails | In the tool list | In the prompt | In the lifecycle |
| Credentials | On the server | With the agent | Local profiles |
| Memory of work | Update set only | None | State file per step |
| Undo | Manual | Manual | sndev backout |
| Review in | The agent chat | The agent chat | Report and app board |
| Best at | Shared team access | Fast data work | Config you must trust |
The Memory, Undo, and Review rows are the ones auditors ask about.
Other CLIs
sndev is not the only CLI. now-sdk is the official one, for Fluent apps as TypeScript source. nex extends the SDK for operations. jsn is a friendly, stateless explorer. Each has a real strength. All of them move fast, so check the versions.
Try it
The MCP and Skills examples are open source:
The CLI and the desktop app are at sndev.io.
If you were at the talk, or you watch the video, reach out and connect!