Skip to main content
Glama
Xerrion

servicenow-platform-mcp

ServiceNow Platform MCP

Use your AI app to work with ServiceNow tickets, understand your instance, and prepare changes to records or scripts.

MCP (Model Context Protocol) lets an AI app use tools from another system. This server connects those tools to your ServiceNow instance. You describe the work in plain language, and the app calls the tools it needs.

You sign in with your ServiceNow account. Your roles, API access policies, and access control rules (ACLs) still determine what you can read or change.

Start here

If your AI app already has this server configured, try:

Use ServiceNow to show 5 active incidents I can access. Include the incident number, short description, priority, and assigned person. Do not change anything.

The first request that needs ServiceNow opens your browser for sign-in and permission to connect. Use the browser on the computer running the MCP server.

Related MCP server: NowAIKit

ITSM work

Read incident, problem, change, and request records. Review ticket history, inspect attachments, or count records for a status update. You can ask for the result as a list, table, or summary.

For example:

  • "Show 10 active incidents assigned to the Service Desk group, ordered by priority."

  • "Summarize INC0012345, including comments and work notes from the last 30 days."

  • "Count open incidents by assignment group. Include the filters you used."

  • "Show the answers submitted with RITM0012345."

Replace example numbers and group names with values from your instance. State a time period and limit when you ask for a list or history. Ask the app to include record numbers so you can check its answer in ServiceNow.

Creating tickets, updating work notes, and changing assignments require write tools and ServiceNow permissions. See making changes.

Instance administration and development

Use the MCP to inspect how your instance works, investigate issues, and prepare changes to ServiceNow configuration. You can start with a record name or a question. You do not need to write API requests or know the MCP tool names.

Work

What you can inspect

Tables and fields

Field types, choice labels, references, and inherited fields.

Scripts

Business Rules, Script Includes, Client Scripts, and code-search matches.

Flow Designer

Flow and subflow triggers, inputs, outputs, and configured steps.

Troubleshooting

Recent errors, slow transactions, table health, and audit history.

Configuration management database (CMDB)

Configuration items, their relationships, and class metadata.

For example:

  • "Read the Business Rule named 'Validate priority'. Explain when it runs and what its script does."

  • "Find scripts that call gs.eventQueue. Show the matching records."

  • "Inspect the 'New starter' flow. Explain its trigger and configured steps."

  • "Investigate script errors from the last 24 hours. Show the evidence for each finding."

Replace example rule and flow names with records from your instance.

Diagnostic findings help you investigate a cause. They do not establish a root cause or automatically repair the instance. Flow Designer tools inspect stored configuration. They do not edit, publish, or run flows.

With write tools enabled, you can create or update configuration records, including script fields. Follow the change workflow before applying a script change.

Connection setup

An administrator prepares the ServiceNow connection. Each user then authorizes access with their own ServiceNow account.

The supported connection runs locally on your computer. Your AI app starts the server using stdio, a local connection between the two programs. You need Python 3.12 or later, uv, and an AI app that can start local MCP servers.

1. Prepare OAuth in ServiceNow

OAuth lets users authorize the connection through their browser. The public client ID identifies the application. It is not a password or a client secret.

Open System OAuth > Application Registry. Select New, then Create an OAuth API endpoint for external clients, or select an existing inbound application. Configure the application to meet these requirements:

Requirement

Value

Client type

Public, with no client secret

Authorization flow

Authorization code with PKCE

PKCE method

S256

Scope

useraccount

Redirect URL

http://127.0.0.1:8765/oauth/callback

Save the application. Copy its public client ID for the next step. If you cannot configure OAuth, ask your ServiceNow administrator to provide that ID and the instance URL.

Users need API access to the records required for their work. OAuth does not grant additional table or field permissions.

2. Add the connection to your AI app

Replace https://your-instance.service-now.com and your-public-client-id with the values from your administrator. Use the instance's HTTPS address without a page path such as /nav_to.do.

These examples explicitly select readonly and block writes with SERVICENOW_ENV=prod. The environment setting controls write protection. It does not select an instance or detect whether that instance is production.

Keep existing server entries when adding this configuration. Do not add passwords, API keys, client secrets, or tokens.

VS Code with GitHub Copilot, or Claude Code

Save this configuration as .mcp.json in the top-level folder you open in your AI app:

{
  "mcpServers": {
    "servicenow-platform": {
      "command": "uvx",
      "args": ["servicenow-platform-mcp"],
      "env": {
        "SERVICENOW_INSTANCE_URL": "https://your-instance.service-now.com",
        "SERVICENOW_OAUTH_CLIENT_ID": "your-public-client-id",
        "MCP_TOOL_PACKAGE": "readonly",
        "SERVICENOW_ENV": "prod"
      }
    }
  }
}

In VS Code, open Chat and enable the ServiceNow tools. In Claude Code, approve the project MCP server when prompted. For user-wide configuration and connection controls, see the VS Code guide or Claude Code guide.

Add this to opencode.json in your project:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "servicenow-platform": {
      "type": "local",
      "command": ["uvx", "servicenow-platform-mcp"],
      "enabled": true,
      "environment": {
        "SERVICENOW_INSTANCE_URL": "https://your-instance.service-now.com",
        "SERVICENOW_OAUTH_CLIENT_ID": "your-public-client-id",
        "MCP_TOOL_PACKAGE": "readonly",
        "SERVICENOW_ENV": "prod"
      }
    }
  }
}

Restart OpenCode. See its MCP guide for other configuration options.

For another local MCP app, use the command uvx servicenow-platform-mcp with the same four environment variables. Its configuration format may differ. The installation guide includes a server entry you can adapt.

3. Sign in and check access

  1. Restart your AI app or its ServiceNow MCP server after saving the configuration.

  2. Ask: "List the available ServiceNow tools."

  3. Ask: "Use ServiceNow to show one active incident. Include its number and short description."

  4. Complete authorization in the browser with the intended ServiceNow account.

A returned record confirms that the connection can read that table. If you cannot read incidents, use a table your account can access. Tool discovery alone does not confirm a working ServiceNow connection.

Tokens stay in server memory. The server renews an expired access token when it can. Restarting the server requires browser authorization again.

Making changes

Begin with a development or test instance. Ask your administrator to enable only the write tools needed for your work and grant the corresponding ServiceNow permissions.

For example, MCP_TOOL_PACKAGE=query,describe,record_read,record_write enables record inspection and changes. Set SERVICENOW_ENV=dev for that non-production instance. Restart the server after changing the configuration.

Record writes offer previews, but callers can request immediate changes. The server does not enforce human approval. Use this review process for record changes:

  1. Ask the app to read the current record.

  2. Ask for a preview of the proposed change.

  3. Review the target instance, record, field values, and script differences.

  4. Tell the app to apply that preview only when you approve it.

  5. Check the result in ServiceNow. Test any changed behavior on the instance.

For a ticket update:

Preview adding this work note to INC0012345: "Waiting for the caller to confirm the fix." Show the proposed change and wait for my approval.

For a script update:

Read the Business Rule named 'Validate priority'. Suggest a correction and explain it. Show a preview with the complete replacement script. Wait for my approval before applying it.

Record writes default to a preview. record_apply applies its one-time preview_token. A caller can also request an immediate write with preview=false. Previews expire after five minutes and disappear when the server restarts.

Attachment uploads and deletions, catalog orders, and cart changes apply directly. They do not use the record preview workflow. Catalog actions require full or a custom package containing service_catalog. That group includes both browsing and ordering. It is absent from readonly.

Script updates replace the complete field value. The server does not check JavaScript syntax. Review and test the script before relying on its behavior.

Set SERVICENOW_ENV=prod or production for production connections to block writes through this server. ServiceNow permissions remain the authority for record access. Tool selection and environment settings are additional local controls.

Choose the available tools

MCP_TOOL_PACKAGE controls which tools your AI app can call:

Package

Use

readonly

ITSM reads, metadata, attachments, investigations, audits, flows, code search, and CMDB inspection.

core_readonly

Only queries, table descriptions, and attachment reads.

full

All tools, including record writes, attachment writes, and catalog actions.

none

Only list_tool_packages, for checking that the server starts.

Set this explicitly. The server defaults to full when you omit it. A package enables tools. It does not grant ServiceNow permissions. list_tool_packages lists available packages and groups, not the active package. For the full inventory and tool inputs, see the tool reference.

If something does not work

Problem

Next action

The AI app cannot start the server

Check Python, uv, the launch command, and the two required ServiceNow settings.

No browser opens, or authorization times out

Use a browser on the server's computer. Check the exact registered redirect URL.

ServiceNow rejects OAuth

Ask the administrator to check public-client mode, PKCE S256, client ID, scope, and redirect URL.

Sign-in works, but a record request returns 401 or 403

Ask the administrator to check API policies, roles, and record or field access rules.

Tools are missing or settings did not change

Check MCP_TOOL_PACKAGE and restart the MCP server.

For a failed request, include the action, record or table, and sanitized error in your report. Exclude passwords, tokens, raw headers, and browser callback URLs. See installation troubleshooting for more detailed checks.

ServiceNow data returned by tools becomes available to your AI app. Use an app approved for the data you handle.

More help

Report an issue · PyPI package · MIT license

Available Tools

15 tools
analysisA

Run bounded, read-only analysis over catalog answers or journals.

Args: action: 'ritm_variables' | 'journal_history' | 'describe'. table: Target table for journal_history. sys_id: Target record sys_id for ritm_variables or journal_history. fields_csv: Allowed journal fields: comments, work_notes, close_notes. since: ISO date floor for journal_history; overrides window_days. window_days: Journal window; defaults to 90 days. limit: Row cap; defaults to MAX_ROW_LIMIT and is capped by it. offset: Zero-based row offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sinceNo
tableNo
actionYes
offsetNo
sys_idNo
fields_csvNo
window_daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and explicitly discloses that the operation is 'read-only' and 'bounded'. It also adds useful operational details: 'window_days' defaults to 90 days, 'since' overrides it, and 'limit' is capped by MAX_ROW_LIMIT. It omits auth requirements and per-action effects, but the core safety profile is clearly stated.

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 one-sentence summary is front-loaded and the Args block is compact with no filler. Each line adds parameter semantics or a default/cap that the schema does not provide, making it appropriately sized.

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?

Parameter semantics and the read-only/bounded behavior are well covered, and an output schema exists so return values need not be documented. However, the three action modes are not explained at the semantic level, and there is no guidance on how 'analysis' relates to overlapping siblings, which leaves the description incomplete for tool selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/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 compensate for all 8 parameters, and it does. Every parameter is explained with allowed values, targets, defaults, or overrides, including the permitted journal fields and the row cap/offset behavior.

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 opening line states a specific operation ('bounded, read-only analysis') over defined resources ('catalog answers or journals'), and the Args section names concrete action modes ('ritm_variables', 'journal_history', 'describe'). This is clear but does not distinguish the tool from siblings such as 'query', 'audit', or the sibling also named 'describe'.

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 guidance is given on when to choose this tool over the sibling alternatives or when not to use it. The parameter notes explain mechanics but not the selection context, so an agent must infer usage from the generic word 'analysis'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

attachmentA

Read attachments. action: 'list' | 'get' | 'download' | 'download_by_name'.

Args: action: One of: list, get, download, download_by_name. sys_id: Attachment sys_id (for get, download). table: Parent table (for list, download_by_name). table_sys_id: Parent record sys_id (for list, download_by_name). file_name: File name (for download_by_name).

ParametersJSON Schema
NameRequiredDescriptionDefault
tableNo
actionYes
sys_idNo
file_nameNo
table_sys_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must convey behavioral traits. It indicates read-only operation ('Read attachments') but does not disclose idempotency, authentication needs, rate limits, or side effects. The transparency is adequate but not comprehensive.

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 concise, using a clear list format for actions and parameters. Every sentence adds value, and there is no extraneous text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, no annotations, output schema exists), the description sufficiently covers the action types and parameter mappings. It does not explain return values (handled by output schema), but could benefit from more context on when each action is appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, but the tool description compensates well by explaining each parameter's purpose (e.g., 'sys_id: Attachment sys_id (for get, download)'). This adds significant meaning beyond the raw schema fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Read attachments' and enumerates specific actions (list, get, download, download_by_name), making the tool's purpose unambiguous and distinguishing it from the sibling tool 'attachment_write'.

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 usage via the action parameter but provides no explicit guidance on when to choose this tool over siblings like 'attachment_write' or when not to use it. There is no mention of prerequisites or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

attachment_writeA

Write attachments. action: 'upload' | 'delete'.

Args: action: 'upload' or 'delete'. table: Parent table (upload). table_sys_id: Parent record sys_id (upload). file_name: Attachment file name (upload). content_base64: Base64-encoded file bytes (upload). content_type: MIME type (upload, default 'application/octet-stream'). sys_id: Attachment sys_id (delete).

ParametersJSON Schema
NameRequiredDescriptionDefault
tableNo
actionYes
sys_idNo
file_nameNo
content_typeNoapplication/octet-stream
table_sys_idNo
content_base64No

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. The description lacks disclosure of side effects (e.g., deletion permanence), permission requirements, or error behavior. It only explains parameter usage.

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 concise, front-loaded with the core purpose, and uses a clear bullet-like list for arguments. No redundant 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?

The description covers parameter semantics adequately but lacks higher-level context such as success/failure responses or limitations. With output schema present, return values may be addressed externally.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description compensates for 0% schema coverage by explaining each parameter's role and conditionally grouping them under upload or delete actions. This adds significant meaning beyond the schema titles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Write attachments' and specifies two actions: 'upload' and 'delete'. This distinguishes it from sibling tool 'attachment' which likely reads attachments.

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 guidance on when to use upload vs delete, nor prerequisites or alternatives. The description only lists parameters without usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

auditA

Inspect ServiceNow audit posture (table/field config) and audit trail.

IMPORTANT: sys_audit is one of the largest tables on the platform. Every action keeps a default 90-day window for that reason. Override window_days (or since on history) only when you genuinely need older rows - wider windows cause slow queries and can time out.

Args: action: 'check_field' | 'check_fields' | 'check_table' | 'history' | 'describe'. table: ServiceNow table name (required for all actions except 'describe'). field: Field name (required for 'check_field'). fields_csv: Comma-separated field names (required for 'check_fields', 1..50). sys_id: 32-char record sys_id (required for 'history'). since: YYYY-MM-DD cutoff (history only; overrides window_days). window_days: Audit-trail/positive-control window (defaults to 90). limit: Row cap for 'history' (defaults to settings.max_row_limit).

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldNo
limitNo
sinceNo
tableNo
actionYes
sys_idNo
fields_csvNo
window_daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It explains that the tool inspects posture and trail, and warns about performance implications of wide windows. However, it doesn't explicitly state whether the tool is read-only or if it modifies data, though 'inspect' implies read-only.

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?

Description is well-structured with a brief intro, an important warning, and a clear Args list. It is informative but not overly verbose. Could be slightly more concise by removing redundant 'required for' phrasing, but overall effective.

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 the complexity (8 parameters, 5 actions), the description covers all necessary usage and constraints. An output schema exists (not shown) which would further help, but the description itself is complete enough for an agent to understand behavior and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 0% description coverage, but the description provides detailed explanations for all 8 parameters including the allowed action values, required fields for each action, and constraints like 1..50 for fields_csv and 32-char sys_id. This adds significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Inspect ServiceNow audit posture (table/field config) and audit trail.' This is a specific verb-resource combination that distinguishes it from sibling tools like query (which retrieves records) and record_read (reads specific records).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use the tool and when to be cautious: warns about sys_audit table size, default 90-day window, and advises to override window_days or since only when necessary. Also implicitly differentiates from siblings by focusing on audit trail vs general querying.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describeA

Return slim field metadata for a table, or list tables / script fields.

Args: table: ServiceNow table name. Required for the default flow and for action='list_script_fields'. Ignored by action='list_tables'. fields: Comma-separated fields to include. Empty returns a bounded compact page. '*' explicitly returns all fields. verbose: When True, return the full sys_dictionary row per field minus a fixed deny-list of high-noise keys. Default False. include_docs: When True, attach the matching sys_documentation entry (label/help/hint/url) per field. Default False. action: When 'list_script_fields', return the dictionary-driven script-bearing fields for table with its resolved super_class chain. When 'list_tables', list tables from sys_db_object (optionally filtered by name_filter). Empty (default) runs the standard table-describe flow. name_filter: Substring matched against table name and label when action='list_tables'. Empty returns all tables (capped). field_offset: Zero-based field offset for compact default pages. field_limit: Field count for compact default pages (1-100).

ParametersJSON Schema
NameRequiredDescriptionDefault
tableNo
actionNo
fieldsNo
verboseNo
field_limitNo
name_filterNo
field_offsetNo
include_docsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden, and it delivers: it discloses bounded pages, capping, a fixed deny-list for verbose output, the resolved super_class chain for script fields, and default behavior. The read-only nature is implied consistently through 'Return' and 'list' language, and no destructive or surprising side effects are hidden.

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 front-loaded with the core purpose, followed by a tight, well-organized Args list. Each parameter entry earns its place with concrete behavioral detail, and there is no filler or repetition.

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?

The tool has eight parameters, no annotations, and an output schema; the description covers all parameter semantics, action modes, defaults, edge cases, and return-behavior nuances. The presence of an output schema relieves it from explaining return value shape, and nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/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 fully explain all eight parameters, and it does. Every parameter is described with its role, allowed values like '*' or 'list_tables', defaults, and mode-specific behavior, adding meaning far beyond the bare schema names and types.

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 opens with a specific verb and resource: 'Return slim field metadata for a table, or list tables / script fields.' This makes the core purpose clear, and the action modes further clarify behavior. However, it does not explicitly distinguish this tool from sibling tools such as query or record_read, so it stops short of full sibling differentiation.

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?

The description provides clear contextual guidance for each action mode, including which parameters are required or ignored for each flow, and how empty vs. explicit values behave. It does not explicitly state when to prefer this tool over sibling alternatives, but the internal usage conditions are strong and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flowA

Inspect Flow Designer flows, triggers, and value blobs (read-only).

Args: action: 'contract' | 'inspect' | 'find_by_table' | 'decode_values' | 'list_triggers' | 'describe'. sys_id: Flow sys_id (contract/inspect; mutually exclusive with name). name: Flow name (contract/inspect; mutually exclusive with sys_id). value: gzip+base64+JSON blob to decode (decode_values). table: Target table (find_by_table; optional filter for list_triggers). trigger_type: Trigger type filter (list_triggers, e.g. 'record_update'). active: 'true' | 'false' filter (list_triggers). limit: Row cap for list_triggers (default 100). sections: Comma-separated inspect/contract sections. Empty uses the compact default; '*' returns all. section_limit: Shared cap for selected flow rows/nodes (default 100, max MAX_ROW_LIMIT).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
limitNo
tableNo
valueNo
actionYes
activeNo
sys_idNo
sectionsNo
trigger_typeNo
section_limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full safety burden and explicitly declares 'read-only' up front. It also discloses defaults and caps for limit, section_limit, and sections behavior, plus the sys_id/name mutual exclusion, which are meaningful beyond the schema fields.

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 compact, front-loaded docstring: one purpose sentence followed by a parameter-to-action map. No line is redundant; the actionable constraints (mutual exclusivity, defaults, wildcard behavior) are included without fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a ten-parameter, six-action tool with no schema descriptions, the description addresses almost all invocation details, and an output schema is available for return values. The main residual gap is that the 'contract' action is named and referenced by 'sections' but never defined, which leaves some ambiguity for an agent deciding to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description compensates completely by defining the action enum, which parameter applies to which action, value encoding, defaults, and the sys_id/name exclusivity constraint. Every parameter receives semantic context that is not visible in the input schema alone.

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 opening line names a specific action and resource: 'Inspect Flow Designer flows, triggers, and value blobs (read-only).' The args list clarifies it is a multi-action utility, but it does not explicitly contrast itself with sibling tools such as query, record_read, or describe, so sibling differentiation is left to the reader.

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 Args section associates each parameter with the action in which it is used (e.g., 'value: gzip+base64+JSON blob to decode (decode_values)'), which implies the appropriate invocation pattern. It never states when to prefer this tool over sibling alternatives or when not to use it, leaving the selection criteria implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

investigateA

Run an investigation or explain a finding.

Args: action: 'run' | 'explain' | 'describe'. name: Investigation name (required for 'run'; optional direct selector for 'explain' and filter for 'describe'). Available: stale_automations, deprecated_apis, table_health, acl_conflicts, error_analysis, slow_transactions, performance_bottlenecks. params: JSON string of run parameters (run only). element_id: 'table:sys_id' identifier of a finding (explain only).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
actionYes
paramsNo{}
element_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

'There are no annotations, so the description carries the full burden of behavior explanation. It does disclose the mode-based behavior and parameter applicability, which is useful. However, it does not describe the effects of running an investigation, whether it creates or modifies state, what the output looks like beyond the output schema, or any side effects or failure conditions.'

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 compact and front-loaded with the single-sentence purpose, followed by a tight Args block that covers all four parameters without redundancy. Every sentence contributes operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter tool with no annotations and 0% schema coverage, the description is largely complete: it provides action values, investigation name options, and parameter-specific rules. The main remaining gap is the expected inner structure of the 'params' JSON string for 'run', which is left to the caller to know. The existence of an output schema reduces the need to document return values, so the overall definition is still quite complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the parameter burden falls entirely on the description, and it delivers. It explains each parameter in plain language: the accepted values of action, the role of name across modes, that params is a JSON string used only for 'run', and that element_id is a 'table:sys_id' identifier for 'explain'. It even lists available investigation names, making parameter choice actionable.

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 opens with a specific verb and resource: 'Run an investigation or explain a finding,' and then defines three distinct actions: 'run', 'explain', and 'describe'. It clearly maps the tool's scope, though it does not explicitly differentiate itself from siblings like 'describe', 'analysis', or 'audit', which leaves a small ambiguity.

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?

'The description gives clear action-specific usage context: name is 'required for 'run'', optional as a direct selector for 'explain', and a filter for 'describe'; params is 'run only'; and element_id is 'explain only'. This is strong contextual guidance, but it does not explicitly state when to prefer this tool over alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tool_packagesA

List all available tool packages and their tool groups.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the basic read operation but provides no details on authentication requirements, potential rate limits, or any side effects. With no annotations, more behavioral context would be helpful, but the simplicity of a list operation mitigates the gap.

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 sentence with no unnecessary words. It is front-loaded with the action and resource, making it easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (no parameters, no annotations, output schema exists), the description is minimally sufficient. However, it could clarify what 'tool packages' and 'tool groups' are or if any preconditions exist.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so schema coverage is 100%. The description does not need to add parameter meaning; the baseline score of 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and the resource ('all available tool packages and their tool groups'). It distinguishes from sibling tools like 'query' or 'record_read' which have different purposes.

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 guidance is given on when to use this tool versus alternatives. There is no mention of prerequisites, context, or exclusions, leaving the agent to infer usage solely from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

queryA

Read records, aggregates, or a single record from any ServiceNow table.

Args: table: ServiceNow table name (e.g. 'incident'). sys_id: When set, fetch a single record by sys_id (other filter args ignored except fields and display_values). encoded_query: ServiceNow encoded query string (e.g. 'state=1^priority=2'). Empty = no filter. fields: Comma-separated field projection. List mode requires this argument. '*' explicitly requests all masked fields. Exact sys_id mode defaults to the compact sys_id,sys_updated_on projection. limit: Max rows (1-max_row_limit). Default 20. offset: Pagination offset. order_by: Field name; prefix with '-' for descending (e.g. '-sys_created_on'). display_values: True returns display_value form for reference and choice fields. aggregate: Comma-separated aggregations: 'count', 'avg:', 'sum:', 'min:', 'max:'. When set, returns aggregate result instead of rows. group_by: Comma-separated fields to group by, e.g. state,active (aggregate mode only). resolve_labels: Comma-separated 'field=label' pairs (e.g. 'state=open,priority=high'). Each label is resolved via ChoiceRegistry to its underlying value, then ANDed into encoded_query as 'field=value'.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
tableYes
fieldsNo
offsetNo
sys_idNo
group_byNo
order_byNo
aggregateNo
encoded_queryNo
display_valuesNo
resolve_labelsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it does a good job: it discloses that sys_id ignores other filter args except fields and display_values, that aggregate mode returns aggregates instead of rows, that list mode requires fields, and exactly how resolve_labels gets ANDed into the encoded query. It could add permission and max-row-limit specifics, but the core behavioral quirks are covered.

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 one-line summary is front-loaded, and the Args block that follows is dense but justified: 11 parameters each get behavior that the schema lacks, so every sentence earns its place. It is long because it must be, not because of wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter tool with no annotations and an output schema (so return shapes needn't be explained), the description covers all argument semantics and mode behaviors thoroughly. The remaining gaps are minor: max_row_limit is referenced but never quantified, and the description gives no hint about when to choose this over record_read, so selection across read siblings is left to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% — the schema provides only titles, types, and defaults — so the description must compensate, and it fully does. All 11 parameters get precise semantics: prefixes such as '-' for descending order_by, comma-separated aggregate/group_by syntax, the fields projection rules, and the interaction between sys_id, fields, and display_values. This is exactly the compensation a 0%-coverage schema requires.

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 opening line 'Read records, aggregates, or a single record from any ServiceNow table' states a specific verb, resource, and three distinct modes, so the tool's job is immediately clear. However, it never distinguishes itself from the sibling record_read tool, which appears to overlap in purpose.

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?

There is no explicit when-to-use vs. when-not-to-use guidance and no mention of the record_read sibling, so an agent must infer which read tool to pick. Usage context is only implied through argument semantics (e.g., sys_id selects single-record mode, aggregate returns aggregates instead of rows).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record_applyA

Commit a previously previewed write. Single-use token.

Args: preview_token: The token returned by record_write in preview mode. Single-use - consumed on success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
preview_tokenYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, it discloses key behavior: the token is single-use and consumed on success or failure, indicating idempotency and ensuring the agent understands the token's lifecycle.

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 short sentences plus a bullet, no fluff, purpose is front-loaded. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple commit tool with one parameter and an output schema, the description covers the essential behavior and usage. Minor gaps in error details, but overall sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by explaining the preview_token parameter's origin and single-use nature, adding crucial context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Commit a previously previewed write', using a specific verb ('commit') and resource ('previewed write'), differentiating it from siblings like 'record_write' which handles previews.

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?

It clearly states to use after a preview with record_write, and specifies the token origin. Though it does not explicitly list when not to use, the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record_readA

Fetch a record by sys_id or name from any table.

Exactly one of sys_id or name must be supplied. Sensitive fields are masked. The response includes a script_fields list (resolved dynamically via sys_dictionary plus the table's super_class chain) so callers can discover which script-bearing fields are writable on a subsequent record_write.

Args: table: ServiceNow table name (e.g. sys_script, catalog_script_client, incident). Tables with zero script fields return script_fields: [] and succeed. sys_id: Mutually exclusive with name. Direct lookup by sys_id. name: Mutually exclusive with sys_id. Resolves via name=<value> query; ambiguous matches return an error. fields: Comma-separated field projection. Empty returns compact identity/update metadata plus all discovered script-bearing fields. '*' returns the full masked record.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
tableYes
fieldsNo
sys_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it delivers: sensitive fields are masked, script_fields is resolved via sys_dictionary and super_class chain, zero-script-field tables succeed with an empty list, and ambiguous name lookups error. This gives an agent accurate expectations beyond the input schema.

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 longer than average but well-organized with a front-loaded purpose sentence and an Args section. The behavioral details about script_fields are relevant and earn their place. Minor redundancy exists because mutual exclusivity is stated both up front and within each parameter, but overall structure is effective.

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?

For a read tool with no annotations and no schema-level parameter descriptions, this definition covers the key operational context: required/optional parameters, edge cases, return behavior, and integration with a subsequent record_write. The presence of an output schema means return-value structure does not need to be duplicated in the description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/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 fully compensate, and it does. Every parameter is explained: table with examples, sys_id with mutual exclusivity, name with resolution semantics and ambiguity errors, and fields with projection and empty-value behavior. This is a complete parameter contract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence clearly states the verb and resource: 'Fetch a record by sys_id or name from any table.' This distinguishes it from siblings like query, record_write, and describe by specifying a direct record-fetch operation by identifier. The scope is concrete and immediately actionable.

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?

The description provides clear invocation context: exactly one of sys_id or name must be supplied, and ambiguous name matches return an error. It explains the relationship to record_write by mentioning script_fields discovery, but it does not explicitly contrast this tool with query or other read-oriented siblings. Still, the usage conditions are unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record_writeA

Create, update, or delete a record. Defaults to preview mode.

Supply all field values, including complete script or markup strings, in data. Omitted fields stay unchanged on update. Dictionary metadata identifies supplied XML fields, including inherited fields; malformed XML is rejected before preview creation or mutation. Creates also check inherited mandatory fields, with child declarations taking precedence. Metadata request errors block writes.

Args: action: 'create' | 'update' | 'delete'. table: Target table. Required. sys_id: Required for 'update' and 'delete'. data: JSON string mapping field names to values, including any script fields. Required for 'create' and 'update'. Maximum 256 KiB of UTF-8 JSON, including escaping and field names. preview: When True (default) returns a preview_token; caller invokes record_apply to commit. When False, write commits immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
tableNo
actionYes
sys_idNo
previewNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden and does so thoroughly. It discloses preview-mode default, commit behavior, update semantics for omitted fields, XML validation, inherited-field checks, metadata error blocking, and size limits. This is unusually transparent for a mutation tool.

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 long but every sentence carries operational value. It front-loads the core purpose and default behavior, then uses a structured Args list to map details to parameters. The format is scannable and free of filler.

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 a five-parameter write tool with no annotations, the description is complete: it covers action constraints, required fields, data format, size limits, preview flow, XML behavior, and error conditions. An output schema exists, so not describing the full return shape is acceptable. Nothing essential for invoking the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description compensates fully for the 0% schema description coverage by documenting every parameter: action enum values, table and sys_id requirements, data format and maximum size, and preview semantics. It adds meaning well beyond the bare schema titles and defaults, including required conditions per action.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool creates, updates, or deletes a record, using specific verbs and a clear resource. It differentiates from siblings like record_apply (which commits previews), record_read (which reads), and attachment_write (which writes attachments). The purpose is immediately understandable and distinct.

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?

The description clearly defines the actions this tool supports and explains when the preview mode requires calling record_apply to commit. It does not explicitly contrast with record_read or other sibling write tools, but the action-specific guidance and preview/commit flow provide solid contextual direction. It lacks an explicit 'when not to use' statement, so it falls just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_choiceA

Resolve a choice label to its underlying value via ChoiceRegistry.

Args: table: ServiceNow table name. field: Field name on that table. label: Choice label to resolve. When empty, returns the full {label: value} mapping for the field.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldYes
labelNo
tableYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It explains the conditional behavior (returns mapping if label empty) but does not disclose error handling, authentication requirements, or rate limits. The read-only nature is implied but not explicitly stated.

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 concise with only three sentences, front-loading the purpose and listing parameters efficiently. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the existence of an output schema, the description covers key behaviors. It could mention the output format more explicitly, but overall it is sufficiently complete for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite schema description coverage being 0%, the description explicitly explains each parameter: 'ServiceNow table name', 'Field name on that table', and the special behavior of the label parameter when empty. This adds significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: resolving a choice label to its underlying value via ChoiceRegistry. It also distinguishes from siblings by specifying a unique function not shared by other tools in the list.

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 usage for resolving choice labels and optionally getting the full mapping when label is empty. However, it does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

service_catalogB

Service Catalog operations. Dispatch on action.

Args: action: One of: catalogs_list, catalog_get, categories_list, category_get, items_list, item_get, item_variables, order_now, add_to_cart, cart_get, cart_submit, cart_checkout. sys_id: Record sys_id (catalog_get, category_get, item_get, item_variables). item_sys_id: Catalog item sys_id (order_now, add_to_cart). catalog_sys_id: Catalog sys_id (categories_list). catalog: Filter by catalog sys_id (items_list). category: Filter by category sys_id (items_list). text: Search text (catalogs_list, items_list). variables: JSON object of variable name/value pairs (order_now, add_to_cart). limit: Max results (catalogs_list, categories_list, items_list). Default 20. offset: Pagination offset (categories_list, items_list). Default 0. top_level_only: Return only top-level categories (categories_list).

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
limitNo
actionYes
offsetNo
sys_idNo
catalogNo
categoryNo
variablesNo
item_sys_idNo
catalog_sys_idNo
top_level_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description lacks disclosure of behavioral traits such as idempotency, side effects (e.g., order_now is likely destructive), or required permissions. No annotations exist to compensate. While actions like 'catalogs_list' are read-only, actions like 'cart_checkout' imply write operations, but this is not clarified.

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 well-structured with a clear opening line and a bullet list of parameters. It is reasonably concise given the complexity of 11 parameters and multiple actions. Minor redundancy exists (e.g., repeating action names in parameter explanations), but overall it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 11 parameters and many actions, the description covers most critical usage aspects: parameter-action mappings and defaults. Since an output schema exists, the lack of return value descriptions is acceptable. However, ordering constraints or pagination details could be more explicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameter descriptions (0% coverage), but the description adds meaningful context by explicitly listing which parameters apply to which actions (e.g., sys_id for catalog_get). This significantly compensates for the schema gap, though a few parameters like 'variables' could have more detail on format.

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 that this tool handles Service Catalog operations by dispatching on an 'action' parameter. It enumerates specific actions like catalogs_list and order_now, making the resource explicit. However, it does not differentiate from sibling tools like 'query' or 'record_read', which might also handle catalog-related data.

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 guidance is provided on when to use this tool versus alternatives. The description simply lists actions without indicating preferred use cases or dependencies. Given the sibling tools (e.g., 'query', 'record_read'), explicit guidance on when to use this dispatcher would improve clarity.

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. 2 tool updatesv1.0.0
    • Changedcode_search1 field changed
      • addedInput schema / properties / extended_matching
        Added value: +{
        +  "default": false,
        +  "title": "Extended Matching",
        +  "type": "boolean"
        +}
    • Changedrecord_write2 fields changed
      • removedInput schema / properties / script_field
        Removed value: -{
        -  "default": "",
        -  "title": "Script Field",
        -  "type": "string"
        -}
      • removedInput schema / properties / script_path
        Removed value: -{
        -  "default": "",
        -  "title": "Script Path",
        -  "type": "string"
        -}
  2. 6 tool updatesv0.12.0
    • Addedanalysis
    • Removedbuild_query
    • Addedcode_search
    • Changeddescribe3 fields changed
      • addedInput schema / properties / field_limit
        Added value: +{
        +  "default": 25,
        +  "title": "Field Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / field_offset
        Added value: +{
        +  "default": 0,
        +  "title": "Field Offset",
        +  "type": "integer"
        +}
      • addedInput schema / properties / name_filter
        Added value: +{
        +  "default": "",
        +  "title": "Name Filter",
        +  "type": "string"
        +}
    • Changedflow2 fields changed
      • addedInput schema / properties / section_limit
        Added value: +{
        +  "default": 0,
        +  "title": "Section Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / sections
        Added value: +{
        +  "default": "",
        +  "title": "Sections",
        +  "type": "string"
        +}
    • Changedrecord_read1 field changed
      • addedInput schema / properties / fields
        Added value: +{
        +  "default": "",
        +  "title": "Fields",
        +  "type": "string"
        +}
  3. 14 tool updatesv0.10.0
    • First observedattachment
    • First observedattachment_write
    • First observedaudit
    • First observedbuild_query
    • First observeddescribe
    • First observedflow
    • First observedinvestigate
    • First observedlist_tool_packages
    • First observedquery
    • First observedrecord_apply
    • First observedrecord_read
    • First observedrecord_write
    • First observedresolve_choice
    • First observedservice_catalog

TDQS

A3.6/5.0

Scored across 15 tools

Disambiguation4/5

Most tools have distinct purposes, but `query` and `record_read` overlap in single-record fetching, and `attachment` vs `attachment_write` require careful reading to distinguish read vs write operations. Descriptions otherwise clarify boundaries well.

Naming Consistency2/5

Naming is mixed: some tools use verb_noun (`record_write`, `attachment_write`, `list_tool_packages`), while others are bare nouns (`attachment`, `flow`, `audit`) or bare verbs (`query`, `investigate`, `describe`). Many tools are action-dispatch style with a single name, creating inconsistent patterns.

Tool Count4/5

15 tools is at the upper end of the ideal range, but the broad ServiceNow platform scope (records, attachments, catalog, flows, audit, code search, analysis) justifies each tool's existence. No obvious bloat or missing core utility.

Completeness4/5

The surface covers CRUD for records, attachments, catalog operations, flow inspection, audit checks, and code search. Minor gaps exist (e.g., no update/delete for attachments besides upload/delete, no flow modification), but the core workflows are well covered.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers